Δοκιμές στη διαδρομή Pharo

Μάθε πώς να δοκιμάζεις τις ασκήσεις σου στη Pharo στο Exercism


Στο πιο βασικό του επίπεδο, το Exercism είναι όλο δοκιμές και διαδικασία δοκιμών: αυτές καθοδηγούν την υλοποίησή σου και σου λένε πότε μια άσκηση έχει ολοκληρωθεί.

Άμεση ανατροφοδότηση

Το Pharo προσφέρει εξαιρετική υποστήριξη για εργασία με δοκιμές, αλλά και για σταδιακές δοκιμές! Μπορείς να τρέξεις οποιαδήποτε δοκιμή μιας άσκησης κάνοντας κλικ στο orb δίπλα σε μια κλάση ή μέθοδο δοκιμής.

Orbs δοκιμών στον browser

Τα orbs των δοκιμών έχουν χρώμα ανάλογα με το αποτέλεσμα της τελευταίας εκτέλεσης δοκιμών:

  • πράσινο για επιτυχία
  • κίτρινο όταν αποτυγχάνει ένας ισχυρισμός
  • κόκκινο για σφάλμα χρόνου εκτέλεσης ή εξαίρεση

Δοκιμές με σειρά

Οι δοκιμές στις ασκήσεις του Exercism έχουν αριθμηθεί σκόπιμα ώστε να υπάρχει καθορισμένη σειρά εκτέλεσης (π.χ. test01_verifySomeProperty, test02_verifyAnotherProperty κ.λπ.).

Όταν δουλεύεις πάνω σε μια άσκηση, καλό είναι να κάνεις κλικ στο orb της πρώτης δοκιμής, να καταλάβεις την αποτυχία και τι χρειάζεται για να περάσει, και μετά να προσθέσεις τον κώδικα στη λύση σου ώστε να δουλέψει. Στο Pharo είναι απολύτως φυσιολογικό να κάνεις αυτές τις αλλαγές μέσα στον debugger, όπου έχεις πρόσβαση τόσο στον επεξεργαστή κώδικα όσο και σε μια προβολή όλων των μεταβλητών και των παραμέτρων που μπορούν να σε βοηθήσουν να καταλάβεις το πρόβλημα.

ΣΗΜΕΙΩΣΗ: Δεν συνηθίζεται να βάζεις πρόθεμα σειράς στις δοκιμές, και ΔΕΝ πρέπει να το κάνεις αυτό όταν γράφεις δοκιμές για το δικό σου έργο.

Τρέχει ακόμα και όταν κάτι είναι σπασμένο

Το Pharo δεν έχει πρόβλημα να τρέξει κώδικα που είναι σπασμένος, και ο debugger απλώς θα ξανανοίξει όταν συναντήσει κάποιο σφάλμα (είτε συντακτικό σφάλμα, είτε λάθος τιμή, είτε ακόμα και μια κλάση ή μέθοδο που λείπει). Αυτή η τεχνική ήταν βασική έμπνευση για την ανάπτυξη καθοδηγούμενη από δοκιμές, και μπορείς να πάρεις μια γεύση από αυτή την προσέγγιση όταν δοκιμάσεις να τρέξεις την πρώτη δοκιμή οποιασδήποτε άσκησης. Ο debugger θα σου δείξει αμέσως ότι η κλάση της λύσης σου δεν βρέθηκε (αφού δεν έχεις γράψει ακόμα τίποτα). Βολικά, υπάρχει ένα κουμπί "Create" που σε βοηθά να προσθέσεις την κλάση που λείπει και να συνεχίσεις να την τρέχεις μέχρι είτε να τελειώσει, είτε να συναντήσεις άλλο σφάλμα.

Δημιουργία κλάσης στον debugger

Με την πρώτη σου δοκιμή, θα συναντήσεις μετά και δεύτερο σφάλμα, αφού δεν έχεις γράψει ακόμα καμία μέθοδο. Και πάλι, το κουμπί "Create" στον debugger σου επιτρέπει να ορίσεις μία και να συνεχίσεις την εκτέλεση. Σε αυτό το σημείο μπορείς επίσης να κάνεις κλικ πιο κάτω στο stack trace, να δεις τις απαιτήσεις της δοκιμής που αποτυγχάνει και να τροποποιήσεις τη νέα σου μέθοδο ώστε να περάσει.

Να αγαπήσεις τον debugger

Αργότερα στον κύκλο ανάπτυξής σου, μπορεί να σου φανεί επίσης χρήσιμο να κάνεις κλικ πιο πίσω στο stack και να χρησιμοποιήσεις το κουμπί "Restart" για να συνεχίσεις την εκτέλεση του προγράμματος από ένα προηγούμενο σημείο, ώστε μετά να βηματίσεις μέσα στο πρόγραμμά σου και να δεις τι συμβαίνει. Αυτός είναι ένας σημαντικός και χρήσιμος τρόπος να καταλάβεις γιατί το πρόγραμμά σου δεν δουλεύει.

Εκτός από το να βλέπεις τις μεταβλητές στον debugger, μπορείς επίσης να επισημάνεις οποιαδήποτε εντολή και να κάνεις κλικ στο inspect/print για να δεις το αποτέλεσμα της αξιολόγησής της. Αυτό μπορεί να σου φανεί χρήσιμο όταν δοκιμάζεις τα αποτελέσματα μιας μεθόδου ή όταν εξετάζεις την εσωτερική κατάσταση ενός αντικειμένου.

Επιθεώρηση μιας εντολής

Μην ξεχνάς ότι μπορείς επίσης να κάνεις αλλαγές σε κώδικα που εκτελείται μέσα στον debugger, και το να αποθηκεύσεις μια αλλαγή θα κάνει απλώς την εκτέλεση να ξεκινήσει ξανά από τη μέθοδο που μόλις αποθηκεύτηκε. Αυτό σου επιτρέπει να πειραματίζεσαι με αλλαγές και να βλέπεις τα αποτελέσματά τους ενώ είσαι ακόμα "στη στιγμή".

Συνοψίζοντας, μη φοβάσαι να χρησιμοποιείς τον debugger στο Pharo: τον θεωρούμε πολύτιμο εργαλείο που βοηθά να καταλάβεις ένα πρόβλημα και να πειραματιστείς μαζί του.

Μεγαλύτερες ομάδες δοκιμών και αυτοματοποίηση

Αν χρειαστεί ποτέ να τρέξεις μεγαλύτερες ομάδες δοκιμών, μπορείς να τις τρέξεις και από το μενού Package, καθώς και να χρησιμοποιήσεις το εργαλείο Test Runner (το ανοίγεις από το μενού World ή πληκτρολογώντας <meta> + OU).

Μπορείς επίσης να τρέξεις δοκιμές προγραμματιστικά από το playground κάνοντας print evaluate:

AllExercismTests suite run.

Αν θέλεις να μάθεις περισσότερα για το εσωτερικό των δοκιμών, μπορείς να διαβάσεις για το SUnit ή να περιηγηθείς στον κώδικα της ιεραρχίας TestCase.

Το ήξερες; Το TDD επινοήθηκε στη Smalltalk με την εισαγωγή της βιβλιοθήκης δοκιμών SUnit