Co je automatizace testování? Jednoduchý a srozumitelný úvod

Ve světě softwaru existují dva druhy testování – manuální a automatizované. Některé typy manuálního testování, jako je například testování zjišťování a testování použitelnosti, jsou neocenitelné. Jiné druhy testování – jako regresní testování a funkční testování – můžete provádět ručně, ale pro člověka je poměrně neekonomické dělat stále dokola to samé. Právě tyto druhy opakovaných testů se hodí pro automatizaci testů.

Automatizace testů je praxe automatického spouštění testů, správy testovacích dat a využití výsledků ke zlepšení kvality softwaru. Jedná se především o opatření k zajištění kvality, ale její činnosti zahrnují nasazení celého týmu, který se zabývá výrobou softwaru. K tomu, abyste z automatizace testů vytěžili co nejvíce, je zapotřebí zapojení všech – od obchodních analytiků až po vývojáře a inženýry DevOps.

Tento příspěvek vám na vysoké úrovni přiblíží, o čem automatizace testů je. Existují všechny druhy testů, ale ne všechny by měly být automatizovány; proto začneme obecnými kritérii pro automatizaci testů.

Kritéria pro automatizaci

Test musí splňovat určitá kritéria, aby mohl být automatizován – jinak by mohl nakonec více stát, než ušetřit. Koneckonců jedním z hlavních cílů automatizace je ušetřit čas, úsilí a peníze. Zde je několik obecných kritérií pro automatizaci testů. Jedná se o výchozí body. Vaše kritéria se mohou lišit v závislosti na okolnostech.

Opakovatelný

Test musí být opakovatelný. Nemá smysl automatizovat test, který lze spustit pouze jednou. Opakovatelný test má následující tři kroky:

  1. Nastavení testu, včetně dat a prostředí.
  2. Vykonání funkce a změření výsledku.
  3. Uklid dat a prostředí.

V prvním kroku chceme být schopni uvést prostředí do konzistentního stavu. Jinými slovy, pokud máme test pro pokus o přidání existujícího uživatele, musíme se před provedením testu ujistit, že uživatel existuje. Po dokončení testu by se prostředí mělo vrátit do základního stavu.

Determinantní

Když je funkce determinantní, znamená to, že výsledek je stejný pokaždé, když je spuštěna se stejným vstupem. Totéž platí pro testy, které lze automatizovat. Řekněme například, že chceme otestovat funkci sčítání. Víme, že 1 + 1 = 2 a že 394,19 + 5,81 = 400,00. Víme, že je to správně. Sčítání je určující funkce.

Na druhou stranu software může používat tak vysoký počet proměnných vstupů, že je obtížné mít po celou dobu stejný výsledek. Některé proměnné mohou být dokonce náhodné, což může ztížit určení konkrétního výsledku. Návrh softwaru to může kompenzovat umožněním testovacích vstupů prostřednictvím testovacího svazku.

Další funkce aplikace mohou být aditivní; například vytvoření nového uživatele by zvýšilo počet uživatelů. Při přidání uživatele alespoň víme, že počet uživatelů by měl vzrůst pouze o jednoho. Paralelní provádění testů však může způsobit neočekávané výsledky. Izolace může tomuto druhu falešných pozitivních výsledků zabránit.

Nepodložené

Záležitosti názoru nelze automatizovat. Zde skutečně zazáří testování použitelnosti, beta testování apod. Názory uživatelů jsou důležité, ale prostě je nelze automatizovat… je nám líto!“

Typy automatizovaných testů

Existuje tolik typů testů, z nichž mnohé lze automatizovat, že je opravdu nemůžeme všechny zahrnout do jednoho příspěvku. Ale zde jich je dost na to, abyste měli dobrý výchozí bod.

Analýza kódu

Ve skutečnosti existuje mnoho různých typů nástrojů pro analýzu kódu, včetně statické analýzy a dynamické analýzy. Některé z těchto testů hledají bezpečnostní chyby, jiné kontrolují styl a formu. Tyto testy se spouštějí, když vývojář kontroluje kód. Kromě konfigurace pravidel a udržování nástrojů v aktuálním stavu není s těmito automatizovanými testy mnoho práce při psaní testů.

Jednotkové testy

Můžete také automatizovat sadu jednotkových testů. Jednotkové testy jsou určeny k izolovanému testování jedné funkce nebo jednotky operace. Obvykle se spouštějí na sestavovacím serveru. Tyto testy nejsou závislé na databázích, externích rozhraních API ani na ukládání souborů. Musí být rychlé a jsou navrženy tak, aby testovaly pouze kód, nikoli externí závislosti.

Integrační testy

Integrační testy jsou jiným druhem zvířat, pokud jde o automatizaci. Protože integrační testy – někdy nazývané end-to-end testy – potřebují interakci s externími závislostmi, je jejich nastavení složitější. Často je lepší vytvořit falešné externí zdroje, zejména pokud se jedná o zdroje mimo vaši kontrolu.

Pokud máte například logistickou aplikaci, která závisí na webové službě od dodavatele, může váš test neočekávaně selhat, pokud je služba dodavatele mimo provoz. Znamená to, že je vaše aplikace nefunkční? Může, ale měli byste mít dostatečnou kontrolu nad celým testovacím prostředím, abyste mohli explicitně vytvořit každý scénář. Nikdy se nespoléhejte na to, že výsledek testovacího scénáře bude záviset na vnějším faktoru.

Automatizované akceptační testy

V dnešní době existuje několik postupů, které používají automatizované akceptační testy (AAT), ale v podstatě dělají totéž. Vývoj řízený chováním (BDD) a automatizovaný vývoj řízený akceptačními testy (AATDD) jsou si podobné. Oba se řídí stejnou praxí, kdy se akceptační test vytvoří ještě před vývojem funkce.

Nakonec se spustí automatizovaný akceptační test, který určí, zda funkce přináší to, co bylo dohodnuto. Proto je velmi důležité, aby vývojáři, obchodní oddělení a oddělení QA psali tyto testy společně. V budoucnu poslouží jako regresní testy a zajistí, že funkce splní to, co se od ní očekává.

Regresní testy

Bez zavedených AAT je nutné psát regresní testy dodatečně. Obojí je sice forma funkčních testů, ale způsob, jakým se píší, kdy se píší a kdo je píše, se značně liší. Stejně jako AAT mohou být řízeny prostřednictvím API kódem nebo uživatelským rozhraním. Existují nástroje pro psaní těchto testů pomocí grafického uživatelského rozhraní.

Výkonnostní testy

Existuje mnoho druhů výkonnostních testů, ale všechny testují nějaký aspekt výkonu aplikace. Vydrží extrémní tlak? Testujeme systém na vysoké teploty? Jde nám o prostou dobu odezvy při zátěži? A co škálovatelnost?“

Někdy tyto testy vyžadují emulaci obrovského počtu uživatelů. V takovém případě je důležité mít k dispozici prostředí, které je schopné takový výkon provést. Pro tento druh testování jsou k dispozici cloudové zdroje, ale je možné použít i lokální zdroje.

Testy kouře

Co je to test kouře? Je to základní test, který se obvykle provádí po nasazení nebo v okně údržby. Účelem smoke testu je zajistit, aby všechny služby a závislosti byly v provozu. Smoke test není určen k úplnému testování funkčnosti. Může být spuštěn jako součást automatizovaného nasazení nebo spuštěn prostřednictvím manuálního kroku.

Všeobecný proces automatizace testů

Teď, když jsme si ukázali kritéria pro automatizaci a dostatečný počet typů automatizovaných testů, abychom si udělali představu, představíme si obecný proces automatizace testů. Automatizace testů má tři hlavní kroky: příprava, provedení akce, hlášení výsledků.

Příprava

Nejprve musíme připravit stav, testovací data a prostředí, ve kterém testy probíhají. Jak jsme viděli, většina testů vyžaduje, aby prostředí bylo v určitém stavu před provedením akce. V typickém scénáři to vyžaduje určité nastavení. Buď bude třeba manipulovat s daty, nebo uvést aplikaci do určitého stavu, případně obojí!“

Provedení akce

Jakmile je stav a/nebo prostředí v předdefinovaném stavu, je čas provést akci! Testovací ovladač provede test, a to buď prostřednictvím volání API aplikace nebo uživatelského rozhraní, nebo přímým spuštěním kódu. Ovladač testu je zodpovědný za „řízení“ testů, ale systém pro správu testů přebírá zodpovědnost za koordinaci všeho, včetně hlášení výsledků.

Hlášení výsledků

Systém pro automatizaci testů bude zaznamenávat a hlásit výsledky. Tyto výsledky mohou být v různých formátech a mohou dokonce vytvářet lístky s problémy nebo chybami v systému sledování práce. Základním výsledkem je však výsledek vyhověl nebo nevyhověl. Obvykle je u každého testovacího scénáře zelený nebo červený indikátor, který označuje splnění nebo nesplnění.

Někdy jsou testy neprůkazné nebo z nějakého důvodu neproběhnou. Když se to stane, automatizační systém bude mít k dispozici úplný protokol výstupu, který si mohou vývojáři prohlédnout. Tento protokol jim pomůže vystopovat problém. V ideálním případě budou moci scénář přehrát znovu, jakmile zavedou opravu.

Závěr

Závěr je následující: automatizace testů pomáhá zlepšit kvalitu pomocí rychlosti. Ne všechny testy však lze automatizovat. Rozhodně je s tím spojena investice. Při tolika typech testů je důležité, abyste získali správnou kombinaci. Testovací pyramida je jednoduché pravidlo, které vám pomůže dosáhnout správného výsledku. Říká, že většinu testů by měly tvořit testy jednotek, následovat by měly testy služeb a pak testy uživatelského rozhraní.

Systém automatizace testů koordinuje starosti s testováním, včetně správy testovacích dat, spouštění testů a sledování výsledků. Automatizace testů je dalším krokem pro týmy, které začínají být zahlceny zátěží opakování stejných manuálních testů, které by měly být automatizovány.

Biografie autora: Autorem tohoto příspěvku je Phil Vuollet. Phil používá software k automatizaci procesů za účelem zvýšení efektivity a opakovatelnosti. Píše o tématech týkajících se technologií a podnikání, příležitostně přednáší na stejná témata a je rodinný typ, který se svými dětmi rád hraje fotbal a deskové hry.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.