Cypress vs. Selenium: jaki system wybrać do testowania botów?

Szybkość i zwinność Cypress czy zaawansowane możliwości Selenium? Co bardziej liczy się w testowaniu botów do marketingu konwersacyjnego? Odpowiada nasz tester, Mateusz.

Z tego wpisu dowiesz się:

  • na czym polega przygotowanie testów automatycznych aplikacji obsługującej boty
  • jakie wyzwania pojawiają się przy testach konwersacji z botem
  • dlaczego zmieniliśmy framework w czasie projektu
  • na czym polega różnica między Cypress i Selenium
  • jakie są wady i zalety każdego z tych frameworków
  • dlaczego w CCA Europe postawiliśmy na Selenium

Marketing konwersacyjny, czyli angażowanie klientów w spersonalizowane rozmowy o produktach czy usługach, to skuteczny sposób do angażowania potencjalnych nabywców w sieciach społecznościowych lub na stronach internetowych.

Jednak stworzenie takiego rozwiązania nie jest łatwe. Chatboty wykorzystują zaawansowane algorytmy, które prowadzą odwiedzających w rozmowie na podstawie słów kluczowych, określonych aktywności czy innych szczegółów.

Przez ostatnie kilka miesięcy realizowaliśmy dla zagranicznego klienta końcowego testy aplikacji do bota wykorzystywanego w marketingu konwersacyjnym. Zadaniem jednego z naszych testerów, Mateusza, było stworzenie mechanizmu, dzięki któremu każdy test uruchomiony na budowanej aplikacji będzie w stanie nawiązać jednoznaczne połączenie visitor-agent. Prawidłowo przeprowadzony test miał każdorazowo utworzyć nową personę agenta, z nowym zestawem umiejętności, aktywowaną za pomocą zadanych słów kluczowych. Nawiązanie za ich pomocą komunikacji między agentem a visitorem miało powodować pojawienie się nowego czatu u właściwego agenta.

Przygotować testy automatyczne na lawinę zmian

Jeżeli chodzi o rozpisywanie przypadków testowych, wyzwaniem było ustalenie, jakie wymagania muszą zostać spełnione, aby zainicjować czat u agenta z daną umiejętnością. Drugie wyzwanie to dostosowanie kodu do interfejsu komunikacji. Jak się okazało, największe wyzwanie projektowe stanowił właśnie ów aspekt techniczny.

 – Od początku używaliśmy przeglądarkowego frameworka Cypress, pisanego w JavaScript. Jest to narzędzie, które działa bezpośrednio w przeglądarce i jest dość wygodne w obsłudze – mówi Mateusz Cierpka, Full-Stack Developer odpowiedzialny za projekt z ramienia CCA Europe. Ponieważ jednak w CCA Europe podstawowym frameworkiem do tworzenia testów automatycznych jest Selenium WebDriver, którego skrypty są pisane w języku Java, nowego frameworka trzeba się było nauczyć. Nie obeszło się bez sięgania do dokumentacji. W trakcie realizacji projektu okazało się jednak, że ograniczenia Cypress nie pozwalają na właściwe przetestowanie rozwiązania.

Konieczna przesiadka w trakcie projektu

Na początku każdy skrypt testowy rzeczywiście tworzył nowego agenta, visitor nawiązywał połączenie i test przebiegał pomyślnie, dopóki uruchamiało się test pojedynczo. Problem pojawiał się w momencie uruchomienia kilku testów równolegle, w trakcie procesu CI/CD, np. gdy developer publikował jakiś nowy feature albo poprawkę w kodzie aplikacji – tłumaczy Mateusz

Błąd polegał na tym, że system tworzył kilka agentów z tą samą umiejętnością i próbował nawiązywać z nimi chat. Gdy visitor z testu A chciał się połączyć z agentem z testu A, trafiał do agenta z testu B, bo ten miał tę samą umiejętność. Alternatywnie do nawiązania połączenia w ogóle nie dochodziło. U żadnego z agentów nie pojawiał się chat, a sam test kończył się niepowodzeniem (nie można było przejść do kolejnych instrukcji skryptu testowego) i system uruchamiał go od początku. To doprowadzało do wielu dziwnych, nieprzewidywalnych sytuacji.

