Testare automată cu RobotFramework – Instalare şi primul nostru test

Cuvinte-cheie: Windows, Python 3, RobotFramework, SeleniumLibrary

Să începem prin a explica titlul. Prin testare automata trebuie să înțelegem exact ceea ce implică denumirea. Spre deosebire de o testare manuală, testarea automată nu necesită intervenția umană o dată ce testul a fost realizat. Iar cand vorbim de test vorbim de o serie de pași pe care mașina (programul) îi va urma, imitând o acțiune umană, pentru a verifica dacă rezultatul final este cel urmărit.

Astfel de testare poate ajuta la testarea regresivă. Cu alte cuvinte, teste anterioare pot fi rulate după ce s-a realizat cod nou, pentru a urmări dacă alte zone din program – website, în cazul nostru – au fost afectate de schimbările din cod (pe principiul “unde dai și unde crapă”).

RobotFramework, după cum spune și denumirea, este un… framework, o structură prestabilită de lucru pentru testare automată. Pentru testarea website-urilor vom folosi Selenium Library, o binecunoscută librărie de testare automată, care la rândul său folosește driverele de browser, care de fapt sunt motoarele care pun in funcțiune browserele.

Pentru a începe testarea automată, trebuie să instalăm toate programele necesare.

Astfel, vom începe cu instalarea Python-ului. Vom folosi Python 3. Instalarea se face prin simpla rulare a executabilului descarcabil de aici: https://www.python.org/downloads/

După instalare, asigură-te că ai executabilul de Python în variabilele de sistem:

O dată ce ai instalat Pythonul poţi verifica dacă totul este în regulă scriind în linia de comandă:

python --version

…la care ar trebui să primeşti ca răspuns versiunea de Python, în cazul meu Python 3.8.3.

O dată ce te-ai asigurat că Python este instalat şi că executabilul este în variabilele de sistem, poţi instala RobotFramework utilizând installerul specific Pythonului, “pip”. Înainte de toate, însă, să ne asigurăm că avem ultima versiune a installerului “pip”:

python -m pip install --upgrade pip

Acum, după ce am facut upgrade la pip, să continuăm cu instalarea RobotFramework:

pip install robotframework

O dată instalat, putem verifica versiunea interpretorului si a RobotFramework:

robot --version
rebot --version

