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

Ce ne așteaptă în noua epocă a testării ?

Andrei Marinoiu
Testing Consultant @ accesa
TESTARE


Ipotezele prezentate în acest articol legate de viitorul testării sau a părții de quality assurance se bazează pe schimbările și trendurile apărute în aceste domenii atât în trecut cât și în prezent. Prin urmare, primul pas pe care îl vom face împreună este să călătorim în timp și să observăm cum s-a născut testarea software. Anii '50 reprezintă Epoca de Start, în care testarea propriu-zisă însemna partea de debugging (depanare) și nimic altceva. După cum menționa și S. Gill în cartea sa, The diagnosis of mistakes in programmes on the EDSAC, dificultatea se regăsește în diagnosticarea unei greșeli, nu în detectarea ei.

Cel mai interesant și totodată remarcabil lucru care a marcat această decadă, a fost dezvoltarea testului Turing în anul 1950 de către matematicianul Alan Turing. Testul Turing verifică abilitatea unei mașini de calcul, de a deveni o entitate gânditoare. Testul era rulat astfel: se configura un set de întrebări care era adresat atât unei mașini de calcul, cât și unei persoane. O persoană numită și observator compara răspunsurile date de mașina de calcul și de observator, fără să știe care provin de la mașină și care de la om. Dacă nu se reușea identificarea răspunsurilor date de mașina de calcul, însemna că mașina ar fi în stare să gândească. Acest concept a devenit un pilon important al filozofiei inteligenței artificiale.

Turing a presupus de asemenea că, în jurul anului 2000, în cel puțin 30% din cazuri, mașinile de calcul vor ajunge la performanța de a îl induce în eroare pe cel ce verifică întrebările.

La mai puțin de un an după dezvoltarea testului Turing, un inginer și consultant de management, american de origine română, născut în Galați, Joseph Juran, introduce în cărțile sale The cost of poor quality și Juran's Trilogy, termenii de planificare, control și îmbunătățire a calității. Chiar dacă publicațiile sale nu se adresau industriei IT, cei de la IBM au preluat și personalizat procesele descrise de Juran și au început să își studieze costurile de calitate.

La sfârșitul anilor '50, a existat o distincție clară între testare și debugging și au apărut primele break points în cod.

Imediat după Epoca de Start, urmează Epoca Funcțională, în care obiectivul principal al testării era să demonstreze că implementarea software funcționa. De aici se trage și numele testării funcționale care a luat naștere în acele vremuri și care a devenit unul din pilonii procesului de testare. Va trebui să treacă o perioadă îndelungată de timp sau să apară o inovație care să ducă la extincția sau redundanța testării funcționale.

Tot în timpul acestui deceniu, NASA creează prima echipă de testare în cadrul primului program spațial uman al Statelor Unite ale Americii (Proiectul Mercury). De asemenea, în anul 1968, NATO menționează pentru prima dată termenul de Software Quality Assurance.

În anii '70 urmează atât o schimbare de epocă, din Epoca Funcțională, în Epoca Planificării, cât și o schimbare a mentalității. Dacă în epoca precedentă, obiectivul testării era să demonstreze că programele funcționează, în epoca planificării totul se schimbă radical. Testarea va avea ca obiectiv principal acela de a demonstra că programele nu funcționează, sau nu funcționează în totalitate așa cum ar trebui. G. Myers menționa în cartea sa, The art of Software Testing, publicată în 1979 că testarea este un proces de execuție al unui program cu obiectivul de a găsi erori.

Într-un interval relativ scurt, de 10 ani de zile, întregul mod de gândire și percepție s-a schimbat radical, și testerii au devenit niște vânători de erori. Păstrarea acestui mod de gândire și în zilele noastre devine un factor toxic pentru întreaga echipă. Obiectivul echipelor ar trebui să fie aliniat, și anume dezvoltarea produselor funcționale. Dar această afirmație constituie o altă discuție și nu intră în scopul prezentului articol.

Tot în anii '70 au apărut unit testing, introducerea metricilor și nu în ultimul rând state transition testing.

Mergând mai departe, în anii '80 a urmat Epoca Costului. Aplicațiile/ Programele ajungeau foarte târziu în producție din cauza testării exhaustive, astfel încât costul testării a explodat. Sosise vremea pentru reducerea timpului de testare cu condiția să se păstreze calitatea livrabilelor într-un interval acceptabil. Pe scurt, să existe un raport corect calitate - timp sau mai degrabă calitate - cost. Într-un ghid apărut în anul 1983, Guideline for Lifecycle Validation, Verification and Testing of Computer Software se menționează faptul că un set de tehnici alese cu grijă, poate ajuta garantarea calității dezvoltării și mentenabilității programelor, ceea ce înseamnă că testarea va reduce riscul ca un program să nu funcționeze la o valoare acceptabilă.

În acești ani a fost dezvoltat multi-cunoscutul Windows. De asemenea, conceptul de testare a securității apare sub denumirea de Fuzz Testing în anul 1988.

Ultima epocă definită este cea a Calității, și este cea în care ne aflăm și astăzi. Este marcată de prevenție, testarea devine și o disciplină mentală care aduce beneficiul unui risc scăzut în partea de dezvoltare software. Calitatea livrabilelor derivă dintr-un proces colaborativ între toate părțile implicate într-un proiect.

Acest periplu prin istorie ne arată faptul că testarea a devenit nu doar o constantă, dar și o necesitate. Modul sau, mai bine zis, procesele de testare nu s-au schimbat foarte mult de la începuturile testării. Prin urmare, putem să presupunem că o schimbare radicală s-ar putea produce în anii ce urmează. Adaptarea modului de gândire va fi cu siguranță un factor cheie pentru a se putea integra în noul peisaj al procesului de testare care va veni cu siguranță peste noi mai devreme sau mai târziu.

Profilul testerului din ziua de azi

Sursa foto: https://unsplash.com/photos/wh-RPfR_3_M

În momentul de față putem să diferențiem două tipologii sau profile ale persoanelor care fac parte din aria de testare, de tehnic și de business. Desigur că sunt foarte rare cazurile în care vom regăsi doar caracteristici și deprinderi dintr-o tipologie anume, ele îmbinându-se nu doar între ele dar și cu abilitățile conexe, cu competențele și cu experiențele acumulate de-a lungul carierei.

Un tester tehnic ar putea fi descris ca cineva care înțelege partea arhitecturală, la nivel macro, privește dincolo de interfața grafică și poate să înțeleagă interconectabilitatea dintre sisteme atât din punct de vedere funcțional cât și din punct de vedere tehnic, al implementării propriu-zise. Poate să scrie cod, să lucreze cu scripturi și instrumente care să-i ușureze munca. De asemenea, poate să automatizeze teste atât în zona de interfață grafică, cât și în aceea a serverului. O altă abilitate ar fi partea de investigare de loguri a diferitelor sisteme, cât și de cunoștințe despre testarea de securitate și performanță.

În ce privește secțiunea business, testerul ar trebui să se comporte ca un consultant de vânzări, sau mai degrabă ca un account manager. Este foarte important să înțeleagă nevoile clienților sau partenerilor săi și să treacă chiar la următorul nivel, care înseamnă suport în alinierea proceselor operaționale de business. Analizează cerințele, și bazat pe ele oferă feedback sau sugestii cât mai repede posibil. De asemenea, dezvoltă strategii și planuri de testare adaptate nevoilor fiecărui client. Nu în ultimul rând, ar trebui să livreze un log de riscuri dacă contextul este necesar pentru un asemenea proces.

Ce schimbări aduce viitorul apropiat?

Înainte de a ne îndrepta atenția spre viitorul îndepărtat și la cum va schimba acesta nu doar testarea dar probabil întreaga lume, vă invit să vedem care consider eu că sunt pașii intermediari pe care se va marja în viitorul apropiat. Am identificat patru piloni importanți, despre care cred că vor aduce un plus din ce în ce mai semnificativ în procesul de testare.

Testarea Automată. Testarea automată vine ca un răspuns natural la presiunea timpului. Cu cât aplicațiile vor ajunge mai repede în producție, cu atât mai mult vor beneficia de o returnare a investiției mai mare. Testerii se vor contopi cu DevOpșii într-un proces mult mai rapid de livrare fără a afecta calitatea livrabilelor. Tot ce înseamnă repetitiv va fi automatizat din start, utilizând chiar și instrumente de testare automată codeless. Procesul se va desfășura într-un CI/CD pipeline în care vor exista deployuri la interval de ore, nu de zile.

Cuvântul cheie va fi viteză, iar testarea manuală se va utiliza doar pentru validarea proceselor de business în cadrul testării de acceptanță.

Machine Learning. Pentru a ține pasul cu echipele de dezvoltare, partea de testare automată nu va face față pe termen lung. Machine Learning va fi, cel mai probabil, un instrument de un real și foarte mare ajutor pentru echipele de testare. Va ajuta la optimizarea suitelor de testare, la obținerea de analize predictive în zona de loguri, zone de testare și chiar de defecte.

