ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 144
Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 71
Abonament PDF

Cucumber & TestNG

Lorand Berekmeri
Automation Engineer @ Telenav



TESTARE

Dacă sunteți interesați de testarea automată sau începători în acest domeniu, atunci acest articol vă va ajuta foarte mult, informându-vă despre instrumentul numit Cucumber, care este ușor de învățat și de înțeles. Odată lămurite caracteristicile acestuia, le vom integra într-un framework de testare automată folosind TestNG, Selenium și Maven.

Codul sursă al acestui proiect poate fi descărcat de pe Git. Frameworkul este construit pentru a rula cu succes atât pe sistemul de operare MAC OSX, cât și pe Windows.

Cucumber este un tool utilizat pentru organizarea testelor automate și este folosit în special cu Behavior Driven Development (proces specific ingineriei software care este derivat din Test Driven Development).

În schema de mai jos se poate vedea cum arată configurația unui proiect bazat pe Cucumber.

Fig.1 Cucumber

BDD este o tehnică mai elegantă de exprimare a cerințelor unui produs software, dar este de reținut faptul că nu este o metodologie software de sine stătătoare, ci una care trebuie să fie utilizată împreună cu alte metodologii, precum Agile sau Test Driven Development. De asemenea, tehnologia prezentată oferă un mod de lucru mai organizat.

Fig.2 BDD

Pentru a putea rula teste folosind Cucumber, trebuie să adăugați în proiect fișiere specifice numite features, în care să scrieți cel puțin un scenariu de testare.

Fișierele feature sunt scrise folosind sintaxa Gherkin. Schema de mai jos vă va ajuta să înțelegeți mai bine cum vor arăta pașii.

Fig.3 Fișier feature

Ce este TestNG?

TestNG este un framework de testare automată folosit împreună cu limbajul de programare Java. Acesta oferă suport pentru diferite adnotări, instanțe și o configurare simplă a fișierelor XML. Totodată, cu ajutorul unor pluginuri specifice, putem genera rapoarte în format HTML sau XML.

În cazul în care alegem să folosim TestNG ca mediu de testare implicit avem mai multe avantaje, cum ar fi configurarea flexibilă a testelor, suport pentru teste parametrizate și cu o organizare clară a suitelor de teste. De asemenea, este suportat de o mare varietate de și tooluri (InteliJ IDEA, Eclipse). Pentru a vă putea instala TestNG aveți nevoie minim de JDK 8.

Adnotări

Fig.4 TestNG

Următoarele metode vor rula în diferite contexte:

@BeforeSuite: înaintea tuturor testelor din suită.

@AfterSuite: după execuția tuturor testelor din suită.

@BeforeTest: înaintea fiecărui test din clasa curentă.

@AfterTest: după fiecare metodă de test din clasa curentă.

@BeforeClass: înaintea primei metode de test din clasa curentă.

@AfterClass: după execuția tuturor metodelor de test din clasa curentă.

@BeforeMethod: înaintea fiecărei metode din clasa curentă.

@AfterMethod: după fiecare metodă din clasa curentă.

@Test: Parametru care ne indică o metodă de test.

Introducere în Selenium

Selenium este un instrument de testare utilizat pentru aplicațiile Web și oferă cel mai bun mod de a automatiza testele Web. Periodic se lansează versiuni îmbunătățite pentru driverele de Selenium și oferă suport pentru mai multe tipuri de browsere (Google Chrome, Mozilla Firefox, Internet Explorer) .

Maven - generalități

Maven este un instrument software care funcționează în mare parte cu ajutorul diferitelor pluginuri și este folosit pentru a construi aplicații Java; pluginuri specifice Maven ar fi cele pentru testare, rularea unui Web server, generarea de fișiere de proiect (HTML, XML, JSON etc). Toate acestea se vor defini în directorul pom.xml în secțiunea de . Pentru a afla mai multe detalii despre rolul și funcţionalitatea acestuia puteţi accesa site-ul Apache Maven.

Fig.5 Selenium & Maven

Cerințe de sistem

  1. Configurare Java (minimum JDK 8) în variabilele de sistem.

  2. Configurare Apache Maven în variabilele de sistem.

  3. Puteți alege între IntelliJ IDEA și Eclipse ca mediu de dezvoltare.

  4. Descărcaţi oricare dintre următoarele executabile: chromedriver.exe, geckodriver.exe sau IEDriverServer.exe. Driverele trebuie salvate într-un director drivers.

