Jak navrhnout a postavit Hyper-Fast Test Automation Stack

Proč potřebujete automatizaci úplných testů v reálném čase a rady ohledně nejlepších produktů k jejich vytvoření.

Robotický běžec začíná sprint

Jako konzultant, školitel, autor a vývojář, který se specializuje na kvalitu softwaru a automatizované testování, jsem často požádán o své názory a rady, jak přistupovat k navrhování zásobníku automatizace testů.

Dnes jsem si tedy myslel, že bych upřednostnil sdílení některých výtažků z mého nadcházejícího průvodce, který uvádí mé názory na to, co dělá dobrý test automatizace testů a jak můžete přistupovat k vytváření jednoho pro sebe.

Co dělá dobrý test automatizace zásobníku?

Můj názor na jednotlivé produkty a dodavatele se časem mění, stejně jako samotné produkty. Co se však nikdy nezmění, jsou moje čtyři zlatá pravidla pro automatizaci testování, která jsou:

1. Účelem automatizace testů je poskytnout vývojářům velmi rychlou zpětnou vazbu.

„Zpětná vazba“ znamená potvrzení úspěchu i oznámení problému. Například chyba je typ zpětné vazby, která signalizuje problém, obvykle nahlášená dobře poté, co si vývojář myslí, že je práce dokončena. Podobně selhání testu je další formou zpětné vazby a to se děje v době kódování.

Proč je to tak důležité?

Kvůli mému druhému zlatému pravidlu, které se týká samotné zpětné vazby, se uvádí:

2. Čím delší je zpětná vazba v systému, tím nákladnější je jeho řešení.

Pomyslete na chybu, která je rychle opravena, když vývojář, který kód napsal, má stále kontext versus, když je chyba objevena o týdny později a opravena někým, kdo se musí kód znovu naučit. Který by byl rychlejší a proto levnější opravit?

Kromě toho

3. Čím více nevyřešené zpětné vazby se hromadí ve výrobku, tím nižší je kvalita samotného produktu.

Pokud například zákazníci poskytují zpětnou vazbu, že produkt neslouží jejich potřebám, a tato zpětná vazba je zachycena, ale nezpracovává se, produkt nesplňuje potenciální hodnotu pro své uživatele, a je proto nízké kvality.

Všechno výše uvedené odpovídá mému čtvrtému pravidlu, které je:

4. Čím rychleji dokážete odezvu a řešení zpětné vazby, nižší náklady na vývoj a vyšší kvalitu vašeho produktu.

Kvalitu můžete zvýšit, pokud své úsilí zaměříte na odhalování a řešení zpětné vazby. Je to tak jednoduché. Proto každé rozhodnutí, které učiníte při navrhování a implementaci testovacího balíčku, musí sloužit k optimalizaci rychlosti zjišťování zpětné vazby, protože je to první krok k jeho řešení.

Kdo by měl navrhnout váš test automatizace zásobníku?

K návrhu a implementaci vašeho testovacího balíčku může přispět kterýkoli člen vašeho týmu. Přirozenými vůdci tohoto úsilí by obvykle byli techničtí architekti, silný vývojář s plným stackem nebo možná vedoucí týmu QA. A co je nejdůležitější ze všeho,

Samotní vývojáři MUSÍ vlastnit testovací balíček.

Abychom pochopili proč, vzpomeňte si na dříve zmíněné zlaté pravidlo - „První prioritou automatizace testů je poskytnout vývojářům velmi rychlou zpětnou vazbu.“

Toto zlaté pravidlo platí ve všech aspektech vašeho dodacího cyklu, ale zejména v prostředí místního rozvoje. Aby testovací automatizace uspěla v praxi, musí doplňovat pracovní postup vývojářů a poskytovat zpětnou vazbu v reálném čase, jak je kód psán. Ne poté, ale během.

Příliš často vidím tým QA vlastnící automatizaci testů, ale tým QA funguje po vývoji a je příliš pozdě! Ve vyspělejších týmech vidím vývojáře, kteří se při provádění automatizovaných testů spoléhají čistě na své servery pro kontinuální integraci. Přestože je tým QA před týmem QA, který vlastní testovací automatizaci, téměř suboptimální.

Přemýšlejte o tom tímto způsobem: pokud jedete někde pomocí systému GPS a špatně se otočíte, raději byste to měli okamžitě informovat nebo raději počkejte, až dorazíte na nesprávný cíl?

Chraňte kvalitu na každém kroku

Jak tedy můžete vytvořit hyperrychlou smyčku zpětné vazby?

V každé fázi výstavby zvyšujete zpětnou vazbu.

