complete functional testing guide with its types
Výukový program podrobného funkčního testování s hloubkou, typy, techniky a příklady:
Co je funkční testování?
Funkční testování je druh testování černé skříňky, které se provádí s cílem potvrdit, že se funkce aplikace nebo systému chovají podle očekávání.
Provádí se ověření všech funkcí aplikace.
SEZNAM tutoriálů zahrnutých v této sérii:
Výukový program č. 1: Co je funkční testování (tento návod)
Výukový program č. 2: Otázky týkající se testování funkčnosti rozhovoru
Výukový program č. 3: Nejlepší nástroje pro testování funkční automatizace
Výukový program č. 4: Co je nefunkční testování?
Výukový program č. 5: Rozdíl mezi jednotkovými, funkčními a Integrace Testování
Výukový program č. 6 : Proč by mělo být prováděno funkční a výkonnostní testování současně
Nástroje:
Výukový program č. 7: Automatizace funkčních testů s Ranorex Studio
Výukový program č. 8: UFT Functional Tool Nové funkce
Výukový program č. 9: Cross Browser Functional Automation using Parrot QA Tool
Výukový program č. 10: Výukový program Jubula Open Source Tool pro testování funkčnosti
jak spustit soubory .jar v systému Windows 10
Co se naučíte:
- Úvod do funkčního testování
Úvod do funkčního testování
Musí existovat něco, co definuje, co je přijatelné chování a co ne.
To je specifikováno ve funkční specifikaci nebo specifikaci požadavku. Jedná se o dokument, který popisuje, co má uživatel povoleno, aby mohl určit shodu aplikace nebo systému s ním. Někdy to může také znamenat ověření skutečných scénářů na straně podniku.
Testování funkčnosti lze proto provádět pomocí dvě populární techniky :
- Testování na základě požadavků: Obsahuje všechny funkční specifikace, které tvoří základ pro všechny prováděné zkoušky.
- Testování na základě obchodních scénářů: Obsahuje informace o tom, jak bude systém vnímán z pohledu obchodního procesu.
Testování a zajišťování kvality jsou velkou součástí procesu SDLC. Jako tester si musíme být vědomi všech typů testování, i když se s nimi denně přímo nezúčastňujeme.
Vzhledem k tomu, že testování je oceán, jeho rozsah je skutečně tak obrovský a my máme vyhrazené testery, kteří vystupují různé druhy testování . Pravděpodobně každý z nás musí být obeznámen s většinou konceptů, ale nebude na škodu uspořádat si to tady všechny.
Typy funkčního testování
Funkční testování má mnoho kategorií a ty lze použít na základě scénáře.
Nejvýznamnější typy jsou stručně popsány níže:
Testování jednotek obvykle provádí vývojář, který zapisuje různé jednotky kódu, které mohou být související nebo nesouvisející k dosažení určité funkce. Jeho, obvykle to vyžaduje psaní testů jednotek, které by volaly metody v každé jednotce a ověřovaly ty, když jsou předány požadované parametry, a jeho návratová hodnota je podle očekávání.
Pokrytí kódu je důležitou součástí testování jednotek, kde musí existovat testovací případy, které pokryjí níže uvedené tři:
i) Pokrytí vedení
ii) Pokrytí kódové cesty
iii) Pokrytí metodou
Test příčetnosti : Provádí se testování, aby se zajistilo, že všechny hlavní a zásadní funkce aplikace / systému fungují správně. To se obvykle provádí po kouřové zkoušce.
Testování kouře : Testování, které se provádí po vydání každého sestavení k testování, aby se zajistila stabilita sestavení. Nazývá se také jako testování ověření sestavení.
Regresní testy : Provádí se testování, aby se zajistilo, že přidání nového kódu, vylepšení, oprava chyb neporuší existující funkčnost ani nezpůsobí nestabilitu a stále funguje podle specifikací.
Regresní testy nemusí být tak rozsáhlé jako skutečné funkční testy, ale měly by zajistit jen takové množství pokrytí, aby se potvrdilo, že je funkce stabilní.
Testy integrace : Když se systém spoléhá na více funkčních modulů, které by mohly jednotlivě perfektně fungovat, ale musí fungovat soudržně, když se spojí dohromady, aby se dosáhlo scénáře end-to-end, ověření takových scénářů se nazývá testování integrace.
Testování beta / použitelnosti : Produkt je vystaven skutečnému zákazníkovi ve výrobě, jako je prostředí, a on produkt otestuje. Od toho se odvíjí pohodlí uživatele a je přijímána zpětná vazba. Je to podobné jako při testování přijetí uživatele.
Představme si to ve snadném vývojovém diagramu:
Testování funkčního systému:
Testování systému je testování, které se provádí na úplném systému, aby se ověřilo, zda funguje podle očekávání, jakmile budou integrovány všechny moduly nebo komponenty.
End-to-end testování se provádí k ověření funkčnosti produktu. Toto testování se provádí pouze po dokončení testování integrace systému, včetně funkčních i nefunkčních požadavků.
=> Rozdíl mezi testováním jednotek, funkcí a integrací
Proces
Tento testovací proces má tři hlavní kroky:
Přístup, techniky a příklady
Funkční nebo behaviorální testování generuje výstup na základě daných vstupů a určuje, zda systém funguje správně podle specifikací.
Obrazové znázornění bude tedy vypadat takto:
Kritéria vstupu / výstupu
Vstupní kritéria:
- Dokument specifikace požadavku je definován a schválen.
- Byly připraveny testovací případy.
- Testovací data byla vytvořena.
- Prostředí pro testování je připraveno, všechny potřebné nástroje jsou k dispozici a připraveny.
- Kompletní nebo částečná aplikace je vyvinuta a testována na jednotku a je připravena k testování.
Kritéria ukončení:
- Spuštění všech funkčních testovacích případů bylo dokončeno.
- Nejsou otevřené žádné kritické chyby nebo chyby P1, P2.
- Hlášené chyby byly potvrzeny.
Zapojené kroky
Níže jsou uvedeny různé kroky tohoto testování:
- Úplně prvním krokem je určení funkčnosti produktu, který je třeba otestovat, a zahrnuje testování hlavních funkcí, chybových stavů a zpráv, testování použitelnosti, tj. Zda je produkt uživatelsky přívětivý nebo ne, atd.
- Dalším krokem je vytvoření vstupních dat pro testovanou funkčnost podle specifikace požadavku.
- Později, ze specifikace požadavku, je výstup určen pro testovanou funkčnost.
- Připravené testovací případy jsou provedeny.
- Skutečný výstup, tj. Výstup po provedení testovacího případu, a očekávaný výstup (stanovený podle specifikace požadavku) jsou porovnány, aby se zjistilo, zda funkce funguje očekávaným způsobem nebo ne.
Přístup
Lze uvažovat o různých druzích scénářů a vytvářet je ve formě „testovacích případů“. Jako lidé QA všichni víme, jak vypadá kostra testovacího případu.
Má většinou čtyři části:
- Souhrn testu
- Předpoklady
- Zkušební kroky a
- Očekávané výsledky.
Pokus o vytvoření každého druhu testu je nejen nemožný, ale také časově náročný a nákladný.
Obvykle bychom chtěli odhalit maximální chyby bez úniků s existujícími testy. Proto musí QA používat optimalizační techniky a strategizovat, jak by přistoupily k testování.
Vysvětlíme to pomocí příklad.
Příklady použití funkčního testování:
Využijte online portál HRMS, kde se zaměstnanec přihlásí pomocí svého uživatelského účtu a hesla. Na přihlašovací stránce jsou dvě textová pole pro uživatelské jméno a heslo a dvě tlačítka: Přihlášení a Storno. Úspěšné přihlášení uživatele přenese na domovskou stránku HRMS a zrušení zruší přihlášení.
Specifikace jsou uvedeny níže:
# 1) Pole id uživatele má minimálně 6 znaků, maximálně 10 znaků, čísla (0-9), písmena (a-z, A-z), speciální znaky (je povoleno pouze podtržítko, tečka, spojovník) a nesmí být ponecháno prázdné. ID uživatele musí začínat znakem nebo číslem, nikoli speciálními znaky.
#dva) Pole hesla má minimálně 6 znaků, maximálně 8 znaků, čísla (0-9), písmena (a-z, A-Z), speciální znaky (všechny) a nesmí být prázdné.
Základní přístup k testování tohoto scénáře lze rozdělit do dvou širokých kategorií:
- Pozitivní testování a
- Negativní testování
Každá z těchto kategorií má samozřejmě svůj dílčí oddíl testů, které budou provedeny.
Pozitivní testy jsou šťastné testy cesty, které se provádějí, aby se zajistilo, že produkt splňuje - přinejmenším základní požadavky, které jsou zásadní pro použití zákazníkem.
Negativní scénáře ujistěte se, že se produkt chová správně, i když je vystaven neočekávaným datům.
Doporučené čtení => Co je negativní testování a jak psát případy negativního testu
Nyní se pokusím strukturovat testovací techniky pomocí níže uvedeného vývojového diagramu. Podrobně se seznámíme s každým z těchto testů.
Techniky funkčního testování
# 1) Testy založené na koncovém uživateli / systému
Testovaný systém může mít mnoho komponent, které při spojení dohromady dosáhnou uživatelského scénáře.
V Příklad scénář zákazníka by zahrnoval úkoly, jako je načítání aplikací HRMS, zadávání správných pověření, přechod na domovskou stránku, provádění některých akcí a odhlášení ze systému. Tento konkrétní tok musí pro základní obchodní scénář fungovat bez jakýchkoli chyb.
Některé vzorky jsou uvedeny níže:
Sl č | souhrn | Předpoklad | Modelový případ | Očekávané výsledky. |
---|---|---|---|---|
1. | Plně privilegovaný uživatel může provádět změny účtu | 1) Uživatelský účet musí existovat 2) Uživatel musí mít požadovaná oprávnění | 1) Uživatel zadá uživatelské jméno a heslo 2) Uživatel vidí oprávnění k úpravám pro úpravu samotného účtu 3) Uživatel upravuje informace o účtu a ukládá. 4) Uživatel se odhlásí. | 1) Uživatel je přihlášen na domovskou stránku 2) Obrazovka úprav se zobrazí uživateli. 3) Informace o účtu jsou uloženy 4) Uživatel je vrácen zpět na přihlašovací stránku |
dva. | Další platný uživatel bez plných oprávnění | 1) Uživatelský účet musí existovat 2) Uživatel musí mít minimální oprávnění | 1) Uživatel zadá uživatelské jméno a heslo 2) Uživatel vidí oprávnění k úpravám pouze u určitých polí. 3) Uživatel upravuje pouze tato pole a ukládá. 4) Uživatel se odhlásí. | 1) Uživatel je přihlášen na domovskou stránku 2) Obrazovka úprav se uživateli zobrazí pouze v určitých polích. Pole účtu jsou zašedlá. 3) Upravená pole se uloží 4) Uživatel je vrácen zpět na přihlašovací stránku |
Toto je základní příklad toho, jak jsou testovací případy vytvářeny pro situace. Výše uvedený formát bude platit i pro všechny níže uvedené testy. Kvůli silnému koncepčnímu uzemnění jsem provedl pouze několik jednoduchých testů výše a níže.
# 2) Testy ekvivalence
v Rozdělení ekvivalence , jsou data testu rozdělena do různých oddílů, které se nazývají datové třídy ekvivalence. Data v každém oddílu se musí chovat stejným způsobem, proto musí být testována pouze jedna podmínka. Podobně, pokud jedna podmínka v oddílu nefunguje, nebude fungovat žádná z ostatních.
Například , ve výše uvedeném scénáři může mít pole id uživatele maximálně 10 znaků, takže zadávání dat> 10 by se mělo chovat stejně.
# 3) Testy hraničních hodnot
Hraniční testy implikují datové limity pro aplikaci a ověřují, jak se chová.
Pokud jsou tedy vstupy dodávány nad mezní hodnoty, považuje se to za negativní testování. Minimální 6 znaků pro uživatele tedy nastavuje hraniční limit. Testy napsané s ID uživatele<6 characters are boundary analysis tests.
# 4) Testy založené na rozhodování
Testy založené na rozhodování jsou soustředěny kolem ideologie možných výsledků systému, když je splněna konkrétní podmínka.
Ve výše uvedeném scénáři lze okamžitě odvodit následující testy založené na rozhodování:
- Pokud jsou zadána nesprávná pověření, mělo by to uživateli indikovat a znovu načíst přihlašovací stránku.
- Pokud uživatel zadá správná pověření, měl by uživatele přesunout na další uživatelské rozhraní.
- Pokud uživatel zadá správná pověření, ale chce zrušit přihlášení, neměl by uživatele přesunout na další uživatelské rozhraní a znovu načíst přihlašovací stránku.
# 5) Alternativní průtokové testy
Testy alternativní cesty jsou spuštěny k ověření všech možných způsobů, které existují, kromě hlavního toku k dosažení funkce.
# 6) Ad-hoc testy
Když je většina chyb odhalena výše uvedenými technikami, ad-hoc testy jsou skvělým způsobem, jak odhalit jakékoli nesrovnalosti, které nebyly dříve pozorovány. Provádí se to s myšlenkou na rozbití systému a zjistíme, zda reaguje ladně.
Například , ukázkový testovací případ by byl:
- Uživatel je přihlášen, ale správce smaže uživatelský účet, když provádí některé operace. Bylo by zajímavé vidět, jak to aplikace ladně zvládá.
Funkční vs. nefunkční testování:
Nefunkční testy zaměřit se na kvalitu aplikace / systému jako celku. Proto se snaží odvodit, jak dobře systém funguje podle požadavků zákazníka, na rozdíl od funkce, kterou provádí.
=> Přesný rozdíl si přečtěte zde
Automatizace funkčních testů
Můžeme automatizovat funkční testy?
Díky automatizaci lze snížit manuální úsilí, ušetřit čas, vyhnout se skluzu chyb a zvýšit efektivitu.
Nelze však automatizovat všechny a všechno. Toto testování může být automatizované, ale uživatel musí vypracovat testovací případy pro provedení automatizace. Je důležité najít správné testovací případy, které se mají automatizovat, spolu s vhodným nástrojem.
Automatizace funkčních případů může mít nevýhody, jako když je počet testovacích případů mnohem více a jsou znovu a znovu ustupovány (což je třeba udělat), pak může vývojář čelit problému při provádění změn v kódu.
Mnohokrát se při provádění analýzy úniků defektů zdá, že hlavní a trvalou příčinou úniků je nedostatečné pokrytí testů v konkrétní funkci.
Existuje opět několik příčin, jako je nedostatek prostředí, nedostatek testerů, příliš mnoho dodávaných funkcí, méně času na pokrytí všech aspektů testování a někdy jednoduše přehlédnutí.
Zatímco specializované testovací týmy mohou provádět podrobné testování na každém sprintu nebo každém testovacím cyklu, defekty budou vždy existovat a vždy budou defekty, které by mohly chybět. To je jedna ze základních potřeb zavedení automatizace testů, čímž se výrazně zlepší efektivita celkového procesu testování a pokrytí testovacích případů.
Ačkoli automatizované testování nikdy nemůže nahradit manuální testy, jejich ideální kombinace se ukáže jako zásadní pro dosažení požadované kvality v softwarových projektech.
Aspekty automatizace:
# 1) Vyberte správný automatizační nástroj : Na trhu je k dispozici několik nástrojů, výběr automatizačního nástroje je skutečným skličujícím úkolem! Můžete však vytvořit seznam požadavků, na jejichž základě můžete vybrat, který automatizační nástroj použít.
Mezi hlavní aspekty, které je třeba myslet, patří:
- Vyberte nástroj, který bude snadno použitelný pro všechny členy QA týmu, pokud již nemají požadované dovednosti.
- Nástroj lze použít v různých prostředích. Pro Příklad : Lze skripty vytvářet na jedné platformě OS a spouštět je na jiné? Vyžadujete automatizaci CLI, automatizaci uživatelského rozhraní, automatizaci mobilních aplikací nebo vše?
- Nástroj musí mít všechny funkce, které požadujete. Pro Příklad : Pokud někteří testeři neznají skriptovací jazyk, měl by mít nástroj funkci nahrávání a přehrávání a poté podporovat převod zaznamenaného skriptu do požadovaného skriptovacího jazyka. Podobně, pokud také potřebujete nástroj k podpoře automatizovaných testů sestavení, konkrétních sestav a protokolování, pak to musí být také schopno.
- Nástroj musí být schopen podporovat opětovnou použitelnost testovacích případů v případě změn uživatelského rozhraní.
Automatizační nástroje : Pro funkční automatizaci je k dispozici několik nástrojů. Selen je pravděpodobně velmi oblíbený, ale existují i další open-source nástroje, jako je Sahi, Watir, Robotium, AutoIt atd.
Na trhu je k dispozici několik nástrojů pro automatizaci testů. Ale výběr vhodného nástroje je pro organizaci velmi důležitý. Může to záviset na požadavku, snadnosti použití a nákladech zde hraje hlavní roli.
Níže uvádíme některé z nejlepších funkčních testovacích nástrojů:
- Selen
- QTP
- Junit
- Loadrunner
- MÝDLO
- TestComplete
=> Podívejte se na tento kompletní seznam špičkových funkčních automatizačních nástrojů
#dva) Vyberte správné testovací případy k automatizaci : Chcete-li z automatizace vytěžit maximum, je důležité být chytrý v tom, jaké typy testů si vyberete k automatizaci. Pokud existují testy, které vyžadují určité nastavení a konfigurace během provádění testu, pak jsou nejlépe ponechány neautomatizované.
Proto můžete automatizovat testy, které:
- Musí být spuštěno opakovaně.
- Spouštějte s různými druhy dat.
- Některé testovací případy P1, P2 vyžadují spoustu úsilí a času.
- Testy náchylné k chybám.
- Sada testů, které je třeba spustit v různých prostředích, prohlížečích atd.
# 3) Vyhrazený tým automatizace : To je ve většině organizací pravděpodobně přehlíženo a automatizace je uložena všem členům týmu QA.
Každý člen týmu má různé úrovně zkušeností, sady dovedností, úrovně zájmu, šířku pásma pro podporu automatizace atd. Někteří jednotlivci jsou pravděpodobně lépe zruční v provádění manuálních testů, zatímco jiní mohou znát skriptovací a automatizační nástroje.
V takových situacích je dobrým zvykem provést analýzu všech členů týmu a nechat některé členy věnovat se pouze automatizaci.
Aktivita automatizace vyžaduje čas, úsilí, znalosti a specializovaný tým, který pomůže dosáhnout požadovaných výsledků namísto přetížení všech členů týmu manuálními i automatizačními testy.
# 4) Testy založené na datech: Automatizované testovací případy, které vyžadují více sad dat, by měly být dobře napsány, aby je bylo možné znovu použít. Data mohou být zapsána ve zdrojích, jako jsou textové soubory nebo soubory vlastností, soubory XML nebo čtena z databáze.
Ať už je zdroj dat jakýkoli, vytvoření dobře strukturovaných dat automatizace usnadňuje údržbu rozhraní a umožňuje plně využít stávající testovací skripty.
# 5) Změny uživatelského rozhraní nesmí narušit testy: Testovací případy, které vytvoříte pomocí vybraného nástroje, musí být schopné vypořádat se s potenciálními změnami uživatelského rozhraní. Například dřívější verze selenu používaly umístění k identifikaci prvků stránky.
Pokud se tedy uživatelské rozhraní změnilo, tyto prvky již na těchto místech nebyly nalezeny a následně povedou k hromadnému selhání testů.
Proto je důležité předem porozumět nedostatkům nástroje a vytvořit testovací případy tak, aby v případě změn uživatelského rozhraní byly vyžadovány pouze minimální změny.
# 6) Časté testování: Jakmile budete mít připravený základní testovací automatizační segment, naplánujte častější provádění tohoto segmentu. To má obousměrnou výhodu: Jedním z nich je, že můžete vylepšit rámec automatizace a učinit jej robustnějším, a druhým je, že v procesu zachytíte více chyb.
Výhody
Níže jsou uvedeny různé výhody funkčního testování:
- Toto testování reprodukuje nebo je replikou skutečného systému, tj. Je replikou toho, co je produkt v živém prostředí. Testování je zaměřeno na specifikace podle použití zákazníka, tj. Specifikace systému, operační systém, prohlížeče atd.
- Nefunguje to na žádném případě, ale nebo na jakýchkoli předpokladech o struktuře systému.
- Toto testování zajišťuje dodávku vysoce kvalitního produktu, který splňuje požadavky zákazníka, a zajišťuje, že je zákazník spokojen s konečnými výsledky.
- Zajišťuje dodání produktu bez chyb, který má všechny funkce fungující podle požadavků zákazníka.
- Provádí se testování založené na riziku, aby se snížila pravděpodobnost jakéhokoli druhu rizika v produktu.
Omezení
Toto testování se provádí, aby se zajistilo, že produkt funguje podle očekávání a je implementován celý požadavek a produkt je přesně podle požadavků zákazníka.
Nezohledňuje však další faktory, jako je výkonnost produktu, tj. Citlivost, doba propustnosti atd., Které jsou důležité a je velmi důležité, aby byly součástí testování před vydáním produktu.
Nevýhody
- Existuje mnoho šancí na provedení redundantního testování.
- V produktu mohou chybět logické chyby.
- Toto testování je založeno na požadavku, pokud v případě, že požadavek není úplný nebo je komplikovaný nebo není jasný, je provádění tohoto testování v takovém scénáři obtížné a může být také časově náročné.
Proto jsou v zásadě oba tyto typy testování pro kvalitní produkt potřebné.
Závěr
Tento výukový program komplexně pojednal o všem, co potřebujete vědět o funkčním testování, a to hned od základů.
Funkční testování je jedním z důležitých testovacích procesů, protože ověřuje funkčnost produktu, která je nejvíce požadovaná, a skutečně důležitý aspekt jakéhokoli produktu nebo aplikace.
O autorovi: Sanjay Zalavadia - jako viceprezident klientské služby pro Vánek , přináší více než 15 let zkušeností s vedením IT a služeb technické podpory.
Doufám, že některé z technik, které jsme navrhli, budou pro všechny čtenáře užitečné. Sdělte nám své myšlenky v komentářích níže.
Doporučené čtení => Výukový program pro testování funkcí
Doporučené čtení
- Funkční testování vs. nefunkční testování
- Alfa testování a beta testování (kompletní průvodce)
- Nejlepší nástroje pro testování softwaru 2021 (QA Test Automation Tools)
- Rozdíly mezi testováním jednotek, testováním integrace a funkčním testováním
- Typy testování softwaru: Různé typy testování s podrobnostmi
- Spock pro integraci a funkční testování se selenem
- Kompletní průvodce pro testování ověřování sestavení (testování BVT)
- Kompletní průvodce nefunkčním testováním pro začátečníky