surfup

Internetinės mokyklos EdTech platforma

Nuo nulio sukurta QA sistema: leidimai nebelaužo produkcijos

Švietimas · Kokybės užtikrinimas · Testų automatizavimas · Apkrovos testavimas
Projekto kontekstas

Klientas — internetinio mokymo platforma: interaktyvios pamokos, namų darbai, mokinių ir tėvų paskyros bei mokėjimai internetu. Verslui būdingas ryškus sezoniškumas: rugsėjį ateina daugiausia naujų mokinių, o platformos sutrikimas pirmosiomis mokslo metų savaitėmis reiškia klientų praradimą visam laikui. Vidinės QA komandos nebuvo: testavimu tarp kitų užduočių užsiėmė patys kūrėjai. Regresinis testavimas prieš leidimą trukdavo tris dienas, bet vis tiek praleisdavo kritinius scenarijus — mokėjimą, registraciją į pamoką ir prisijungimą prie klasės. Klientas kreipėsi po dar vieno incidento, kai dėl mokėjimo klaidos mokykla prarado dalį vasarą surinktų užklausų.

01 · Užduotis

Nuo nulio sukurti kokybės užtikrinimo procesą:

verslo rizikomis grįstą testavimo strategiją, svarbiausių scenarijų automatizavimą, CI integruotus patikrinimus ir apkrovos testavimą prieš rugsėjo piką. Sąlyga — dirbti nestabdant kūrimo: leidimai vyko kas savaitę, o rugsėjis nelaukė.

02 · Atlikti darbai

Pradėjome ne nuo automatinių testų, o nuo rizikos analizės: kurie scenarijai genda dažniausiai ir kur klaidos kaina didžiausia? Automatizavome griežtai pagal šį sąrašą.

  • Atlikome kokybės auditą: peržiūrėjome pastarųjų šešių mėnesių klaidas, apklausėme komandas ir sudarėme skausmingiausių scenarijų žemėlapį — mokėjimas, registracija į pamoką, prisijungimas prie klasės ir pranešimai tėvams.
  • Parengėme testavimo strategiją: testavimo lygiai, atsakomybės sritys, funkcijų užbaigimo kriterijai ir klaidų ataskaitų teikimo tvarka, bendra trims kūrimo komandoms.
  • Automatizavome kritinį kelią: „Playwright“ e2e scenarijai interneto platformai, API testai serverinei daliai ir dūmų testų rinkinys prieš kiekvieną leidimą.
  • Įtraukėme QA vartus į CI: leidimas negalimas, kol dūmų testų rinkinys nėra sėkmingas, visa regresija vykdoma kas naktį, o rezultatai matomi visoms komandoms „GitLab“.
  • Atlikome apkrovos testus su k6: imitavome rugsėjo piko srautą, radome siauras vietas ir pašalinome jas kartu su serverinės dalies komanda dar prieš sezoną.
  • Perdavėme procesą klientui: dokumentaciją, tvarkas ir QA inžinieriaus mokymus dirbti su automatiniais testais bei leidimų grandine.

Svarbiausias sprendimas buvo prioritetus nustatyti pagal verslo riziką, o ne „gražią aprėptį“. Sąmoningai nesiekėme visiško automatizavimo: 75% kritinių scenarijų aprėptis davė didžiąją dalį naudos, nes apsaugojo būtent tuos kelius, kuriais platforma uždirba ir praranda klientus. Visa kita patikrinama rankiniu tiriamuoju testavimu prieš svarbius leidimus.

03 · Rezultatas

Didžiausia ekonominė nauda — defektų aptikimo perkėlimas į ankstesnį etapą: CI automatiniu testu aptikta klaida kainuoja dešimtis kartų mažiau nei ta, kurią produkcijoje pastebi mokinio tėvai. Platforma sezoną pasitiko turėdama atsparumo rezervą, o komandos galėjo dažnai išleisti pakeitimus nebijodamos „penktadienio efekto“. Papildoma nauda — verslo pasitikėjimas: pardavimų skyrius dabar gali sąžiningai pažadėti partnerėms mokykloms stabilią platformą priėmimo į mokslus piko metu.

