Επιστροφή στο σχολείο: πώς να εκπαιδεύσετε χειροκίνητους ελεγκτές να αντιμετωπίζουν αυτοματοποιημένες δοκιμές

Τέσσερις στους πέντε αιτούντες QA θέλουν να μάθουν πώς να εργάζονται με αυτοματοποιημένα τεστ. Δεν μπορούν όλες οι εταιρείες να εκπληρώσουν τέτοιες επιθυμίες χειροκίνητων ελεγκτών κατά τις ώρες εργασίας. Ο Wrike πραγματοποίησε μια σχολή αυτοματισμού για υπαλλήλους και πραγματοποίησε αυτή την επιθυμία για πολλούς. Συμμετείχα σε αυτό το σχολείο ακριβώς ως μαθητής QA.

Έμαθα πώς να δουλεύω με το Selenium και τώρα υποστηρίζω ανεξάρτητα έναν ορισμένο αριθμό αυτόματων δοκιμών χωρίς σχεδόν καμία εξωτερική βοήθεια. Και, με βάση τα αποτελέσματα της κοινής μας εμπειρίας και τα προσωπικά μου συμπεράσματα, θα προσπαθήσω να βγάλω την ίδια τη φόρμουλα για την πιο ιδανική σχολή αυτοματισμού.

Η εμπειρία του Wrike στην οργάνωση ενός σχολείου

Όταν έγινε σαφής η ανάγκη για μια σχολή αυτοματισμού, η οργάνωσή της έπεσε στον Stas Davydov, τον τεχνικό ηγέτη του αυτοματισμού. Ποιος άλλος εκτός από αυτόν μπορεί να εξηγήσει γιατί ανέλαβαν αυτή την πρωτοβουλία, αν πέτυχαν αποτελέσματα και αν μετανιώνουν για τον χρόνο που αφιέρωσαν; Ας του δώσουμε τον λόγο:

— Το 2016, γράψαμε ένα νέο πλαίσιο για αυτόματες δοκιμές και το κάναμε έτσι ώστε να είναι εύκολη η σύνταξη δοκιμών: εμφανίστηκαν κανονικά βήματα, η δομή έγινε πολύ πιο κατανοητή. Καταλήξαμε σε μια ιδέα: πρέπει να εμπλέξουμε όλους όσους θέλουν να γράψουν νέα τεστ και για να γίνει πιο κατανοητό, δημιουργήσαμε μια σειρά από διαλέξεις. Καταλήξαμε συλλογικά σε ένα σχέδιο θεμάτων, καθένας από τους μελλοντικούς ομιλητές πήρε ένα για τον εαυτό του και ετοίμασε μια έκθεση σχετικά με αυτό.

— Τι δυσκολίες είχαν οι μαθητές;

— Κυρίως, φυσικά, η αρχιτεκτονική. Υπήρχαν πολλές ερωτήσεις σχετικά με τη δομή των δοκιμών μας. Στην ανατροφοδότηση, γράφτηκαν πολλά για αυτό το θέμα και χρειάστηκε να κάνουμε επιπλέον διαλέξεις για να εξηγήσουμε με περισσότερες λεπτομέρειες.

— Το σχολείο απέδωσε;

- Ναι σίγουρα. Χάρη σε αυτήν, πολλοί άνθρωποι ασχολήθηκαν με τη συγγραφή δοκιμών και, κατά μέσο όρο, στο νοσοκομείο, όλοι άρχισαν να καταλαβαίνουν καλύτερα τι είναι οι αυτόματες δοκιμές, πώς γράφονται και πώς ξεκινούν. Ο φόρτος στους μηχανικούς αυτοματισμού έχει επίσης μειωθεί: τώρα λαμβάνουμε πολλές φορές λιγότερα αιτήματα για βοήθεια με την ανάλυση δοκιμών, καθώς οι δοκιμαστές και οι προγραμματιστές έχουν αρχίσει να το αντιμετωπίζουν οι ίδιοι σχεδόν σε όλες τις περιπτώσεις. Λοιπόν, υπάρχουν πολλά εσωτερικά πλεονεκτήματα για το τμήμα: αποκτήσαμε εμπειρία σε παρουσιάσεις και διαλέξεις, χάρη στις οποίες ορισμένοι μηχανικοί αυτοματισμού έχουν ήδη καταφέρει να κάνουν παρουσιάσεις σε συνέδρια και επίσης έλαβαν ένα ισχυρό σύνολο βίντεο και παρουσιάσεων για νεοεισερχόμενους.

