9 καλύτερα αυτοματοποιημένα πλαίσια δοκιμών για την PHP
Έχετε ξοδεψει πολλές φορές την αποσφαλμάτωση του κώδικα PHP; Λοιπόν, για τους περισσότερους προγραμματιστές δεν είναι πιθανώς η πιο συναρπαστική πρόκληση, αλλά υπάρχει μια λύση που μπορεί να μας βοηθήσει να συντομεύσουμε αυτό το κουραστικό έργο. Αυτοματοποιημένες δοκιμές μπορεί να βελτιώσει σημαντικά τη ροή εργασίας της ανάπτυξης PHP από επιτρέποντας προ-γραπτές δοκιμές για να οδηγήσει τη διαδικασία ανάπτυξης.
Σε αυτή τη θέση θα προσπαθήσουμε να καταλάβουμε γιατί οι αυτοματοποιημένες δοκιμές είναι τόσο δροσερές, πώς λειτουργεί και τι είναι τα καλύτερα πλαίσια δοκιμών μπορείτε να ξεκινήσετε με.
Γιατί η δοκιμή είναι σημαντική
Οι αρχάριοι προγραμματιστές της PHP δεν τείνουν να γράφουν δοκιμές για τον κώδικα τους. Οι περισσότεροι από εμάς ξεκίνησαν τη σταδιοδρομία μας δοκιμάζοντας νέα χαρακτηριστικά και λειτουργίες που είχαμε μόλις γράψει στο παράθυρο του προγράμματος περιήγησης μία προς μία και όταν κάτι πήγε στραβά ξέχασα τι να κάνουμε.
Οι δοκιμασίες γραφής για τον κώδικα μας μπορούν να απολέσουν τον πολύτιμο χρόνο αποσφαλμάτωσης και τις ώρες πονοκεφάλου. Όταν ο κώδικας που δεν έχει δοκιμαστεί πηγαίνει στην παραγωγή, οι κριτικές που θα πάρουμε πιθανώς δεν θα είναι τόσο ωραίες. Λοιπόν, τι μπορούμε να κάνουμε?
Ίσως η καλύτερη ιδέα να είναι να δημιουργηθεί μια ροή εργασίας παραγωγικού ελέγχου στην οποία πρέπει να γράψουμε τον δικό μας κώδικα δοκιμών που ελέγχει εάν ο κώδικας εφαρμογής λειτουργεί σωστά.
Το κόλπο είναι αυτό ο κώδικας δοκιμής πρέπει να γραφτεί πριν από τον κωδικό εφαρμογής. Με αυτόν τον τρόπο μπορούμε να εξασφαλίσουμε από την αρχή ότι ο κώδικας που γράφουμε λειτουργεί σωστά. Ο κώδικας δοκιμής θα μεταφερθεί σε ξεχωριστά αρχεία. Αν αργότερα χτυπήσουμε σε τυχόν λάθη στην PHP εφαρμογή μας, δεν χρειάζεται να κάνουμε τίποτα άλλο, απλά τρέξτε τις δοκιμές μας που ελπίζουμε ότι θα μας δώστε τις κατάλληλες υποδείξεις για τα προβλήματα.
Εκτός από την εξοικονόμηση χρόνου και την κατάλληλη προετοιμασία της εφαρμογής μας για παραγωγή, οι δοκιμές έχουν πολλά άλλα πλεονεκτήματα, όπως:
- πιο διατηρήσιμο κώδικα
- διευκολύνει τον επαναπροσδιορισμό
- λιγότερα ζητήματα ασφάλειας
- λιγότερο βάθος κώδικα κώδικα (η προσαρμογή του κώδικα αίτησης στον προ-γραπτό κώδικα δοκιμής θα μας κάνει να παραλείψουμε περιττά μέρη)
- καλύτερη απόδοση
Τι είναι η αυτοματοποιημένη δοκιμή?
Φυσικά, μπορούμε να γράψουμε τις δοκιμές μας με το χέρι, αλλά μετά από λίγο μπορεί να είναι κουραστικό και χρονοβόρο με πολλά επαναλαμβανόμενα καθήκοντα. Οι χειρωνακτικές δοκιμές μπορούν να αντικατασταθούν από αυτοματοποιημένες δοκιμές στις οποίες χρησιμοποιούμε ειδικά λογισμικά που θα κάνουν την κουραστική δουλειά για εμάς και μπορούμε να περάσουμε περισσότερο χρόνο με τη δημιουργία της λογικής του κώδικα δοκιμής.
Η PHP είναι ευτυχώς μια αρκετά δημοφιλής γλώσσα προγραμματισμού, οπότε υπάρχουν πολλά αυτοματοποιημένα πλαίσια δοκιμών από τα οποία μπορούμε να επιλέξουμε.
Ανάπτυξη με γνώμονα την εξέλιξη (TDD) έναντι εξέλιξης με γνώμονα τη συμπεριφορά (BDD)
Οι δύο βασικές προσεγγίσεις που χρησιμοποιούν τα αυτοματοποιημένα πλαίσια δοκιμών είναι η ανάπτυξη με γνώμονα την εξέλιξη (TDD) και η ανάπτυξη με γνώμονα την συμπεριφορά (BDD). Και στις δύο περιπτώσεις, η διαδικασία ανάπτυξης οδηγείται από δοκιμές, δηλαδή οι δοκιμές γράφονται πριν από τον κώδικα εφαρμογής.
Η κύρια διαφορά μεταξύ των δοκιμών με γνώμονα τη δοκιμή και της συμπεριφοράς καθοδηγούμενων δοκιμών είναι στη σύνταξη του κώδικα δοκιμής: Το TDD χρησιμοποιεί σωστό κώδικα PHP στα αρχεία δοκιμών, ενώ Το BDD χρησιμοποιεί προτάσεις που μπορούν να διαβαστούν από άνθρωπο που περιγράφουν τη συμπεριφορά κάθε χαρακτηριστικού και μπορούν να γίνουν κατανοητά και από τους μη τεχνικούς ενδιαφερόμενους.
Μια δοκιμή TDD μοιάζει με αυτή στο πρόγραμμα επεξεργασίας κώδικα, είναι απλά ένας κανονικός αντικειμενοστρεφής κώδικας PHP:
Μια δοκιμή BDD είναι παρόμοια με αυτή, οι μη προγραμματιστές μπορούν επίσης να το καταλάβουν:
10 πλαίσια αυτοματοποιημένων δοκιμών PHP
Με αυτό κατά νου, ας ρίξουμε μια ματιά σε 10 ισχυρά αυτοματοποιημένα πλαίσια δοκιμών Για την PHP μπορείτε να χρησιμοποιήσετε.
1. PHPUnit
Το PHPUnit είναι το πιο γνωστό πλαίσιο δοκιμών για τη σύνταξη δοκιμών μονάδων για εφαρμογές PHP. Οι δοκιμές μονάδας λαμβάνουν μικρά τμήματα κωδικών που ονομάζονται μονάδες και τα δοκιμάζουμε ένα προς ένα. Με τη βοήθεια της PHPUnit μπορούμε να διεξαγάγουμε δοκιμαστική ανάπτυξη.
Μπορεί να χρησιμοποιηθεί μέσω του γραμμή εντολών, και μας παρέχει ένα εύχρηστη κλάση TestCase ότι μπορούμε να επεκτείνουμε ανάλογα με τις ανάγκες μας. Το PHPUnit επιτρέπει επίσης στους προγραμματιστές να χρησιμοποιούν προ-γραπτές μεθόδους ισχυρισμού για να βεβαιωθεί ότι η εφαρμογή συμπεριφέρεται με κάποιο τρόπο.
2. Κώδικας
Η κωδικοποίηση δεν μας επιτρέπει μόνο να γράφουμε Δοκιμές Μονάδων, αλλά και Δοκιμές Λειτουργίας και Αποδοχής. Αυτά τα δύο τελευταία δοκιμάζουν την εφαρμογή PHP ως σύνολο με όλα τα χαρακτηριστικά δεμένα μεταξύ τους, όχι ως μονάδες. Η κωδικοποίηση μας επιτρέπει να ενεργοποιούμε και να διαμορφώνουμε διαφορετικές ενότητες σύμφωνα με τις αναπτυξιακές μας ανάγκες.
Είναι ενσωματωμένο σε πολλά πλαίσια ανάπτυξης PHP όπως Symfony2, Laravel4, Yii, Phalcon και το πλαίσιο Zend. Αυτό σημαίνει ότι μπορούμε να χρησιμοποιήσουμε ένα πλαίσιο δοκιμής αυτοματισμού PHP και ένα πλαίσιο ανάπτυξης της PHP μαζί για να δημιουργήσουμε μια ροή εργασίας με υπερβολική ανάπτυξη.
3. Behat
Το Behat είναι ένα δημοφιλές πλαίσιο δοκιμών PHP. Οι δοκιμές που μπορούμε να γράψουμε με τον Behat φαίνονται μάλλον όπως ιστορίες από τον κώδικα. Ο Behat χρησιμοποιεί τον υποτύπο StoryBDD της εξέλιξης με γνώμονα τη συμπεριφορά (ο άλλος υποτύπος είναι SpecBDD).
Το πλαίσιο ήταν εμπνευσμένο από το πρόγραμμα αγγούρι που αποτελεί πλαίσιο δοκιμών για τη γλώσσα προγραμματισμού Ruby.
4. PHPSpec
Το PHPSpec ακολουθεί επίσης την προσέγγιση της δοκιμής με γνώμονα τη συμπεριφορά, αλλά τον άλλο υπότυπο που ονομάζεται SpecBDD. Με το PHPSpec πρέπει να το κάνουμε γράψτε πρώτα τις προδιαγραφές που περιγράφουν τον τρόπο συμπεριφοράς του κώδικα εφαρμογής. Ήταν επίσης εμπνευσμένο από ένα πλαίσιο ελέγχου Ruby που ονομάζεται RSpec.
5. Storyplayer
Το Storyplayer είναι ένα πλήρες δοκιμαστικό πλαίσιο που επιτρέπει την πραγματοποίηση γράψτε δοκιμές από άκρο σε άκρο για μια ολόκληρη πλατφόρμα. Το Storyplayer έχει υποστήριξη για δημιουργώντας και καταστρέφοντας περιβάλλοντα δοκιμών κατόπιν αιτήματος. Ακολουθεί την προσέγγιση δοκιμής TDD και μας επιτρέπει να γράψουμε λειτουργικές δοκιμές που μπορούν να ελέγξουν μια εφαρμογή ως σύνολο.
6. Peridot
Το Peridot είναι ένα ελαφρύ, εκτεταμένο πλαίσιο δοκιμών για την PHP. Διαθέτει ένα αρχιτεκτονική που βασίζεται στην εκδήλωση που επιτρέπει στους δοκιμαστές να είναι εύκολα να προσαρμόσετε το πλαίσιο μέσω plugins και δημοσιογράφων.
Η Peridot χρησιμοποιεί το περίγραψέ το σύνταξη για τη δημιουργία μιας σαφούς και αναγνώσιμης γλώσσας δοκιμής που θα περιγράφει με σαφήνεια τον τρόπο συμπεριφοράς του κώδικα εφαρμογής μας.
7. Atoum
Το Atoum είναι ένα διαισθητικό και σύγχρονο πλαίσιο δοκιμών PHP που μας επιτρέπει να διεξάγουμε δοκιμές μονάδων. Απλοποιεί την εξέλιξη των δοκιμών και, καθώς είναι ένα νέο πλαίσιο, χρησιμοποιεί κάποιες νεότερες δυνατότητες που εισήχθησαν στην PHP 5.3 (μπορείδεν μπορεί να χρησιμοποιηθεί με παλαιότερες εκδόσεις PHP) για να μας παράσχει μια γρήγορη και εύκολη στην κατανόηση διαδικασία ελέγχου.
Η Atoum εξασφαλίζει ένα υψηλό επίπεδο ασφάλειας κατά την εκτέλεση της δοκιμής, καθώς απομονώνει κάθε μέθοδο δοκιμής στη δική της διαδικασία PHP.
8. Kahlan
Το Kahlan είναι ένα πλήρως δοκιμασμένο πλαίσιο δοκιμών BDD που επιτρέπει την εγγραφή μονάδων δοκιμών χρησιμοποιώντας το περίγραψέ το σύνταξη. Αγκαλιάζει την αρχή σχεδιασμού KISS (Keep It Simple, Stupid). Kahlan απαιτεί τουλάχιστον PHP 5.5.
Έχει μια μικρή βάση κώδικα, λέγεται ότι είναι περίπου 10 φορές μικρότερη από την PHPUnit και έχει πολλά χαρακτηριστικά που μας παρέχουν μια εκτάσιμη και προσαρμόσιμη ροή εργασίας δοκιμών.
9. Σελήνιο
Το σελήνιο είναι ένα εξελιγμένο πλαίσιο δοκιμών που αυτοματοποιεί τα προγράμματα περιήγησης. Αυτό σημαίνει ότι είναι δυνατή η εγγραφή των Δοκιμών Αποδοχής Χρήστη ότι εξετάστε ολόκληρη την εφαρμογή ως σύνολο.
Το σελήνιο είναι ένα ισχυρό εργαλείο που έχει το δικό του API WebDriver που μπορεί να οδηγήσει ένα πρόγραμμα περιήγησης γενετικά ως αν και ένας πραγματικός χρήστης θα το χρησιμοποιήσει είτε τοπικά είτε σε απομακρυσμένο μηχάνημα. Το σελήνιο είναι ένα εξαιρετικό εργαλείο για τον έλεγχο πιο ώριμων εφαρμογών ιστού.
Τελικές σκέψεις
Τα αυτοματοποιημένα πλαίσια δοκιμών μας εξουσιοδοτούν να γράψουμε κώδικα PHP υψηλότερης ποιότητας και λόγω της δημοτικότητας της γλώσσας έχουμε πολλές επιλογές, ώστε να μπορέσουμε να επιλέξουμε εκείνο που ανταποκρίνεται στις αναπτυξιακές μας ανάγκες το καλύτερο.
Υπάρχει ένα σημαντικό πράγμα όμως που πάντα πρέπει να έχουμε κατά νου. Οι αυτοματοποιημένες δοκιμές μπορεί να είναι ισχυρές, αλλά μπορούν ποτέ να αντικαταστήσετε τη δοκιμή beta - δοκιμές που γίνονται από πραγματικούς ανθρώπους που θα είναι οι μελλοντικοί χρήστες της εφαρμογής.