Η σταδιακή δοκιμή στον έλεγχο λογισμικού είναι μια μεθοδολογία που επιτρέπει στις ομάδες να αναλύουν μεμονωμένες ενότητες, να τις δοκιμάζουν μεμονωμένα και να τις ενσωματώνουν σταδιακά. Βοηθά στην έγκαιρη εύρεση ελαττωμάτων, μειώνει την πολυπλοκότητα και αυξάνει την κάλυψη των δοκιμών.
Αυτό το άρθρο θα κάνει μια βαθιά κατάδυση στη σταδιακή δοκιμή, θα εξηγήσει τι είναι και θα διερευνήσει τους διαφορετικούς τύπους, τις διαδικασίες, τις προσεγγίσεις, τα εργαλεία και άλλα που σχετίζονται με αυτή τη χρήσιμη μεθοδολογία.
Τι είναι η επαυξητική δοκιμή;
Η δοκιμή είναι ένα από τα σημαντικότερα στάδια του κύκλου ζωής της ανάπτυξης λογισμικού (SDLC). Ακριβώς όπως και στο SDLC, η δοκιμή αναλύεται σε διάφορα λογικά βήματα. Η σταδιακή δοκιμή είναι ένα από αυτά τα στάδια και συνήθως πραγματοποιείται κατά τη διάρκεια
δοκιμή ολοκλήρωσης
και αμέσως μετά
δοκιμή μονάδας
.
Σταδιακή δοκιμή είναι μια ρεαλιστική προσέγγιση δοκιμής λογισμικού που αναλύει μεγάλα ή πολύπλοκα προγράμματα σε διαχειρίσιμα, μικρά κομμάτια. Αντί να ενσωματώνεται και να δοκιμάζεται ένα ολόκληρο σύστημα λογισμικού ταυτόχρονα, η σταδιακή δοκιμή εξετάζει τις ενότητες και εφαρμόζει μια σταδιακή διαδικασία επαλήθευσης.
Οι ενότητες λογισμικού είναι συνήθως αυτοτελείς μονάδες κώδικα που εκτελούν συγκεκριμένες εργασίες ή λειτουργίες. Το πόσο λεπτομερείς είναι αυτές οι ενότητες εξαρτάται από διάφορους παράγοντες, όπως οι πρακτικές κωδικοποίησης, οι μεθοδολογίες ανάπτυξης ή ακόμη και η γλώσσα προγραμματισμού που χρησιμοποιείτε.
Οι ενότητες δοκιμάζονται ανεξάρτητα κατά τη διάρκεια των δοκιμών μονάδας. Στη συνέχεια, κατά τη διάρκεια των δοκιμών ολοκλήρωσης, κάθε ενότητα ενσωματώνεται κομμάτι προς κομμάτι – ή σταδιακά. Αυτή η διαδικασία διασφαλίζει ότι κάθε ενότητα λειτουργεί καλά μαζί. Ωστόσο, για την πλήρη επαλήθευση κάθε ενότητας, οι ελεγκτές πρέπει να προσομοιώσουν στοιχεία που δεν έχουν ακόμη υλοποιηθεί ή εξωτερικά συστήματα. Για να το κάνουν αυτό, χρειάζονται τη βοήθεια των stubs και των οδηγών.
Τι είναι τα stubs και οι οδηγοί στις επαυξητικές δοκιμές;
Τα stubs και οι οδηγοί είναι κρίσιμα εργαλεία δοκιμής λογισμικού. Αυτά τα προσωρινά κομμάτια κώδικα χρησιμοποιούνται κατά τη διάρκεια των δοκιμών ολοκλήρωσης, επειδή προσφέρουν στις ομάδες τη δυνατότητα να μιμηθούν τις συμπεριφορές και τις διεπαφές διαφόρων ενοτήτων ή στοιχείων.
1. Στελέχη:
Τα υποκατάστατα μιμούνται ενότητες που δεν έχουν ακόμη αναπτυχθεί και ως εκ τούτου δεν είναι διαθέσιμα για δοκιμές. Επιτρέπουν στην υπό δοκιμή ενότητα (MUT) να καλεί ατελείς ενότητες. Το αποτέλεσμα είναι ότι το MUT μπορεί να δοκιμαστεί μεμονωμένα, ακόμη και όταν δεν υπάρχουν διαθέσιμες σχετικές ενότητες.
2. Οδηγοί:
Οι οδηγοί, από την άλλη πλευρά, προσομοιώνουν τη συμπεριφορά των ενοτήτων που καλούν το MUT. Μέσα στο περιβάλλον δοκιμών, αυτοί οι οδηγοί μπορούν να στέλνουν τα δεδομένα δοκιμής MUT. Και πάλι, αυτό διευκολύνει τη δοκιμή των ενοτήτων σε απομόνωση χωρίς την ανάγκη εξωτερικών εξαρτήσεων.
Η χρήση stubs ή οδηγών μειώνει το χρόνο ανάπτυξης, βελτιώνει την ποιότητα του κώδικα και αυξάνει την παραγωγικότητα της ομάδας. Ωστόσο, η απόφαση για το ποια θα χρησιμοποιηθεί εξαρτάται από τη μεθοδολογία δοκιμής που είναι η καταλληλότερη. Θα επεκταθούμε σε αυτό σε μια ενότητα παρακάτω που αφορά τους διαφορετικούς τύπους δοκιμών σταδιακής ολοκλήρωσης.
Διαφορετικοί τύποι αυξητικών
δοκιμή ολοκλήρωσης
Οι τύποι επαυξητικών δοκιμών μπορούν σε γενικές γραμμές να χωριστούν σε τρεις κατηγορίες. Ας εξερευνήσουμε το καθένα από αυτά.
1. Αυξητική ενσωμάτωση από πάνω προς τα κάτω
Η από πάνω προς τα κάτω σταδιακή ολοκλήρωση ξεκινά με τη δοκιμή των μονάδων υψηλότερης τάξης μέσα σε ένα σύστημα. Από εκεί, σταδιακά ενσωματώνει και δοκιμάζει μονάδες χαμηλότερης τάξης.Υπάρχουν δύο βασικά σενάρια όπου χρησιμοποιείται η από πάνω προς τα κάτω σταδιακή ολοκλήρωση. Είναι:
- Όταν ένα σύστημα είναι πολύ μεγάλο ή εξαιρετικά πολύπλοκο
- Όταν η ομάδα ανάπτυξης εργάζεται σε πολλές ενότητες ταυτόχρονα.
Βήματα για σταδιακές ενσωματώσεις από πάνω προς τα κάτω
- Προσδιορισμός κρίσιμων ενοτήτων
- Δημιουργήστε stubs για να μιμηθείτε ενότητες χαμηλότερης τάξης
- Ανάπτυξη προγραμμάτων οδήγησης για την αλληλεπίδραση με τις ενότητες ανώτερης τάξης για την αποστολή δεδομένων και την ερμηνεία των εξόδων της ενότητας.
- Δοκιμή μονάδας κρίσιμων ενοτήτων με οδηγούς και stubs
- Ενσωματώστε ενότητες χαμηλότερης τάξης και αντικαταστήστε σταδιακά τα stubs με πραγματικές υλοποιήσεις
- Ανασχεδιασμός των οδηγών για την προσαρμογή των νέων ενοτήτων
- Επαναλάβετε μέχρι να ενσωματωθούν και να δοκιμαστούν όλες οι μονάδες χαμηλότερης τάξης.
2. Σταδιακή ενσωμάτωση από κάτω προς τα πάνω
Οι από κάτω προς τα πάνω σταδιακές ενσωματώσεις κινούνται προς την αντίθετη κατεύθυνση. Με την προσέγγιση αυτή, δοκιμάζονται οι μονάδες χαμηλότερης τάξης (ή οι λιγότερο κρίσιμες) του συστήματος, ενώ σταδιακά προστίθενται μονάδες υψηλότερης τάξης. Η προσέγγιση αυτή είναι κατάλληλη σε διάφορα σενάρια, όπως:
- Όταν ασχολείστε με μικρότερα συστήματα
- Όταν ένα σύστημα είναι σπονδυλωτό
- Όταν έχετε κάποιες ανησυχίες σχετικά με την ακρίβεια ή την πληρότητα των αποκομμάτων.
Βήματα για σταδιακές ενσωματώσεις από κάτω προς τα πάνω
- Προσδιορισμός ενοτήτων κατώτερης τάξης
- Δοκιμή μονάδας σε ενότητες κατώτερης τάξης για την επαλήθευση της μεμονωμένης λειτουργικότητάς τους
- Ανάπτυξη οδηγών που λειτουργούν ως ενδιάμεσοι με ενότητες κατώτερης τάξης
- Δημιουργήστε stubs για την προσομοίωση της συμπεριφοράς των ενοτήτων ανώτερης τάξης
- Ενσωματώστε τις επόμενες ενότητες, από τη χαμηλότερη προς την υψηλότερη τάξη, και αντικαταστήστε σταδιακά τα stubs με πραγματικές υλοποιήσεις.
- Ανασχεδιασμός των οδηγών για την προσαρμογή των νέων ενοτήτων
- Επαναλάβετε μέχρι να ενσωματωθούν και να δοκιμαστούν όλες οι μονάδες ανώτερης τάξης.
3. Λειτουργική σταδιακή ενσωμάτωση
Η δοκιμή σταδιακής ολοκλήρωσης λειτουργιών είναι ο επόμενος κοινός τύπος σταδιακής δοκιμής στη δοκιμή λογισμικού. Ενώ τα δύο προηγούμενα είδη επικεντρώθηκαν σε ενότητες ανώτερης και κατώτερης τάξης, η λειτουργική επαυξητική δοκιμή βασίζεται στη λειτουργικότητα μιας συγκεκριμένης ενότητας.
Η λειτουργική σταδιακή ολοκλήρωση χρησιμοποιείται σε
Μεθοδολογίες Agile/DevOps
, και αποτελεί εξαιρετική επιλογή για εφαρμογές με πολύπλοκες εξαρτήσεις μεταξύ ενοτήτων ή στοιχείων.
Βήματα για τη λειτουργική σταδιακή ενσωμάτωση
- Προσδιορισμός μεμονωμένων ενοτήτων και στοιχείων με σαφώς καθορισμένες διεπαφές
- Επαλήθευση της λειτουργικότητας κάθε ενότητας μέσω δοκιμών μονάδας
- Ενσωμάτωση των πιο ελάχιστων βασικών ενοτήτων του συστήματος και διασφάλιση της λειτουργίας του.
- Προσθέστε σταδιακά μεμονωμένες ενότητες, δοκιμάζοντας τη λειτουργικότητα σε κάθε βήμα
- Αναδιαμόρφωση του κώδικα καθώς προστίθεται κάθε ενότητα
- Όταν προστεθούν όλες οι ενότητες, δοκιμάστε τη λειτουργικότητα και τις επιδόσεις
Πλεονεκτήματα και μειονεκτήματα της προσέγγισης της σταδιακής δοκιμής
Μέχρι τώρα, θα πρέπει να έχετε κάποια ιδέα γιατί η σταδιακή δοκιμή είναι μια δημοφιλής προσέγγιση. Ωστόσο, όπως όλες οι μεθοδολογίες ελέγχου λογισμικού, έχει τα πλεονεκτήματα και τα μειονεκτήματά της. Ας εξερευνήσουμε μερικά από αυτά τα πλεονεκτήματα και τα μειονεκτήματα.
Πλεονεκτήματα μιας προσέγγισης σταδιακών δοκιμών
1. Ευελιξία
Όπως όλοι οι προγραμματιστές και οι δοκιμαστές λογισμικού γνωρίζουν πολύ καλά, οι απαιτήσεις μπορούν να αλλάξουν και να εξελιχθούν κατά τη διάρκεια του SDLC, μερικές φορές αρκετά δραματικά. Η σταδιακή δοκιμή είναι αρκετά δυναμική ώστε να επιτρέπει στις ομάδες να προσαρμόζονται κατά τη διάρκεια της διαδικασίας δοκιμής και να ενσωματώνουν νέα σχέδια και κατευθύνσεις.
2. Έγκαιρη ανίχνευση σφαλμάτων
Η καλύτερη στιγμή για να εντοπίσετε ένα σφάλμα ή ελάττωμα είναι όσο το δυνατόν νωρίτερα. Όταν οι προγραμματιστές επαληθεύουν μεμονωμένα τις ενότητες σε μέγεθος μπουκιάς, ο εντοπισμός και η διόρθωση προβλημάτων είναι πολύ πιο εύκολος. Επιπλέον, συμβάλλει στον περιορισμό της πιθανότητας εμφάνισης μεγάλων ζητημάτων σε προχωρημένο στάδιο της ανάπτυξης.
3. Απλότητα
Η δοκιμή λογισμικού μπορεί να είναι μια εξαιρετικά πολύπλοκη διαδικασία. Μια από τις πιο συναρπαστικές πτυχές της σταδιακής δοκιμής βρίσκεται στον τρόπο με τον οποίο διασπά την πόλη των δοκιμών σε εφαρμόσιμα μέρη. Αντί να ασχολούνται με την υπερβολική πολυπλοκότητα, οι ελεγκτές μπορούν να επικεντρωθούν και να δώσουν προτεραιότητα σε συγκεκριμένες ενότητες. Αυτό το πλεονέκτημα είναι θεόσταλτο για μεγάλες και πολύπλοκες εφαρμογές.
4. Χαμηλότερος κίνδυνος παλινδρόμησης
Η παλινδρόμηση είναι ένα χρονοβόρο και πολύπλοκο ζήτημα στο πλαίσιο της ανάπτυξης λογισμικού. Οι σταδιακές δοκιμές μπορούν να μετριάσουν τη συχνότητα και τους κινδύνους που προκαλούνται από την οπισθοδρόμηση, επειδή επιτρέπουν στις ομάδες να δοκιμάζουν τις ενότητες ξεχωριστά και να αντιμετωπίζουν τα προβλήματα καθώς εμφανίζονται. Όταν χρησιμοποιείται με στερεά
δοκιμές παλινδρόμησης
, οι ομάδες μπορούν να εξοικονομήσουν πολύ χρόνο και πόνο.
5. Ευκαιρίες ανατροφοδότησης
Ένα συχνά παραγνωρισμένο πλεονέκτημα των σταδιακών δοκιμών είναι ότι επιτρέπει στις ομάδες το περιθώριο να δημιουργήσουν πρωτότυπα και MVPs. Από εκεί και πέρα, τα ενδιαφερόμενα μέρη και οι επενδυτές μπορούν να αξιολογήσουν τη βασική λειτουργικότητα της διαδικασίας και να παράσχουν πολύτιμα σχόλια. Αυτή η κατάσταση μπορεί να εξοικονομήσει πολύ χρόνο και χρήμα και να οδηγήσει σε πιο ισχυρά προϊόντα.
Μειονεκτήματα της προσέγγισης των σταδιακών δοκιμών
1. Ζητήματα ένταξης
Η ξεχωριστή δοκιμή των ενοτήτων είναι επιθυμητή, επειδή διασπά μια πολύπλοκη εφαρμογή σε διαχειρίσιμα κομμάτια. Ωστόσο, η ενσωμάτωση αυτών των ενοτήτων μπορεί να οδηγήσει σε νέα και απροσδόκητα σφάλματα. Ως εκ τούτου, η προσέγγιση των σταδιακών δοκιμών πρέπει να σχεδιάζεται προσεκτικά και σκόπιμα.
2. Πολυπλοκότητα της σουίτας δοκιμών
Με πολλαπλές περιπτώσεις δοκιμών για κάθε ενότητα και την αντίστοιχη αλληλεπίδρασή τους μεταξύ τους, η παρακολούθηση και η διαχείριση των συνόλων δοκιμών μπορεί να γίνει πολύπλοκη. Για μεγάλες και περίπλοκες εφαρμογές, αυτό καθιστά απαραίτητη την ενδελεχή τεκμηρίωση ή τα εργαλεία διαχείρισης δοκιμών.
3. Περισσότερη εργασία
Οι μονολιθικές δοκιμές, αν και πιο πολύπλοκες, απαιτούν λιγότερες δοκιμές. Δοκιμάζοντας πολλές ενότητες ξεχωριστά, η σταδιακή δοκιμή απαιτεί περισσότερη εργασία. Ωστόσο, τα οφέλη των σταδιακών δοκιμών, όπως η έγκαιρη ανακάλυψη σφαλμάτων, σημαίνουν ότι η επιπλέον προσπάθεια είναι μια επένδυση που εξοικονομεί χρόνο. Φυσικά,
αυτοματοποίηση δοκιμών λογισμικού
μπορεί να βοηθήσει στη μείωση αυτών των προσπαθειών.
4. Αυξημένες απαιτήσεις διαχείρισης
Οι σταδιακές δοκιμές απαιτούν τη συνεργασία πολλών ομάδων. Για παράδειγμα, οι ομάδες ανάπτυξης, δοκιμών και DevOps θα πρέπει να συνεργαστούν συντονισμένα. Η κατάσταση αυτή δημιουργεί πρόσθετες απαιτήσεις διαχείρισης και απαιτεί καλή επικοινωνία μεταξύ αυτών των ομάδων, ώστε να διασφαλίζεται ότι είναι επικεντρωμένες και ότι κινούνται προς τους ίδιους στόχους.
Παράδειγμα επαυξητικών δοκιμών
Ίσως ο ευκολότερος τρόπος για να κατανοήσετε μια προσέγγιση σταδιακής δοκιμής είναι να σκεφτείτε ένα παράδειγμα. Ακολουθεί μια απλή κατάσταση που θα σας βοηθήσει να απεικονίσετε τη διαδικασία.
1. Παράδειγμα επαυξητικών δοκιμών για μια τραπεζική εφαρμογή για κινητά τηλέφωνα
Σενάριο: Μια ομάδα κατασκευάζει μια τραπεζική εφαρμογή για κινητά τηλέφωνα. Η εφαρμογή αποτελείται από διάφορες ενότητες που επιτρέπουν:
- 2FA και βιομετρική επαλήθευση χρήστη
- Επεξεργασία συναλλαγών
- Ταμπλό διαχείρισης οικονομικών δεδομένων
Στόχος: Η ομάδα θέλει να δοκιμάσει την ενσωμάτωση κάθε ενότητας και να διαπιστώσει αν λειτουργούν καλά μαζί. Ως αποτέλεσμα, δημιουργούν τρεις περιπτώσεις δοκιμών.
Περίπτωση δοκιμής 1
Στην πρώτη περίπτωση δοκιμής, η ομάδα θέλει να διασφαλίσει ότι με την εισαγωγή βιομετρικών δεδομένων ή κωδικού πρόσβασης, ο χρήστης θα αποκτήσει πρόσβαση τόσο στην επεξεργασία συναλλαγών όσο και στον πίνακα ελέγχου διαχείρισης οικονομικών δεδομένων.
Η εφαρμογή θα περάσει το τεστ αν ο χρήστης μπορεί να εισάγει τα στοιχεία του και να αποκτήσει τη δυνατότητα πρόσβασης στις συναλλαγές.
Περίπτωση δοκιμής 2
Η επόμενη περίπτωση δοκιμής έχει σχεδιαστεί για να δούμε πώς η εφαρμογή χειρίζεται μη εξουσιοδοτημένες συναλλαγές.
Η εφαρμογή περνάει τη δοκιμή εάν η απόπειρα πραγματοποίησης μη εξουσιοδοτημένης συναλλαγής εμποδίζεται και η εφαρμογή παράγει ένα μήνυμα σφάλματος.
Περίπτωση δοκιμής 3
Η τελική δοκιμή ολοκλήρωσης περιλαμβάνει την επικύρωση της δυνατότητας ταυτόχρονης πραγματοποίησης συναλλαγών από την εφαρμογή.
Η εφαρμογή θα περάσει το τεστ αν ο χρήστης μπορεί να ξεκινήσει μια συναλλαγή και να έχει πρόσβαση στις οικονομικές του πληροφορίες ταυτόχρονα χωρίς ασυνέπειες ή προβλήματα δεδομένων.
Είναι η προσέγγιση της επαυξητικής δοκιμής η
το ίδιο με τη σταδιακή δοκιμή;
Όχι. Ο έλεγχος της επαύξησης αναφέρεται σε μια στατιστική μέθοδο μάρκετινγκ που είναι ίσως περισσότερο γνωστή ως μοντελοποίηση απόδοσης. Εν ολίγοις, βοηθά τις ομάδες μάρκετινγκ να κατανοήσουν τον αντίκτυπο των διαφημιστικών εκστρατειών, των καναλιών μάρκετινγκ ή συγκεκριμένων στρατηγικών.
Αν και το ενδιαφέρον για αυτό το είδος μοντελοποίησης έχει αυξηθεί τα τελευταία χρόνια χάρη στο “θάνατο” των cookies και των δεδομένων τρίτων, η μόνη σχέση που έχει με τη σταδιακή δοκιμή είναι μια κοινή λέξη.
3 κορυφαία εργαλεία για επαυξητικές δοκιμές
#1. ZAPTEST
Εκτός από την παροχή πρώτης κατηγορίας
RPA
δυνατότητες, η ZAPTEST προσφέρει μια σειρά εργαλείων αυτοματοποίησης δοκιμών λογισμικού που είναι ιδανικά για σταδιακές δοκιμές. Ορισμένα από τα χαρακτηριστικά περιλαμβάνουν:
Διαχείριση δεδομένων δοκιμών
: Μείωση του χρόνου και της προσπάθειας που απαιτείται για τις σταδιακές δοκιμές, επιτρέποντας στις ομάδες να επαναχρησιμοποιούν δεδομένα δοκιμών.- Εγγραφή και αναπαραγωγή σεναρίου: Αυτό το εργαλείο χωρίς κώδικα επιτρέπει στις ομάδες να καταγράφουν και να εκτελούν σενάρια και να εξοικονομούν πολύ χρόνο κατά τη διάρκεια των σταδιακών δοκιμών.
- Επαναχρησιμοποιήσιμες ενότητες δοκιμών: Το ZAPTEST είναι ιδιαίτερα αρθρωτό και επιτρέπει στις ομάδες να δημιουργούν και να επαναχρησιμοποιούν ενότητες δοκιμών και να εξοικονομούν σημαντικό χρόνο από τη διαδικασία δοκιμών.
Συνολικά, το ZAPTEST προσφέρει μια ισχυρή και ποικίλη σουίτα αυτοματοποίησης δοκιμών που είναι κατάλληλη για κάθε τύπο δοκιμών, συμπεριλαμβανομένων των επαυξητικών δοκιμών.
#2. Σελήνιο
Το Selenium είναι μια πλατφόρμα αυτοματοποίησης δοκιμών ανοικτού κώδικα που έχει κατασκευαστεί για να διευκολύνει τη δοκιμή εφαρμογών για κινητά τηλέφωνα. Τα εργαλεία υποστηρίζουν διάφορες πλατφόρμες κινητών τηλεφώνων (Android, iOS, Windows) και χρησιμοποιούν stubs και drivers για την προσομοίωση μονάδων.
#3. Testsigma
Το Testsigma είναι μια πλατφόρμα αυτοματοποίησης δοκιμών που βασίζεται στο cloud. Μπορεί να χρησιμοποιηθεί για τη δοκιμή εφαρμογών ιστού και κινητών τηλεφώνων και είναι κατάλληλο για επαυξητικές δοκιμές χάρη στη δημιουργία δοκιμών χωρίς κώδικα και την ενσωμάτωση με αγωγούς CI/CD.
Τελικές σκέψεις
Η σταδιακή δοκιμή στη δοκιμή λογισμικού αποτελεί σημαντικό μέρος της δοκιμής ολοκλήρωσης. Επιτρέπει στις ομάδες να αναλύουν τις ενότητες σε εύκολα ελέγξιμα μέρη πριν τις ενσωματώσουν σιγά-σιγά. Τα οφέλη εδώ είναι ότι κάθε ενότητα μπορεί να επαληθευτεί για σφάλματα και στη συνέχεια για το πώς ενσωματώνεται με τα συνδεδεμένα μέρη της.
Παράλληλα με το καλύτερο στην κατηγορία μας
RPA
εργαλείων, το ZAPTEST προσφέρει αυτοματοποίηση δοκιμών λογισμικού χωρίς κώδικα, η οποία είναι τόσο διαπλατφορμική όσο και δια-εφαρμογή. Επιπλέον, η σουίτα δοκιμών μας διαθέτει χαρακτηριστικά όπως ενσωμάτωση CI/CD, ισχυρή αναφορά και ανάλυση, καθώς και πρώτης τάξεως υποστήριξη και εξυπηρέτηση πελατών.