Εκ μέρους μου, θα προσθέσω ότι η επικοινωνία μεταξύ των τμημάτων μας έχει απλοποιηθεί σε ένα εντελώς γελοία εύκολο επίπεδο. Για παράδειγμα, τώρα πρακτικά δεν χρειάζεται να σκεφτώ ποιες περιπτώσεις και σε ποιο επίπεδο ατομικότητας να αυτοματοποιήσω. Ως αποτέλεσμα, όλοι οι ενδιαφερόμενοι φροντίζουν πλήρως για τη δοκιμαστική κάλυψη, η οποία συνεχώς αυξάνεται. Κανείς δεν απαιτεί το αδύνατο από τους άλλους.

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

Συμβουλές οργάνωσης

Το σχολείο ήταν χρήσιμο, αλλά, όπως παραδέχτηκε ο Stas, υπήρχαν κάποιες δυσκολίες, εξαιτίας των οποίων ήταν απαραίτητο να οργανωθούν πρόσθετες διαλέξεις. Και ως πρόσφατος μαθητής που σύγκρινε τον εαυτό μου-εν αγνοία και τον εαυτό μου-τώρα διατύπωσα τα ακόλουθα βήματα για να δημιουργήσω, κατά τη γνώμη μου, τον ιδανικό τρόπο για να διδάξω στους δοκιμαστές να κατανοούν τα αυτοματοποιημένα τεστ.

Βήμα 0. Δημιουργήστε ένα λεξικό

Φυσικά, αυτό το βήμα δεν χρειάζεται μόνο για QA. Ωστόσο, θέλω να το κάνω σαφές: η βάση κωδικών αυτοματισμού πρέπει να διατηρείται σε αναγνώσιμη μορφή. Γλώσσες προγραμματισμού - εξίσου σημαντικό Γλώσσες, και από αυτό μπορείτε να ξεκινήσετε την κατάδυσή σας.

Επιστροφή στο σχολείο: πώς να εκπαιδεύσετε χειροκίνητους ελεγκτές να αντιμετωπίζουν αυτοματοποιημένες δοκιμές

Ακολουθεί ένα στιγμιότυπο οθόνης μιας προβολής εργασιών με τα ονόματα των στοιχείων. Ας φανταστούμε ότι δοκιμάζετε την προβολή εργασιών ως μαύρο κουτί και δεν έχετε δει ποτέ σελήνιο στη ζωή σας. Τι κάνει αυτός ο κωδικός;

Επιστροφή στο σχολείο: πώς να εκπαιδεύσετε χειροκίνητους ελεγκτές να αντιμετωπίζουν αυτοματοποιημένες δοκιμές

(Spoiler - η εργασία διαγράφεται μέσω της ανάπαυσης για λογαριασμό του διαχειριστή και, στη συνέχεια, βλέπουμε ότι υπάρχει μια εγγραφή για αυτό στη ροή.)

Αυτό το βήμα μόνο φέρνει τις γλώσσες QAA και QA πιο κοντά. Είναι πιο εύκολο για τις ομάδες αυτοματισμού να εξηγήσουν τα αποτελέσματα μιας διαδρομής· οι χειροκίνητοι ελεγκτές πρέπει να καταβάλλουν λιγότερη προσπάθεια για τη δημιουργία θηκών: μπορούν να γίνουν λιγότερο λεπτομερείς. Ωστόσο, όλοι καταλαβαίνουν ο ένας τον άλλον. Λάβαμε τα κέρδη ακόμη και πριν ξεκινήσει η πραγματική εκπαίδευση.

