Hlavní menu

Nástroje

SlovnikTerminologie / TestySelenium

View (print) - Edit page | Recent changes - Page history

Updated 23 May 2014, 11:02 by Jan Rada

Následující text a některé obrázky jsou výtahem z mé diplomové práce ("Nástroje pro podporu testování", Jan Rada, 2014).


Selenium

Selenium je sada nástrojů určených primárně k automatizovanému testování webových aplikací. (Dovoluje však i jiné způsoby užití – například k automatizaci rutinních úkonů prováděných prostřednictvím webového rozhraní nějakého systému.) Pomocí Selenium lze dokonale simulovat chování uživatele, jeho interakci s webovou aplikací ("proklikávání") a testovat tak její funkcionalitu.

Selenium IDE

Selenium IDE je jedním z nástrojů sady Selenium. Je distribuováno ve formě doplňku do internetového prohlížeče Firefox. Nástroj je cílen zejména na skupinu uživatelů bez programátorských znalostí a zkušeností, kterým i tak dovoluje vytvářet poměrně komplexní testy. Jeho předností je grafické uživatelské rozhraní umožňující vytvářet testy prostřednictvím záznamu uživatelem prováděných akcí. Takto zaznamenané posloupnosti akcí lze dále editovat nebo rovnou beze změn spouštět. (Pro potřeby testování je nezbytné doplnit přinejmenším kroky provádějící ověřovací příkazy - assert/verify.)

Selenium IDE velmi dobře poslouží i zkušenějším uživatelům (programátorům) při seznamování s produktem Selenium. Tito uživatelé ale budou postupně narážet na různá omezení. Omezením je například absence řídících struktur použitelných v testech. Limitující může být také spuštění testů výhradně v internetovém prohlížeči Firefox. Pokročilejší způsoby použití Selenium testů jsou popsány níže.

Selenium IDE

Instalace:

Selenium IDE se do prohlížeče Firefox nainstaluje přes odkaz umístěný přímo na stránkách produktu. Instalaci doplňku je nutné potvrdit. Nainstalovaný doplněk je poté spustitelný skrze nabídku "Firefox" -> "Vývoj webu". Další možností, jak nástroj rychle spouštět, je instalace doplňku Selenium IDE Button. Pro Selenium IDE existuje velké množství dalších rozšíření (např. File Logging (Selenium IDE) umožňující zápis výsledků testů do logovacího souboru).

Shrnutí vlastností:

  • rychlá tvorba testů díky možnosti záznamu uživatelem prováděných úkonů
  • možnost spouštění testů (sad testů) přímo přes plugin
  • možnost exportu vytvořených testů do podoby zdrojového kódu (využití viz níže)
  • omezené možnosti testování (absence řídících struktur, pouze internetový prohlížeč Firefox)

Selenium RC

Nástroj Selenium RC (někdy též označován jako Selenium 1) je oproti Selenium IDE určen pokročilejším uživatelům a jeho použití vyžaduje alespoň elementární programátorské znalosti. Základem je tzv. Remote Control Server. Jedná se o program napsaný v programovacím jazyku Java, který musí být spuštěn před vykonáváním testů. RC Server zajišťuje vytvoření okna prohlížeče, interpretuje a spouští Selenium příkazy (tzv. „Selenese“) a figuruje jako prostředník mezi internetovým prohlížečem a testovanou aplikací. Druhou část Selenium RC tvoří RC Client, což je knihovna poskytující rozhraní mezi použitým programovacím jazykem (ve kterém jsou s použitím knihovny testy napsány) a RC Serverem. Zjednodušené schéma je na obrázku.

Selenium RC - zjednodušené schéma

Hlavní výhodou pro zkušené programátory je možnost psát scénáře testů přímo v oblíbeném programovacím jazyce (což je obvykle rychlejší než záznam a editace kroků v Selenium IDE). Díky tomu lze testy obohatit o libovolnou logiku realizovanou standardními konstrukcemi daného programovacího jazyka včetně řídících struktur nebo o použití dalších knihoven.

Selenium RC je na oficiálních stránkách označeno jako „deprecated“ (zastaralé) a ačkoli je do jisté míry stále podporováno, tak není příliš vhodné jej používat. Důvodem je zejména horší kompatibilita s novějšími verzemi internetových prohlížečů a nestabilní chování testů.

Selenium WebDriver

Selenium WebDriver je plnohodnotnou náhradou za starší Selenium RC. Nástroj je díky jednotnému rozhraní WebDriver, podporovaného internetovými prohlížeči, možné používat bez spuštění jakékoli aplikace serveru (viz obrázek). Využití pokročilejších funkcí (například spuštění testů na jiném stroji), ale běžící instanci serveru nadále vyžaduje. Použití Selenium WebDriver je na úrovni zdrojového kódu velmi podobné Selenium RC. Přináší ale rozšíření některých možností a celkově je uživatelsky přívětivější.

Selenium WebDriver - zjednodušené schéma

Poznámka: V některých zdrojích je jako ekvivalentní označení pro Selenium WebDriver uváděno Selenium 2. Přesněji je ale Selenium 2 souhrnný název balíku, který zahrnuje starší Selenium RC (Selenium 1) i novější Selenium WebDriver.

Selenium Grid

