Pereiti prie pagrindinio turinio

Testų automatizavimo mokymai arba kaip išmokti testuoti?

Istorija kaip gimė Visma Lietuva vidiniai testavimo automatizavimo mokymai, kurie peraugo į išorinius. Skaitykite ir sužinokite, nuo ko viskas prasidėjo.

Aistė is an experienced tester and test lead who is the most interested in making testing and test automation good enough for continuous delivery. She enjoys sharing her experience and learning from others. Hence she is an active organizer and promoter of Bugs’a’loud testers community events. When not testing software or hanging out with other testers, Aistė plays board games, enjoys food in different restaurants or her own kitchen, and travels – the more exotic, the better!

Ant abiejų rankų pirštų nesuskaičiuočiau,  kiek kartų esu girdėjusi „norėčiau išmokti automatizuoti testus“, tačiau taip niekada ir nebuvo progos”, nesugalvojau, nuo ko pradėti”ir t.t. Kartais trūksta tik šiek tiek pagalbos, pavyzdžiui, kad kažkas parodytų patį procesą bei iš anksto įspėtų apie dažniausiai pasitaikančias klaidas ir iššūkius, pasidalintų patarimais. Taip prieš beveik dvejus metus gimė Visma Lietuva vidiniai testavimo automatizavimo mokymai, kurie peraugo į išorinius, tad dabar jau mokome ne tik „saviškius”.

1 pav. Visma Lietuva mokymų skaidrės
1 pav. Visma Lietuva mokymų skaidrės

Ko mokomės kursuose? Ir kodėl nei vieni mokymai nebūna vienodi?

