Chciałem tylko dodać i podać nieco więcej informacji na temat tego, dlaczego mamy te poziomy testów, co tak naprawdę oznaczają w przykładach
Mike Cohn w swojej książce „Successful with Agile” zaproponował „Testing Pyramid” jako sposób na podejście do automatycznych testów w projektach. Istnieją różne interpretacje tego modelu. Model wyjaśnia, jakie rodzaje testów automatycznych należy utworzyć, jak szybko mogą przekazywać informacje zwrotne na temat testowanej aplikacji i kto je pisze. Istnieją 3 poziomy automatycznych testów potrzebnych do każdego projektu i są one następujące.
Testy jednostkowe
najmniejszy komponent aplikacji. Może to być dosłownie jedna funkcja w kodzie, która oblicza wartość na podstawie niektórych danych wejściowych. Ta funkcja jest częścią kilku innych funkcji bazy kodu sprzętowego / programowego tworzącego aplikację.
Na przykład - weźmy kalkulator internetowy. Najmniejsze komponenty tej aplikacji, które muszą zostać przetestowane jednostkowo, mogą być funkcją wykonującą dodawanie, inną, która wykonuje odejmowanie i tak dalej. Wszystkie te małe funkcje razem tworzą aplikację kalkulatora.
Historycznie programista pisze te testy, ponieważ są one zwykle pisane w tym samym języku programowania, co aplikacja. W tym celu wykorzystywane są środowiska do testowania jednostkowego, takie jak JUnit i NUnit (dla java), MSTest (dla C # i .NET) oraz Jasmine / Mocha (dla JavaScript).
Największą zaletą testów jednostkowych jest to, że działają one bardzo szybko pod interfejsem użytkownika i możemy uzyskać szybką informację zwrotną na temat aplikacji. Powinno to stanowić ponad 50% zautomatyzowanych testów.
Testy API / integracji
różne komponenty systemu oprogramowania. Komponenty mogą obejmować testowanie baz danych, API (interfejs programowania aplikacji), narzędzia i usługi innych firm wraz z aplikacją.
Na przykład - w powyższym przykładzie kalkulatora aplikacja internetowa może używać bazy danych do przechowywania wartości, używać interfejsów API do przeprowadzania niektórych weryfikacji po stronie serwera i może używać narzędzia / usługi innej firmy do publikowania wyników w chmurze, aby udostępniać je w różnych platformy.
Historycznie deweloper lub techniczna QA pisała te testy przy użyciu różnych narzędzi, takich jak Postman, SoapUI, JMeter i innych narzędzi, takich jak Testim.
Działają one znacznie szybciej niż testy interfejsu użytkownika, ponieważ nadal działają pod maską, ale mogą pochłonąć nieco więcej czasu niż testy jednostkowe, ponieważ musi on sprawdzić komunikację między różnymi niezależnymi komponentami systemu i zapewnić ich bezproblemową integrację. Powinno to stanowić ponad 30% testów automatycznych.
Testy interfejsu użytkownika -
Na koniec mamy testy, które sprawdzają poprawność interfejsu użytkownika aplikacji. Testy te są zwykle zapisywane w celu przetestowania przepływów końcowych przez aplikację.
Na przykład - W aplikacji kalkulatora przepływ może przebiegać od końca do końca, otwieranie przeglądarki-> Wprowadzanie adresu URL aplikacji kalkulatora -> Logowanie za pomocą nazwy użytkownika / hasła -> Otwieranie aplikacji kalkulatora -> Wykonywanie niektórych operacji na kalkulatorze -> weryfikacja tych wyników z interfejsu użytkownika -> Wylogowanie z aplikacji. Może to być jeden do końca przepływ, który byłby dobrym kandydatem do automatyzacji interfejsu użytkownika.
Historycznie techniczni testerzy jakości lub testerzy ręczni piszą testy interfejsu użytkownika. Używają platform open source, takich jak Selenium lub platformy testujące interfejs użytkownika, takie jak Testim, do tworzenia, wykonywania i utrzymywania testów. Testy te dają więcej wizualnych informacji zwrotnych, ponieważ można zobaczyć, jak przebiegają testy, różnicę między oczekiwanymi a rzeczywistymi wynikami za pomocą zrzutów ekranu, dzienników, raportów z testów.
Największym ograniczeniem testów interfejsu użytkownika jest to, że są one stosunkowo wolne w porównaniu do testów na poziomie jednostki i interfejsu API. Powinien zatem stanowić jedynie 10–20% ogólnych zautomatyzowanych testów.
Kolejne dwa typy testów mogą się różnić w zależności od projektu, ale pomysł jest następujący:
Testy dymu
Może to być kombinacja powyższych 3 poziomów testowania. Chodzi o to, aby uruchamiać go podczas każdego sprawdzania kodu i upewnić się, że krytyczne funkcje systemu nadal działają zgodnie z oczekiwaniami; po scaleniu zmian w nowym kodzie. Zwykle muszą pracować z 5–10 minutami, aby uzyskać szybszą informację zwrotną na temat awarii
Testy regresji
Zazwyczaj są one uruchamiane co najmniej raz dziennie i obejmują różne funkcje systemu. Zapewniają, że aplikacja nadal działa zgodnie z oczekiwaniami. Są one bardziej szczegółowe niż testy dymu i obejmują więcej scenariuszy aplikacji, w tym te niekrytyczne.