Kątomierz - koncepcje testowania JavaScript
Ponieważ znajomość JavaScript jest niezbędna do pracy z Protractorem, w tym rozdziale szczegółowo omówimy koncepcje testowania JavaScript.
Testowanie i automatyzacja JavaScript
JavaScript jest najpopularniejszym językiem skryptowym z dynamicznym typowaniem i interpretacją, ale najtrudniejszym zadaniem jest przetestowanie kodu. Dzieje się tak, ponieważ w przeciwieństwie do innych języków kompilowanych, takich jak JAVA i C ++, w JavaScript nie ma etapów kompilacji, które mogłyby pomóc testerowi wykryć błędy. Poza tym testowanie w przeglądarce jest bardzo czasochłonne; stąd potrzeba narzędzi wspierających automatyczne testowanie dla JavaScript.
Koncepcje testowania automatycznego
Pisanie testu zawsze jest dobrą praktyką, ponieważ poprawia on kod; problem z testowaniem ręcznym polega na tym, że jest to trochę czasochłonne i podatne na błędy. Proces testowania ręcznego jest również dość nudny dla programistów, ponieważ muszą oni powtarzać proces, pisać specyfikacje testowe, zmieniać kod i kilkakrotnie odświeżać przeglądarkę. Poza tym ręczne testowanie również spowalnia proces tworzenia.
Z powyższych powodów zawsze warto mieć narzędzia, które mogą zautomatyzować te testy i pomóc programistom pozbyć się tych powtarzalnych i nudnych kroków. Co powinien zrobić programista, aby zautomatyzować proces testowania?
Zasadniczo programista może zaimplementować zestaw narzędzi w interfejsie CLI (interpreter wiersza poleceń) lub w środowisku programistycznym IDE (zintegrowane środowisko programistyczne). Następnie testy te będą działać w sposób ciągły w oddzielnym procesie, nawet bez wkładu programisty. Automatyczne testowanie JavaScript również nie jest nowe i opracowano wiele narzędzi, takich jak Karma, Protractor, CasperJS itp.
Rodzaje testowania dla JavaScript
Do różnych celów mogą być różne testy. Na przykład niektóre testy są napisane w celu sprawdzenia zachowania funkcji w programie, a inne w celu przetestowania przepływu modułu lub funkcji. Tak więc mamy dwa rodzaje testów -
Testów jednostkowych
Testowanie jest wykonywane na najmniejszej możliwej do przetestowania części programu zwanej jednostką. Urządzenie jest zasadniczo testowane w izolacji, bez jakiejkolwiek zależności tego urządzenia od innych części. W przypadku JavaScript pojedyncza metoda lub funkcja o określonym zachowaniu może być jednostką kodu i te jednostki kodu muszą być testowane w sposób izolowany.
Jedną z zalet testowania jednostkowego jest to, że testowanie jednostek można przeprowadzić w dowolnej kolejności, ponieważ jednostki są od siebie niezależne. Kolejną zaletą testów jednostkowych, która naprawdę się liczy, jest to, że można je uruchomić w dowolnym momencie w następujący sposób -
- Od samego początku procesu rozwoju.
- Po zakończeniu opracowywania dowolnego modułu / funkcji.
- Po zmodyfikowaniu dowolnego modułu / funkcji.
- Po dodaniu dowolnej nowej funkcji w istniejącej aplikacji.
Do zautomatyzowanych testów jednostkowych aplikacji JavaScript możemy wybierać spośród wielu narzędzi testowych i frameworków, takich jak Mocha, Jasmine i QUnit.
Testowanie od końca do końca
Można to zdefiniować jako metodologię testowania używaną do testowania, czy przepływ aplikacji od początku do końca (od jednego końca do drugiego) działa dobrze zgodnie z projektem.
Testowanie od końca do końca jest również nazywane testowaniem funkcji / przepływu. W przeciwieństwie do testów jednostkowych, kompleksowe testy sprawdzają, jak poszczególne komponenty współpracują ze sobą jako aplikacja. To jest główna różnica między testowaniem jednostkowym a testowaniem od końca do końca.
Na przykład załóżmy, że jeśli mamy moduł rejestracyjny, w którym użytkownik musi podać pewne ważne informacje, aby ukończyć rejestrację, to testowanie E2E dla tego konkretnego modułu będzie przebiegać zgodnie z następującymi krokami, aby zakończyć testowanie -
- Najpierw załaduje / skompiluje formularz lub moduł.
- Teraz otrzyma DOM (model obiektowy dokumentu) elementów formularza.
- Następnie uruchom zdarzenie kliknięcia przycisku przesyłania, aby sprawdzić, czy działa, czy nie.
- Teraz, w celu walidacji, zbierz wartość z pól wejściowych.
- Następnie należy zweryfikować pola wejściowe.
- W celach testowych wywołaj fałszywe API do przechowywania danych.
Każdy krok daje własne wyniki, które zostaną porównane z oczekiwanym zbiorem wyników.
Teraz pojawia się pytanie, skoro ten rodzaj E2E lub testowanie funkcjonalne można również wykonać ręcznie, dlaczego potrzebujemy do tego automatyzacji? Głównym powodem jest to, że automatyzacja ułatwi ten proces testowania. Niektóre z dostępnych narzędzi, które można łatwo zintegrować z dowolną aplikacją, do tego celu to Selenium, PhantomJS i Protractor.
Narzędzia i struktury testowe
Mamy różne narzędzia i ramy testowe do testowania Angular. Oto niektóre z dobrze znanych narzędzi i struktur -
Karma
Karma, stworzona przez Vojtę Jinę, jest testerem. Pierwotnie projekt ten nosił nazwę Testacular. Nie jest to framework testowy, co oznacza, że daje nam możliwość łatwego i automatycznego uruchamiania testów jednostkowych JavaScript na prawdziwych przeglądarkach. Karma została zbudowana dla AngularJS, ponieważ przed Karmą nie było automatycznego narzędzia testującego dla programistów JavaScript opartych na sieci. Z drugiej strony dzięki automatyzacji zapewnianej przez Karma programiści mogą uruchomić proste pojedyncze polecenie i określić, czy cały zestaw testów przeszedł pomyślnie, czy nie.
Zalety używania Karmy
Oto kilka zalet korzystania z Karmy w porównaniu z procesem ręcznym -
- Automatyzuje testy w wielu przeglądarkach, a także na urządzeniach.
- Monitoruje pliki pod kątem błędów i naprawia je.
- Zapewnia wsparcie i dokumentację online.
- Ułatwia integrację z serwerem ciągłej integracji.
Wady używania Karmy
Oto kilka wad używania Karmy -
Główną wadą korzystania z Karmy jest to, że wymaga ona dodatkowego narzędzia do konfiguracji i utrzymania.
Jeśli używasz modułu uruchamiającego testy Karma z Jasmine, mniej jest dostępnych dokumentów dotyczących wyszukiwania informacji o konfigurowaniu CSS w przypadku posiadania wielu identyfikatorów dla jednego elementu.
Jaśmin
Jasmine, oparta na zachowaniu platforma programistyczna do testowania kodu JavaScript, została opracowana w Pivotal Labs. Przed aktywnym rozwojem frameworka Jasmine podobny framework do testów jednostkowych o nazwie JsUnit został również opracowany przez Pivotal Labs, który ma wbudowany moduł uruchamiający testy. Testy przeglądarek można przeprowadzić za pomocą testów Jasmine, dołączając plik SpecRunner.html lub używając go również jako narzędzia do uruchamiania testów w wierszu poleceń. Może być również używany z Karmą lub bez niej.
Zalety używania Jasmine
Oto kilka zalet korzystania z Jasmine -
Framework niezależny od przeglądarki, platformy i języka.
Obsługuje rozwój oparty na testach (TDD) wraz z rozwojem opartym na zachowaniu.
Posiada domyślną integrację z Karmą.
Łatwa do zrozumienia składnia.
Zapewnia szpiegów testowych, podróbki i funkcje przekazywania, które pomagają w testowaniu jako funkcji dodatkowych.
Wady używania Jasmine
Oto wada korzystania z Jasmine -
Testy muszą być zwracane przez użytkownika w miarę ich zmian, ponieważ w Jasmine nie jest dostępna funkcja oglądania plików podczas wykonywania testu.
Mokka
Mocha, napisana dla aplikacji Node.js, jest platformą testową, ale obsługuje również testowanie przeglądarki. Jest całkiem podobny do Jasmine, ale główna różnica między nimi polega na tym, że Mocha potrzebuje jakiejś wtyczki i biblioteki, ponieważ nie może działać samodzielnie jako platforma testowa. Z drugiej strony Jasmine jest samodzielna. Jednak Mocha jest bardziej elastyczna w użyciu niż Jasmine.
Zalety używania Mocha
Oto kilka zalet korzystania z Mocha -
- Mocha jest bardzo łatwa w instalacji i konfiguracji.
- Przyjazna dla użytkownika i prosta dokumentacja.
- Zawiera wtyczki z kilkoma projektami węzłów.
Wady używania Mocha
Oto kilka wad używania Mocha -
- Potrzebuje oddzielnych modułów dla asercji, szpiegów itp.
- Wymaga również dodatkowej konfiguracji do używania z Karmą.
QUnit
QUint, pierwotnie opracowany przez Johna Resiga w 2008 roku jako część jQuery, jest potężnym, ale łatwym w użyciu zestawem testów jednostkowych JavaScript. Może być używany do testowania dowolnego ogólnego kodu JavaScript. Chociaż koncentruje się na testowaniu JavaScript w przeglądarce, to jest bardzo wygodny w użyciu przez programistę.
Zalety używania QUnit
Oto kilka zalet używania QUnit -
- Łatwy w instalacji i konfiguracji.
- Przyjazna dla użytkownika i prosta dokumentacja.
Wady używania QUnit
Oto wada użycia QUnit -
- Został opracowany głównie dla jQuery i dlatego nie jest tak dobry do użytku z innymi frameworkami.
Selen
Selenium, pierwotnie opracowany przez Jasona Hugginsa w 2004 roku jako wewnętrzne narzędzie w ThoughtWorks, jest narzędziem do automatyzacji testów typu open source. Selenium definiuje się jako „Selenium automatyzuje przeglądarki. Otóż to!". Automatyzacja przeglądarek oznacza, że programiści mogą bardzo łatwo wchodzić w interakcje z przeglądarkami.
Zalety stosowania selenu
Oto kilka zalet używania Selenium -
- Zawiera duży zestaw funkcji.
- Obsługuje testy rozproszone.
- Posiada wsparcie SaaS poprzez usługi takie jak Sauce Labs.
- Łatwy w użyciu dzięki prostej dokumentacji i bogatym zasobom.
Wady używania Selenium
Oto kilka wad używania Selenu -
- Główną wadą używania Selenium jest to, że musi być uruchamiany jako oddzielny proces.
- Konfiguracja jest nieco kłopotliwa, ponieważ programista musi wykonać kilka kroków.