Kompletní průvodce pro zahájení automatického testování vašeho projektu:
Co je to automatizační testování?
Automatizační testování je technika testování softwaru, která slouží k testování a porovnávání skutečného výsledku s očekávaným výsledkem. Toho lze dosáhnout psaním testovacích skriptů nebo použitím libovolného nástroje pro automatizační testování. Automatizace testování se používá k automatizaci opakujících se úloh a dalších testovacích úkolů, které se obtížně provádějí ručně.
Chcete zahájit automatizační testování na svém projektu, ale potýkáte se s nejzákladnějšími kroky uvedenými níže:
- Jak zavést automatizaci do svého projektu
- Jak vybrat nejlepší a správný automatizační nástroj?
- Jak efektivně vyvíjet skripty?
- Jak provádět a udržovat testovací skripty?
- A konečně jaké jsou nejlepší postupy, které je třeba dodržovat pro úspěšné automatizační testování?
Dnes jsme naplánovali obohatit vaše znalosti o sérii výukových materiálů na téma „Začínáme s automatizačním testováním“. Tato série tutoriálů o automatizaci odpoví na všechny výše uvedené otázky krok za krokem na jednoduchých příkladech.
Podívejme se na sérii tutoriálů „Začínáme s automatizací na vašem projektu“!!!
Automatizace od začátku do konce:
Tutoriál č. 1: Nejlepší návod, jak začít s automatizací na vašem projektu
Tutoriál č. 2: Typy automatizovaných testů a některé mylné představy
Tutoriál č. 3: 10 kroků k zavedení automatizace na vašem projektu
Tutoriál č. 4: Průvodce výběrem nejlepšího nástroje pro automatizaci od A do Z
Tutoriál č. 5: Vývoj skriptů a automatizačních rámců
Tutoriál č. 6: Provádění a vykazování automatizace
Tutoriál #7: Nejlepší postupy a strategie automatizace testů
Tipy pro automatizaci:
Tutoriál #8: 10 tipů, které byste si měli přečíst před automatizací testovacích prací
Tutoriál #9: Jak se liší plánování testů pro manuální a automatizační projekty
Tutoriál #10: Kdy se rozhodnout pro automatizaci?
Tutoriál #11: Úskalí automatizačního testování
Tutoriál #12: Návod na implementaci Proof of Concept (POC) v automatizaci
Tutoriál #13: Jak vybrat správné testovací případy pro automatizaci
Tutoriál #14: Jak převést manuální testovací případy do automatizačních skriptů
Kariéra v automatizaci:
Tutoriál #15: Tipy, jak se stát lepším automatizačním testerem
Tutoriál #16: Automatizace testování – je to specializovaná kariéra? Mohou se automatizaci věnovat i běžní testeři?“
Oblíbené nástroje pro automatizaci:
Tutoriál #17: Výukové kurzy Selenium 31+ nejlepších bezplatných výukových kurzů Selenium
Tutoriál #18: Výukové kurzy QTP
Tutoriál #19: Nástroj pro testování webových služeb SoapUI
Tutoriál #20: HP LoadRunner pro testování výkonu
Automatizační rámce:
Tutoriál #21: Proč potřebujeme framework pro automatizaci
Tutoriál #22: Nejoblíbenější automatizační frameworky
Automatizace v agilním světě:
Tutoriál #23: Jak implementovat efektivní automatizaci v agilním světě
Další automatizační nástroje:
Tutoriál #24: Nejlepší automatizační testovací nástroje
Tutoriál #25: Sikuli GUI Automation Tool
Tutoriál #26: PowerShell: Automatizace uživatelského rozhraní desktopových aplikací pomocí PowerShellu
Tutoriál #27: (Alternativa Selenium IDE)
Tutoriál #28: Nástroj Geb: Automatizace prohlížeče pomocí Geb Tool
Tutorial #29: AutoIt: Jak zacházet s vyskakovacími okny pomocí AutoIt
Tutorial #30: Cucumber: Automatizace pomocí nástroje Cucumber a Selenium
Tutoriál #31: Testovací nástroj Protractor pro end-to-end testování aplikací AngularJS
Mobilní automatizační testování:
Tutoriál #32: Appium Studio Hands-on Tutorial
Tutoriál #33: Appium Tutorial pro začátečníky
Tutoriál #34: Selendroid Tutorial: Výukový kurz: Android Mobile Automation Framework
Tutorial #35: Ranorex Tutorial: Výkonný nástroj pro testování desktopových, webových a mobilních aplikací
Příklady automatizace specifické pro danou oblast:
Tutoriál #36: Automatizace JAVA/J2EE aplikací
Příprava na pohovor pro práci v oblasti automatizace:
Tutoriál #37: Otázky na pohovor pro automatizační testování
Tutoriál #38: Otázky na pohovor pro Selenium
Prozkoumejme první tutoriál ze série „The Ultimate Guide to Automation Testing“!!
- Co je to automatizační testování?
- Automatizace – nákladově efektivní metoda regresního testování
- Scénáře, které vyžadují automatizaci
- Správné testy pro automatizaci
- Co NEautomatizovat?
- #1) Negativní testy / testy selhání
- #2) Ad hoc testy
- #3) Testy s obrovským přednastavením
- Jednoduchý příklad automatizace testů
- What are Assertions?
- Závěr
Co je to automatizační testování?
Pokud tedy software může dělat cokoli, proč by software nemohl testovat software?
Zní vám toto tvrzení logicky?
Pokud ano, pak vám gratuluji, nyní přemýšlíte o automatizaci testování, což je ústřední bod, který budeme probírat v této sérii informativních tutoriálů.
Představte si sami sebe n a první den v práci jako SQA. Je vám předložena aplikace, kterou je třeba otestovat. Je to aplikace ERP obsahující 100 formulářů a tisíce sestav. Průzkumné testování zahájíte otevřením formuláře, který obsahuje přibližně 50 různých polí.
Do tohoto formuláře se pokusíte zadat náhodná data, což vám zabere přibližně 20 minut. Poté stisknete tlačítko odeslat. Wolla!!! Zobrazí se chybová zpráva, která vypadá jako neošetřená výjimka. Začnete mít velkou radost. Hrdě si zaznamenáte jednotlivé kroky a nahlásíte chybu do systému pro správu chyb. Skvělá snaha, cítíte se opravdu sebevědomě a energicky. Pokračujete v testování až do konce dne a nacházíte další chyby. „Úžasný první den,“ říkáte si.
Přichází další den, vývojář problém opravil a vydává novou verzi sestavení. Otestujete stejný formulář stejnými kroky a zjistíte, že chyba je opravena. Označíte ji jako opravenou. Velká snaha. Identifikací této chyby jste přispěli ke kvalitě produktu, a protože je tato chyba opravena, kvalita se zlepšila.
Nyní přichází třetí den, vývojář opět vydal novější verzi. Nyní musíte opět otestovat tento formulář, abyste se ujistili, že se neobjevila žádná regresní chyba. Stejných dvacet minut. Nyní se cítíte trochu znuděně.
Teď si představte, že za 1 měsíc se neustále vydávají novější verze a při každém vydání musíte otestovat tento dlouhý formulář plus 100 dalších podobných formulářů, jen abyste se ujistili, že nedošlo k žádné regresi.
Teď se cítíte naštvaní. Cítíte se unavení. Začínáte přeskakovat kroky. Vyplníte asi jen 50 % všech polí. Vaše přesnost není stejná, vaše energie není stejná a rozhodně vaše kroky nejsou stejné.
A jednoho dne klient nahlásí stejnou chybu ve stejném formuláři. Cítíte se uboze. Nyní se cítíte nesebevědomě. Myslíte si, že nejste dostatečně kompetentní. Vedoucí pracovníci zpochybňují vaše schopnosti.
Mám pro vás novinku; toto je příběh 90 % manuálních testerů. Vy se nijak nelišíte.
Regresní problémy jsou těmi nejbolestivějšími problémy. Jsme jen lidé. A nemůžeme každý den dělat stejnou věc se stejnou energií, rychlostí a přesností. To dělají stroje. K tomu je zapotřebí automatizace, abyste mohli opakovat stejné kroky se stejnou rychlostí, přesností a energií, s jakou byly opakovány poprvé.
Doufám, že jste pochopili, o co mi jde!!!
Kdykoli taková situace nastane, měli byste svůj testovací případ automatizovat. Automatizace testů je váš přítel. Pomůže vám zaměřit se na nové funkce a zároveň se postarat o regrese. Díky automatizaci vyplníte tento formulář za méně než 3 minuty.
Skript vyplní všechna pole a sdělí vám výsledek spolu se snímky obrazovky. V případě selhání dokáže přesně určit místo, kde testovací případ selhal, a pomůže vám tak snadno jej reprodukovat.
Automatizace – nákladově efektivní metoda regresního testování
Náklady na automatizaci jsou zpočátku opravdu vyšší. Zahrnují náklady na nástroj, dále náklady na zdroje pro automatické testování a jeho zaškolení.
Ale když jsou skripty hotové, lze je provádět stokrát opakovaně se stejnou přesností a poměrně rychle. Tím se ušetří mnoho hodin ručního testování. Náklady se tedy postupně snižují a nakonec se z něj stane nákladově efektivní metoda regresního testování.
Scénáře, které vyžadují automatizaci
Výše uvedený scénář není jediným případem, kdy budete potřebovat automatické testování. Existuje několik situací, které nelze testovat ručně.
Například,
- Porovnávání dvou obrázků pixel po pixelu.
- Porovnávání dvou tabulek obsahujících tisíce řádků a sloupců.
- Testování aplikace při zátěži 100 000 uživatelů.
- Srovnávací testy výkonu.
- Paralelní testování aplikace v různých prohlížečích a na různých operačních systémech.
Tyto situace vyžadují a měly by být, testovány pomocí nástrojů.
Kdy tedy automatizovat?
Je éra agilní metodiky v SDLC, kdy vývoj a testování budou probíhat téměř paralelně a je velmi obtížné rozhodnout, kdy automatizovat.
Než se pustíte do automatizace, zvažte následující situace
- Produkt může být v primitivní fázi, kdy produkt nemá ani uživatelské rozhraní, v těchto fázích musíme mít jasno, co chceme automatizovat. Je třeba mít na paměti následující body.
- Testy by neměly být zastaralé.
- Při vývoji produktu by mělo být snadné na skripty navázat a doplnit je.
- Je velmi důležité nenechat se unést a zajistit, aby skripty byly snadno laditelné.
- Nepokoušejte se o automatizaci uživatelského rozhraní v úplně počátečních fázích, protože uživatelské rozhraní podléhá častým změnám, což povede k selhání skriptů. Pokud je to možné, volte automatizaci na úrovni API/bez úrovně uživatelského rozhraní, dokud se produkt nestabilizuje. Automatizace API se snadno opravuje a ladí.
Jak rozhodnout o nejlepších případech automatizace:
Automatizace je nedílnou součástí testovacího cyklu a je velmi důležité rozhodnout, čeho chceme automatizací dosáhnout, než se rozhodneme automatizovat.
Výhody, které automatizace zdánlivě poskytuje, jsou velmi lákavé, ale zároveň může špatně organizovaná sada automatizace celou hru pokazit. Testeři mohou nakonec většinu času ladit a opravovat skripty, což vede ke ztrátě času na testování.
Tento seriál vám vysvětlí, jak lze automatizační sadu zefektivnit natolik, aby s pomocí automatizačních skriptů, které máme, vybírala správné testovací případy a přinášela správné výsledky.
Také jsem se zabýval odpověďmi na otázky typu Kdy automatizovat, Co automatizovat, Co neautomatizovat a Jak stanovit strategii automatizace.
Správné testy pro automatizaci
Nejlepším způsobem, jak se s tímto problémem vypořádat, je rychle vymyslet „strategii automatizace“, která bude vyhovovat našemu produktu.
Jde o to seskupit testovací případy tak, aby nám každá skupina dala jiný druh výsledku. Níže uvedená ilustrace ukazuje, jak bychom mohli seskupit naše podobné testovací případy v závislosti na produktu/řešení, které testujeme.
Ponořme se nyní do hloubky a pochopme, k čemu nám jednotlivé skupiny mohou pomoci:
#1) Vytvořte sadu testů všech základních funkcí Pozitivní testy. Tato sada by měla být automatizovaná a po spuštění této sady proti libovolnému sestavení se okamžitě zobrazí výsledky. Jakýkoli skript, který v této sadě selže, vede k závadě S1 nebo S2 a toto konkrétní sestavení může být diskvalifikováno. Zde jsme tedy ušetřili spoustu času.
Jako další krok můžeme tuto automatizovanou sadu testů přidat jako součást BVT (Build verification tests) a zkontrolovat skripty automatizace QA do procesu sestavování produktu. Když je tedy sestavení hotové, mohou testeři zkontrolovat výsledky automatických testů a rozhodnout, zda je sestavení vhodné pro instalaci a další proces testování, či nikoli.
Tímto se jednoznačně dosáhne cílů automatizace, kterými jsou:
- Snížení náročnosti testování.
- Odhalení chyb v dřívějších fázích.
#2) Dále tu máme skupinu End to End testů.
Při rozsáhlých řešeních má testování funkcionality od konce ke konci klíčový význam, zejména v kritických fázích projektu. Měli bychom mít několik automatizačních skriptů, které se dotýkají i testů end to end řešení. Po spuštění této sady by měl výsledek ukázat, zda produkt jako celek funguje tak, jak se očekává, nebo ne.
Sada automatizačních testů by měla ukázat, zda je některá z integračních částí porušena. Tato sada nemusí pokrývat každou drobnou funkci/funkčnost řešení, ale měla by pokrýt fungování produktu jako celku. Kdykoli máme alfa nebo beta verzi či jiné meziverze, pak se takové skripty hodí a dávají zákazníkovi určitou míru jistoty.
Pro lepší pochopení předpokládejme, že testujeme online nákupní portál, v rámci testů od konce ke konci bychom měli pokrýt pouze klíčové související kroky.
Jak je uvedeno níže:
- Přihlášení uživatele.
- Prohlížení a výběr položek.
- Možnost platby – toto pokrývá testy front-endu.
- Backendová správa objednávek (zahrnuje komunikaci s více integrovanými partnery, kontrolu skladových zásob, zasílání e-mailů uživateli atd) – to pomůže testování integrace jednotlivých kusů a také jádra produktu.
Takže když se spustí jeden takový skript, dává to jistotu, že řešení jako celek funguje dobře.!
#3) Třetí sadou jsou testy založené na funkci/funkčnosti.
Například můžeme mít funkci procházení a výběru souboru, takže když toto zautomatizujeme, můžeme automatizovat případy zahrnující výběr různých typů souborů, velikostí souborů atd. tak, aby bylo provedeno testování funkce. Když dojde k nějakým změnám/doplnění této funkce, může tato sada sloužit jako sada pro regresi.
#4) Další na seznamu by byly testy založené na uživatelském rozhraní. Můžeme mít další sadu, která bude testovat funkce založené čistě na uživatelském rozhraní, jako je stránkování, omezení znaků textového pole, tlačítko kalendáře, rozbalovací nabídky, grafy, obrázky a mnoho podobných funkcí zaměřených pouze na uživatelské rozhraní. Selhání těchto skriptů obvykle není příliš kritické, pokud uživatelské rozhraní zcela nefunguje nebo se určité stránky nezobrazují podle očekávání!
#5) Můžeme mít ještě další sadu testů, které jsou jednoduché, ale velmi pracné na ruční provedení. Nudné, ale jednoduché testy jsou ideálními kandidáty na automatizaci, například zadání údajů o 1000 zákaznících do databáze má jednoduchou funkčnost, ale je nesmírně zdlouhavé provádět je ručně, takové testy by měly být automatizovány. Pokud ne, většinou skončí tak, že budou ignorovány a nebudou otestovány.
Co NEautomatizovat?
Níže je uvedeno několik testů, které by neměly být automatizovány.
#1) Negativní testy / testy selhání
Neměli bychom se pokoušet o automatizaci negativních testů nebo testů selhání, protože u těchto testů musí testeři přemýšlet analyticky a negativní testy nejsou ve skutečnosti jednoduché, aby poskytly výsledek vyhověl nebo nevyhověl, což nám může pomoci.
Negativní testy budou vyžadovat mnoho ručních zásahů, aby simulovaly skutečný scénář typu obnovení po havárii. Jen jako příklad uvedu testování funkcí, jako je spolehlivost webových služeb – pokud to zde zobecníme, hlavním cílem takových testů by bylo způsobit záměrné selhání a zjistit, jak dobře se produktu daří být spolehlivý.
Simulovat výše uvedená selhání není jednoduché, může to zahrnovat injektování některých stubů nebo použití některých nástrojů mezi nimi a automatizace zde není nejlepší cestou.
#2) Ad hoc testy
Tyto testy nemusí být pro produkt vždy skutečně relevantní a může to být i něco, co by testera mohlo napadnout v dané fázi zahájení projektu, a také snaha o automatizaci ad hoc testu musí být ověřena vzhledem ke kritičnosti funkce, které se testy dotýkají.
Například tester, který testuje funkci, která se zabývá kompresí/šifrováním dat, mohl provést intenzivní ad-hoc testy s různými daty, typy souborů, velikostmi souborů, poškozenými daty, kombinací dat, použitím různých algoritmů, na několika platformách atd.
Při plánování automatizace můžeme chtít stanovit priority a neprovádět vyčerpávající automatizaci všech ad hoc testů pouze pro tuto funkci a nakonec nám zbude málo času na automatizaci ostatních klíčových funkcí.
#3) Testy s obrovským přednastavením
Existují testy, které vyžadují obrovské přednastavení.
Například můžeme mít produkt, který se pro některé funkce integruje se softwarem třetí strany, protože produkt se integruje s libovolným systémem front zpráv, který vyžaduje instalaci do systému, nastavení front, vytvoření front atd.
Software třetí strany může být cokoli a nastavení může být složité povahy, a pokud jsou takové skripty automatizované, pak budou navždy závislé na funkci/nastavení tohoto softwaru třetí strany.
Předpokladem je například:
V současné době může vše vypadat jednoduše a čistě, protože se provádí nastavení na obou stranách a vše je v pořádku. Mnohokrát jsme se setkali s tím, že když projekt vstoupí do fáze údržby, projekt je přesunut do jiného týmu a ten nakonec ladí takové skripty, kde je skutečný test velmi jednoduchý, ale skript selže kvůli problému se softwarem třetí strany.
Výše uvedené je jen příklad, obecně si dávejte pozor na testy, které mají pracné přednastavení pro jednoduchý test, který následuje.
Jednoduchý příklad automatizace testů
Při testování softwaru (na webu nebo na počítači) obvykle používáte k provádění kroků myš a klávesnici. Nástroj pro automatizaci napodobuje tytéž kroky pomocí skriptování nebo programovacího jazyka.
Příklad: Pokud testujete kalkulačku a testovací případ spočívá v tom, že máte sečíst dvě čísla a zobrazit výsledek. The script will perform the same steps by making use of your mouse and keyboard.
The example is shown below.
Manual Test Case Steps:
- Launch Calculator
- Press 2
- Press +
- Press 3
- Press =
- The screen should display 5.
- Close Calculator.
Automation Script:
//the example is written in MS Coded UI using c# language.public void TestCalculator(){//launch the applicationvar app = ApplicationUnderTest.Launch("C:\\Windows\\System32\\calc.exe");//do all the operationsMouse.Click(button2);Mouse.Click(buttonAdd);Mouse.Click(button3);Mouse.Click(buttonEqual);//evaluate the resultsAssert.AreEqual("5", txtResult.DisplayText,”Calculator is not showing 5);//close the applicationapp.Close();}
The above script is just a duplication of your manual steps. The script is easy to create and easy to understand as well.
What are Assertions?
The second last line of the script needs some more explanation.
Assert.AreEqual(„5“, txtResult.DisplayText,“Calculator is not showing 5);
In every test case, we have some expected or predicted result at the end. In the above script, we have an expectation that „5“ should be shown on the screen. The actual outcome is the result that is displayed on the screen. V každém testovacím případu porovnáváme očekávaný výsledek se skutečným výsledkem.
To samé platí i pro automatické testování. Jediný rozdíl je v tom, že když toto porovnání provádíme v automatizaci testů, pak se v každém nástroji nazývá jinak.
Některé nástroje tomu říkají „Assertion“, některé „checkpoint“ a některé „validation“. Ale v podstatě se jedná pouze o porovnání. Pokud toto porovnání selže, např. obrazovka zobrazí 15 místo 5, pak toto tvrzení/kontrolní bod/validace selže a váš testovací případ je označen jako neúspěšný.
Pokud testovací případ selže kvůli tvrzení, pak to znamená, že jste pomocí automatizace testování odhalili chybu. Musíte ji nahlásit do systému pro správu chyb, stejně jako to běžně děláte při manuálním testování.
V uvedeném skriptu jsme v předposledním řádku provedli aserci. 5 je očekávaný výsledek, txtResult. DisplayText je skutečný výsledek, a pokud se nerovnají, zobrazí se nám hlášení, že „Kalkulačka nezobrazuje 5“.
Závěr
Testeři se často setkávají s termíny projektů a pověřením automatizovat všechny případy, aby se zlepšily odhady testování.
Existují některé běžné „nesprávné“ představy o automatizaci.
Jsou to:
- Můžeme automatizovat každý testovací případ.
- Automatizace testů enormně zkrátí dobu testování.
- Při hladkém chodu automatizačních skriptů se neobjeví žádné chyby.
Měli bychom si ujasnit, že automatizace může zkrátit dobu testování pouze u některých typů testů. Automatizace všech testů bez jakéhokoli plánu nebo posloupnosti povede k masivním skriptům, které jsou náročné na údržbu, často selhávají a vyžadují také mnoho ručních zásahů. Navíc u neustále se vyvíjejících produktů mohou automatizační skripty zastarat a vyžadovat neustálé kontroly.
Seskupení a automatizace správných kandidátů ušetří spoustu času a poskytne všechny výhody automatizace.
Tento vynikající návod lze shrnout do pouhých 7 bodů.
Automatizované testování:
- Je testování, které se provádí programově.
- Používá nástroj pro řízení provádění testů.
- Porovnává očekávané výsledky se skutečnými výsledky (Assertions).
- Může automatizovat některé opakující se, ale nezbytné úlohy (např. Vaše regresní testovací případy).
- Může automatizovat některé úlohy, které se obtížně provádějí ručně (např. Vaše regresní testovací případy).
- Může automatizovat některé úlohy, které se obtížně provádějí ručně.Např. scénáře testování zátěže).
- Skripty lze spouštět rychle a opakovaně.
- Je dlouhodobě nákladově efektivní.
Automatizace je zde vysvětlena jednoduše, ale to neznamená, že je vždy jednoduchá. Jsou s ní spojeny výzvy, rizika a mnoho dalších překážek. Existuje mnoho způsobů, kterými se automatizace testů může pokazit, ale pokud vše proběhne v pořádku, pak jsou přínosy automatizace testů opravdu obrovské.
Příští v tomto seriálu:
V našich příštích tutoriálech probereme několik aspektů souvisejících s automatizací.
Mezi ně patří:
- Typy automatizovaných testů a některé mylné představy.
- Jak zavést automatizaci ve vaší organizaci a jak se vyhnout běžným nástrahám při automatizaci testů.
- Proces výběru nástroje a porovnání různých automatizačních nástrojů.
- Vývoj skriptů a automatizačních rámců s příklady.
- Provádění a vykazování automatizace testů.
- Nejlepší postupy a strategie automatizace testů.