Selenium Grid je posledním zástupcem z množiny Selenium nástrojů. Používá se k paralelnímu běhu testů. Umožňuje také současné testování na několika různých platformách. Díky distribuci testů mezi více strojů se zkracuje doba potřebná k jejich vykonání.

Selenium 2 + JUnit

K použití Selenium testů v praxi je velmi výhodná integrace s dalšími testovacími frameworky. Na platformě Java je vhodným frameworkem například JUnit. Podoba výsledných testů se od klasických JUnit testů příliš neliší. V testových metodách se využívají standardní assert metody z knihovny JUnit, ale ve zbytku těla testu jsou používány metody a objekty Selenium knihovny doplněné o libovolný Java kód. V testech je rovněž možné využívat funkcionalitu poskytovanou dalšími knihovnami.

Spuštění testů je díky frameworku JUnit velmi jednoduché. Provádí se například přímo v použitém vývojovém prostředí nebo lze testy spouštět nástroji Maven či Ant.

Selenium 2 + TestNG

Integrace s testovacím frameworkem TestNG má stejné přínosy jako integrace s JUnit a použití je rovněž velmi podobné. Mimo jiné ale TestNG navíc nabízí možnost definice závislostí mezi testy. To je výhodné zejména při testování webových aplikací většího rozsahu. Pomocí závislostí lze eliminovat duplicitní kód testů a usnadnit lokalizaci chyb na základě výsledků testů.


Selenium testy SPOTu

Aktuální (květen 2014) Selenium testy SPOTu jsou vytvořeny s využitím testovacího frameworku TestNG a to zejména kvůli definici závislostí mezi jednotlivými testy.

Spuštění testů - Eclipse IDE (STS)

Vytvořené testy lze pohodlně spouštět přímo z vývojového prostředí Eclipse (popř. STS). Spuštění se provádí pomocí doplňku "TestNG for Eclipse", který je dostupný v "Eclipse Marketplace".

Instalace doplňku do Eclipse: "Help" -> "Eclipse Marketplace...", vyhledat doplněk podle názvu, "Install"

Spuštění testů: pravé tlačítko myši na konkrétní třídě TestCase nebo na XML souboru TestSuite, "Run As" -> "TestNG Test" (popř. "TestNG Suite")

Podmínky úspěšného spuštění testů:

  • Před spuštěním testů musí být manuálně spuštěna testovaná webová aplikace (například přes plugin "Eclipse Jetty 3.7.0" využívající kontejner Jetty)
  • Předem spuštěná testovaná aplikace musí být přístupná přes URI http://localhost:8080/spot/ (je vhodné mít projekt pojmenován "spot") nebo musí být adresa upravena ve třídě AbstractAnonymUserTest.java
  • Musí být spuštěna databáze, kterou aplikace používá
  • V databázi musí být záznamy potřebné pro testování (uživatelé, slova,...) - tyto záznamy je možné do DB nahrát pomocí skriptu sql/SeleniumTestingData/testing_data.sql
  • Na PC musí být nainstalován internetový prohlížeč Firefox (případně musí být vhodným způsobem upraveno vytváření instance WebDriveru ve třídě AbstractAnonymUserTest.java)

Spuštění testů - Maven

Testy je také možné spouštět prostřednictvím nástroje Maven. Spuštění se provádí příkazem:

  • $ mvn verify

Při tomto příkazu se nejprve automaticky sestaví webová aplikace. Dále se sestavená webová aplikace spustí s využitím kontejneru Jetty (maven-jetty-plugin) a na závěr dojde k samotnému vykonání testů.

Spuštění testů a generování logu s průběhem testů zajišťuje maven-failsafe-plugin. Průběh testování je zaznamenáván do xml soubrů v adresáři ${basedir}/target/failsafe-reports.

V pom.xml je možné určit, jaké testy (sady testů) mají být při zadání příkazu mvn verify spouštěny a jaké ignorovány (include/exclude).

Podmínky úspěšného spuštění testů:

  • Musí být spuštěna databáze, kterou aplikace používá
  • V databázi musí být záznamy potřebné pro testování (uživatelé, slova,...) - tyto záznamy je možné do DB nahrát pomocí skriptu sql/SeleniumTestingData/testing_data.sql
  • Na PC musí být nainstalován internetový prohlížeč Firefox (případně musí být vhodným způsobem upraveno vytváření instance WebDriveru ve třídě AbstractAnonymUserTest.java)

Údržba testů

Díky definici závislostí mezi testy jsou v případě selhání některého z testů všechny závislé testy přeskočeny ("skipped") - tzn. nejsou vykonány. To znatelně usnadňuje identifikaci problémového testu. Pokud některý z testů i při opakovaném spuštění selže a jsou dodrženy "Podmínky úspěšného spuštění testů" (viz výše), je nezbytné odhalenou chybu vložit do Flyspray nebo ji případně ihned opravit. Pokud k selhání testu dochází z důvodu změny aplikace, je nezbytné test opravit tak, aby odpovídal aktuální podobě aplikace. Testy je vhodné dále rozšiřovat - zejména pokud je do aplikace přidána nová funkcionalita nebo je odhalena chyba, která není stávajícími testy zachycena. Testy musí být vždy vytvořeny tak, aby byly opakovatelné - tzn. pokud v rámci testu dochází k vytvoření záznamu v DB, měl by být tento záznam po vykonání testu odstraněn.


Odkazy:


Addony pro vývoj webových aplikací