ξεκίνησα Βόας το 2018 γιατί μισούσα τα αντικείμενα σελίδας. Σε ένα προηγούμενο έργο, είδα αντικείμενα σελίδας να μοιάζουν σε πολλές χιλιάδες γραμμές με διπλότυπες μεθόδους. Η ανάπτυξη νέων δοκιμών έγινε εφιάλτης και περίπου το 10% των δοκιμών απέτυχαν καθημερινά επειδή δεν αντιμετώπιζαν σωστά την αναμονή.
Έτσι, ενώ ετοίμαζα μια στρατηγική δοκιμής σε μια νέα εταιρεία, επένδυσα χρόνο στην εκμάθηση του Μοτίβο σεναρίου. Για να είμαι ειλικρινής, το μοτίβο φαινόταν λίγο μπερδεμένο στην αρχή, αλλά ήμουν πρόθυμος να δοκιμάσω οτιδήποτε άλλο εκτός από αντικείμενα σελίδας ξανά. Τελικά, μου έκανε κλικ: Ηθοποιοί χρήση Ικανότητες κανω Αλληλεπιδράσεις. Κεραία! Ήταν ένας καθαρός διαχωρισμός των ανησυχιών.
Δυστυχώς, οι μόνες σημαντικές υλοποιήσεις που μπορούσα να βρω για το Screenplay Pattern εκείνη την εποχή ήταν Serenity BDD σε Java και JavaScript. Η εταιρεία μου ήταν ένα κατάστημα .NET. Έψαξα για υλοποιήσεις C#, αλλά δεν βρήκα κάτι που να εμπιστευόμουν. Έτσι, πήρα την κατάσταση στα χέρια μου και εφάρμοσα μόνος μου το Screenplay Pattern στο .NET. Αρχικά, εφάρμοσα τις αλληλεπιδράσεις του Selenium WebDriver. Αργότερα, η ομάδα μου και εγώ προσθέσαμε αλληλεπιδράσεις RestSharp. Τελικά κυκλοφορήσαμε το Boa Constrictor ως έργο ανοιχτού κώδικα τον Οκτώβριο του 2020 ως μέρος του Hacktoberfest.
Με το Boa Constrictor, προσωπικά το επιδίωξα αναζωογονήστε το ενδιαφέρον για το μοτίβο του σεναρίου. Φέρνοντας το Μοτίβο Σεναρίου στο .NET, δώσαμε τη δυνατότητα σε άτομα εκτός των κοινοτήτων Java και JavaScript να το δοκιμάσουν. Με το δικό μας πλούσια έγγραφα, παραδείγματα και βίντεο, κάναμε εύκολη την ενσωμάτωση νέων χρηστών. Και μέσω ομιλίες συνεδρίων και διαδικτυακά σεμινάρια, δημοσιοποιήσαμε τις έννοιες πίσω από το Screenplay, ακόμη και για προγραμματιστές που δεν είναι C#. Ήταν φοβερό να βλέπεις τόσους πολλούς άλλους ανθρώπους στην κοινότητα των δοκιμών να αρχίζουν να μιλούν για το μοτίβο του σεναρίου τα τελευταία χρόνια.
Ήθελα επίσης να προσφέρω ένα αυτόνομη υλοποίηση του Screenplay Pattern. Δεδομένου ότι το Screenplay Pattern είναι ένα σχέδιο για την αυτοματοποίηση των αλληλεπιδράσεων, θα μπορούσε και θα έπρεπε να ενσωματωθεί με όποιος Πλαίσιο δοκιμής .NET: SpecFlow, MsTest, NUnit, xUnit.net και οποιαδήποτε άλλα. Με το Boa Constrictor, εστιάσαμε μοναδικά στο να κάνουμε τις αλληλεπιδράσεις όσο το δυνατόν άριστες και αφήσαμε άλλα έργα να χειριστούν ξεχωριστές ανησυχίες. Δεν ήθελα το Boa Constrictor να κλειδωθεί σε κάποιο συγκεκριμένο εργαλείο ή σύστημα. Υπό αυτή την έννοια, το Boa Constrictor αποκλίνει από το Serenity BDD – δεν προοριζόταν να είναι μια έκδοση .NET του Serenity, παρά το γεγονός ότι εμπνεύστηκε πολύ από το Serenity.
Επιπλέον, στο σχεδιασμό και σε όλα τα μηνύματα για το Boa Constrictor, προσπάθησα να το κάνω Κάντε το Μοτίβο του Σεναρίου ευκολονόητο. Τόσοι πολλοί άνθρωποι που ήξερα παράτησαν το Screenplay στο παρελθόν επειδή θεώρησαν ότι ήταν πολύ περίπλοκο. Ήθελα να αναλύσω τα πράγματα έτσι ώστε οποιοσδήποτε προγραμματιστής αυτοματισμού να μπορεί να το πάρει γρήγορα. Ως εκ τούτου, σχημάτισα το soundbite, «Οι ηθοποιοί χρησιμοποιούν ικανότητες για να εκτελέσουν αλληλεπιδράσεις», για να περιγράψω το μοτίβο σε μία γραμμή. Επινόησα επίσης το σλόγκαν του έργου, «Καλύτερες αλληλεπιδράσεις για καλύτερο αυτοματισμό», για να επικοινωνήσω με σαφήνεια Γιατί Το σενάριο πρέπει να χρησιμοποιείται σε εναλλακτικές λύσεις, όπως ακατέργαστες κλήσεις ή αντικείμενα σελίδας.
Μέχρι στιγμής, ο Boa Constrictor έχει πετύχει συγκρατημένα καλά αυτούς τους στόχους. Τώρα, το έργο επιδιώκει έναν ακόμη στόχο: εκδημοκρατισμός του μοτίβου του σεναρίου.
Στην καρδιά του, το Screenplay Pattern είναι ένα γενικό μοτίβο για όποιος είδος αλληλεπιδράσεων. Το μοτίβο του πυρήνα δεν πρέπει να ευνοεί κανένα συγκεκριμένο εργαλείο ή πακέτο. Οποιοσδήποτε θα πρέπει να μπορεί να υλοποιεί βιβλιοθήκες αλληλεπίδρασης χρησιμοποιώντας τα εργαλεία (ή τις «Ικανότητες») που θέλει και κάθε μία από αυτές τις βιβλιοθήκες θα πρέπει να αντιμετωπίζεται ισότιμα χωρίς προτίμηση. Πρόσφατα, στα σχέδιά μας για το Boa Constrictor 3, ανακοινώσαμε ότι θέλουμε να δημιουργήσουμε ξεχωριστά πακέτα για το μοτίβο «πυρήνα» και για κάθε βιβλιοθήκη αλληλεπιδράσεων. Ανακοινώσαμε επίσης σχέδια για προσθήκη νέων βιβλιοθηκών για Playwright και Applitools. Οι υπάρχουσες βιβλιοθήκες – Selenium WebDriver και RestSharp – δεν χρειάζεται να είναι οι μόνες βιβλιοθήκες. Το Boa Constrictor δεν προοριζόταν ποτέ να είναι απλώς ένα περιτύλιγμα WebDriver ή ένα ανώτερο αντικείμενο σελίδας. Είχε σκοπό να παρέχει καλύτερες αλληλεπιδράσεις για κάθε είδους αυτοματισμό δοκιμής.
Στην έκδοση 3.0.0, διαχωρίσαμε με επιτυχία το έργο Boa.Constrictor σε τρία νέα έργα .NET και κυκλοφορήσαμε ένα πακέτο NuGet για καθένα:
Αυτός ο διαχωρισμός δίνει τη δυνατότητα στους ανθρώπους να επιλέξουν τα μέρη που χρειάζονται. Εάν χρειάζονται μόνο αλληλεπιδράσεις Selenium WebDriver, τότε μπορούν να χρησιμοποιήσουν μόνο το πακέτο Boa.Constrictor.Selenium. Εάν θέλουν να εφαρμόσουν τις δικές τους αλληλεπιδράσεις και δεν χρειάζονται Selenium ή RestSharp, τότε μπορούν να χρησιμοποιήσουν το πακέτο Boa.Constrictor.Screenplay χωρίς να αναγκαστούν να αναλάβουν αυτές τις επιπλέον εξαρτήσεις.
Επιπλέον, συνεχίσαμε να διατηρούμε το «κλασικό» Βόας πακέτο. Τώρα, αυτό το πακέτο απλώς διεκδικεί εξαρτήσεις από τα άλλα τρία πακέτα προκειμένου να διατηρηθεί η συμβατότητα προς τα πίσω για τους ανθρώπους που χρησιμοποιούσαν την προηγούμενη έκδοση του Boa Constrictor. Ως μέρος της αναβάθμισης από 2.0.x σε 3.0.x, αλλάξαμε ορισμένους χώρους ονομάτων (οι οποίοι τεκμηριώνονται στο ημερολόγιο αλλαγών έργου), αλλά ο υπόλοιπος κώδικας παρέμεινε ίδιος. Θέλαμε η αναβάθμιση να είναι όσο το δυνατόν πιο απλή.
Οι βασικοί συντελεστές και εγώ θα συνεχίσουμε να εφαρμόζουμε τα σχέδιά μας για το Boa Constrictor 3 τις επόμενες εβδομάδες. Έχουμε πολλά να κάνουμε και θα κάνουμε ό,τι καλύτερο μπορούμε για να εφαρμόσουμε νέο κώδικα με προσοχή και ποιότητα. Θα προσπαθήσουμε επίσης να κρατήσουμε τα πάντα τεκμηριωμένα. Παρακαλούμε να είστε υπομονετικοί μαζί μας καθώς προχωρά η ανάπτυξη. Χαιρετίζουμε επίσης τις συνεισφορές, τις ιδέες και τα σχόλιά σας. Ας κάνουμε το Boa Constrictor εξαιρετικό μαζί.