Βήμα 1. Επαναλάβετε φράσεις

Ας συνεχίσουμε τον παραλληλισμό με τη γλώσσα. Όταν μαθαίνουμε να μιλάμε ως παιδιά, δεν ξεκινάμε από την ετυμολογία και τη σημασιολογία. Επαναλαμβάνουμε "μαμά", "αγόρασε ένα παιχνίδι", αλλά μην πάμε αμέσως στις πρωτοϊνδοευρωπαϊκές ρίζες αυτών των λέξεων. Έτσι είναι εδώ: δεν έχει νόημα να βουτάς στα βάθη των τεχνικών χαρακτηριστικών των αυτόματων δοκιμών χωρίς να προσπαθείς να γράψεις κάτι που λειτουργεί.
Ακούγεται λίγο αντιφατικό, αλλά λειτουργεί.

Στο πρώτο μάθημα, αξίζει να δώσουμε μια βάση για το πώς να γράψετε απευθείας αυτόματες δοκιμές. Βοηθάμε στη ρύθμιση του περιβάλλοντος ανάπτυξης (στην περίπτωσή μου, Intellij IDEA), εξηγούμε τους ελάχιστους γλωσσικούς κανόνες που είναι απαραίτητοι για τη σύνταξη μιας άλλης μεθόδου σε μια υπάρχουσα τάξη χρησιμοποιώντας τα υπάρχοντα βήματα. Γράφουμε ένα ή δύο τεστ μαζί τους και τους δίνουμε εργασίες για το σπίτι, τις οποίες θα μορφοποιούσα ως εξής: ένας κλάδος διακλαδίζεται από τον κύριο, αλλά έχουν αφαιρεθεί αρκετά τεστ από αυτό. Απομένουν μόνο οι περιγραφές τους. Ζητάμε από τους δοκιμαστές να επαναφέρουν αυτές τις δοκιμές (όχι μέσω εμφάνισης διαφορών, φυσικά).

Ως αποτέλεσμα, αυτός που άκουσε και έκανε τα πάντα θα είναι σε θέση:

  1. Μάθετε να εργάζεστε με τη διεπαφή περιβάλλοντος ανάπτυξης: δημιουργία διακλαδώσεων, πλήκτρων πρόσβασης, δεσμεύσεις και ωθήσεις.
  2. κατακτήστε τα βασικά της δομής της γλώσσας και των τάξεων: πού να εισάγετε ενέσεις και πού να εισάγετε, γιατί χρειάζονται σχολιασμοί και τι είδους σύμβολα βρίσκονται εκεί, εκτός από βήματα.
  3. κατανοήστε τη διαφορά μεταξύ δράσης, περιμένετε και ελέγξτε, πού να χρησιμοποιήσετε τι.
  4. παρατηρήστε τη διαφορά μεταξύ αυτόματων δοκιμών και μη αυτόματων ελέγχων: στις αυτόματες δοκιμές μπορείτε να τραβήξετε έναν ή τον άλλο χειριστή αντί να εκτελείτε ενέργειες μέσω της διεπαφής. Για παράδειγμα, στείλτε ένα σχόλιο απευθείας στο backend αντί να ανοίξετε μια προβολή εργασιών, να επιλέξετε την εισαγωγή, να πληκτρολογήσετε κείμενο και να κάνετε κλικ στο κουμπί Αποστολή.
  5. διατυπώστε ερωτήσεις που θα απαντηθούν στο επόμενο βήμα.

Το τελευταίο σημείο είναι πολύ σημαντικό. Αυτές οι απαντήσεις μπορούν εύκολα να δοθούν εκ των προτέρων, αλλά είναι μια σημαντική διδακτική αρχή ότι οι απαντήσεις χωρίς διατυπωμένες ερωτήσεις δεν απομνημονεύονται και δεν χρησιμοποιούνται όταν τελικά χρειάζονται.