Trebuie să ţinem cont că RobotFramework nu este bun doar pentru testarea cu ajutorul browserelor. De fapt el este, aşa cum spune si numele… un framework, care poate fi folosit pentru tot felul de testari automate. Pentru testarea site-urilor web este utilă folosirea unei foarte cunoscute librării: Selenium Library (https://www.selenium.dev/). Aşadar, hai să o instalăm: https://github.com/robotframework/seleniumlibrary

Instalarea se face prin rularea comenzii:

pip install --upgrade robotframework-seleniumlibrary

Acum, după ce am instalat Selenium, trebuie să îi oferim librăriei uneltele necesare pentru testare, adică driverele browserelor care permit librăriei să navigheze pe site-uri şi să testeze componentele acestora.

Putem găsi driverele pe site-ul Selenium: https://www.selenium.dev/selenium/docs/api/py/index.html#drivers.

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Firefox: https://github.com/mozilla/geckodriver/releases
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

Acestea ar trebui descărcate într-un director (C:/webdrivers) şi apoi adăugat directorul în variabilele de sistem (PATH).

O altă soluţie, puţin mai rapidă ar fi folosirea unei librării de Python care se ocupa de descărcarea de drivere web. Librăria se numeşte Webdrivermanager şi mai multe informaţii pot fi găsite aici: https://pypi.org/project/webdrivermanager/

Aşadar, scriem următoarele linii:

pip install webdrivermanager
webdrivermanager chrome firefox edge --linkpath C:/webdrivers

Acum, că avem totul instalat, e timpul să facem primele teste. Doar pentru a verifica că totul este la locul lui, să facem un director numit “tests”. Apoi să deschidem un terminal deasupra directorului “tests” şi să scriem la linia de comandă:

robot tests

Dacă totul este în regulă, ar trebui să primim un mesaj de eroare:

Acum să creăm primul nostru test. Pentru început vom testa faptul că o anumită pagină de pe internet are un titlu (<title></title>). Aşadar, hai să creăm un fişier cu denumirea “homepage.robot” în directorul “tests”.

Putem edita fişierul cu ajutorul unui editor precum Visual Studio, eventual împreună cu instalarea unei extensii precum Robot Framework Intellisense.

Un fişier de tip .robot este în general împărţit în secţiuni. Prima secţiune este cea de “Setări”:

*** Settings ***
Documentation   Primul nostru test care foloseste SeleniumLibrary
Library         SeleniumLibrary

În cadrul fişierului putem defini variabile. Şi ce loc este mai bun decât la început? Aşadar, adăugăm secţiunea de “Variabile”:

*** Variables ***
${URL}          https://avenir.ro
${BROWSER}      Chrome

În secvenţa de text de sus am definit url-ul pe care dorim să îl vizităm şi browser-ul (driver-ul) pe care dorim să îl folosim.

Acum, că am definit variabilele, să facem primul nostru test:

*** Test Cases ***
Pagina Valida
    Deschide Browser La Homepage

Primul nostru test se va numi “Pagina Valida”, iar comanda executată este de a “Deschide Browser La Homepage”. Această comandă este de fapt un cuvânt-cheie care presupune o serie de comenzi pe care, prin intermediul librăriei Selenium, le dăm driver-ului browserului. Am vorbit de “cuvânt-cheie”, aşa că hai să vorbim şi despre secţiunea aferentă cuvintelor-cheie:

*** Keywords ***
Deschide Browser La Homepage
    Open Browser  ${URL}  ${BROWSER}
    Title Should Be  Bau bau

În liniile scrise mai sus am definit cuvântul-cheie “Deschide Browser La Homepage”. După cum se vede, respectăm definirea blocurilor în spiritul Python-ului.

A se vedea că în definiţie folosim doi termeni (cuvinte-cheie) importanţi: “Open Browser” şi “Title Should Be”. Cei doi termeni fac parte dintr-o lungă listă de termeni suportaţi de librăria Selenium.

De asemenea, trebuie menţionat că sus menţionatele cuvinte-cheie acceptă parametri. Parametrii sunt despărţiti de cuvintele-cheie şi între ei prin două spaţii goale.

Aşadar, ce am scris mai sus? Am cerut ca browserul să se deschidă la adresa menţionată în variabila ${URL}, în speranţa că titlul paginii va fi “Bau bau”.

Hai să revedem tot fişierul şi să încercăm execuţia lui:

*** Settings ***
Documentation   Primul nostru test care foloseste SeleniumLibrary
Library         SeleniumLibrary

*** Variables ***
${URL}          https://avenir.ro
${BROWSER}      Chrome

*** Test Cases ***
Pagina Valida
    Deschide Browser La Homepage

*** Keywords ***
Deschide Browser La Homepage
    Open Browser  ${URL}  ${BROWSER}
    Title Should Be  Bau bau

Acum, după ce am salvat fişierul, putem să ne ducem deasupra directorului “tests” si să rulăm comanda:

robot tests

Menţionarea unui director ca parametru al comenzii “robot” face ca framework-ul să execute toate testele care se află în directorul respectiv. În cazul nostru, un singur test. Bineînţeles că putem executa şi un test anume, menţionând fisierul direct.

Execuţia comenzii ar trebui să se împlinească prin deschiderea unei ferestre a browser-ului Chrome – de fapt doar engine-ul browserului – şi deschiderea url-ului. Ulterior deschiderii browserului, în terminal sunt afişate rezultatele testului. După cum se vede, testul a eşuat, în condiţiile în care el se aştepta ca titlul paginii să fie “Bau bau” şi nu “Avenir – A blog about web”.

De asemenea, se poate vedea, la sfârşitul testului, că rezultatele acestuia au fost salvate într-un fişier numit report.html, ceea ce permite urmărirea mai uşoară a acestora.

Problema este că, deşi testul a fost încheiat, browserul nu a fost închis. Pentru astfel de acţiuni ne vom folosi de etapa de iniţiere şi de etapa de încheiere. În cazul nostru, ne vom folosi de “Test Teardown”. Hai să vedem pentru o ultimă dată codul final:

*** Settings ***
Documentation   Primul nostru test care foloseste SeleniumLibrary
Library         SeleniumLibrary
Test Teardown  Close Browser

*** Variables ***
${URL}          https://avenir.ro
${BROWSER}      chrome

*** Test Cases ***
Pagina Valida
    Deschide Browser La Homepage

*** Keywords ***
Deschide Browser La Homepage
    Open Browser  ${URL}  ${BROWSER}
    Title Should Be  Bau bau

Documentaţie suplimentară:

https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html
https://github.com/robotframework/HowToWriteGoodTestCases/blob/master/HowToWriteGoodTestCases.rst

Lasă un răspuns

Your email address will not be published. Required fields are marked *

No spam? * Time limit is exhausted. Please reload CAPTCHA.