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, ελέγχουν την ύπαρξη αποτελεσμάτων, κτλ.

No comments: