Selenium je komplexní sadou nástrojů pro automatizované testování webových aplikací. Tento Framework umožňuje tvorbu a spouštění skriptů, které popisují chování virtuálního uživatele na webu a kontroly ověřující, že se testovaný web chová podle očekávání. Tento článek obsahuje popis rolí jednotlivých komponent framworku v procesu testování.

Selenium IDE

Selenium IDE add-on do Firefoxu umožňující interaktivní tvorbu testovacích skriptů bez psaní jakéhokoliv kódu.

Add-on si můžete stáhnout z webu aplikace. Na portálu Forefox Add-ons si navíc můžete stáhnout některé rozšiřující funkce – doporučuji především Selenium IDE Button, který vám umožní Selenium IDE otevřít přímo z hlavní lišty prohlížeče.

Selenium IDE

Selenium IDE

Tvorba základního testu je jednoduchá – stačí otevřít okno/sidebar Selenia, přejít na testovaný web, aktivovat záznam (červené kolečko) a pak v okně prohlížeče provést sekvenci kroků, která se má zaznamenat do skriptu.

Tyto kroky mohou být běžné akce prováděné uživatelem (kliknutí na odkaz, vyplnění textového pole…) nebo speciální akce Selenia. K některým těmto akcím máte přístup z kontextového menu prohlížeče – například s označeným textem vám bude nabídnut příkaz „verifyTextPresent“, který do testu přidá kontrolu, jestli je někde na stránce vámi vyznačený text. Další příkazy použitelné v daném kontextu jsou v kontextovém menu „Show all available commands“. Zadané akce se postupně přidávají do okna Selenia, odkud je můžete také mazat a ručně vkládat nebo upravovat. Tlačítka se šipkami umožňují test vyzkoušet.

Popis všech použitelných příkazů najdete v referenční příručce.

Test můžete uložit na disk dvěma způsoby:

  1. „Save test case as…“ – toto uloží test ve formátu “Selenese“, nativním formátu Selenia. Tento formát vám umožní test přímo (i ručně) spustit pomocí RC. Navíc, skripty uložené v tomto formátu lze znovu otevřít v IDE a upravit je. Tento formát je poměrně omezený, protože v něm není možně dělat pokročilejší konstrukce, jako jsou cykly a komplexní podmínky.
  2. „Export test case as…“ – uloží skript jako kód v nějakém programovacím jazyce využívající nějaký konkrétní driver. Tento kód je pak možné ručně upravovat (či psát zcela ručně) a využívat při tom všech možností daného programovacího jazyka.

Pokud potřebujete testy exportovat, tak je i přes to obvykle žádoucí je paralelně ukládat v Selenese formátu, aby bylo později možné testy jednoduše editovat.

Selenium RC

Selenium RC je komponenta zajišťující spouštění a vyhodnocování testových skriptů.

Když má RC spustit skript, tak na počítači kde běží (nezáleží na operačním systému, aplikace je napsána v Javě) otevře novou instanci požadovaného webového prohlížeče. V tomto prohlížeči pak otevře webovou aplikaci poskytovanou již zmíněným http serverem a ve frame (nebo okně, podle nastavení) pak zobrazí testovaný web. Na tomto framu jsou pak pomocí JavaScriptu vyvolávány příkazy z testovacího skriptu.

Toto má jednu nepříjemnou implikaci – to co není se stránkou schopen udělat JavaScript s ní není schopno udělat ani Selenium. Například tak za běžných podmínek tak například není možno testovat upload souborů pomocí HTML formulářů, protože do políčka typu „file“ JavaScript z bezpečnostních důvodů nesmí zapisovat. Naštěstí FireFox lze spustit ve speciálním režimu, kdy je mimo jiné i tato ochrana vypnuta (stačí Seleniu říct, že má spustit „*chrome” místo „*firefox“, neplést s „*googlechrome“).

Testy lze spouštět dvěma základními způsoby:

  1. Přímo z příkazové řádky – zde je cesta k Selenese skriptu předána jako parametr příkazové řádky. Po vyhodnocení testu je na zadanou cestu zapsán report a aplikace je ukončena.
  2. RC běží jako HTTP trvale spuštěný server a klientské aplikace s ním komunikují pomocí HTTP požadavků. K tomuto budete potřebovat nějaký klientský driver (nebo aplikaci, která ho využívá, viz dále). První požadavek je vždy na vytvoření nového okna prohlížeče. Tento požadavek v odpovědi vrátí session ID. Tímto ID se pak identifikují další příkazy směřované na tento prohlížeč.

Na jednom stroji může běžet několik Selenium RC v serverovém režimu současně, každý ale pochopitelně musí naslouchat na jiném portu.  Podle našich zkušeností je na jednom Windows 7 virtuálním stroji s 512 MB RAM možno stabilně provozovat až 3 RC.

 

Selenium RC

Virtuální stroj se 3 RC a jedním probíhajícím testem

Selenium Grid

Selenoum Grid je nástroj, který umožňuje zapouzdřit a automaticky spravovat a vyvolávat mnoho samostatných RC.

Pomocí Gridu lze spustit další aplikaci fungující jako samostatný HTTP server – tzv. „hub“. Tento hub se navenek tváří jako jedna RC (a požadavky na testy tedy přijímá stejným způsobem pomocí HTTP požadavků). Je ale zároveň schopen zpracovávat mnoho požadavků na testy (RC zvládne pouze jeden) a distribuovat je mezi členské RC.

Tato komponenta není povinná – k jednotlivým RC lze přistupovat samostatně, ale je pak třeba řešit služby, které jinak poskytuje hub – tedy především evidenci členských RC, load balancing a řazení požadavků do fronty, jsou-li všechny RC plně vytížené.

Seznam všech volných i vytížených členských RC je vystaven pomocí webového rozhraní na adrese http://<ip-adresa-hubu>:<port-hubu>/console.

Stavová konzole Selenium Grid

Stavová konzole Selenium Grid

Hub může běžet na stejném stroji jako jeden čí více RC, každý ale samozřejmě musí běžet na jiném portu.

Klientské drivery a aplikace

Z pohledu Selenia je klientská aplikace komponenta, která vyhodnocuje test skript v nějakém svém formátu (typicky exportovaný ze Selenium IDE) a RC nebo hubu posílá pomocí HTTP požadavků jednotlivé kroky testu (a v odpovědi dostává jejich výsledek, který pak nějakým způsobem vyhodnocuje).

K tomu daná aplikace potřebuje Selenium driver – malou knihovnu, která zapouzdřuje požadavky na RC do volání běžných metod v daném jazyce.  Samotný testový skript pak v takovém případě je pouze sekvence volání těchto metod. Na stránce frameworku naleznete drivery pro různé programovací jazyky.

Ukázka jednoduchého testu pomocí PHP driveru:

Nad tímto driverem je pak možno postavit vlastní aplikaci, která spravuje testy a plánuje jejich spouštění. Existují také již hotová řešení, která toto zajistí za vás:

  • Bromine – Aplikace specializovaná na provoz Selenium testů napsaná v PHP. Tato aplikace je zdarma a open-source. Testy jsou ve speciálním Bromine PHP formátu (exportovací kód pro Selenium IDE je dodán spolu s aplikací).
  • Selenium plug-in pro Jenkins – Plug-in zajišťující plnohodnotnou integraci Selenium testů do populárního CI nástroje Jenkins. Plug-in i Jenkins jsou zdarma a open-source. Testy jsou ve formátu Java.
Bromine

Bromine s běžícím ručně spuštěným testem

Tagged with:
 

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *