Selenium je nástrojem, který se používá na tvorbu automatických testů webových aplikací, který se skládá z několika komponent, které se navzájem doplňují. Tyto komponenty jsou Selenium IDE, Selenium RC, Selenium WebDriver a Selenium Grid. Byl vyvinut v programovacím jazyce Java a je možné jej použít na testování různých programovacích jazyků, včetně C#, Groovy, Java, Perl, PHP, Python, Ruby nebo Scala.

Testy mohou být spouštěny na většině moderních prohlížečů. Selenium je možné deployovat na Windows, Linuxu i MacOS platformách. Jedná se o open-source software, který je uvolněn pod Apache 2.0 licencí, weboví vývojáři si jej tak mohou stáhnout a používat, aniž by museli platit.

Selenium původně vyvinul Jason Huggins v roce 2004 jako interní nástroj ve firmě ThoughtWorks. Následně se k vývoji přidali další a začali pracovat na Selenium Remote Control, tedy RC. Postupně se začal projekt větvit a došlo na jeho současnou podobu.

Komponenty

Selenium se skládá z několika komponent, z nichž každá má svojí specifickou roli ve vývoji automatizovaných testů pro webové aplikace.

Selenium IDE

Selenium IDE je kompletní integrované vývojové prostředí pro testy. Jedná se o add-on do prohlížeče Firefox a nedávno byl přidán i do Chrome Store. Umožňuje nahrávání, editaci a opravy testů v jazyce Selenese. Původně existovalo pod názvem Selenium Recorder. Skripty lze pomocí IDE automaticky nahrávat a manuálně editovat s podporou automatického doplnění a možností rychle jednotlivé části přesouvat.

Selenium klient API

Jako alternativu k psaní testů v Selenese je možné psát testy v různých konvenčních programovacích jazycích. Tyto testy pak komunikují se Seleniem za pomoci volaní metod v Selenium Klient API. Selenium má v současnosti dostupná API pro jazyky Java, C#, Ruby, JavaScript a Python. S novou verzí Selenia byla představena nová varianta klientského API, ale původní API je stále podporováno.

Selenium WebDriver

Selenium WebDriver je následníkem Selenium RC. Akceptuje příkazy zaslané v Selenese nebo skrze klientské API a posílá je do prohlížeče. To je implementováno skrze drivery určené pro konkrétní prohlížeče, které zasílají příkazy prohlížeči a následně získávají výsledky.

Selenium Remote Control

Selenium Remote Control je server, který je psaný v Javě a přijímá příkazy prohlížeče skrze http. RC umožňuje psaní automatizovaných testů pro webové aplikace v libovolném programovacím jazyce, což umožňuje snadnější integraci Selenia do existujících frameworků pro jednotkové testy. Drivery jsou dostupné pro následující programovací jazyky: PHP, Python, Ruby, .NET, Perl a Java.

Selenium Grid

Selenium Grid je server, který umožňuje testům, aby používaly instance prohlížeče, které běží na vzdálených strojích. Jeden server tak funguje jako hub. Testy kontaktují hub, aby získaly přístup k instancím webových prohlížečů. Hub má seznam serverů, které zpřístupňují instance prohlížeče, a umožňuje testům tyto instance používat. Umožňuje zároveň spuštění testů paralelně na více strojích a zároveň centrálně spravovat různé verze prohlížečů a jejich konfigurací.

To usnadňuje rozdělení zátěže mezi různé stroje a zároveň umožňuje spouštět testy, které běží na různých platformách nebo operačních systémech.

Výhody použití Selenia

  • Pořizovací náklady. Se zavedením Selenia se nepojí žádné přímé náklady.
  • Podpora různých prohlížečů. Testy je možné spouštět na více prohlížečích.
  • Podpora různých programovacích jazyků. Selenium má vlastní programovací jazyk Selenese, ale testy je možné psát i v C#, Javě, JavaScriptu, PHP, Pythonu nebo dalších jazycích.
  • Různé způsoby tvorby testů. Seleniové skripty je možné nahrávat z webového prohlížeče i vytvářet manuálně, případně oba přístupy kombinovat.
  • Propojení s dalšími nástroji. Selenium se neváže na konkrétní reportovací nástroj nebo další aspekti testovacího frameworku. Je integrované s různými populárními nástroji, jako je Hudson, SauceLabs nebo QMetry.

Nevýhody použití Selenia

  • Nejedná se o komplexní řešení. Pro plně efektivní automatizaci potřebuje frameworky třetích stran a další nástroje.
  • Vyžaduje znalosti programování. Na rozdíl od některých jiných komerčních nástrojů vyžaduje obsáhlé technické znalosti od členů testovacího týmu.
  • Absence správy testů. Selenium neobsahuje žádné nástroje na správu testů, testovací skripty jsou ukládané jako jednoduché soubory bez atributů. Organizace jednotlivých skriptů vyžaduje použití externích nástrojů.
  • Obtížná editace nativních skriptů. Skripty psané v Selenese nejsou příliš intuitivní z hlediska čitelnosti a je tedy relativně obtížné je editovat.
  • Paralelní zpracování. Testy nelze spouštět paralelně za použití jediného stroje.