ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 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 11
Abonament PDF

Orchestrarea Testării Automate

Lucian Revnic
Software Architect @ Micro Focus



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.

NUMĂRUL 149 - Development with AI

Sponsori

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