Showing posts with label Robot framework. Show all posts
Showing posts with label Robot framework. Show all posts

Aug 2, 2015

Κυκλοφόρησε η έκδοση του Robot framework 2.9

Την 1η Αυγούστου κυκλοφόρησε η έκδοση 2.9 του acceptance testing framework Robot. H ενημέρωση στην νέα έκδοση είναι εύκολη στο Linux με την εντολή:

sudo pip install robotframework -U
Ίσως το κυριότερο νέο χαρακτηριστικό είναι η υποστήριξη dictionaries (maps) για τις μεταβλητές ενός τεστ. Πάντως, αυτού του είδους οι μεταβλητές δεν υποστηρίζονται προς το παρόν από το Ride 1.4 (άρα θα πρέπει να καταφύγουμε σε text-mode για να τις δηλώσουμε) Ένα επιπλέον πρόβλημα με το Ride 1.4 είναι πως δεν αναγνωρίζονται σωστά οι built-in βιβλιοθήκες και εμφανίζονται με κόκκινο χρώμα. Παρόλο που αυτό δεν δημιουργεί πρόβλημα στην εκτέλεση των tests, ωστόσο προκαλεί προβλήματα στο Ride καθώς δεν αναγνωρίζονται τα σχετιζόμενα keywords. Ας ελπίσουμε πως σύντομα θα υπάρξει διόρθωση.

Ενημέρωση 11/8/2015: Με την έκδοση 1.4.1b2 του Ride επιλύεται το θέμα των Built-in libraries, ενώ δεν υπάρχει ακόμα υποστήριξη για dictionary variables.

Dec 14, 2014

Robot framework + Selenium + Continuous integration σε Weblogic

Ένα από τα πιο ισχυρά χαρακτηριστικά της έκδοσης 12c του Oracle Fusion Middleware είναι η υποστήριξη του Maven τόσο σχεδιαστικά (στον JDeveloper) όσο και εκτελεστικά σε σχέση με τον Weblogic. Για πρώτη φορά μάλιστα υπάρχει και επίσημος οδηγός της Oracle για Continuous Integration. Σε αυτό το άρθρο θα ήθελα να τονίσω την εντυπωσιακή ευκολία κατάρτισης μιας ροής που θα κάνει deploy μια εφαρμογή στον Weblogic Server και έπειτα θα εκτελεί acceptance tests γραμμένα στο Robot framework, σε ένα περιβάλλον continuous integration (πχ Jenkins ή Hudson)

Ως προς την κατάρτιση των acceptance tests και την εκτέλεση τους μέσω Maven, υπάρχει ένα ειδικό plugin του Robot. H τοποθεσία των σεναρίων ελέγχου αναμένεται στην διαδρομή: src/test/robotframework/acceptance. Προκειμένου τα web tests μας να έχουν πρόσβαση στην Selenium βιβλιοθήκη αρκεί να προσθέσουμε το dependency για την Java Selenium2 βιβλιοθήκη:

 <dependency>  
   <groupId>com.github.markusbernhardt</groupId>  
   <artifactId>robotframework-selenium2library-java</artifactId>  
   <version>1.4.0.7</version>  
   <scope>test</scope>  
 </dependency>  

Στα πλαίσια του Maven πρέπει να ορίσουμε το Weblogic deployment plugin καθώς και αυτό του Robot. Στο παράδειγμα μας, μπορούμε να αναθέσουμε μεταβλητές για τα Robot test scripts μας (όπως αυτό του appurl) Επίσης, τα tags που θέλουμε να εκτελεστούν (για παράδειγμα τα sanity tests και όχι τα load)

 <plugin>  
     <groupId>com.oracle.weblogic</groupId>  
     <artifactId>weblogic-maven-plugin</artifactId>  
     <version>12.1.3-0-0</version>  
     <configuration>  
      <adminurl>${weblogic.admin.url}</adminurl>  
      <user>${weblogic.username}</user>  
      <password>${weblogic.passwd}</password>  
      <upload>true</upload>  
      <action>deploy</action>  
      <remote>true</remote>  
      <verbose>true</verbose>  
      <targets>${weblogic.targets}</targets>  
      <source>${basedir}/target/myapp-${project.version}.ear</source>  
      <name>moj-gn</name>  
     </configuration>  
     <executions>  
      <execution>  
       <phase>pre-integration-test</phase>  
       <goals>  
        <goal>deploy</goal>  
       </goals>  
      </execution>  
     </executions>  
    </plugin>  
   <plugin>  
     <groupId>org.robotframework</groupId>  
     <artifactId>robotframework-maven-plugin</artifactId>  
     <version>1.4.3</version>  
     <configuration>  
     <variables>  
     <variable>appurl:${myappurl}</variable>  
   </variables>  
     <includes>  
      <tag>sanity</tag>  
     </includes>  
     <excludes>  
     <tag>load</tag>  
     </excludes>  
     </configuration>  
     <executions>  
      <execution>  
       <goals>  
        <goal>run</goal>  
       </goals>  
      </execution>  
     </executions>  
    </plugin>  
Στον υπολογιστή του CI θα πρέπει να έχουν εγκατασταθεί:

  • ένας browser (πχ firefox)
  • o X virtual frame buffer και να έχει ξεκινήσει ως service
Όλα αυτά στο Ubuntu γίνονται με την εντολή: sudo apt-get install firefox xvfb

Τέλος στον Jenkins/Hudson, αρκεί να θέσουμε την μεταβλητή DISPLAY στην τιμή :99.
Στο επόμενο deployment του Weblogic, θα εκτελεστούν και τα tests μας. Εντυπωσιακό !

Sep 15, 2014

Αυτοματοποίηση ελέγχου (testing) του Oracle Database με το Robot σε Ubuntu

Έχουμε αναφερθεί στο παρελθόν στο Robot framework για την κατάρτιση αυτοματοποιημένων σεναρίων ελέγχου (test cases) Η απλότητα στη δήλωση των βημάτων ενός σεναρίου και οι πολλές του βιβλιοθήκες το καθιστούν μια πολύ αξιόπιστη λύση για την αυτοματοποίηση και σε προϊόντα της Oracle, όπως για παράδειγμα το SOA Suite ή τον Weblogic Server. Σε αυτό το άρθρο θα σας παρουσιάσω πως μπορούμε να κατασκευάσουμε σενάρια στο Robot που θα αφορούν την Oracle βάση δεδομένων. Ως λειτουργικό σύστημα αναφοράς θα χρησιμοποιήσουμε το Ubuntu 14.04 (Trusty Tahr) ενώ η αρμόδια βιβλιοθήκη του Robot είναι η "Database Library (python)" που υποστηρίζει μέχρι την έκδοση 12c.
 1) Αρχικά, θα κατεβάσουμε τον instant client της Oracle καθώς και το SDK. Για το Ubuntu θα χρειαστούμε τις .zip εκδόσεις.

2) Αφού κάνουμε unzip τα αρχεία πχ στον κατάλογο $HOME/instantclient_12_1, ορίζουμε στο αρχείο .bashrc του χρήστη που θα χρησιμοποιήσει το Robot τα εξής:
export ORACLE_HOME=$HOME/instantclient_12_1
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH

και μετά:
ln -s $ORACLE_HOME/libclntsh.so.12.1 $ORACLE_HOME/libclntsh.so

3) Ως root δημιουργούμε το αρχείο /etc/ld.so.conf.d/oracle.conf με τα ακόλουθα περιεχόμενα, που δείχνουν στον κατάλογο του instant client:

/home/robot/instantclient_12_1

και τρέχουμε την εντολή:

#> ldconfig

4) Προετοιμάζουμε το Ubuntu για την εγκατάσταση με τις εντολές:

sudo apt-get install python-pip python-dev python-wxgtk2.8 libaio1
sudo pip install robotframework
sudo pip install robotframework-ride
sudo pip install robotframework-databaselibrary


5) Τέλος, συνδεόμαστε ως ο χρήστης που θα τρέξει το Robot και εκτελούμε τις εντολές:
sudo bash
#> pip install cx_Oracle

Έχουμε τελειώσει με τις εγκαταστάσεις. Μπορούμε να φτιάξουμε το πρώτο μας σενάριο. Η βιβλιοθήκη Database Library υποστηρίζει εντολές όπως Connect to Database, Query, Execute SQL script, Check If Exists In Database, κ.α. Δυστυχώς οι σχετικές row assertion εντολές όπως οι Row Count δεν δουλεύουν για την Oracle. Έτσι μπορούμε να φτιάξουμε σενάρια που εκτελούν μια SQL εντολή, μια stored procedure ή ένα script, ελέγχουν την ύπαρξη αποτελεσμάτων, κτλ.

Mar 27, 2014

Εκτέλεση σεναρίων ελέγχου (test cases) διαφορετικών browsers στο Robot framework

Ένα εξαιρετικά ενδιαφέρον acceptance testing framework είναι το Robot. Διακρίνεται αφενός για την απλότητα του, καθώς τα βήματα ελέγχου περιγράφονται σε απλή, φυσική γλώσσα που καταχωρείται στην μορφή κελιών, παρόμοιων με αυτών ενός φύλλου εργασίας (spreadsheet) Γι' αυτή τη λειτουργικότητα προσφέρεται το περιβάλλον προγραμματισμού R(obot)IDE. Αφετέρου, διαθέτει μια μεγάλη λίστα από βιβλιοθήκες ή επεκτάσεις αν προτιμάτε, ώστε να καλύψει ελέγχους σε βάσεις δεδομένων, συνδέσεις ssh, web services, web user interfaces κλπ.
Για την εκτέλεση σεναρίων σε web σελίδες μπορεί να χρησιμοποιηθεί η βιβλιοθήκη του Selenium που είναι εξαιρετικά ισχυρή σε επιλογές ώστε να προσομοιώνει την καταχώρηση του χρήστη, τα δυναμικά γεγονότα που συμβαίνουν σε μια σελίδα και να τα αντιπαραβάλει με τα επιθυμητά αποτελέσματα. Προκειμένου να ξεκινήσει ένα τεστ, μια από τις πρώτες Selenium εντολές που θα χρησιμοποιήσουμε είναι αυτή του "Open Browser" που επιδέχεται ως όρισμα και τον τύπο του φυλλομετρητή. Έτσι, μπορούμε να φτιάξουμε μια μεταβλητή στο Robot (πχ "browser") που θα δηλώνει αυτόν τον τύπο (πχ με τιμή "firefox" ή "chrome") και αναλόγως να την τροφοδοτούμε. Για παράδειγμα, η command-line εκτέλεση ενός Robot test suite έχει ως εξής, λαμβάνοντας ως παράμετρο τον τύπο του browser:

pybot -v browser:firefox /home/user/Projects/testing/robot/testsuite1/TestSuite1.robot

Στις δοκιμές μου σε Ubuntu 13.10 (Saucy Salamander) δεν παρουσιάστηκε κανένα πρόβλημα με τον Firefox. Υπάρχει όμως μια μικρή σημείωση για την υποστήριξη του Chromium. Θα χρειαστεί να κατεβάσουμε τον Chrome Webdriver από εδώ και να τον τοποθετήσουμε σε ένα φάκελο που βρίσκεται στο PATH μας. Τέλος, να φτιάξουμε ένα symbolic link του Chromium για το alias google-chrome:

ln -s /usr/bin/chromium-browser /usr/bin/google-chrome