Θα ήταν ιδανικό εάν εκείνη τη στιγμή ένας μηχανικός αυτοματισμού από την ομάδα QA του ανέθεσε μια εργασία με τη συγγραφή μερικών δοκιμών στη μάχη και του επέτρεπε να υπο-δεσμευτεί στον κλάδο του.

Τι δεν πρέπει να δίνετε:

  1. πιο εις βάθος γνώση της λειτουργικότητας του περιβάλλοντος ανάπτυξης και της ίδιας της γλώσσας προγραμματισμού, η οποία θα χρειαστεί μόνο όταν εργάζεστε ανεξάρτητα με υποκαταστήματα. Δεν θα το θυμόμαστε, θα πρέπει να το εξηγήσετε δύο ή τρεις φορές, αλλά εκτιμούμε τον χρόνο των μηχανικών αυτοματισμού, σωστά; Παραδείγματα: επίλυση διενέξεων, προσθήκη αρχείων στο git, δημιουργία κλάσεων από την αρχή, εργασία με εξαρτήσεις.
  2. όλα όσα σχετίζονται με το xpath. Σοβαρά. Πρέπει να μιλήσετε για αυτό ξεχωριστά, μια φορά και πολύ συγκεντρωμένα.

Βήμα 2. Ρίχνοντας μια πιο προσεκτική ματιά στη γραμματική

Ας θυμηθούμε το στιγμιότυπο οθόνης της προβολής εργασιών από το βήμα #0. Έχουμε ένα βήμα που ονομάζεται checkCommentWithTextExists. Ο δοκιμαστής μας έχει ήδη καταλάβει τι κάνει αυτό το βήμα και μπορούμε να κοιτάξουμε μέσα στο βήμα και να το αποσυνθέσουμε λίγο.

Και μέσα έχουμε τα εξής:

onCommentBlock(userName).comment(expectedText).should(displayed());

Πού είναι το onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Τώρα μαθαίνουμε να λέμε όχι «αγόρασε ένα παιχνίδι», αλλά «αγόρασε ένα παιχνίδι από το κατάστημα Detsky Mir, που βρίσκεται στο μπλε ντουλάπι στο τρίτο ράφι από την κορυφή». Είναι απαραίτητο να εξηγήσουμε ότι υποδεικνύουμε ένα στοιχείο διαδοχικά, από μεγαλύτερα στοιχεία (ροή -> μπλοκ με σχόλια από ένα συγκεκριμένο άτομο -> εκείνο το τμήμα αυτού του μπλοκ όπου βρίσκεται το καθορισμένο κείμενο).

Όχι, δεν είναι ακόμα ώρα να μιλήσουμε για xpath. Απλώς αναφέρετε εν συντομία ότι όλες αυτές οι οδηγίες περιγράφονται από αυτούς και η κληρονομικότητα περνά μέσα από αυτές. Πρέπει όμως να μιλήσουμε για όλους αυτούς τους ταιριαστούς και τους σερβιτόρους· σχετίζονται ειδικά με αυτό το βήμα και είναι απαραίτητοι για να καταλάβουμε τι συμβαίνει. Αλλά μην υπερφορτώνετε: ο μαθητής σας μπορεί αργότερα να μελετήσει μόνος του πιο περίπλοκους ισχυρισμούς. Πιθανότατα, πρέπει, waitUntil, displayed();, exist();, not(); να είναι αρκετό.

Η εργασία είναι προφανής: ένας κλάδος στον οποίο έχουν αφαιρεθεί τα περιεχόμενα πολλών βημάτων που είναι απαραίτητα για έναν ορισμένο αριθμό δοκιμών. Αφήστε τους δοκιμαστές να τα επαναφέρουν και κάντε τη διαδρομή να γίνει ξανά πράσινη.

Επιπλέον, εάν η ομάδα δοκιμών έχει όχι μόνο νέες δυνατότητες στη δουλειά της, αλλά και ορισμένες διορθώσεις σφαλμάτων, μπορείτε να του ζητήσετε να γράψει αμέσως δοκιμές για αυτά τα σφάλματα και να τα απελευθερώσει. Πιθανότατα, όλα τα στοιχεία έχουν ήδη περιγραφεί· μπορεί να λείπουν μόνο μερικά βήματα. Αυτή θα είναι η τέλεια προπόνηση.

Βήμα 3. Πλήρης εμβάπτιση

Όσο πιο πλήρης γίνεται για έναν ελεγκτή που πρόκειται να συνεχίσει να εκτελεί τα άμεσα καθήκοντά του. Τέλος, πρέπει να μιλήσουμε για το xpath.

Αρχικά, ας ξεκαθαρίσουμε ότι όλα αυτά τα onCommentBlock και τα σχόλια περιγράφονται από αυτούς.

Επιστροφή στο σχολείο: πώς να εκπαιδεύσετε χειροκίνητους ελεγκτές να αντιμετωπίζουν αυτοματοποιημένες δοκιμές

Итого:

"//div[contains(@class, ‘stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

Η σειρά της ιστορίας είναι πολύ σημαντική. Αρχικά, παίρνουμε οποιοδήποτε υπάρχον xpath και δείχνουμε πώς η καρτέλα στοιχείων περιέχει ένα και μόνο ένα στοιχείο. Στη συνέχεια, θα μιλήσουμε για τη δομή: πότε πρέπει να χρησιμοποιήσετε το WebElement και πότε πρέπει να δημιουργήσετε ένα ξεχωριστό αρχείο για ένα νέο στοιχείο. Αυτό θα σας επιτρέψει να κατανοήσετε καλύτερα την κληρονομικότητα.

Πρέπει να δηλωθεί ρητά ότι ένα μεμονωμένο στοιχείο είναι ολόκληρη η προβολή εργασιών, περιέχει ένα θυγατρικό στοιχείο - ολόκληρη τη ροή, η οποία περιέχει ένα θυγατρικό στοιχείο - ένα ξεχωριστό σχόλιο κ.λπ. Τα θυγατρικά στοιχεία βρίσκονται μέσα στα γονικά στοιχεία τόσο στη σελίδα όσο και στη δομή του πλαισίου αυτόματης δοκιμής.

Σε αυτό το σημείο, το κοινό θα πρέπει να έχει κατανοήσει καλά πώς κληρονομούνται και τι μπορεί να εισαχθεί μετά την τελεία στο onCommentBlock. Σε αυτό το σημείο, εξηγούμε όλους τους τελεστές: /, //, ., [] και ούτω καθεξής. Προσθέτουμε γνώσεις σχετικά με τη χρήση στο φορτίο @class και άλλα απαραίτητα.

Επιστροφή στο σχολείο: πώς να εκπαιδεύσετε χειροκίνητους ελεγκτές να αντιμετωπίζουν αυτοματοποιημένες δοκιμές

Οι μαθητές θα πρέπει να κατανοήσουν πώς να μεταφράζουν το xpath με αυτόν τον τρόπο. Για να εδραιωθεί - αυτό είναι σωστό, εργασία για το σπίτι. Διαγράφουμε τις περιγραφές των στοιχείων, τους αφήνουμε να επαναφέρουν την εργασία των δοκιμών.

Γιατί αυτό το συγκεκριμένο μονοπάτι;

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

Ωστόσο, μερικοί από εσάς πιθανότατα θα μπορείτε να μοιραστείτε την εμπειρία σας σχετικά με το πώς μπορεί να βελτιστοποιηθεί ακόμη περισσότερο η διαδικασία. Θα χαρώ να διαβάσω παρόμοιες προτάσεις στα σχόλια!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο