Anul 2016 începe în forţă. Cred că toţi ne gândim la planuri, obiective şi viitor, mai ales lucrând într-un domeniu atât de dinamic. În ceea ce priveşte testarea aplicaţiilor software pe ramura web, se poate observa în mod clar o evoluţie.
Oamenii au început să aibă şi să simtă nevoia de a accesa o aplicaţie web nu numai de pe desktop, ci şi de pe o tabletă, un telefon mobil sau de pe calculatorul mamei de acasă, fără a avea parte de surprize majore în folosirea acesteia. După cum se poate observa, tocmai am menţionat câteva exemple de dispozitive cu diferite sisteme de operare, browsere sau chiar versiuni ale acestora. Aşadar, privind din perspectiva utilizatorului obişnuit sau chiar al clientului pentru care dezvoltăm o aplicaţie web, ca testeri sau programatori trebuie să ne întrebam: ce putem face să ne asigurăm că aplicaţia pe care o testăm nu are defecte, iar utilizatorul să poată naviga fericit?
În cele ce urmează în acest articol am încercat să evidenţiez importanţa calităţii testing-ului pe mai multe platforme, precum şi rapiditatea plus uşurinţa cu care putem realiza acest lucru.
Dacă aţi citit articolul lui Ovidiu Măţan din TSM 43, "Previziuni pentru 2016", ştiţi că Vlad Derdeicea declara faptul că există o evoluţie rapidă a device-urilor mobile şi se aşteaptă ca în anul 2016 traficul mobil să fie egal cu cel de pe desktop. Eu am motive să menţionez că deja l-a şi depăşit, dacă ne uităm la ultimele rezultate. Aceasta înseamnă că vom avea mai multe site-uri responsive, întrucât companiile caută variante responsive şi chiar aplicaţii custom. Putem trage destul de uşor concluzia că interactivitatea multi-dispozitiv (responsive Web design) este în creştere. Inclusiv Google a decis ca site-urile responsive să fie clasate mai sus în căutări, faţă de cele destinate doar pentru desktop.
Azi sunt zeci de modele de smartphones şi tablete, sistemele de operare şi browserele venind cu tot mai multe îmbunătăţiri. S-a produs o creștere a masei de utilizatori, având așteptări tot mai mari din partea software-ului. Mai mult decât atât, nu toată lumea este la ultimul update al sistemului de operare sau al versiunii de browser. Aici intervin dificultăţile. În mod natural, de aici vin şi cererile clienţilor noştri legate de multitudinea de combinaţii de sisteme de operare (Windows, iOS, Android), devices (pentru care nu am suficiente degete la mâini să le enumăr) şi browsere (de la Chrome, şi până la IE8 şi noul Edge). Bineînţeles ţinând cont de faptul că pe majoritatea dintre acestea, aplicaţia trebuie să funcţioneze "aproape perfect".
Când ne gândim la testare, trebuie să ne gândim în primul rând, la calitate. Aplicaţia ar trebui să fie rapidă, intuitivă, să respecte anumite guidelines, fără că utilizatorul să simtă o diferenţă majoră între mijloacele de interacţiune, fie că este vorba despre o tabletă sau un calculator.
Fig. 2: Multitudinea combinațiilor de OS și browsers
Testarea pe o multitudine de devices, versiuni diferite de browsere sau sisteme de operare este o provocare de multe ori. Este nevoie de o strategie foarte bine pusă la punct, procesul fiind unul mai îndelungat, pentru ca noi ca testeri sau ca dezvoltatori să realizăm acest lucru cât mai bine într-un timp cât mai scurt. Spre exemplu, funcţionalităţile se pot grupa astfel încât să nu fii nevoit să schimbi atât de mult platformele, în special în re-testing, când e nevoie să retestăm bug-urile fixate. Defectele care fac parte dintr-un anumit cloud de issues, nu neapărat din acelaşi User Story, pot fi retestate împreună pe aceeaşi platformă. Un exemplu pot fi bug-urile găsite pe Internet Explorer sau Safari. De multe ori acest proces poate părea extenuant și poate uneori, inutil, însă atunci când simţiti acest lucru vă recomand să vă puneţi următoarea întrebare: dacă aplicaţia pentru care faceţi development sau testing ar fi a voastră, cât interes aţi acorda testării cross-browser?
Răspunzând la întrebarea de mai sus, am devenit motivată să caut soluţii. Iniţial, soluţia la această problemă am găsit-o în maşini virtuale.
Acestea se pot descărca. Se alege o maşină virtuală (care va rula un anumit sistem de operare si un browser), apoi o platformă de virtualizare (VirtualBox, VMWare, etc) şi se descarcă un zip cu tot pachetul. Există intrucţiuni de instalare, iar procesul este destul de simplu. Problema este că durează extrem de mult, iar aceste maşini virtuale expiră după 90 de zile, sau pur şi simplu se pierde conexiunea la maşină din cauza unor erori, fiind nevoie ca procesul să fie reluat ulterior. Aceste maşini sunt destinate atât întrepriderilor cât şi utilizării acasă.
Există diferite tipuri de maşini virtuale, fiecare cu funcţii diferite. Acestea asigură un substitut complet pentru o maşină reală care dispune de funcţiile necesare pentru executarea unui testing complet.
Cu toate că sunt o alegere bună, nu găsim acel balans, acea armonie între calitatea şi rapiditatea tastării. Aşa că am trecut la o altă variantă.
O altă soluţie recomandată este testarea prin intermediul unui tool online. Ca exemple avem BrowserStack, Sauce Labs, Browser Shots, Browserling, IE tester etc.
Eu personal am folosit BrowserStack. Acesta este un cross-browser testing tool pentru testarea website-urilor publice şi servere securizate, care se află într-o infrastructură de tip cloud.
Se pretează nu numai pentru testarea manuală, dar şi pentru Automation Testing folosind Selenium sau suite automate de test JavaScript.
Folosind acest tool, veţi avea acces instant la mai mult de 700 de combinaţii de sisteme de operare și browsere reale, rulând pe desktop şi mobile. Este sub forma unui subscription, iar acesta depinde de pachetul pe care doriţi să îl folosiţi. Pentru început puteţi să îl folosiţi gratuit şi să vedeţi dacă se pretează nevoilor voastre
Avantajele acestui tool ar fi următoarele:
nu este nevoie de instalare, BrowserStack se accesează printr-un simplu link în browser;
micşorarea timpului de testing, viteză în testare;
rapiditate nu doar în switch-urile dintre browsere, dar şi între platforme (sisteme de operare);
accesul se face extrem de rapid, se pot salva în browser maşinile şi browserele pe care le accesaţi cel mai des;
experienţă nativă;
responsiveness: redimensionare în fereastra de browser;
suport pentru emulatoare de mobile;
Funcţionalităţi:
Automation: integrarea dintre Selenium WebDriver și BrowserStack tool;
Debugging: developer tools este pre-instalat (Firebug, Yslow, Microsoft Script debugger etc.);
Mobile: suport de la cele mai vechi la cele mai noi emulatoare mobile;
Visual: capturarea de screenshots per URL;
Visual: responsive design testing - generare de screenshots la rezoluţia actuală a device-ului; Pentru mobile devices se poate folosi atât portrait view cât şi landscape;
Portabilitate: sugestii cross-browser testing bazate pe statistici globale ale utilizării;
Local testing: se pot testa servere interne via BrowserStack utilizând o conexiune securizată;
Conexiune: atunci când sesiunea de testing este creată, maşina virtuală porneşte cu setările default (fără cache, cookies, istoric, descărcări, parole salvate etc.);
Marile avantaje ale acestor tipuri de tool-uri pentru o companie sunt următoarele:
Nu există niciun cost legat de achiziţii hardware;
Nu există niciun cost pentru menţinerea şi întreţinerea maşinilor virtuale sau timp petrecut în instalarea lor;
Consider că folosind acest tip de tool am găsit o armonie între calitate- pentru că am reuşit să testez pe platformele prioritare, must-haves şi rapiditatea de a mă mișca în switch-ul dintre ele. La final pot garanta că avem într-adevăr un produs calitativ şi eficient.
În cele din urmă, omul este predispus greşelilor şi testarea exhaustivă este foarte puţin probabilă, excepție făcând aplicaţiile mici. Acesta este principiul numărul doi al testării. De aceea, trebuie să ținem cont cu atât mai mult de celelate cinci principii: testarea evidenţiază prezenţa defectelor, necesitatea testării în fazele incipiente, testarea cluster-elor de defecte, "Pesticide Paradox", faptul că testarea este dependentă contextual. În cele din urmă trebuie să ne asigurăm că facem tot posibilul să găsim defectele pe majoritatea platformelor, pentru ca în final, interacţiunea cu utilizatorul să fie cu succes, iar sistemul să răspundă cerinţelor şi nevoilor utilizatorilor pe oricare dintre platforme.
de Ovidiu Mățan
de Cristina Juc
de Ioana Luțaș
de Ovidiu Mățan