Prozkoumání testování posunu doleva
Testování ve správě životního cyklu aplikací je nezbytné k maximalizaci kvality kódu a minimalizaci provozního rizika spojeného s nasazením a aktualizací softwaru. Termín shift-left v tomto kontextu vyjadřuje myšlenku přesunu testovacích aktivit co nejdříve ve fázi vývoje. Organizace v našem ukázkovém scénáři by měla zvážit začlenění tohoto přístupu do strategie DevOps, aby se minimalizovaly aktuální problémy se zabezpečením a stabilitou. V této lekci zkontrolujte různé typy testů, které by bylo možné tímto způsobem implementovat, a pak prozkoumejte jejich metody implementace.
Jaké testy by měly být součástí testování posunu doleva?
Vývoj softwaru zahrnuje širokou škálu typů testů, ale ty, které nás zajímají, zahrnují:
Testy jednotek: Tyto testy se zaměřují na nejmenší testovatelné části kódu aplikace, jako jsou jednotlivé funkce nebo metody. Cílem je stanovit, zda každá jednotka kódu může úspěšně provést svou zamýšlenou operaci izolovaně od zbytku základu kódu a externích závislostí. Tyto testy by měly být plně automatizované, rychlé (dokončené do 30 sekund) a poskytují úplné pokrytí kódu (což v podstatě znamená, že všechny testy jednotek by měly souhrnně testovat celý základ kódu). Jednotkové testování je vhodné pro přístup shift-left. Doporučujeme ho použít na veškerý kód co nejdříve ve vývojovém cyklu, nejlépe na začátku programovací fáze.
Kouřové testy: Tyto testy jsou určeny k vyhodnocení základních funkcí aplikace v testovacím prostředí. I když testují skutečnou aplikaci (nikoli její jednotlivé, izolované komponenty jako testy jednotek), jejich účelem je určit, jestli je sestavení nebo nasazení aplikace dostatečně stabilní, aby bylo možné provést podrobnější testování. Neověřují ale interoperabilitu mezi aplikacemi. Stejně jako u testů jednotek by měly být plně automatizované a relativně rychlé (interakce uživatelů se dá simulovat pomocí nástrojů pro automatizaci prohlížeče a rozhraní pro automatizaci uživatelského rozhraní). Termín kouřový test má za úkol zprostředkovat myšlenku kouře jako indikátoru hlavního problému (oheň), který by měl být co nejrychleji řešen. Kouřové testování by mělo být také implementováno v rané fázi vývojového cyklu, nejlépe hned jak bude k dispozici verze softwaru, která poskytuje jeho základní funkce. To platí pro fáze sestavení i nasazení aplikace.
Integrační testy: Tyto testy ověřují interakci mezi různými komponentami aplikace. Na rozdíl od testů jednotek může dokončení trvat poměrně dlouho. Delší doba trvání těchto testů se běžně používá jako argument pro jejich spuštění v rané fázi životního cyklu vývoje softwaru. Obecně byste měli zvážit použití integračních testů ve scénářích, pro které nejsou jednotkové nebo orientační testy vhodné. Doporučuje se ale naplánovat jejich provádění v pravidelných intervalech. Tento přístup nabízí rozumné kompromisy mezi možným zpožděním při zjišťování problémů s integrací a delší dobou čekání potřebnou k jejich dokončení.
Akceptační testy: Tyto testy určují, jestli softwarový produkt splňuje obchodní požadavky a je připravený k doručení zákazníkům. Testování přijetí není vhodné pro strategii posunu doleva, ale může být možné začlenit některé z jejích prvků v rané fázi životního cyklu vývoje softwaru. Například kritéria přijetí a uživatelské scénáře, které jsou základními součástmi akceptačního testování, by se měly zavést v rané fázi procesu vývoje. To usnadňuje spolupráci mezi vývojářskými týmy, vlastníky produktů a účastníky projektu. Kromě toho by se spotřebitelé softwaru a účastníci projektu měli zapojit do dřívějších fází testování, aby mohli sdílet zpětnou vazbu. To může zahrnovat použití takových metod, jako je alfa nebo beta testování, testování použitelnosti nebo dřívější verze před formálním akceptačním testováním.