Pokud se pohybujete ve světě vývoje softwaru, jistě víte, že testování je klíčovou a neustálou součástí celého procesu. Právě testování nám totiž zaručuje, že finální produkt bude odpovídat cílům, které jsme si stanovili na počátku.
Přestože testování je možné provádět jak manuálně, tak automaticky, automatizované testování si získává stále větší oblibu. Je tomu tak zejména díky jeho rychlosti a schopnosti snižovat náklady na pracovní sílu.
Ačkoli na trhu existuje celá řada nástrojů a frameworků pro automatizované testování, mezi ty nejoblíbenější patří Cypress a Selenium. Pojďme se tedy podívat na specifické vlastnosti obou těchto frameworků a porovnat Cypress vs. Selenium, abychom zjistili, kdy je vhodné který z nich použít.
Co je Cypress?
Po mnoha hodinách strávených vývojem softwaru je pochopitelné, že se můžete cítit vyčerpaní při představě testování produktu, který jste vytvořili. V takovém případě přichází na pomoc Cypress!
Cypress je primárně napsaný v JavaScriptu a umožňuje vám vytvářet automatizované testy pro softwarové produkty. Tento framework, zaměřený na front-end, je speciálně navržen pro moderní webové aplikace a specializuje se na testování aplikací postavených na technologiích jako React, Angular a Vue.js.
Zatímco mnoho automatizačních nástrojů na trhu využívá Selenium v backendu pro psaní testů, Cypress je zcela nezávislý nástroj, který se při vytváření testů na jiné nástroje nespoléhá.
Ačkoli se pro vytváření testů v Cypress používá JavaScript, nemusíte být nutně experti na JavaScript nebo kódování. Pro testování pomocí Cypressu postačí základní znalosti.
Cypress podporuje následující typy testování:
- End-to-end testy.
- Testy komponent.
- Jednotkové testy.
- Integrační testy.
Na rozdíl od mnoha jiných testovacích frameworků, Cypress nepředává příkazy do prohlížečů pro účely testování. Samotný Cypress je prohlížeč, který spouští vaše testy.
Co je Selenium?
Selenium je velmi populární automatizovaný end-to-end testovací nástroj, který vám umožňuje vytvářet testy v libovolném z hlavních programovacích jazyků.
Tento framework vám umožňuje testovat webové aplikace v různých prohlížečích, včetně Chrome, Firefox, Safari a Internet Explorer, abyste si mohli být jisti, že aplikace je před uvedením do produkce bez chyb. Selenium podporuje různé druhy testování včetně:
Selenium jako celek je nástroj, který se skládá z Selenium IDE, Selenium WebDriver a Selenium Grid. Každý z nich má své specifické přednosti.
Selenium IDE
Jedná se o snadno použitelné IDE, které nevyžaduje žádnou instalaci, abyste s ním mohli začít pracovat. Stačí integrovat IDE do prohlížeče Firefox a začít psát testy.
Tento nástroj zaznamenává vaše interakce s aplikací a prohlížečem a vytváří automatické skripty pro testování. Tyto skripty můžete exportovat do vámi preferovaného programovacího jazyka.
Přestože Selenium IDE nabízí celou řadu funkcí, z důvodu určitých omezení nepodporuje plnohodnotné testování.
Selenium WebDriver
Na rozdíl od Selenium IDE podporuje WebDriver celou řadu prohlížečů, včetně Chrome, Safari, Edge a mnoha dalších.
Po vytvoření testovacích skriptů v programovacím rozhraní WebDriveru se dostanete do specifické instance vámi preferovaného webového prohlížeče, což vám umožní začít testovat funkčnost aplikace.
Selenium Grid
Jedná se o nástroj pro paralelní testování, který umožňuje spouštět testy na více počítačích najednou. Vychází z architektury propojených uzlů, což znamená, že můžete sledovat všechny testy prováděné na uzlech (podřízených systémech) z centrálního systému, který se označuje jako rozbočovač.
Z výše uvedeného grafu je vidět, jak konkurenceschopné jsou oba nástroje.
Vizualizace znázorňuje objem stažení za rok. Je zřejmé, že Cypress si v posledních letech získává velkou oblibu.
Vlastnosti nebo výhody Cypressu:
- Jednoduchá instalace: Pro práci s Cypressem nepotřebujete žádné externí knihovny ani závislosti. Vzhledem k tomu, že Cypress je kódován v JavaScriptu, můžete si ho snadno stáhnout pomocí příkazového řádku a příkazu „npm install cypress“.
- Rychlé spouštění: Jelikož samotný Cypress je prohlížeč, který spouští testy, je rychlejší než mnoho jiných testovacích frameworků.
- Automatické čekání: Díky funkci automatického čekání v Cypressu, která nevyžaduje ruční přidávání čekání do testů. Cypress automaticky čeká na příkazy a aserce.
- Moderní framework: Vzhledem k tomu, že se webové aplikace posouvají k rámcům SPA (Single Page Application), jako jsou Angular a React, je potřeba specifický framework pro jejich testování. Cypress je tedy nejlepší volbou pro testování front-end aplikací postavených na nejnovějších technologiích.
- Podrobná dokumentace: Komunita kolem Cypressu je velmi silná a nabízí komplexní oficiální dokumentaci.
- Srozumitelné chyby: Chybové hlášky v Cypressu jsou psány jednoduchým jazykem, který je snadno pochopitelný i pro netechnické uživatele. Navíc framework vizuálně zachycuje chyby, což vám pomůže snadno určit, kde se v aplikaci vyskytl problém. Díky tomu je ladění snadnější a rychlejší.
Vlastnosti nebo výhody Selenia:
- Podpora více webových prohlížečů: Přestože Selenium samo o sobě není prohlížeč, umí otestovat funkčnost aplikace v různých webových prohlížečích, jako je Safari, Opera, Chrome a Edge.
- Podpora více zařízení: Tento framework není omezen pouze na testování webových aplikací, ale umí také testovat mobilní aplikace pro Android a iOS.
- Podpora komunity: Selenium není žádná novinka, existuje již od roku 2004. Jeho velkou výhodou je, že je open-source, což přitahuje vývojáře, testery a profesionály z celého světa a vytváří tak silnou komunitu.
- Možnosti integrace: Selenium lze snadno integrovat s celou řadou dalších nástrojů a frameworků, jako jsou Maven, Docker, JUnit a mnohé další.
- Paralelní testování: S pomocí Selenium Grid můžete spouštět více testů na více počítačích současně.
- Přenositelnost: Selenium funguje téměř na všech hlavních operačních systémech a podporuje různé programovací jazyky.
- Sada nástrojů: Selenium je sada nástrojů, které jsou dostupné pro všechny úrovně vývojářů. Například Selenium IDE je tak jednoduché, že s ním dokáže pracovat i netechnický uživatel, zatímco Selenium WebDriver umožňuje vytvářet přizpůsobené testy pro komplexní aplikace.
Cypress vs. Selenium: Klíčové srovnání
Funkce | Cypress | Selenium |
Primární případ použití | Testování na frontendu | Komplexní testování na konci |
Podporované jazyky | Přestože má Cypress zásuvné moduly pro podporu více programovacích jazyků, k psaní testů využívá primárně JavaScript nebo TypeScript. | Výchozí podpora pro různé hlavní programovací jazyky jako Python, Java, C# atd. |
Instalace/Setup | Jelikož je Cypress postaven na Node.js, přichází jako balíček, který lze jednoduše stáhnout pomocí příkazu npm install cypress. | Časově náročnější, protože vyžaduje stažení a konfiguraci jak samotného Selenia, tak i ovladačů. |
Podporované prohlížeče | Cypress v současnosti podporuje pouze prohlížeče založené na Chrome, Edge a Firefoxu. | Lze otestovat kompatibilitu se všemi hlavními webovými prohlížeči, včetně Firefoxu, Chrome, Safari a Edge. |
Rychlost | Vzhledem k tomu, že Cypress běží přímo v prohlížeči, je mnohem rychlejší. | Selenium obecně nabízí vysokou rychlost, ale nemůže konkurovat Cypressu. |
Komunita | Cypress má relativně menší komunitu, která však rychle roste. | Selenium má silnou podporu komunity. |
Integrace | Cypress má omezené možnosti integrace. | Selenium lze bez problémů integrovat do mnoha nástrojů a platforem. |
Testování mobilních zařízení | Nelze provádět testování mobilních aplikací. | Ano, s pomocí Appium WebDriver API. |
Licence | Open-source, což znamená, že je zdarma. | Open-source, dostupné zdarma. |
Omezení Cypressu
- Cypress v současnosti podporuje pouze prohlížeče založené na Firefoxu a Chromiu. Nenabízí podporu pro jiné prohlížeče, jako je Safari a Internet Explorer.
- Cypress testování neumožňuje spouštět testy na více kartách.
- Omezená podpora programovacích jazyků pro psaní testů.
- Pomocí Cypressu nemůžete testovat mobilní nebo desktopové aplikace.
- Nemá nativní podporu pro paralelní testování.
Omezení Selenia
- Nastavení a instalace Selenia je ve srovnání s Cypressem náročnější.
- Nepodporuje automatické čekání. K testům byste měli explicitně přidat čekání.
- Je poměrně pomalý, protože neběží přímo v prohlížeči, místo toho odesílá vzdálené příkazy pro ovládání prohlížeče.
- Nemá výchozí podporu pro testování obrázků.
- Pro vytváření testů v Seleniu byste měli mít základní technické znalosti.
Závěrečné myšlenky
Nyní již známe klíčová srovnání mezi Cypress vs. Selenium. Oba tyto nástroje jsou velmi konkurenceschopné ve světě automatizovaného testování.
Ať už si vyberete kterýkoli z těchto frameworků, nejdůležitější je, jak si daná aplikace vede v různých prohlížečích a na různých zařízeních. Funkce, omezení a srovnání Cypress vs. Selenium, které jste si mohli přečíst v tomto článku, by vám měly pomoci určit, který z nich nejlépe odpovídá požadavkům vašeho projektu.
Pokud je vaše testovaná aplikace zaměřena na front-end nebo využívá moderní frameworky, jako je React nebo Angular, měli byste se rozhodnout pro Cypress. Pokud chcete testerům ulehčit práci, použijte Cypress, protože je jednoduchý a nevyžaduje žádné hluboké znalosti programování.
Na druhou stranu, pro rozsáhlé a komplexní testování je vhodnější použít Selenium.
Můžete se také podívat na nejčastější otázky a odpovědi v rámci pohovorů o Seleniu.