Testování softwaru
Testování odhaluje možné funkční a technické vady Vašeho produktu. Testování softwaru poskytuje informace o funkčnosti řešení a o tom, zda jeho kvalita splňuje všechny očekávané požadavky a specifikace. Výsledkem procesu testování je zpráva o všech zjištěných problémech a úrovni jejich závažnosti.
Máme zkušenosti s testováním kritických a vysoce výkonných systémů i s testováním různých webových řešení z různých sektorů. Testování obchodních platforem zahrnuje manuální i automatické testy během celého životního cyklu produktu. Nejdůležitější roli zde hrají zátěžové testy simulace uživatelů, kotací a obchodů, regresní testy a integrační testy. V oblasti webových řešení máme zkušenosti s automatickým testováním E2E (End-to-End) včetně testů napříč prohlížeči a platformami, bezpečnostních penetračních testů a automatických regresních testů s regresními nástroji vyrobenými na míru.
Dodávání vysoce kvalitních produktů v xitee je podporováno kontinuální integrací testů (unit test, E2E test, integrační testy, regresní testy) a automatizovanou kontrolou kvality kódu pomocí SonarQube. Náš tým se skládá z česky, anglicky a německy hovořícíchh testerů a konzultantů s bohatými zkušenostmi s testováním v různých projektech.
Společnost xitee také poskytuje konzultace v oblasti testování a QA (Quality Assurance) & služby test managementu. Konzultace v oblasti testování pomáhá identifikovat podněty pro transformaci s cílem zlepšení organizačních testovacích procesů s využitím osvědčených testovacích postupů. Test management kombinuje řízení projektů a rizik posílené o metodiku nejlepších testovacích postupů.
Funkční testování
Funkční testování se skládá z testů, které hodnotí, zda funkce řešení splňují dané požadavky. Tyto požadavky mohou být popsány například jako součást specifikací obchodních požadavků, uživatelských příběhů, případů užití nebo funkčních specifikací. Funkce řešení představují to, "co" by mělo řešení dělat.
Funkční testování je širší pojem zahrnující specifické typy testování, jako je manuální testování, testování napříč prohlížeči a testování reálných zařízení.
Manuální testování provádí zkušený tester pomocí standardizovaných testovacích technik, jako je analýza hraničních hodnot nebo přechod mezi stavy. Tento přístup dokáže zajistit správnost funkčnosti softwaru v každé situaci, a to i v okrajových případech, které nemusí být v požadavcích klienta vůbec zmíněny. Tester poskytuje cennou zpětnou vazbu týkající se uživatelské zkušenosti a uživatelského rozhraní a využitelnosti.
Testování napříč prohlížeči ověřuje, zda řešení funguje v různých prohlížečích tak, jak se očekávalo/chtělo. Vždy je výhodné vědět, jaký prohlížeč vaši uživatelé preferují. Také je vhodné začít s testováním společně se začátkem vývoje. Tento proces vždy automatizujeme pomocí nejnovějších technologií a nástrojů dostupných na trhu.
Testování reálných zařízení - v některých případech nestačí testování na emulátorech a simulátorech. Výkonnostní a funkční testy se na skutečných zařízeních chovají jinak, protože emulátory jsou pouze virtuálními zařízeními. Funkčnost a stabilitu softwaru na různých zařízeních lze plně zaručit pouze testem provedeným na skutečných zařízeních s různým hardwarem a softwarem. Zde máme zkušenosti se stackem prohlížečů, který obsahuje 200 skutečných zařízení iOS a Android a stovky emulátorů iOS a Android s různými verzemi operačních systémů.
Automatizace testování
Automatizace testování provádí mnoho testovacích případů konzistentně a opakovaně na různých verzích testovaného systému a/nebo prostředí. Je důležitou součástí agilního vývoje. Pomáhá rychle identifikovat nové nebo opakující se vady v již otestovaných oblastech řešení.
Automatizovat lze jednu nebo více z následujících činností: nastavení testovacího prostředí a předběžných podmínek, provedení testovacích případů, porovnání skutečných výsledků s předpokládanými výsledky, hlášení o stavu testu. Pokud je každá tato činnost prováděna manuálně, zabere značné množství času a je náchylná k lidské chybě, zejména při opakování stejných nebo podobných činností vícekrát.
Automatické testování E2E (End to End) je proces provádění testovacího scénáře proti skutečnému prohlížeči. Testuje se celý produkt, aby se zajistilo, že všechny jeho části budou dohromady správně fungovat.
Unit testy slouží k zajištění toho, aby daná dílčí část aplikace splňovala svůj návrh a chovala se tak, jak bylo zamýšleno. Unit testy zvyšují jistotu při změně/údržbě kódu. Přiměřené procento (dohodnuté se zákazníkem) kódu by mělo být vždy pokryto právě unit testy.
Bezpečnostní/penetrační testování
Obvykle je alespoň nějaká část systému vystavena veřejnosti, např. webový server. Je třeba zajistit, aby se systémem mohli pracovat pouze oprávnění uživatelé a aby bezpečnostní opatření neumožnila neoprávněné osobě přístup k žádnému z prvků řešení. Bezpečnost systému se posuzuje provedením simulovaného útoku na daný systém. Tímto testem lze identifikovat zranitelná místa a dopady případného narušení bezpečnosti. Typickými hrozbami jsou nefunkčnost nebo přetížení systému způsobené nadměrným využíváním složek dostupných z veřejné sítě (API, webové formuláře, ...), únik citlivých a osobních údajů nebo neoprávněný přístup k omezeným funkcím aplikace. xitee používá linuxovou distribuci Kali Linux s bezpečnostními skenery OWASP ZAP a OpenVAS, které zajišťují, že se tento systém nestane snadným cílem útočníků.
Testování výkonu
Každý systém má očekávanou zátěž udávanou různými ukazateli, jako je počet současně připojených uživatelů, počet transakcí za sekundu nebo doba odezvy. Schopnost zvládnout očekávanou, zvýšenou nebo vrcholnou zátěž lze otestovat pouze výkonnostními testy. Testy mohou být zaměřeny na provádění kritických operací, u nichž záleží na každé milisekundě a výkon těchto operací je pro úspěch projektu rozhodující.
Testování výkonu ukazuje chování a stabilitu systému při očekávané a zvýšené zátěži a sleduje se využití hardwarových prostředků. Tento typ testu se často provádí pomocí automatizovaného testovacího nástroje, který simuluje velký počet uživatelů. Provedení takového testu v prostředí podobném produkčnímu je v podstatě základem pro další optimalizaci výkonu řešení a vyhodnocení hardwarového nastavení.
Cíle testování výkonu:
- Měření doby odezvy a využití prostředků
- Definování možných hraničních bodů a maximální zátěže
- Shromáždění podkladů pro poskytnutí doporučení k optimalizaci
- Ověření, zda jsou splněny požadavky na úroveň služeb
- Ověření spolehlivosti systému
- Identifikace možných slabých míst systému
QA konzultace a test management
Existují různé metodiky a nástroje pro zajištění kvality (QA – quality assurance). Ty, které se používají v daném projektu vývoje softwaru, nemusí být vždy optimální. Vyhodnocení uplatňovaných postupů a nástrojů proto může odhalit slabá místa ve vývoji softwaru, navrhnout opatření ke zmírnění rizik a zlepšit efektivitu zajištění kvality. Nastavení vhodných procesů v novém projektu také umožňuje udržet vysokou kvalitu produktu a může ušetřit úsilí v pozdějších fázích projektu - obvykle při akceptačním testování a uvedení do provozu.
Cíle konzultace:
- Posouzení vyspělosti testování klienta ve srovnání s nejlepšími postupy (best practice)
- Identifikace doporučených podnětů potřebných k dosažení požadovaného stavu
- Podrobný plán na podporu realizace transformačních podnětů
Úvodní posouzení testování poskytuje rychlý přehled, který lze využít jako základ pro poradenství a transformační iniciativy.
Test management kombinuje řízení projektů a rizik rozšířené o metodiku testování podle osvědčených postupů. Jedná se o klíčový faktor k úspěchu pro
- strukturování a zabezpečení procesu testování
- optimalizování produktivity a efektivity testovacích aktivit
- zajištění, aby testování bylo v souladu s obchodními požadavky
Náš certifikovaný test management tým řídí celý životní cyklus testování. Ten zahrnuje plánování testů a řízení operativních testovacích činností až po organizované ukončení testování.