Selenium WebDriver VS Cypress

styczeń 30, 2021

Z pewnością Cypress miał mocne wejście w świat automatyzacji testów. Jednak od jego debiutu minęło już sporo czasu. Zamiast rozpychać się na rynku – Cypress widocznie mocno spuścił z tonu.
Nie oznacza to jednak, że przestał się rozwijać, gdyż cały czas rozwiązanie to dostaje kolejne poprawki i usprawnienia (chociażby ostatnio dodał możliwość korzystania z innych przeglądarek niż tylko Chrome). Cypress miał zdetronizować Selenium WebDriver, ale jak pokazuje rynek – na to lekko mówiąc się nie zanosi. Ileż to już razy słyszeliśmy, że stare poczciwe Selenium w końcu doczekało się godnego następcy… Jednak król nadal na tronie. A na horyzoncie przed Selenium WebDriver nieśmiało widać już premierę nowej wersji o numerze 4.
Moim zdaniem jednak Cypress wydaje się na tyle ciekawym narzędziem, z pewną dozą świeżego powiewu technologicznego, ze warto zestawić go i dokonać analizy z Selenium Webdriver. Zatem do dzieła.

Selenium WebDriver


Selenium to rozwiązanie służące do automatyzacji testów aplikacji webowych. Tak ja w przypadku Cypress – jest zupełnie darmowe, oparte na licencji open source. Był przez wiele lat i jest nadal niekwestionowanym liderem rynku narzędzi do automatyzacji testów aplikacji internetowych. Rozwiązanie to zapewnia nam współpracę ze wszystkim popularnymi przeglądarkami internetowymi- wykorzystując do tego celu ich natywne sterowniki (drivery) np. ChromeDriver (przeglądarka Chrome), czy GeckoDriver (przeglądarka FireFox). Warto podkreślić, że do pracy z Selenium Webdriver możemy korzystać z wielu popularnych języków programowania np. Java, C#, JavaScript, Python czy Ruby. Dla mnie jedną z największych zalet tego narzędzia jest też bardzo pokaźne internetowe Community (którego tak bardzo brakuje Cypressowi). Na szereg popularnych problemów można szybko i łatwo znaleźć odpowiedź w sieci.

Zalety


• Darmowe narzędzie (licencja open-source)
• Ogromne internetowe Community
• Kompatybilność z najpopularniejszymi systemami operacyjnymi (Windows, Linux, Max OS)
• Pełna obsługa wielu popularnych języków programowania
• Kompatybilność z najpopularniejszymi przeglądarkami internetowymi (Chrome, FireFox, Edge, Safari)
• Kompatybilność z wieloma szeroko stosowanymi narzędziami jak np. Maven, Jenkins, Docker
• Stosunkowo liczne grono specjalistów deklaruje chęć pracy w Selenium


Wady


• Brak wbudowanych mechanizmów raportowych
• Do pracy niezbędne są wysokie umiejętności programowania
• Czasochłonny proces tworzenia skryptów testowych

Cypress

Coraz częściej porównywany jest do Selenium, ale trzeba wiedzieć, że jest to zupełnie inne narzędzie pod kątem architektury oraz sposobu działania. To właśnie architektura i sposób w jaki działają testy jest największa widoczną różnicą między Selenium. Swoją lekkość , zwinność i przede wszystkim szybkość zawdzięcza temu, że w przeciwieństwie do Selenium, kod napisany w Cypress działa bezpośrednio w przeglądarce (jest niejako wstrzykiwany do testowanej aplikacji www) – w Selenium działa to zupełnie inaczej, gdyż testy są wykonywane poprzez Remote Driver.
Cypress to typowe narzędzie do testowania frontendu aplikacji webowych. Cypress niestety oferuje pracę tylko w jednym języku programowania – JavaScript. Moim zdaniem jest to jedno z największych ograniczeń tego rozwiązania. Wart podkreślić, że narzędzi to cały czas się rozwija i usprawnia. Jednak w oczy wciąż rzuca się brak internetowego Community. Wiele firm z bardzo dużym dystansem patrzy na to rozwiązanie w myśl zasady „znany wróg jest lepszy niż nieznany przyjaciel”. Selenium w odróżnieniu do Cypress, jest już obecne na rynku przez wiele, wiele lat i jest narzędziem sprawdzonym (mimo swoich ograniczeń i wad). Selenium jest więc narzędziem brzydko mówiąc „wygrzanym na rynku” bezpiecznym i co najważniejsze przewidywalnym. Tych wszystkich zalet brakuje na ten moment Cypressowi.


Zalety


• Obsługa różnych przeglądarek internetowych (FireFox, Edge, Chrome)
• Może wykonywać polecenia w czasie rzeczywistym, oferując wizualną informację zwrotną przez cały czas
• Szczegółowo dokumentuje cały proces testowania
• Automatyczna operacja przewijania przed wykonaniem konkretnych akcji na elementach
• Darmowy
• Szybki, wydajny
• Świetnie zorganizowana dokumentacja



Wady


• Możliwość pisania testów tylko w jednym języku programowania – JavaScript
• Obsługa tylko testów frontendowych
• Nie można go używać do jednoczesnej obsługi dwóch przeglądarek
• Cypress nie obsługuje wielu kart i oferuje jedynie ograniczoną obsługę ramek iFrame
• W obecnej formie Cypress nie jest kompatybilny z przeglądarkami takimi jak Explorer czy Safari

Pozostałe:

Typy testów

Testowanie oprogramowania to bardzo rozległy obszar branży IT. Testować aplikacje możemy na wiele sposobów, a same testy mogą mieć różne cele. I to właśnie wspomniane cele testowania, definiują typy testów, jakimi możemy poddać oprogramowanie. Jeśli celem testów jest...

Agile i SCRUM, czyli co?

Agile to ostatnimi czasy bardzo popularny termin. Jest odmieniamy przez wszystkie przypadki. Obecnie zdecydowana większość zespołów developerskich korzysta z Agile w swojej codziennej pracy. O „Agile” i „Zwinnym” podejściu do prowadzenia projektów słyszeli już chyba...

Raport z testów – must have!

Dzisiaj napiszę kilka słów o niezbędnym elemencie w każdym procesie testowym - mowa oczywiście o tytułowym – Raporcie z Testów. Na początek, krótka regułka określająca, czym tak naprawdę jest Raport z Testów: O jakich czynnościach testowych traktuje powyższa...

Testy wydajnościowe

W tym materiale chciałbym przybliżyć Wam tematykę testów wydajnościowych. Testy wydajnościowe te są dość specyficznym, ale jednocześnie popularnym i bardzo ważnym rodzajem testów w przekroju całego procesu testowego niemal każdego oprogramowania. Testowanie wydajności...

Testy End to End

W tym materiale postaram się przybliżyć Wam szczególny rodzaj testów, jakim niewątpliwie są testy End To End. Zapewne, jeśli jesteście testerami, czy tez osobami należącymi do zespołów zapewniania jakości, to nieraz słyszeliście termin „End-to-End”, czy...