Selenium WebDriver VS Cypress

sty 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:

Jak napisać Plan Testów?

Jeśli jesteś testerem oprogramowania, bądź pracujesz w działach zapewniania jakości oprogramowania, to być może zetknąłeś się już z dokumentem o opisowej nazwie „Plan Testów”. Tego typu dokumentację tworzy się zarówno w dużych, jak i małych firmach, formalnych, jak...

Jak mierzyć jakość oprogramowania?

Istnieją różne cele testowania oprogramowania. Jednym z głównych celów testowania jest mierzenie jakości oprogramowania. Czym zatem jest ta tajemnicza „jakość”? Jakość oprogramowania to zestaw istotnych cech, które wyróżniają dane oprogramowanie – negatywnie lub...

Środowisko testowe – słów kilka

W tym materiale postaram się Wam przybliżyć nieco temat środowisk, a w szczególności skupić się na środowiskach testowych. Na samym początku musimy sobie zadać podstawowe pytanie: „Czym w ogóle jest środowisko w kontekście pracy dowolnej aplikacji?” Środowisko – to...

Poziomy wykonywania testów

Wytwarzanie oprogramowania to zwykle długi, czasochłonny, skomplikowany proces. Aby przebiegał on poprawnie i dało się nim efektywnie zarządzać - proces developmentu dzielony jest na różne etapy, fazy. Każda faza charakteryzuje się swoimi unikalnymi czynnościami i...

Best Practices testowania aplikacji mobilnych

Testowanie aplikacji mobilnych jest niezbędne, aby upewnić się, że każda aplikacja spełnia postawione przed nią wymagania techniczne oraz biznesowe. Ważne jest, aby każdy tester aplikacji mobilnych stosował sprawdzone i przede wszystkim skuteczne metody testowania. Z...