Implementare

Primul pas ar fi crearea unui proiect de tip Maven și adăugarea codului de mai jos în fișierul pom.xml. Selectați 'Enable Auto-Import' care va apărea după crearea proiectului (pentru a-l activa manual, trebuie parcurși pașii următori: File-Settings-Maven-Importing-enable 'Import Maven projects automatically').

Fig.6: Pom.xml

<properties>...</properties> : secțiunea în care este mai ușor să setăm versiunile dependențelor de care avem nevoie pentru implementare.

Fig. 7: Pom.xml 2

<dependency>...</dependency> : secțiunea în care setăm dependențele proiectului.

<build>...</build>

  1. <resource> : path-ul spre pașii de test (src/test/resources).

  2. maven-surefire-plugin: plugin folosit pentru generarea rapoartelor de tip HTML.

  3. <suiteXmlFiles> : pathul spre fișierul în care ne definim suita de test.

  4. <systemPropertyVariables> : specificăm browserul care va fi transmis ca parametru în clasa Hooks

Fig.7.2 Pom.xml 3

Adăugarea librăriei: File - Settings - Plugins - căutat după: 'Cucumber for Java' - click 'Search in repositories' - click pe Install.

Fig.8 Cucumber for Java plugin

Definiți structura proiectului după modelul de mai jos:

În pachetul runner adăugăm clasa Runner cu codul de mai jos. Aici vom defini instrumentul de testare folosit, classpathul proiectului și modul în care să se afișeze rezultatele testelor (folosim pluginul cucumber-html-report).

Fig.9 Runner

Adăugăm un fișier TestSuite.xml în rootul proiectului. În acest fișier vom specifica locația test runnerului.

Fig.10 TestSuite

Adăugăm fișierul config.properties în rootul proiectului, printr-un click dreapta pe numele proiectului, click New și Resource Bundle. Aici vom oferi runnerului un browser pe care să navigheze și să ruleze testele automate (se poate alege între Google Chrome, Mozilla Firefox și Internet Explorer).

Fig.11 config.properties

Pasul următor e să adăugăm clasa Hooks în pachetul de steps. Scopul acestei clase este de a seta sistemul de operare indentificat de clasa OSDetector și de a alege driverul potrivit pe care să ruleze testele.

Fig.12 Hooks

De asemenea, cu metoda descrisă mai jos, vom specifica sistemul de operare detectat.

@Before(order = 1)
  public void storeOs() {
    CommonSteps.setDetectedOs(getOs().toString());
    LOG.info("Test cases will be executed on the"+
    " detected {} operating system."
        , CommonSteps.getDetectedOs());
}

În clasa OSDetector vom detecta sistemul de operare cu metoda getProperty și apoi în cealaltă metodă, vom seta chromedriverul specific pentru fiecare sistem de operare.

Fig.13 OSDetector

Proiectul este construit folosind o arhitectură pe mai multe nivele, folosind 'Page Object' ca design pattern. Pachetul pageobjects este proiectat pentru a modela obiectele identificate pe pagini.

Fig.14 MainScreen

Urmează definirea pașilor pe care îi vom folosi pentru a construi scenariul de test.

Fig.15 Steps

A venit timpul să scriem scenariul de test în fișierul feature. Liniile de mai jos reprezintă un exemplu de test care este gata implementat în frameworkul oferit ca suport.

Feature: My feature

  @cucumber-test
  Scenario: Log in
    Given I navigate on the page
      Then Application is displayed
      When I choose to sign in
        Then the "Authentication" page is displayed
        When I enter the "test_test@test.com" "email" 
         for Log in
        When I enter the "Test1234!" "password" for 
         Log in
        When I click on the Submit button to Log in
          Then the "My Account" page is displayed

Concluzie

Cucumber este un tool foarte util pentru testarea automată și oferă o modalitate ușoară de organizare a testelor, respectiv a scenariilor. De asemenea, TestNG oferă o mulțime de metode care facilitează lucruri precum clickuri, completarea automată de formuri, navigarea între pagini web, rapoarte HTML, cod organizat.

Dacă doriți să scrieți teste automate, atunci TestNG și Cucumber sunt cu siguranță o alegere bună.

Resurse

  1. The Cucumber for Java Book, Behaviour-Driven Development for Testers and Developers by Seb Rose, Matt Wynne & Aslak Hellesøy

NUMĂRUL 143 - Software Craftsmanship

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects