ABONAMENTE VIDEO REDACȚIA
RO
EN
×
▼ LISTĂ EDIȚII ▼
Numărul 11
Abonament PDF

Orchestrarea Testării Automate

Lucian Revnic
Product Owner @ Microfocus
DIVERSE

Facebook, Google sau Flickr au posibilitatea de a introduce în producție până la 10 versiuni noi de produs pe zi într-un mod transparent utilizatorilor. În lumea eterogenă și agilă din industria IT, dezvoltarea aplicațiilor și a serviciilor devine o provocare atât datorită diversității tehnologiilor și a produselor, cât și datorită numărului acestora.

De asemenea, în companiile software mari unde există departamente de Dezvoltare, Testare și IT implicate în procesul de dezvoltare există nevoia de colaborare strânsă. Pentru asigurarea eficienței colaborarea se realizează prin procese și produse standard care, datorită diversității proceselor și produselor utilizate, devine un obiectiv greu de îndeplinit.

Metodologia de dezvoltare care accentuează colaborarea între echipele de Dezvoltare, Testare și IT se numește DevOps. Această metodologie presupune definirea echipelor, a proceselor și a produselor folosite astfel încât ciclul de producție al unei versiuni să fie cât mai scurt.

În companiile IT românești, care implementează metodologia DevOps, se folosesc adesea soluții specifice, dezvoltate intern, precum scripturi sau diferite utilitare. În cazul proiectelor dezvoltate în regim de outsourcing acestea depind de procesele și/sau produsele impuse de nevoile și posibilitățile clienților. Departamentul și echipamentele IT sunt situate adeseori într-un centru de date la distanță și care este bazat pe servere fizice, virtuale sau cloud.

Prima problemă o constinuie colaborarea între departamentele implicate. Din acest punct de vedere echipa de dezvoltare are, de exemplu, o viziune a calității diferită de viziunea echipei de testare, echipa de testare asupra implementării iar echipa de IT despre produsul dezvoltat și testat de către echipele anterioare. Echipele au nevoie de un limbaj comun pentru comunicarea eficientă.

A doua problemă este aceea de integrare și standardizare a proceselor și produselor utilizate atunci când proiectele, produsele sau clienții se schimbă. Pentru că soluțiile inițiale sunt specifice proiectelor existente, acestea trebuie adaptate noilor cerințe. Costul necesar implementării unei integrări noi este semnificativ și trebuie multiplicat în funcție de numărul de produse noi utilizate și de natura lor.

Prezentul articol prezintă o abordare a celor două probleme bazată pe o strategie de testare automată. Soluția denumită TAO se dorește să fie aplicabilă în lumea DevOps și reprezintă un exemplu și nu o soluție absolută. De asemenea, exemplele și tehnologiile referite sunt din lumea Java, iar această opțiune e justificată de experiența autorului în acest domeniu IT.

Strategia

Pentru dezvoltarea unei soluții fiabile și scalabile de testare automată, propunem observarea a trei aspecte: mediul de testare, testabilitatea produsului și integrarea continuă

Mediul de Testare

  • Complexitatea - mediul de testare utilizat variază de la un server fizic, localizat în proximitatea programatorului sau a testerului, până la centre de date complexe, bazate pe tehnologii de virtualizare sau cloud. De multe ori mediul de testare este condiționat de costuri sau de disponibilitatea clienților de aici și de provocarea asupra generalității soluției de testare automată. În categoria produselor gratuite intră VMware Player, Oracle VirtualBox, Linux KVM. Dintre soluțiile comerciale de virtualizare cel mai des întâlnite sunt VMware vCenter, Citrix Xen și Microsoft Hyper-V. Când este vorba de tehnologii cloud Amazon EC2 și implementările OpenStack (cum este HP Cloud) sunt liderii.
  • Controlul - soluția de testare automată trebuie să prezinte capabilități de bază de control al mediului de testare. Este necesar ca sistemul de testare să permită proviiozarea mediului de testare prin acțiuni generice: pornire, oprire, configurare pentru cât mai multe tipuri de medii de test. Pentru aplicatiile care nu oferă un modul de instalare silențios, este util ca mediul de testare să permită revenirea la o stare inițială. Aceasta se poate face prin snapshot-uri sau dispozitive de stocare nepersistente(o astfel de funcționalitate este oferită de VMware vCenter)
Figura 1. Provizionarea mediului de testare

Testabilitatea Produsului

  • Instalarea - modul de instalare și dezinstalare. De multe ori aplicațiile permit un mod de instalare silențios. Trebuie identificați parametri (fișiere, regiștrii, baze de date etc.) modificați în procesul de instalare/dezinstalare. Aceasta este importantă pentru că, într-un sistem de testare automat este imperios necesară instalarea/dezinstalarea a diferitelor versiuni ale aplicației. Este recomandată utilizarea modului silențios de instalare/dezinstalare, dar există și soluții alternative care se pot utiliza; de ex dispozitivele de stocare non persistente menționate mai sus. Sistemul de testare automată trebuie să permită execuția locală sau la distanță de scripturi: Bash, PowerShell, Python, Perl etc. Pentru conectare la distață acesta trebuie să suporte protocoale precum SSH, WMI etc. .
  • Configurarea - opțiunile de configurare a aplicației. După instalarea aplicației, pasul următor este configurarea aplicației în vederea execuției testelor automate. Pentru injectarea datelor de test și configurarea aplicației se folosesc frecvent opțiuni precum: interfața utilizator, protocoale web (REST, SOAP), fișiere, baze de date. Tehnologiile implicate adeseori în această fază sunt: Selenium, HP UFT (pentru interfața utilizator), Soap-UI (SOAP), Spring, Apache Http Client (REST).
  • Monitorizare - modalitățile de observare a stării aplicației: interfața utilizator, baza de date, fișiere log. Sistemul de testare automată trebuie să obțină rezultatele rulării testelor pentru validare și să notifice echipele implicate asupra rezultatelor rulării testelor. Tehnologiile folosite pentru îndeplinirea acestei sarcini sunt de regulă aceleași cu cele menționate în secțiunile de mai sus.
Figura 3. Serverul de build invocă testete automate

Integrarea Continuă

Integrarea continuă reprezintă o practică de promovare a unei integrări frecvente a codului sursă într-un sistem de control al versiunilor central, build-ul frecvent al aplicației împreună cu rularea testelor unitare. Aceasta practică recomandă existența unui sistem de build eficient, a unei suite de teste unitate, a unui sistem de control al versiunilor și a unui sistem de notificare.

  • Sistemul de Build - dintre diversitatea sistemelor am identificat Jenkins, Hudson și CruiseControl ca fiind cele mai utilizate în lumea DevOps.
  • Integrarea - pentru un proces complet este necesară integrarea dintre sistemul de build, testele unitare și produsele utilizare de echipa de testare (HP ALM/QC, Jira, Selenium, HP UFT) precum și conectarea cu mediul de testare. Comunitățile Jenkins/Hudson oferă extensii pentru diferite integrări precum Jira, Selenium, HP UFT, HP ALM/QC dar există și alte soluții.

Considerând toate aceste aspectele menționate, o arhitectură generică de testare automată este ilustrat în Figura 4.

Figura 4. Arhitectura generică TAO

Soluția Noastră

Produsul HP Operations Orchestration(OO) automatizează procesele IT utilizând fluxuri și operații de automatizare. Operațiile sunt acțiuni atomice care realizează sarcini specifice precum Remote Command Execution, SSH Command, SQL Query.

Fluxurile sunt secvențe de pași interconectați logic, acestea constituind, în parte, câte o instanță a unei operații. Fluxurile reprezintă procese complexe de automatizare cum ar fi: Server Health Check, Provision Environment, Download and Install Application Build.

În prezent, produsul oferă o librărie gratuită cu mai mult de 4000 de operații și fluxuri care acoperă integrări cu tehnologii precum HTTP, LDAP, SSH, WMI, Ant, PowerShell, integrări cu produse precum HP ALM, Jira dar și cu sisteme de virtualizare și cloud cum ar fi VMware vCenter, Hyper-V, Amazon EC2.

Utilizatorul are posibilitatea să folosească fluxurile și operațiile oferite sau să le refolosească, prin crearea de noi fluxuri. Studio este un mediu vizual de dezvoltare care permite crearea de fluxuri folosind structuri și paradigme împrumutate din programarea orientată obiect precum: structuri de date (liste, șiruri), structuri de control (if, case), reutilizare și încapsulare.

Fluxurile dezvoltate și testate în Studio sunt publicate într-o bază de date de unde sunt accesibile folosind o componentă web numită Central. De aici, utilizatorul are posibilitatea să planifice rularea fluxurilor, astfel încât acestea să fie executate de exemplu o dată pe noapte, după fiecare build.

Rezultate

Folosind produsul OO am realizat o suită de fluxuri de automatizare grupate sub numele TAO (Test Atomation Orchestration). Soluția rezolvă problema de colaborare între echipele de dezvoltare, testare și IT, printr-un mediu vizual ușor de utilizat și de înțeles de către persoanele cu minimă experiență în limbajele de programare.

Problema de integrare între diferitele tehnologii și produse este rezolvată folosind fluxurile și operațiile oferite de către acest produs. În Figura 5 sunt reprezentate câteva fluxuri utilizate folosind HP Operations Orchestration.

Abordări Similare

Există produse similare care oferă funcționalități asemănătoare cu OO dintre care putem enumera: Electric Commander, Microsoft System Center Orchestrator, UC4. Electric Commander reprezintă, prin numărul de integrări și tehnologii DevOps utilizate (sisteme de build, servera de aplicații, produse de testare), un competitor pentru produsul OO. Ambele produse oferă un mediu de dezvoltare vizual a fluxurilor, opțiuni de planificare a rulării acestora și sisteme de raportare și monitorizare. Pe de altă parte, OO oferă un set de fluxuri mult mai extins pentru provizionare și integrare cu alte produse precum Jira, HP ALM/QC, Amazon EC, HP Server Automation etc.

Figura 5. Fluxuri HP Operations Orchestration

Viitorul

Următorii noștri pași sunt extinderea fluxurilor TAO care sunt necesare în diferitele scenarii DevOps precum integrarea cu produse de analiză a codului (Sonar) și cu aplicații de provizionare open-source. Ne propunem să creștem gradul de conștientizare a calităților produsului HP Operations Orchestration în general și a soluției TAO în particular prin crearea unei comunități publice care să înlesnească și să încurajeze accesul la fluxurile deja existente.

Referințe

HP Operations Orchestration, Official Webpage, Hewlett-Packard, November 2012,

HP Operations Orchestration, Concepts Guide, Hewlett-Packard, June 2010,

Electric Commander, Official Webpage, Electric Cloud, November 2012,

Top 10 Virtualization Technology Companies Webpage, Keneth Hess, 2010,

Wikipedia, The Free Encyclopedia DevOps Webpage, November 2012.

LANSAREA NUMĂRULUI 86

Prezentări articole și
Panel: Autonomous driving

Marți, 20 August, ora 18:00
Bosch R&D, Cluj-Napoca

Înregistrează-te

Facebook Meetup

Conferință

Sponsori

  • ntt data
  • 3PillarGlobal
  • Betfair
  • Telenav
  • Accenture
  • Siemens
  • Bosch
  • FlowTraders
  • MHP
  • Connatix
  • UIPatj
  • MetroSystems
  • Globant
  • Colors in projects

Lucian Revnic a mai scris