Big Data. Populația globului este într-o creștere continuă, ceea ce înseamnă o utilizare mai mare a Internetului și prin urmare creșterea bazelor de date cu informații despre clienți. Astfel se va crea necesitatea apariției unui instrument prin care să se poată prelucra un flux atât de mare de informații primite. Big Data ne va ajuta cu provocările pe care le vom avea cu privire la scalabilitate, indexare socială, mutații de date și colectarea instantanee de date și implementarea lor într-un mediu cu o cantitate imensă a datelor care crește continuu.

Sursa foto: https://unsplash.com/photos/Tjbk79TARiE

Internetul Lucrurilor. În ziua de azi totul gravitează în jurul tehnologiei și conectivității. Apar tot mai multe case inteligente, cu electrocasnice interconectabile. Acesta este doar începutul. Tehnologia 5G ar trebui să ne ajute să facem pasul următor în tehnologia mașinilor care se conduc singure. Provocările cărora va trebui să le răspundem se vor afla în aria managementului de acces, cerințelor de conformitate, managementului integrării, securității datelor și a schimbului de date între terți. Toate acestea, pentru a folosi lucrurile de care avem nevoie instantaneu în rutinele noastre zilnice.

Ar trebui să ne îngrijoreze ce ne aduce viitorul?

Există mai multe căi și subiecte care sunt discutate de către cercetători și analiști cu privire la modul în care testarea se va schimba, dar aș dori să dezbatem una dintre ele: Inteligența artificială.

În prezent, un cuvânt controversat, Inteligența artificială reprezintă o inovație care este deja foarte aproape de noi. Potențialul său este imens și poate ajuta nu numai testerii și procesul de testare, dar și întreaga umanitate.

Inteligența artificială se clasifică astfel:

A. Inteligența Artificială Limitată (Weak AI/Narrow AI)

Este folosită pentru a transforma datele mari în informații utilizabile, detectând tiparele și făcând predicții. Printre exemple se numără fluxul de știri al Facebook sau produsele sugerate de Amazon. Filtrele de spam din e-mail sunt un alt exemplu de Inteligență Artificială Limitată, unde un computer folosește un algoritm pentru a afla ce mesaje ar putea fi spam, apoi le redirecționează din inbox către folderul de spam.

Sistemele de inteligență artificială limitată nu au inteligență generală; au inteligență specifică. Un AI care este expert în a vă spune cum să conduceți din punctul A în punctul B este, de obicei, incapabil să vă provoace la un joc de șah. La fel cum un sistem AI care vorbește chineză cu noi nu va fi capabil sa ne măture podelele.

Problemele cu inteligența artificială limitată includ posibilitatea de a provoca vătămări în cazul în care un sistem eșuează. De exemplu, o mașină fără șofer, care printr-un calcul greșit al locației unui alt vehicul, care se apropie, provoacă o coliziune mortală; posibilitatea de a provoca daune dacă sistemul este utilizat de cineva care dorește să provoace daune - cum ar fi un terorist care folosește o mașină, care se conduce singură, pentru a detona explozibili într-o zonă aglomerată. Nu în ultimul rând, este dificil de determinat cine este responsabil pentru o defecțiune sau un defect de proiectare.

Nu voi intra în detalii despre testarea inteligenței artificiale limitate, deoarece este deja aici și o testăm deja de ceva vreme.

B. Inteligența Artificială Generală (Strong AI/General AI)

Va fi atinsă atunci când inteligența AI va fi la nivelul inteligenței umane. De exemplu, AI va putea decoda imagini 3D, pentru a face sarcini simple de zi cu zi, cum ar fi recunoașterea bunicii, scoaterea laptelui din frigider, urcarea scărilor și așa mai departe. Inteligența artificială generală va putea să învețe și să se actualizeze singură, fără instrucțiuni. Va trece printr-un proces de încercare și eroare cunoscut sub denumirea de auto-îmbunătățire recursivă.

Practic, vom avea un AI care poate face multe lucruri, nu numai tehnice, și care poate învăța de la sine dacă întâlnește zone în care nu are experiență. Dacă aveți sub 35 de ani, aveți mari șanse să vedeți inteligența artificială generală în acțiune. deoarece cercetătorii spun că ea se va dezvolta în următorii 50 de ani.

Revenind la testarea inteligenței artificiale generale, din punct de vedere tehnic, probabil că va trebui să înțelegem codul scris. Apoi, va trebui să creăm o strategie sau o abordare atât pentru unit teste, cât și pentru testele funcționale.

Derivă, astfel, următoarele întrebări legate de impactul pe care Inteligența Artificială Generală îl va avea asupra testingului:

C. Inteligența Artificială Superioară (Super AI)

Cercetătorii afirma că Super AI va deveni exponențial mai rapid decât predecesorul său, Strong AI.

