Selen (oprogramowanie) - Selenium (software)
| Wersja stabilna | 3.141.59 / 19 listopada 2018
|
|---|---|
| Magazyn | |
| Napisane w | Serwer Selenium: Java ; Selenium WebDriver (działa bez Selenium Server), oficjalne wsparcie: JavaScript ( Node.js ), Python , Ruby , Java lub C# |
| System operacyjny | Wieloplatformowy |
| Rodzaj | Framework do testowania oprogramowania dla aplikacji internetowych |
| Licencja | Licencja Apache 2.0 |
| Strona internetowa |
selen |
Selenium to zautomatyzowana platforma testowa typu open source dla aplikacji internetowych . Selenium zapewnia narzędzie odtwarzania do tworzenia testów funkcjonalnych bez konieczności uczenia się testowego języka skryptowego (Selenium IDE). Zapewnia również język testowy specyficzny dla domeny (Selenese) do pisania testów w wielu popularnych językach programowania, w tym JavaScript ( Node.js ), C# , Groovy , Java , Perl , PHP , Python , Ruby i Scala . Testy można następnie uruchomić w większości nowoczesnych przeglądarek internetowych . Selenium działa w systemach Windows , Linux i macOS . Jest to oprogramowanie typu open source wydane na licencji Apache License 2.0 .
Historia
Selenium został pierwotnie opracowany przez Jasona Hugginsa w 2004 roku jako wewnętrzne narzędzie w ThoughtWorks . Do Hugginsa dołączyli później inni programiści i testerzy z ThoughtWorks, zanim Paul Hammant dołączył do zespołu i pokierował rozwojem drugiego trybu działania, który później stał się „Selenium Remote Control” (RC). W tym roku narzędzie było open source.
W 2005 roku Dan Fabulich i Nelson Sproul (z pomocą Pata Lightbody) złożyli ofertę przyjęcia serii łatek, które przekształciłyby Selenium-RC w to, z czego stał się najbardziej znany. Na tym samym spotkaniu kierowanie projektem Selenium będzie kontynuowane jako komitet, a Huggins i Hammant będą przedstawicielami ThoughtWorks.
W 2007 roku Huggins dołączył do Google. Wraz z innymi, takimi jak Jennifer Bevan, kontynuował rozwój i stabilizację Selenium RC. W tym samym czasie Simon Stewart z ThoughtWorks opracował doskonałe narzędzie do automatyzacji przeglądarki o nazwie WebDriver. W 2009 roku, po spotkaniu programistów na Google Test Automation Conference, zdecydowano o połączeniu obu projektów i nazwaniu nowego projektu Selenium WebDriver, czyli Selenium 2.0.
W 2008 roku Philippe Hanrigou (wtedy w ThoughtWorks) stworzył „Selenium Grid”, który stanowi centrum umożliwiające jednoczesne uruchamianie wielu testów Selenium na dowolnej liczbie lokalnych lub zdalnych systemów, minimalizując w ten sposób czas wykonywania testów. Grid oferował, jako open source, podobne możliwości do wewnętrznej/prywatnej chmury Google dla Selenium RC. Pat Lightbody stworzył już prywatną chmurę dla „HostedQA”, którą następnie sprzedał firmie Gomez, Inc.
Nazwa Selenium pochodzi od żartu Hugginsa w e-mailu, kpiącego z konkurenta o imieniu Mercury , mówiącego, że zatrucie rtęcią można wyleczyć, przyjmując suplementy selenowe. Inni, którzy otrzymali e-mail, wzięli nazwę i pobiegli z nią.
składniki
Selenium składa się z kilku komponentów, z których każdy pełni określoną rolę we wspomaganiu rozwoju automatyzacji testów aplikacji internetowych .
Selen IDE
Selenium IDE to kompletne zintegrowane środowisko programistyczne (IDE) do testów Selenium. Jest zaimplementowany jako dodatek do przeglądarki Firefox i jako rozszerzenie do przeglądarki Chrome . Pozwala na rejestrację, edycję i debugowanie testów funkcjonalnych. Wcześniej był znany jako Selenium Recorder. Selenium-IDE zostało pierwotnie stworzone przez Shinya Kasatani i przekazane projektowi Selenium w 2006 roku. Selenium IDE było wcześniej mało utrzymywane. Selenium IDE zaczęło być aktywnie utrzymywane w 2018 roku.
Skrypty mogą być automatycznie rejestrowane i edytowane ręcznie, zapewniając obsługę autouzupełniania i możliwość szybkiego przenoszenia poleceń. Skrypty są nagrywane w Selenese , specjalnym testowym języku skryptowym dla Selenium. Selenese udostępnia polecenia do wykonywania akcji w przeglądarce (kliknij łącze, wybierz opcję) oraz do pobierania danych z wynikowych stron.
Wersja 2.x Selenium IDE dla Firefoksa przestała działać po aktualizacji Firefoksa 55 i została zastąpiona przez Selenium IDE 3.x.
Oprócz oficjalnego projektu Selenium IDE, aktywnie utrzymywane są dwa alternatywne rozszerzenia przeglądarki Selenium IDE: Kantu (licencja Open-Source GPL ) i Katalon Recorder ( Open-Source ).
API klienta Selenium
Jako alternatywę dla pisania testów w języku Selenese, testy mogą być również pisane w różnych językach programowania. Testy te następnie komunikują się z Selenium, wywołując metody w interfejsie API Selenium Client. Selenium obecnie dostarcza klienckie interfejsy API dla Java , C# , Ruby , JavaScript , R i Python .
Wraz z Selenium 2 wprowadzono nowy Client API (z WebDriver jako jego centralnym komponentem). Jednak stary interfejs API (używający klasy Selenium ) jest nadal obsługiwany.
Pilot zdalnego sterowania z selenem
Selenium Remote Control (RC) to serwer napisany w języku Java , który akceptuje polecenia przeglądarki za pośrednictwem protokołu HTTP . RC umożliwia pisanie automatycznych testów aplikacji webowych w dowolnym języku programowania, co pozwala na lepszą integrację Selenium z istniejącymi frameworkami testów jednostkowych. Aby ułatwić pisanie testów, projekt Selenium dostarcza obecnie sterowniki klienckie dla PHP , Python , Ruby , .NET , Perl i Java . Sterownik Java może być również używany z JavaScript (poprzez silnik Rhino ). Do uruchomienia testowego przypadku html potrzebna jest instancja serwera selen RC - co oznacza, że port powinien być inny dla każdego równoległego uruchomienia. Jednak dla przypadku testowego Java/PHP tylko jedna instancja Selenium RC musi być uruchomiona w sposób ciągły.
Selenium Remote Control to refaktoryzacja Driven Selenium lub Selenium B zaprojektowana przez Paula Hammanta, przypisywanego Jasonowi jako współtwórca Selenium. Oryginalna wersja bezpośrednio uruchamiała proces dla danej przeglądarki z testowego języka Java, .NET, Python lub Ruby. Protokół przewodowy (w swoim czasie nazywany „selenese”) został ponownie zaimplementowany w każdym porcie językowym. Po refaktoryzacji przez Dana Fabulicha i Nelsona Sproula (z pomocą Pata Lightbody) nastąpił pośredni proces demona między skryptem testu jazdy a przeglądarką. Korzyści obejmowały możliwość obsługi zdalnych przeglądarek i zmniejszoną potrzebę przenoszenia każdego wiersza kodu do coraz większej liczby języków. Selenium Remote Control całkowicie przejął linię kodową Driven Selenium w 2006 roku. Wzorzec przeglądarki dla 'Driven'/'B' i 'RC' to response/request, który później stał się znany jako Comet .
Selenium RC przez długi czas służył jako sztandarowa platforma testowa całego projektu selenu. Co ważne, Selenium RC jest pierwszym i najważniejszym zautomatyzowanym narzędziem do testowania stron internetowych, które umożliwiło użytkownikom przyjęcie preferowanego języka programowania.
Wraz z wydaniem Selenium 2, Selenium RC został oficjalnie wycofany na rzecz Selenium WebDriver.
Selenium WebDriver
Selenium WebDriver jest następcą Selenium RC. Selenium WebDriver akceptuje polecenia (wysyłane w języku Selenese lub przez Client API) i wysyła je do przeglądarki. Jest to realizowane za pomocą sterownika przeglądarki specyficznego dla przeglądarki, który wysyła polecenia do przeglądarki i pobiera wyniki. Większość sterowników przeglądarki faktycznie uruchamia i uzyskuje dostęp do aplikacji przeglądarki (takich jak Firefox , Google Chrome , Internet Explorer , Safari lub Microsoft Edge ); istnieje również sterownik przeglądarki HtmlUnit , który symuluje przeglądarkę za pomocą przeglądarki bezgłowej HtmlUnit.
W przeciwieństwie do Selenium 1, gdzie serwer Selenium był niezbędny do uruchamiania testów, Selenium WebDriver nie potrzebuje specjalnego serwera do wykonywania testów. Zamiast tego WebDriver bezpośrednio uruchamia instancję przeglądarki i kontroluje ją. Jednak Selenium Grid może być używany z WebDriver do wykonywania testów na zdalnych systemach (patrz poniżej). Tam, gdzie to możliwe, WebDriver wykorzystuje natywną funkcjonalność na poziomie systemu operacyjnego zamiast poleceń JavaScript opartych na przeglądarce, aby sterować przeglądarką. Pozwala to ominąć problemy z subtelnymi różnicami między poleceniami natywnymi i JavaScript, w tym ograniczeniami bezpieczeństwa.
W praktyce oznacza to, że API Selenium 2.0 ma znacznie mniej wywołań niż API Selenium 1.0. Tam, gdzie Selenium 1.0 próbował zapewnić bogaty interfejs dla wielu różnych operacji przeglądarki, Selenium 2.0 ma na celu dostarczenie podstawowego zestawu bloków konstrukcyjnych, z których programiści mogą tworzyć własny język specyficzny dla domeny (DSL). Jedna taka DSL już istnieje: projekt Watir w języku Ruby ma bogatą historię dobrego projektowania. Watir-webdriver implementuje API Watir jako opakowanie dla Selenium WebDriver w Ruby. Watir-webdriver jest tworzony całkowicie automatycznie, na podstawie specyfikacji WebDriver i specyfikacji HTML.
Na początku 2012 r. Simon Stewart (wynalazca WebDriver), który był wtedy z Google, i David Burns z Mozilli negocjowali z W3C, aby uczynić WebDriver standardem internetowym. W lipcu 2012 r. opublikowano wersję roboczą, a zalecenie wprowadzono w czerwcu 2018 r. Selenium WebDriver (Selenium 2.0) jest w pełni zaimplementowany i obsługiwany w JavaScript ( Node.js ), Python , Ruby , Java i C# . Od 2021 roku Selenium 4 jest kandydatem do wydania.
Siatka selenu
Selenium Grid to serwer, który umożliwia testowanie na instancjach przeglądarek internetowych uruchomionych na zdalnych maszynach. W przypadku Selenium Grid jeden serwer pełni rolę centralnego koncentratora. Testy kontaktują się z centrum, aby uzyskać dostęp do wystąpień przeglądarki. Centrum zawiera listę serwerów, które zapewniają dostęp do wystąpień przeglądarki (węzły WebDriver) i umożliwiają testom korzystanie z tych wystąpień. Selenium Grid umożliwia równoległe przeprowadzanie testów na wielu komputerach oraz centralne zarządzanie różnymi wersjami i konfiguracjami przeglądarek (zamiast w każdym indywidualnym teście).
Możliwość uruchamiania testów na zdalnych instancjach przeglądarek jest przydatna do rozłożenia obciążenia testami na kilka komputerów i uruchamiania testów w przeglądarkach działających na różnych platformach lub systemach operacyjnych. Ta ostatnia jest szczególnie przydatna w przypadkach, gdy nie wszystkie przeglądarki, które mają być używane do testowania, mogą działać na tej samej platformie.
Zobacz też
- Automatyzacja aplikacji Appium , mobilnych i desktopowych za pomocą WebDriver
- Testy akceptacyjne
- Kapibara (oprogramowanie)
- Dano-Kiedy-Wtedy
- Lista narzędzi do testowania stron internetowych
- MediaWiki Selen
- Testy regresji
- Rama robota