Mokymus paprastai pradedame aptardami ką gali testų automatizavimas ir ko ne (1 pav.), taip pat apžvelgiame šiek tiek teorijos. Vis tik didžiąją dalį mokymų laiko praleidžiame programuodami – iš pradžių UI testus su Selenium. Selenium pavyzdžių pradedantiesiems internete – šimtai, tačiau visai kas kita, kai kažkas parodo, kur galima pasipraktikuoti CSS selektorius (psst – https://flukeout.github.io/), paaiškina page-object pattern, o parašius testus  pasiūlo užduoti sau keletą klausimų, tokių kaip:

  • Testas dabar pass’ina – o ar jis tikrai fail’ins, esant problemai?
  • Testas dabar pass’ina – bet ar taip bus nepriklausomai nuo duomenų, testų leidimo tvarkos ir t.t.?
2 pav. Visma Lietuva mokymų skaidrės
2 pav. Visma Lietuva mokymų skaidrės

Toliau mokomės automatizuoti REST API testus – pavyzdžiui, naudodami RestSharp biblioteką bei SpecFlow įrankį, kuris testus padaro žymiai labiau skaitomus:

3 pav. Visma Lietuva mokymų skaidrės
3 pav. Visma Lietuva mokymų skaidrės

Išmokę automatizuoti API, aptariame API testavimo privalumus, apribojimus ir iššūkius, ir galiausiai visus mokymų metu parašytus testus paleidome automatiniam vykdymui su Continuous Integration įrankiu TeamCity.

Visgi pagrindinė pamoka, kurią išmokau mokydama kitus – vienodų mokymų nebūna. Kiekviena grupė skirtinga ir mokymai efektyviausi tada, kai juos pritaikai būtent tai grupei.  Dėl šios priežasties pasiruošimą mokymams pradedu nuo lūkesčių ir turimos patirties išsiaiškinimo. Pirmieji išoriniai mokymai buvo netgi labai smarkiai adaptuoti – grupė norėjo mokytis automatizuoti PHP, o ne C# kalba, jiems nebuvo aktualus API automatizavimas, tačiau jie norėjo daugiau gilintis  į Continuous Integration įrankio TeamCity konfigūravimą. Kitos grupės kol kas mokėsi pagal originalią programą, tačiau kiekvienas dalyvis atėjo su skirtinga patirtimi, tad net vienos grupės viduje reikėjo nepamiršti kiekvienam akcentuoti vis skirtingus aspektus.

Spoiler: testų optimizavimas ir dar n+1 dalykų, ką turėtum žinoti

Tačiau nepriklausomai nuo to, kokia kalba ar kokiais įrankiais automatizuoji testus, anksčiau ar vėliau susiduri su tais pačiais klausimais ir problemomis. Pavyzdžiui kaip nuspręsti, kuriuos testus automatizuoti ir kuriame testų automatizavimo piramidės lygyje. Arba kaip pasiekti, kad testai būtų… na tiesiog… geri?

4 pav. Visma Lietuva mokymų skaidrės
4 pav. Visma Lietuva mokymų skaidrės

Mokymuose netrūksta smulkių patarimų, kaip testus rašyti paprasčiau, efektyviau, išvengti potencialių problemų, nagrinėjame atsakymus į šiuos klausimus:

  • Kaip susitvarkyti su lėtais testais
  • Kaip padaryti, kad galėtume pasitikėti testų rezultatais
5 pav. Visma Lietuva mokymų skaidrės
5 pav. Visma Lietuva mokymų skaidrės
6 pav. Visma Lietuva mokymų skaidrės
6 pav. Visma Lietuva mokymų skaidrės

Trumpai aptarkime pirmą punktą – testų optimizavimą. Jo esmė – peržiūrėti visus testus ir atsakyti sau į tokius klausimus, kaip:

  • Ar tikrai prieš kiekvieną testą reikia iš naujo prisijungti?
  • Ar tikrai šioje vietoje reikalinga navigacija per UI?
  • Ar tikrai kas kartą reikia susikurti / išvalyti testinius duomenis / nustatymus (pre-conditions)?
    • Gal yra būdas tai padaryti greičiau?
    • Gal yra būdas tai padaryti atskirai nuo testų?
  • Gal čia nereikia UI testo, gal tai gali būti API arba netgi Unit testas?
  • O gal apskritai šito testo nereikia (tai jau padengia kitas)?

Apskritai siekiant greitai besisukančių testų, reikia turėti tikslą – per kiek laiko norėtume iš savo testų gauti feedback’ą? Tad pirmas žingsnis galėtų būti apriboti testų leidimui skirtą laiką (time-box) ir daryti viską, kad testai į tą laiką tilptų. Testų optimizavimas – tik vienas iš keleto dalykų, ką galima šiuo klausimu nuveikti. Daugiau informacijos apie mūsų turimus mokymus rasite čia! 

Populiariausi blog'ai

  • Migrating from Xamarin to .NET MAUI: A Comprehensive Guide

    The world of mobile application development is constantly evolving, and Microsoft’s .NET Multi-platform App UI (.NET MAUI) is at the forefront of this change. As an evolution of Xamarin.Forms, .NET MAUI offers developers a modern, cross-platform framework for building native device applications. This blog post will guide you through the process of migrating your existing Xamarin.Forms application to .NET MAUI.

  • My experience on taking the eWPTXv2 exam

    So a few months ago I had the joy of passing the eWPTXv2 exam. Well, it does not sound intriguing until you translate it into human language. The eWPTXv2 is actually eLearnSecurity Web Penetration Testing Extreme second version. Everything sounds better than you put extreme into it. Well, this is not that case since the exam is actually a bit hard.

  • Socialinis intranetas „Simoona“ – dabar prieinamas kiekvienam!

    Šiame blog’o įraše papasakosime apie vidinės komunikacijos įrankį, mūsų kurtą socialinį tinklą „Simooną“. Tik prasidėjus kūrybos procesui mums rūpėjo tik viena – kaip kuo daugiau įmonės kultūros perkelti į skaitmeninę erdvę. Ir prieš aštuonerius metus, net neįsivaizdavome, kad šis vidinis intranetas, bus toks svarbus kuriant glaudžius ryšius tarp kolegų ir tikrai net negalėjome nutuokti, kokia svarbi „Simoona“ bus užklupus pasaulinei pandemijai.