Super AI înseamnă că inteligența AI va fi una mai vastă decât inteligența oamenilor. Aceasta înseamnă că oamenii nu vor mai fi capabili să înțeleagă procesele tehnice dezvoltate de Super AI. Inteligența Artificială Superioară va putea chiar să prezică comportamentul uman cu mai multă precizie decât noi.

Bill Gates, Elon Musk și Stephen Hawking susțin că epoca inteligenței artificiale superioare va însemna sfârșitul umanității. Alții, inclusiv Mark Zuckerberg susțin că Super AI va crea o lume mai bună și noi, ca umanitate, vom intra într-o nouă eră descrisă drept "abundentă". Prețul fiecărui lucru va scădea, oamenii nu vor mai trebui să se îngrijoreze dina cauza șomajului, deoarece totul va deveni foarte ieftin și accesibil.

Știu că sunt multe întrebări fără răspunsuri. Ceea ce mă face să povestesc puțin despre ultima parte de inteligență artificială, Inteligența Emotivă Artificială, care poate fi dezvoltată oricând după inteligența artificială limitată. Poate veni înainte de Strong AI sau chiar după Super AI.

D. Inteligența Emotivă Artificială (Artificial Emotional Intelligence)

În acest tip de inteligență artificială va fi vorba despre recunoașterea, interpretarea, procesarea și simularea experienței umane de sentiment sau emoție. Da, acest AI va avea empatie și va fi capabil să te înveselească dacă ești trist.

Cred că această componentă AI va fi foarte importantă în viitorul speciei noastre umane, deoarece numai prin combinarea acestui nou computing afectiv (affective computing cu AI-ul), putem rămâne optimiști că roboții nu vor încerca să ne extermine. Trebuie să începem să dezvoltăm inteligența artificială emoțională. Cu cât mai repede, cu atât mai bine.

Apare din nou întrebarea, cum o vom testa?

Ne este greu să identificăm aceste sentimente la oamenii de lângă noi. Un exemplu concludent în acest caz este o persoană care este supărată, dar zâmbește chiar dacă pe interior se simte ca un vulcan.

Cum va putea inteligența artificială să decodeze această mânie?

Din nou, o mulțime de întrebări fără răspunsuri.

Pentru a termina acest articol într-o notă amuzantă și pozitivă, să ne gândim cum ar putea să arate un dialog într-o bucătărie a unei companiei IT:

-Salut ,TSTS364A! Cum ești?

-Hey, TST543G! Bine, mulțumesc! Doar ce îmi savuram cafeaua de dimineață.

-Ai văzut ce cod de c#@% a scris iar DEV6743? Deja devine o obișnuință să primesc de la el cod plin de erori în mediul de testare.

-Da, ar trebui să discutăm cu TL-ul său, TLSM654. Poate că o să-și seteze o sesiune de 1: 1 cu el.

-Da, trebuie să facem tot ce ne stă în putință pentru a menține calitatea produsului ridicată.

Credeți că acest dialog s-ar putea întâmpla într-un viitor oarecare? Este oare, cu adevărat, posibil?

Sursa foto: https://pixabay.com/photos/teens-robot-future-science-629046/

Concluzii

Așadar, procesul de testare pe care îl cunoaștem în prezent se bazează în principal pe nucleul său dezvoltat între anii '50 și '70. Datorită contextului nostru socio-economic actual, procesul de testare va trebui să fie mai rapid, va trebui să utilizeze mai puțini oameni și să ofere o calitate superioară.

La prima vedere, acest lucru ar putea însemna că testerii vor dispărea. Deși aceasta ar putea fi o opțiune, rețineți că vom avea în continuare nevoie de unele persoane care să verifice și să se asigure că procesele de business sunt adaptate la nevoile umane, chiar dacă testarea va fi efectuată de inteligența artificială.

S-ar putea să ne numim analiști de date sau testeri de business sau beta testeri, ne- am putea pierde numele de testeri, dar mentalitatea, modul de gândire și valorile noastre vor persista.

În cele din urmă, există o șansă să piară testarea?

Din punctul meu de vedere, testarea va persista.

Îndrăznesc să spun că viitorul testării se va desfășura ca pit-stopurile din formula 1. Cei care vor executa cele mai rapide și mai precise teste vor ajunge primii pe piață și vor avea cele mai mari venituri.

Tu cum te pregătești pentru viitorul testării?

Sponsori

  • comply advantage
  • ntt data
  • 3PillarGlobal
  • Betfair
  • Accenture
  • Siemens
  • Bosch
  • FlowTraders
  • MHP
  • Connatix
  • MetroSystems
  • BoatyardX
  • Colors in projects

VIDEO: NUMĂRULUI 97