04 · Pagrindiniai rezultatai
RodiklisRezultatas
Kritinės klaidos produkcijoje5–7 per mėnesį → 1–2 per ketvirtį
Regresija prieš leidimą3 dienos rankiniu būdu → 4 valandos automatiniais testais
Rugsėjo apkrovos pikasIncidentai kasmet → 0 incidentų, našumui nemažėjant
Kada aptinkamas defektasDažniausiai produkcijoje → Automatiniai testai aptinka prieš leidimą

Rodikliai perkelti iš pirminės atvejo medžiagos. Laikotarpis nurodomas ten, kur jis užfiksuotas šaltinyje.

Keturi darbo mėnesiai
kritinės klaidos per ketvirtį (buvo 5–7 per mėnesį)
1–2
regresija automatiniais testais (buvo 3 dienos rankiniu būdu)
4 val.
pagrindiniai scenarijai padengti automatiniais testais
75%
incidentai rugsėjo piko metu
0
Testų aprėptis ir tikrinimo greitis
Pagrindiniai scenarijai padengti automatiniais testais
Prieš0%
Po75%
Kritinės klaidos produkcijoje
Prieš5–7 per mėnesį
Po1–2 per ketvirtį
Mažiau yra geriau
Regresija prieš leidimą
Prieš3 dienos
Po4 valandos
Mažiau yra geriau

Iliustracinė skalė: 3 dienos laikomos 72 valandomis. Stulpelių ilgiams mėnesinis klaidų intervalas perskaičiuojamas ketvirčiui, dauginant iš trijų; lyginamos viršutinės ribos.

QA vartai CI sistemoje
  1. 01Commit
  2. 02Dūmų testų rinkinysBe sėkmingo patikrinimo leidimo nėra
  3. 03LeidimasKas savaitę
  4. 04Naktinis vykdymasVisa regresija
Tolesni žingsniai

Ką platformai rekomenduojame kaip kitą žingsnį:

  • Vizualinis regresinis testavimas — automatinis pamokų, laiškų ir paskyrų išdėstymo tikrinimas.
  • Testinių duomenų gamykla — tikroviškų mokinių, grupių ir mokėjimų generavimas kiekvienam paleidimui.
  • QA produkcijoje — funkcijų vėliavėlės ir kanariniai leidimai, kad naujos funkcijos būtų įjungiamos palaipsniui.
Citata
Nustojome bijoti leidimų. Anksčiau kiekvienas penktadienis galėjo virsti skundų nagrinėjimu, o dabar leidimas į produkciją — įprasta penkiolikos minučių procedūra.

— Internetinės mokyklos CTO

Naujausia medžiaga

Visa medžiaga

Praktiniai SurfUp straipsniai ir vadovai.

Vadovas · 10 min.

Puslapiai „Kas yra…“ ir DI atsakymai: paspaudimai ar paklausa

Žinyno skyrius prarado 24 % apsilankymų, paklausa krito 13 %. Kaip atskirti DI bloko pasiimtus paspaudimus nuo paklausos kritimo ir tai išmatuoti.

Skaityti
Vadovas · 8 min.

Srautas sumažėjo po Google atnaujinimo

Kaip nustatyti, ar srauto sumažėjimą lėmė Google atnaujinimas, sezoniškumas ar svetainės gedimas. 2026 m. atnaujinimų laiko juosta, šešių klausimų patikra ir pirmųjų 14 dienų planas.

Skaityti
Vadovas · 9 min.

Paklausa krito ar svetainė pralaimėjo: srauto derinimas su Wordstat

Indėlių paklausa krito 75 %, srautas – 37 %; kortelių paklausa −35 %, srautas −63 %. Kaip suderinti srautą su paklausa ir nekaltinti svetainės dėl rinkos.

Skaityti