Mar 16, 2014

UI testing με το Sikuli

Το τελευταίο καιρό δοκιμάζω το sikuli για την αυτοματοποίηση εργασιών αλλά και για UI tests στο ADF. Μου αρέσει πολύ ο τρόπος καταγραφής μιας σειράς ενεργειών στο sikuli με την λήψη screenshots με αποτέλεσμα να έχει μπροστά του κανείς μια άμεση, οπτικοποιημένη περιγραφή ενός σεναρίου. Είναι ένα εργαλείο που είναι βολικό και για fat-client ή και Swing εφαρμογές που συνήθως απουσιάζουν πολλές επιλογές για αυτοματοποιημένο έλεγχο.

Προς το παρόν, το λειτουργώ στο Ubuntu 13.10 64-bit (Saucy Salamander) δίχως προβλήματα αλλά και σε Windows 7. Ας ξεκινήσουμε περιγράφοντας τη διαδικασία εγκατάστασης για Ubuntu (για την περίπτωση των Windows δεν είναι απαραίτητο το ακόλουθο βήμα) Εκτελούμε λοιπόν:

sudo apt-get install libtesseract-dev libcv2.4 tesseract-ocr

Έπειτα, κατεβάζουμε τον jar installer (sikuli-setup.jar) και φροντίζουμε να έχουμε εγκαταστημένη Java 6/7 στον υπολογιστή μας. Η εκκίνηση του installer είναι εύκολη:

java -jar sikuli-setup.jar

O installer εμφανίζει διάφορες επιλογές. Έχω προτιμήσει την πρώτη και την πέμπτη, ώστε να μπορεί να πραγματοποιηθεί OCR έλεγχος γύρω από το λεκτικό περιεχόμενο μιας εικόνας.
Με την ολοκλήρωση του installer, ξεκινούμε το σχεδιαστικό περιβάλλον με την εντολή runIDE και η γλώσσα προγραμματισμού η Jython. Το περιβάλλον περιλαμβάνει στα αριστερά τις ενέργειες που μπορεί να περιλαμβάνει το σενάριο μας, όπως clicks σε κουμπιά που θα φωτογραφίσουμε, πληκτρολόγηση σε input texts (που επίσης θα φωτογραφήσουμε) ενώ στο πάνω μέρος έχουμε τα εικονίδια για την εκκίνηση λήψης φωτογραφιών. Επίσης, με το κουμπί Run θα μπορέσουμε να εκτελέσουμε άμεσα το σενάριο μας.
Επειδή μια εικόνα είναι χίλιες λέξεις, μια ενδεικτική καταγραφή ενεργειών, θα μπορούσε να είναι η ακόλουθη, ξεκινώντας από την εκκίνηση του Firefox, την πλοήγηση σε ένα site, το login process και στην συνέχεια κάποια navigation clicks. Πρόκειται για βήματα μιας γλώσσας που δεν είναι απαραίτητες πολλές τεχνικές γνώσεις. Έλεγχοι που συνοδεύονται από οπτικές ειδοποιήσεις ή μεταβολές (πχ εμφάνιση μηνυμάτων λαθών ή ενημέρωση μιας τιμής) μπορούν να καλυφθούν με ευκολία καθώς το sikuli αυτό που κάνει καλά είναι η αντιπαραβολή και σύγκριση εικόνων (images) H σύγκριση μπορεί να περιλαμβάνει επίσης μετατροπή της εικόνας σε λεκτικά (OCR) αλλά αυτή δεν είναι πάντα επιτυχημένη.
Καθόσον αναπτύσσουμε το script μας μπορούμε άμεσα να το εκτελούμε. Στο παράδειγμα μας, το sikuli θα ξεκινήσει τον Firefox, θα πληκτρολογήσει μπροστά στα μάτια μας ό,τι έχουμε ορίσει και θα κάνει τα clicks που θέλουμε. Τα βήματα της καταγραφής μπορούν να ολοκληρωθούν με το unit testing framework της Jython και την βιβλιοθήκη HTMLTestRunner ώστε να παραχθεί μια HTML αναφορά. Φυσικά όλα αυτά μπορούν να ενταχθούν σε μια διαδικασία καθημερινού, αυτοματοποιημένου ελέγχου μέσω command-line scripting.

No comments: