Testarea end-to-end cu GitLab CICD și WebdriverIO GitLab
Aplicațiile de revizuire sunt grozave: pentru fiecare cerere de îmbinare (sau sucursală, de altfel), noul cod poate fi copiat și implementat într-un mediu live proaspăt de tipul producției, reducând efortul de evaluare a impactului modificărilor. Astfel, atunci când folosim un manager de dependență precum Dependencies.io, acesta poate trimite o cerere de îmbinare cu o dependență actualizată și va fi imediat clar că aplicația poate fi încă construită și implementată corect. La urma urmei, îl puteți vedea rulând!

Cu toate acestea, examinarea codului proaspăt implementat pentru a verifica dacă arată și se comportă așa cum era de așteptat este o muncă manuală repetitivă, ceea ce înseamnă că este un candidat principal pentru automatizare. Aici intervine testarea automată end-to-end: computerul rulează prin câteva scenarii simple care necesită funcționarea corectă a tuturor straturilor aplicației dvs., de la frontend la baza de date.
În acest articol, vom discuta despre cum să scrieți astfel de teste end-to-end și despre cum să configurați GitLab CI/CD pentru a rula automat aceste teste împotriva noului dvs. cod, sucursal cu sucursală. Pentru scopul acestui articol, vă vom prezenta prin procesul de configurare a GitLab CI/CD pentru testarea cap la cap a aplicațiilor bazate pe JavaScript cu WebdriverIO, dar strategia generală ar trebui să fie transferată în alte limbi. Presupunem că sunteți familiarizați cu GitLab, GitLab CI/CD, Revizuirea aplicațiilor și rularea aplicației dvs. local, de exemplu, pe localhost: 8000 .
Ce să testez
În strategia de testare a piramidei utilizată pe scară largă, testele end-to-end acționează mai degrabă ca o măsură de protecție: cea mai mare parte a codului dvs. ar trebui să fie acoperită de teste unitare care vă permit să identificați cu ușurință sursa unei probleme, în cazul în care apare. Mai degrabă, veți dori, probabil, să limitați numărul de teste end-to-end la suficient de mult pentru a vă oferi încrederea că implementarea a mers conform intenției, că infrastructura dvs. funcționează și că unitățile de coduri funcționează bine împreună.
Seleniu și WebdriverIO
Selenium este un software care poate controla browserele web, de exemplu, pentru a le face să viziteze o anumită adresă URL sau să interacționeze cu elementele de pe pagină. Poate fi controlat programatic dintr-o varietate de limbaje de programare. În acest articol, vom folosi legările JavaScript WebdriverIO, dar conceptul general ar trebui să treacă destul de bine către alte limbaje de programare acceptate de Selenium.
Testele de scriere
Funcțiile îl descriu, îl și browserul sunt furnizate de WebdriverIO. Să le descompunem una câte una.
Funcția descrisă vă permite să grupați testele aferente. Acest lucru poate fi util dacă, de exemplu, doriți să rulați aceleași comenzi de inițializare (folosind beforeEach) pentru mai multe teste, cum ar fi asigurarea faptului că sunteți conectat.
Funcția pe care o definește un test individual.
Obiectul browserului este sosul special al WebdriverIO. Oferă majoritatea metodelor API WebdriverIO, care sunt cheia pentru conducerea browserului. În acest caz, putem folosi browser.url pentru a vizita/pagina-care-nu-există pentru a accesa pagina noastră 404. Putem apoi folosi browser.getUrl pentru a verifica dacă pagina curentă se află într-adevăr în locația specificată de noi. Pentru a interacționa cu pagina, putem trece pur și simplu selectoarele CSS către browser.element pentru a obține acces la elementele de pe pagină și pentru a interacționa cu ele - de exemplu, pentru a face clic pe linkul dinapoi la pagina de pornire.
Testul simplu prezentat mai sus ne poate da deja multă încredere dacă trece: știm că implementarea noastră a reușit, că elementele sunt vizibile pe pagină și că browserele reale pot interacționa cu ea și că rutare funcționează așa cum era de așteptat. Și toate acestea în doar 10 rânduri cu spații albe gratuite! Adăugați la testele unitare succesive și o conductă finalizată cu succes și puteți fi destul de încrezători că actualizarea dependenței nu a spart nimic fără a fi nevoie să vă uitați la site-ul dvs.