A to znamená vyloučení možnosti vad vstupujících do systému v každé fázi životního cyklu vývoje softwaru. Podívejme se na jeden příklad.
Chcete-li použít metaforu skutečného světa, řekněme, že stavíme klimatizaci (AC).

  1. Čistý
    Prvním krokem je odstranění všech souborů generovaných z předchozích sestavení, jako jsou kompilované soubory, a zahájení životního cyklu sestavení z nové základní linie.
    Je to jako vyčistit pracovní stůl od všech bitů a kusů, než začnete stavět něco nového.
  2. Kompilační kód
    Tento krok vezme soubory zdrojového kódu a změní je na spustitelný kód. Produktem tohoto kroku je vytvoření kódu pro danou součást.
    Tento krok je ekvivalentem výroby součástí potřebných k vytvoření střídavého proudu, jako je ventilátor potřebný k pohonu vzduchu a motor, který točí ventilátor.
  3. Spusťte testy jednotek
    Jednotkové testy jsou pouze dalším názvem pro specifikace spustitelných součástí, které nám říkají, zda komponenty fungují tak, jak je uvedeno. Pokud některé součásti nejsou, není důvod pokračovat v budování systému. Nezapomeňte, že hodnota je vytvořena pomocí komponent, takže vadná součást by měla za následek vadnou hodnotu.
    V příkladu AC by jedna zkouška jednotky zajistila, že lopatky ventilátoru jsou schopny pohánět vzduch, když se otáčí. Pokud lopatky ventilátoru nefungují, je lepší nejprve opravit lopatky ventilátoru a poté restartovat proces výstavby.
  4. Spusťte integrační testy
    Jakmile víme, že komponenty pracují jednotlivě, můžeme je dát dohromady a zkontrolovat, zda vytvářejí hodnotu v souzvuku. To je účelem integračních testů. Tyto testy kombinují tolik jednotek, aby vytvořily hodnotu, a stejně jako v předchozím kroku, pokud zjistíme, že komponenty nefungují společně, jak je uvedeno, není důvod pokračovat v budování systému, protože hodnota je vadná.
    Zpět na příklad střídavého proudu, pokud sestavíme ventilátor a motor a zjistíme, že vzduch není poháněn kvůli tomu, že vřeteno není namontováno, pak nemá smysl uvádět sestavu se zbytkem střídavého proudu.
  5. Nasadit aplikaci
    Pokud se dostaneme k tomuto bodu a máme skvělé zkušební pokrytí, znamená to, že všechny komponenty pracují jednotlivě a jednotně, aby vytvářely hodnotu. To nám dává velkou důvěru při sestavování celého systému. Stále si však nejsme stoprocentně jisti, že to bude fungovat, protože v procesu montáže „end-to-end“ se může něco pokazit. Z tohoto důvodu musíme po nasazení aplikace provést další testování.
    S metaforou střídavého proudu jde o to, že se všechny komponenty a sestavy spojí dohromady a připojí se k síťovému napájení.
  6. Spusťte testy end-to-end
    Se systémem plně nasazeným se nyní můžeme ujistit, že poskytuje zamýšlenou hodnotu pro spotřebitele. Tyto testy zajišťují splnění hodnotových specifikací.
    Stiskněte tlačítko on, otočte knoflík pro regulaci teploty na nastavení chladu a ujistěte se, že je poháněn studený vzduch.

V tuto chvíli máme velmi vysokou důvěru v to, že nový kód poskytuje zamýšlenou hodnotu a můžeme dodávat AC zákazníkovi.

Nicméně…

Pokud jsou tyto kroky provedeny postupně na konci každé funkce (jak je tomu obvykle), vývojář nedostane skutečnou zpětnou vazbu, dokud nebude celý tento proces dokončen. A to trvá příliš dlouho, a proto je to příliš drahé.

Ale s velmi rychlým testovacím zásobníkem získáte velkou důvěru při psaní kódu!

Ano! Během vývoje je absolutně možné poskytnout vývojářům zpětnou vazbu v reálném čase. Čtěte dál a zjistěte jak.

Přizpůsobte svůj testovací zásobník vašemu technickému zásobníku

Vzhledem k tomu, že testovací sady by měly pečlivě sledovat vývojové možnosti, má smysl považovat váš technický zásobník za výchozí bod pro výběr testovacího zásobníku.

Tento článek je zaměřen na technologický zásobník Node.js. Miluji Node.js, protože je tak zatraceně rychlé provádět úkoly, jako je sestavení, testování a nasazení, a protože techniky, jako je spuštění testů při změně souborů, jsou normou.

Pokud nepoužíváte Node.js

Tento článek by měl být užitečný, protože pojmy jsou stejné. Hledejte na Googlu ekvivalentní nástroje pro váš technický zásobník a dejte mi vědět, co najdete v komentářích níže nebo na Twitteru.

Nejlepší produkty pro Hyper-Fast Test Stack

S odkazem na výše uvedený postup je zde uveden seznam mých doporučení pro testování kvality v každém z těchto hlavních kroků.

Pro lokální testy jednotek v reálném čase

Doporučuji Wallaby.js
Wallaby.js vám řekne, zda jakýkoli test prochází nebo selže v reálném čase, při každém stisku klávesy!

Při každém stisknutí jednoho tlačítka, Wallaby mi dá vědět, jestli se něco zlomilo nebo prošlo. Využívá velmi chytrou techniku, aby přesně věděl, které testy se mají spustit, a všechny je vede paralelně. Výsledek vám řekne „wow!“

Video maluje milion slov (z webu Wallaby.js):

Další informace: https://wallabyjs.com

Pro lokální testy integrace v reálném čase

Doporučuji Chimp.js
Chimp ověří logiku vaší firemní domény při každém uložení souboru.

Používám režim testování domény Chimp. Je to nástroj, který jsme napsali v mé společnosti a který sleduje systém souborů a opakuje servisní testy s každou změnou. Výsledkem je rychlá zpětná vazba o stavu logiky domény pro aplikace Node.js.

Více informací: http://chimpjs.com

Pro místní testy typu end-to-end v reálném čase

Doporučuji také Chimp.js
Chimp ověřuje funkci end-to-end, na které právě pracujete, při každém uložení souboru.

Používám Chimpův testovací režim end-to-end. Namísto provádění všech testů typu end-to-end při každém uložení souboru (což by trvalo příliš dlouho), Chimp sleduje konkrétní značku a opakuje testy označené. Tento jednoduchý trik vás udržuje velmi soustředěným na úkol po ruce a zároveň poskytuje velmi rychlou zpětnou vazbu od začátku do konce.

Chimp funguje také pro jakoukoli webovou aplikaci - bez ohledu na backend.

Více informací: http://chimpjs.com

Pro orchestraci

Doporučuji Gulp.js
Gulp je dirigentem orchestru.

Získat všechny kusy, aby hladce spolupracovaly, může být výzvou a potřebujete nástroj, který dokáže pracovat stejně rychle jako vy. Zde přichází Gulp.js.

Gulp.js je streamovací systém sestavení, který je skvělý pro orchestraci. Používám jej pro lokální spouštění složitých úkolů - například: spusťte aplikační server, počkejte na zprávu a poté spusťte Chimp. Na serveru pro kontinuální integraci provádí testy jednotek pomocí Mocha & Karma, shromažďuje pokrytí kódu a provádí testy kouře.

Gulp můžete použít také s technologiemi jiných než Node.js. Nedávno jsem použil Gulp k ovládání úkolů Mavenu pro projekt Java kvůli vynikající schopnosti Gulp sledovat soubory.

Více informací: http://gulpjs.com

Chcete se dozvědět více?

Tato informace je zkráceným výňatkem z mého brzy zveřejněného znalostního základu a průvodce „Quality Faster“. V něm podrobně popisuji, jak implementovat tyto a další technologie v rámci holistického přístupu k plnému týmu, plný stack. k vyšší kvalitě softwaru.

Podrobný písemný průvodce je doprovázen příklady kódu na GitHubu a také přichází s přístupem k vyhrazené komunitě vývojářů, vůdců QA a produktových manažerů, kteří diskutují a sdílejí všechny aspekty testování a kvality.

Přijďte a vyzkoušejte to hned.

V mém dalším příspěvku

Ukážu vám, jak můžete rozšířit filozofii rychlé zpětné vazby vytvořené v prostředí dev pro širší tým, a také vám ukážu, jak vytvořit holistický proces kvality, který je vytvořen pro rychlejší zpětnou vazbu v každém kroku.

Souhlasit nebo nesouhlasit?

Pokud nesouhlasíte s mými doporučeními nástrojů nebo pokud víte o jiných nástrojích nebo technikách, o kterých si myslíte, že je při hyperrychlé zpětné vazbě ještě lepší, vždy o nich chci slyšet! Prosím, dejte mi vědět prostřednictvím komentářů zde, nebo připojením na twitter na @sam_hatoum

A pokud se vám líbí, co čtete, pomozte nám to sdílet s ostatními kliknutím na tlačítko doporučit.

Děkuji a těším se, že vám pomůžu dodat kvalitnější software rychleji.

Sam.

Další články, které jsem napsal: