Kako poboljšati CI / CD testiranjem u smjeru lijevo

Testiranje aplikacija nekada je bilo tehnički izazovno, vremenski ograničena aktivnost planirana danima ili tjednima prije objavljivanja aplikacije. Razvojni timovi imali su slobodnog vremena za kodiranje do jedanaestog sata, a ispitivači, koji su velik dio posla radili ručno, nisu imali drugog izbora nego da se zadovolje s malo vremena koje im je dato. Rezultat je bio da su mnoge aplikacije podvrgnute nekvalitetnom testiranju, a tehnološki timovi bili su prisiljeni odgovoriti na probleme proizvodnje i nedostatke koje su eskalirali krajnji korisnici i sustavi za nadzor aplikacija.

Devops kontinuirane prakse integracije, okviri za jedinstveno testiranje i postupci automatizacije ispitivanja nadogradili su ovu paradigmu. Umjesto da osiguravaju kvalitetu na kraju razvojnog procesa, mnoge prakse testiranja sada počinju i u potpunosti se izvode tijekom kodiranja, integracije i implementacije. Programi i agilni timovi automatiziraju skripte za testiranje, a CI / CD cjevovodi pozivaju pokretanje testova tijekom faze integracije koda ili isporuke. Neto rezultat je da programeri budu upozoreni kada njihove promjene koda prekinu izgradnju i mogu poduzeti trenutne korake za rješavanje prijavljenog problema.

Automatizacija testiranja i integriranje testnih skripti u CI / CD cjevovode poznato je kao testiranje u smjeru lijevo. To implicira da se u fazi razvoja može učiniti više praksi osiguranja kvalitete kako bi se uhvatili problemi ranije u vremenskom slijedu objavljivanja. Automatizirano testiranje jedan je od prioriteta prije zapošljavanja za agilne i devops timove koji žele povećati učestalost implementacije.

Pri uvođenju nove funkcionalnosti, izgrađene test skripte potvrđuju nove mogućnosti. Tada se ovi testovi mogu automatizirati i uključiti u korake izrade ili postavljanja. Umjesto da QA inženjeri izvrše regresijske testove na kraju postupka izdavanja, mnoge od tih testova možete pokrenuti i potvrditi kao dio razvoja. Ovi testovi prelaze s kraja postupka izdavanja na ranije faze razvoja i kodiranja.

Testiranje u smjeru ulijevo omogućuje agilnim timovima predanost kvaliteti

Testiranje u smjeru lijevog pomicanja ne samo da pokreće učinkovitost i poboljšava kvalitetu, već također stvara značajnu promjenu kulture u agilnom procesu razvoja.

Neki razvojni timovi osiguravanje kvalitete i testiranje doživljavaju kao prepreku isporuci njihovog koda u proizvodnju. Nakon napornog rada na zadovoljavanju okretnih vlasnika proizvoda i dovršavanju koda, QA suigrači identificiraju popis bugova koji trebaju otklanjanje. Ako QA pronađe puno grešaka, to može utjecati na vremensku traku izdanja da bi ih ispravilo. Još je gore kada su značajni dijelovi koda potrebni za redizajniranje jer nedostaci izlažu probleme s logikom, sigurnošću ili performansama. U ovom scenariju programeri i QA inženjeri mogu biti u istom agilnom timu, ali ne djeluju kao tim.

Testiranje pomicanjem ulijevo omogućuje agilnim timovima da prebace odgovornosti za kvalitetu na puni tim programera i testera. Kada se testiranje izvodi kao dio CI / CD cjevovoda, pruža bolju priliku programerima da riješe probleme s kvalitetom u trenutku kada rade na relevantnom kodu. CI / CD cjevovod upozorava razvojnog programera na neuspjelu izgradnju, a većina samoorganizirajućih razvojnih timova mora odmah riješiti te probleme.

Testiranje u smjeru lijevog pomicanja također nudi programerima i inženjerima QA mogućnosti da automatiziraju veći dio testiranja. Najbolja praksa je da timovi odluče tko će primijeniti automatizaciju, ovisno o vrstama testova potrebnih za razvijenu funkcionalnost. Na primjer, programeri su često odgovorni za automatizaciju jedinice i API testova, ali QA inženjeri automatizacije često razvijaju testiranje korisničkog iskustva od kraja do kraja i testove transakcija koji simuliraju API u više koraka pozive na više usluga.

Kada primijeniti ispitivanje u smjeru lijevo

Ispitivanje ulijevo-pomak najbolje radi za atomske testove s više jedinica koji imaju kratko vrijeme izvršavanja. Bitno je da se testovi automatiziraju u CI / CD cjevovodu i da se izvode kad god programeri pokrenu izradu, izvršavaju se brzo i ne usporavaju procese izrade.

Složeniji i vremenski zahtjevniji testovi, poput testova korisničkog iskustva, testiranja transakcija, statičke analize koda i sigurnosnog testiranja, često se bolje izvode izvan CI / CD cjevovoda i na dnevnim ili češćim rasporedima. Ovi testovi još uvijek pružaju rane povratne informacije programerima o problemima kvalitete, ali automatizirani su izvan CI / CD-a kako bi se izbjeglo usporavanje ili uska gradnja.

