Klient on veebiõppeplatvorm: interaktiivsed tunnid, kodutööd, õpilaste ja vanemate isiklikud kontod ning veebimaksed. Ettevõttel on tugev hooajalisus: septembris lisandub kõige rohkem uusi õpilasi ning platvormi seisak õppeaasta esimestel nädalatel tähendab klientide jäädavat kaotust. Ettevõttesisest kvaliteedikontrolli (QA) meeskonda polnud; testimisega tegelesid arendajad muude ülesannete kõrvalt. Väljalaske-eelne regressioonitestimine võttis kolm päeva, kuid jättis ikkagi märkamata kriitilised stsenaariumid — makse, tunnile registreerumise ja klassiga liitumise. Klient pöördus meie poole pärast järjekordset intsidenti, mil makseviga läks koolile maksma osa suvel kogutud müügivihjetest.
Luua kvaliteedi tagamise protsess nullist:
äririskide järgi prioriseeritud testimisstrateegia, kriitiliste stsenaariumide automatiseerimine, kontrollide liitmine CI-sse ning koormustestimine enne septembrikuu tipphooaega. Piirang oli arendust katkestamata töötada: väljalasked jätkusid igal nädalal ning september ei saanud oodata.
Alustasime riskianalüüsist, mitte automaattestidest: millised stsenaariumid lähevad kõige sagedamini katki ja kus on vea hind kõige suurem? Automatiseerimine järgis rangelt seda loendit.
- Auditeerisime kvaliteeti: vaatasime üle viimase poole aasta vead, vestlesime meeskondadega ja kaardistasime kõige valusamad stsenaariumid — makse, tunnile registreerumine, klassiga liitumine ja vanemate teavitused.
- Kirjutasime testimisstrateegia: testimistasemed, vastutusalad, funktsioonide valmimise määratlus ning veateadete protseduurid, mis kehtivad kõigile kolmele arendusmeeskonnale.
- Automatiseerisime kriitilise teekonna: Playwrighti otsast lõpuni stsenaariumid veebiplatvormile, API-testid taustsüsteemile ja suitsutestide komplekt enne iga väljalaset.
- Lisasime QA-väravad CI-sse: väljalase pole võimalik ilma edukate suitsutestideta, täielik regressioonitest käivitub igal ööl ning tulemused on kõigile meeskondadele GitLabis nähtavad.
- Testisime k6-ga koormust: modelleerisime septembri tipuliiklust, leidsime kitsaskohad ja kõrvaldasime need koos taustsüsteemi meeskonnaga enne hooaega.
- Andsime protsessi kliendile üle: dokumentatsioon, kord ja QA-inseneri koolitus automaattestide ning tarneahela kasutamiseks.
Oluline otsus oli seada prioriteedid äririskide, mitte „katvuse ilu“ järgi. Me ei püüdnud teadlikult sajaprotsendilist automatiseerimist: 75% kriitiliste stsenaariumide katvus andis suurema osa mõjust, sest kaitses just neid teekondi, mille kaudu platvorm teenib ja kaotab kliente. Ülejäänud osa kontrollitakse käsitsi ja uurimuslikult enne olulisi väljalaskeid.
Peamine majanduslik mõju on vigade avastamise toomine varasemasse etappi: CI automaattestiga leitud viga maksab kümneid kordi vähem kui õpilase vanema poolt tootmiskeskkonnas märgatud viga. Platvorm alustas hooaega piisava töökindlusvaruga ning meeskonnad said võimaluse muudatusi sageli välja anda, kartmata „reedest efekti“. Lisaboonus oli ettevõtte usaldus: müügiosakond lubab partnerkoolidele nüüd ausalt, et platvorm peab registreerimise tipul vastu.
| Näitajad | Tulemus |
|---|---|
| Kriitilised vead tootmiskeskkonnas | 5–7 kuus → 1–2 kvartalis |
| Väljalaske-eelne regressioonitestimine | 3 päeva käsitsi → 4 tundi automaattestidega |
| Septembri koormustipp | Intsidendid igal aastal → 0 intsidenti, jõudluse halvenemiseta |
| Vea avastamise hetk | Enamasti tootmiskeskkonnas → Automaattestid leiavad enne väljalaset |
Näitajad on üle kantud juhtumi algmaterjalidest. Periood on märgitud seal, kus see on allikas fikseeritud.
- kriitilisi vigu kvartalis (varem 5–7 kuus)
- 1–2
- regressioon automaattestidega (varem 3 päeva käsitsi)
- 4 h
- võtmeskenaariumidest kaetud automaattestidega
- 75%
- intsidente septembri tipul
- 0
Illustratiivne skaala: kolm päeva teisendatakse 72 tunniks. Tulpade pikkuse jaoks teisendatakse vigade kuuvahemik kvartaliks, korrutades kolmega; võrreldakse ülemisi piire.
- 01Commit
- 02Suitsutestide komplektKui testikomplekt pole edukas, väljalaset ei toimu
- 03VäljalaseIganädalane
- 04Öine käivitusTäielik regressioon
Mida soovitame platvormi järgmiseks sammuks:
- Visuaalne regressioonitestimine — tundide, e-kirjade ja isiklike kontode küljenduse automaatne kontroll.
- Testandmete tehas — realistlike õpilaste, rühmade ja maksete genereerimine iga testkäivituse jaoks.
- QA tootmiskeskkonnas — funktsioonilülitid ja järkjärgulised canary-väljalasked uute funktsioonide kasutuselevõtuks.
Me ei karda enam väljalaskeid. Varem võis iga reede muutuda kaebuste uurimiseks; nüüd on tootmiskeskkonda avaldamine tavaline viieteistkümneminutiline protseduur.
— Veebikooli tehnoloogiajuht