Konieczne było ustabilizowanie połączeń między agentem a visitorem. Niektóre przypadki musiały być napisane w taki sposób, że i na stronie agenta, i na stronie visitora tester musiał wywołać okna ręcznie. Rozwiązaniem okazało się przejście z Cypress na Selenium, framework dający dużą dowolność, jednak dużo bardziej zaawansowany od strony technologicznej i pozwalający testerom na m.in. samodzielne tworzenie różnych funkcjonalności. 

Zarówno Selenium, jak i Cypress to rozwiązania open source i oba służą do automatyzacji testów aplikacji webowych. Jednak to Selenium od lat jest uznawany za niekwestionowanego lidera rankingu narzędzi do automatyzacji testów aplikacji internetowych.

Selenium vs. Cypress: wszechstronność ze wsparciem kontra zwinność i szybkość

W przeciwieństwie do Cypress rozwiązanie Selenium współpracuje ze wszystkimi popularnymi przeglądarkami internetowymi w oparciu o natywne sterowniki. Oprócz Javy Selenium obsługuje także inne języki programowania: C#, JavaScript, Python czy Ruby. Developerzy opracowujący testy automatyczne doceniają także fakt, że wokół Selenium funkcjonuje duża społeczność, w której można szybko i łatwo znaleźć odpowiedź na większość popularnych wyzwań.

Framework Cypress to narzędzie zupełnie inne od Selenium nie tylko pod względem sposobu działania, ale także (a może przede wszystkim) architektury. To właśnie jej Cypress zawdzięcza swoją lekkość, zwinność i przede wszystkim szybkość. Kod Cypress jest pisany w JavaScript i działa bezpośrednio w przeglądarce, zupełnie inaczej niż wymagający WebDriver Selenium. To dlatego tak dobrze się sprawdza w testach frontendu aplikacji webowych.

Cypress oferuje pracę tylko w jednym języku programowania, co niestety utrudnia korzystanie z niego w bardziej zaawansowanych kontekstach. Choć jest cały czas rozwijany i usprawniany, nie ma jeszcze tak wielu entuzjastów gotowych pomóc w poszukiwaniu rozwiązania.

Porównanie Cypress vs. Selenium

CCA Europe stawia na Selenium 

Mateuszowi udało się rozwiązać problem, zmieniając cały proces tworzenia użytkowników oraz ich umiejętności i kampanii, poprzez preparowanie odpowiednich żądań protokołu HTTP do komunikacji z API aplikacji. Dzięki temu można było również nawiązywać chaty i realizować inne funkcjonalności.

Ostatecznie realizowany przez nas projekt testowania chatbota rozpoczął się przy użyciu Cypress, ale zakończył na Selenium.
Przeważył właśnie szeroki wachlarz możliwości tego frameworka. Zarówno ja, jak i moi koledzy w zespole zgodziliśmy się, że dalsze korzystanie z Cypress po prostu nie pozwoli sprawdzić wszystkich zaprojektowanych przypadków testowych w założonym czasie – wyjaśnia Mateusz Cierpka.

W testach automatycznych skomplikowanych rozwiązań ogromną wagę ma doświadczenie i znajomość zaawansowanych rozwiązań. Zespół testerów CCA Europe to doświadczeni użytkownicy Selenium, zwłaszcza w zakresie testów aplikacji bankowych – zauważa Arkadiusz Stanimir, dyrektor zarządzający CCA Europe.

Dzięki dwustronnej integracji z Selenium autorskiego narzędzia PATT testerzy CCA Europe wykonują obszerne testy dla bankowości: całego procesu bankowego, na zasadzie reakcji łańcuchowej.
Integracja PATT z Selenium umożliwia nie tylko przyspieszenie pracy testerów, ale także obniżenie kosztów dla firm – zauważa Arkadiusz Stanimir.

Potrzebujesz wsparcia przy fazie analitycznej lub wykonawczej testów? Szukasz doświadczonego partnera biznesowego do testów funkcjonalnych dla bankowości? Zapraszamy na 30-minutową, niezobowiązującą rozmowę z naszym CEO, Jackiem Nowakiem.