Thomas J. Sweet, potpredsjednik za IT usluge u GM Financial, podijelio je sa mnom svoje osobne uvide u ograničenja strategija testiranja u smjeru lijevo. Predlaže: „Pomak ulijevo uvijek je strategija, osim kada se izvode testiranja integracije na isporukama nezavisnih dobavljača, jer često nemate pristup njihovom izvornom kodu. Čak i ako imate interne aplikacije s naslijeđenim monolitnim arhitekturama, možete započeti s provođenjem osnovnih pravila prijave koje zahtijevaju pregled koda i sigurnosno skeniranje. Prijava treba odbiti ako skeniranje uključuje osnovna upozorenja i kvarove. "

Jedno od potencijalnih rješenja za nizvodno testiranje s integracijskim partnerima je implementacija virtualizacije usluge. Ova tehnika omogućuje razvojnim timovima da simuliraju reakciju sustava na različite ulaze. Dobro funkcionira kada su nizvodni sustavi dobro definirani. Alati tvrtke Micro Focus, Tricentis i drugih omogućuju ovu mogućnost.

Rob Pociluk, vrlo sezonski menadžer osiguranja kvalitete, snažan je zagovornik testiranja u smjeru lijevo u agilnom razvoju. „Spremnost i sposobnost testiranja malih dijelova koda održavaju QA fleksibilnim i u toku tijekom napretka u sprintu. Timovi bi se i dalje trebali čuvati previše korištenja shift-left jer možete izgubiti svrhu samog koda. "

Dakle, čak i kada timovi u potpunosti prihvate testiranje u smjeru lijevo, postoje dobri razlozi da se i dalje zakaže vremenski okvir za testiranje u izradi kompleta koda ciljanom za izdanje. Osigurava da se sva automatizirana ispitivanja izvode na konačnoj verziji, ali također omogućuje zakazivanje dodatnih ispitivanja koja zahtijevaju potpuno funkcionirajući sustav.

Jedno od tih ispitivanja je UAT (korisničko prihvaćanje), gdje odabrani krajnji korisnici i stručnjaci za predmet provjeravaju valjanost i daju povratne informacije. Neki UAT mogu se obaviti tijekom razvoja, ali možda neće biti lako natjerati ljude da često izvode ovo testiranje ili kada funkcionalnost nije u potpunosti spremna.

Preduvjeti za strategije testiranja u smjeru lijevo-pomak

Testiranje u smjeru ulijevo sve je veća devopska praksa, ali ima svoje preduvjete i unaprijed uložena sredstva. Potrebne su neke bitne sposobnosti i prakse.

  • Dovoljan je kapacitet testiranja i okruženja kako bi se podržao broj izrada i testova koji se istodobno izvode.
  • Agilni timovi zahtijevaju skup alata za testiranje proizvoda koji se lako integriraju u CI / CD cjevovode i alate za raspoređivanje poslova i koji mogu provjeriti funkcionalnost, kvalitetu koda, sigurnost i izvedbu.
  • Arhitekti, stručnjaci za infosec, voditelji osiguranja i ostali stariji članovi organizacije trebali bi uspostaviti standarde ispitivanja i ciljeve na razini usluge koji čine zadane kriterije prihvaćanja.
  • Kada aplikacije zahtijevaju unos korisnika, ispitni timovi trebaju dovoljno podataka i uzoraka za provjeru da bi provjerili dovoljno osoba, slučajeva korištenja i uzoraka unosa.
  • U sprint angažmanu ili ranije, scrum timovi, uključujući inženjere QA automatizacije, trebali bi postaviti strategiju testiranja o tome koje se sposobnosti testiraju, koje se vrste testiranja provode, koji se postupci automatizacije ažuriraju i tko razvija testove.
  • Timovi stručnjaka trebali bi izmjeriti trajanje izvođenja CI / CD cjevovoda i označiti ih kada automatizirani koraci ispitivanja utječu na produktivnost. Timovi za osposobljavanje često zahtijevaju dodatne rasporede ispitivanja izvan CI / CD cjevovoda kako bi izvršili dulje pokretanje testova.
  • Timovi bi trebali redovito raspravljati o prazninama u svojim automatiziranim testovima, posebno o validacijama koje zahtijevaju stručnjake za predmet, UAT ili testiranje s partnerima. Ako agilni timovi ne mogu automatizacijom riješiti ove praznine, tada bi ciklusi oslobađanja trebali uzeti u obzir troškove kako bi smanjili rizike i dovršili ove testove.

I na kraju, agilni timovi i devops organizacije trebaju redovito mjeriti i raspravljati o svojoj pokrivenosti testovima. Zapošljavanje strategije lijevog pomaka ne funkcionira ako razvojni timovi i inženjeri automatizacije kvalitete zapravo ne implementiraju, automatiziraju i integriraju dovoljno testova za hvatanje problema i rješavanje rizika.

Ubrzavanje ciklusa izdavanja ili omogućavanje kontinuirane isporuke bez dovoljne automatizacije ispitivanja može rezultirati značajnim problemima s kvalitetom koji pogoršavaju iskustvo za krajnje korisnike. Agilni razvojni timovi koji prečesto guraju izdanja, a zatim se pronalaze u rješavanju proizvodnih problema i nedostataka, umjesto da ulažu u više i bolju automatizaciju.