Zacznijmy od podstaw. Poznaj 2 ogólne tryby testowania i 3 popularne typy automatyzacji testów.
Wszyscy znamy ten mem, który często pojawia się w życiu.
Ten mem dobrze to podsumowuje: każda szuflada działa doskonale osobno, ale w połączeniu z inną szufladą blokują się nawzajem i nie działają. Oba szuflady muszą dobrze ze sobą współpracować i działać jednocześnie.
Zastosowanie tego w przypadku tworzenia stron internetowych: napisano kilka testów, być może nawet osiągnięto 100% zakres testów, ale aplikacja musi nadal działać, gdy inne części zostaną dopasowane. Urządzenia mogą działać dobrze osobno, ale nie w związku z innymi. Pisanie testów jest bardzo ważne, ale to tylko część idealnej konfiguracji testów w przypadku Twojego projektu. Najpierw musisz określić, które elementy jakości aplikacji wymagają Twojej uwagi i jak możesz to osiągnąć.
Krótko mówiąc, zanim zaczniesz pisać kod testowy, musisz mieć plan. Aby omówić praktyczne testowanie, zacznijmy od zera i odpowiedzmy na 2 podstawowe pytania:
- Jak chcesz przetestować?
- Co chcesz przetestować?
W tym artykule skupiamy się na ogólnych informacjach, które musisz znać, aby odpowiedzieć na pierwsze pytanie. Na początek wyjaśnijmy, jakie istnieją tryby testowania, a potem skupmy się na typach testów, które są najczęściej stosowane. W kolejnych artykułach odpowiemy na drugie pytanie, połączymy uzyskane odpowiedzi i znajdziemy strategię testowania, która najlepiej sprawdzi się w Twoim projekcie. Do dzieła! 🙌
Zacznij od podstaw: ogólne tryby testowania
Odpowiadając na pytanie, jak przeprowadzić test, należy najpierw wyjaśnić pewien bardzo abstrakcyjny punkt. Czy testy powinny być przeprowadzane ręcznie, czy komputer powinien przejąć nad nimi kontrolę? Ważne jest jednak, aby nie popadać w myślenie binarne.
Testy ręczne a testy zautomatyzowane
Jeśli poprosisz inżynierów ds. kontroli jakości o zdefiniowanie testowania, prawdopodobnie podzielą je najpierw na 2 „tryby”:
- Testowanie ręczne. Jest to typowa metoda testowania przeprowadzana przez prawdziwych użytkowników. Inżynier ds. kontroli jakości sprawdza aplikację, czy działa prawidłowo, i próbuje ją zepsuć. Najczęstszym sposobem jest testowanie eksploracyjne, w którym inżynier bada aplikację, korzystając ze swojej wiedzy o niej w powiązaniu z wstępnie zdefiniowaną ścieżką lub listą kontrolną.
- Automatyczne testowanie. To rodzaj testowania przeprowadzanego przez komputer. Inżynierowie ds. kontroli jakości implementują je, aby zautomatyzować powtarzalne i monotonne testy.
Ta seria przewodników skupia się głównie na testowaniu automatycznym. Nie należy jednak skupiać się tylko na jednym sposobie testowania. Nawet jeśli automatyzacja pozwala zaoszczędzić dużo czasu i wysiłku, ludzie oraz testy manualne będą zawsze odgrywać kluczową rolę. Automatyzacja testów powinna raczej pozwolić ludziom skupić się na testach eksploracyjnych i twórczym rozwiązywaniu problemów. Może to być na przykład zapewnienie wysokiej jakości wrażeń użytkowników lub ochrona logiki biznesowej o wysokim ryzyku. Innymi słowy, automatyzacja Ci pomaga. ❤️
Nieprzejrzyste pudełko a przezroczyste pudełko
Określiłeś już ogólne tryby testowania. To jednak nie wystarczy. Aby zaplanować strategię testowania, musisz jeszcze odpowiedzieć na jedno pytanie: czy musisz znać sposób działania aplikacji, czy lepiej jest przeprowadzić testy bez tej wiedzy? W zależności od odpowiedzi możesz wybrać jedną z 2 procedur służących do wyprowadzenia i wyboru przypadków testowych:
- Testowanie w trybie czarnej skrzynki (czyli testowanie w trybie czarnej skrzynki). Jest ono oparte na analizie wymagań funkcjonalnych i niefunkcjonalnych (specyfikacji) komponentu lub systemu bez uwzględniania ich struktury wewnętrznej.
- Testowanie typu „otwarta skrzynka” (czyli testowanie typu „white box”) to procedura, która uwzględnia wewnętrzną strukturę danej skrzynki. Innymi słowy, jak aplikacja działa od środka.
Obie procedury można stosować do testów ręcznych i automatycznych. Niektóre aspekty ogólnych trybów testowania mogą jednak bardziej skupiać się na jednym z tych elementów. Omówimy to później. Na razie podzielmy automatyzację testów na typy.
Typy testów automatycznych: jak chcesz przeprowadzić test?
W drodze do znalezienia odpowiedzi na pytanie „jak?” zdecydowałeś(-aś) się już przeprowadzić testy ręczne. Wybór i zastosowanie typów testów automatycznych jest jednak nieco trudniejsze. Rodzaje testowania automatyzacji są ściśle powiązane z danymi, które chcesz tworzyć w projektach. Przyjrzyjmy się bliżej najważniejszym z nich.
Jak widać na wspomnianym wcześniej memie, znasz już 2 rodzaje testów: testy jednostkowe i testy integracji. Trzecią ważną kwestią jest kompleksowe testowanie. To jednak nie wszystkie. Przyjrzyjmy się temu bliżej.
Testowanie jednostkowe
Testowanie jednostkowe to typ testowania, w którym poszczególne części lub jednostki aplikacji są testowane osobno i niezależnie pod kątem prawidłowego działania. Zakres tych jednostek może się różnić: od funkcji, klas i interfejsów po usługi lub całe komponenty. Ich główne atrybuty to szybkość wykonywania, izolacja i łatwość konserwacji. Jeśli chcesz dowiedzieć się więcej o testowaniu jednostkowym, zapoznaj się z tym przewodnikiem.
Testowanie integracji
Testy integracji koncentrują się na interakcjach między komponentami lub systemami. Innymi słowy, na tym, jak dobrze ze sobą współpracują. Typowymi przykładami testów integracji są testy interfejsu API lub komponentów.
Testowanie kompleksowe
Te testy są często nazywane testami interfejsu użytkownika, a ta nazwa jeszcze lepiej opisuje ich funkcję. Te testy oddziałują na UI aplikacji, w tym na cały stos aplikacji, i testują aplikację od początku do końca.
Jeśli chodzi o teorię kontroli jakości, przypominają one test systemu. Te testy symulują prawdziwego użytkownika i jego interakcje. Testy kompleksowe zajmują więcej czasu, ponieważ obejmują cały system, a im więcej czasu zajmuje wykonywanie, tym więcej potrzeba mocy obliczeniowej. W związku z tym dodatkowe działania powodują wyższe koszty konserwacji.
.Testowanie wizualne interfejsu użytkownika
Ciekawą podkategorią testów interfejsu użytkownika są testy wizualne. Są to rozszerzone testy obejmujące cały proces, które umożliwiają weryfikację widocznych danych wyjściowych aplikacji. Taki test obejmuje zrzut ekranu po wprowadzeniu zmiany i kolejne zdjęcie przedstawiające „stan wyjściowy” (lub złoty plik). Następnie wyniki są przekazywane do weryfikatora, który je sprawdza. Innymi słowy, pomaga znaleźć „błędy wizualne” w wyglądzie strony, a nie tylko błędy funkcjonalne i nie tylko te, które są wyraźnie zapisane w assercjach.
Analiza statyczna
Jest jeszcze jedna rzecz, którą warto tu omówić: analiza statyczna. Nie jest to testowanie w klasycznym znaczeniu tego słowa. W przyszłości będzie to jednak kluczowy aspekt strategii zapewnienia jakości. Możesz sobie wyobrazić, że działa ona jak funkcja sprawdzania pisowni: skanuje kod pod kątem poważniejszych błędów i błędów składni bez uruchamiania programu, a tym samym wykrywa problemy ze stylem kodu. To proste działanie może zapobiegać wielu błędom. Jeśli chcesz dowiedzieć się więcej o analizie statycznej, możesz zacząć od tego artykułu.
Testowanie we wszystkich aspektach: jak to wszystko ze sobą współdziała?
Szukając odpowiedzi na te pytania, możesz znaleźć możliwe rozwiązanie w analogiach. W społecznościach związanych z internetem i testowaniem deweloperzy często używają tych analogii, aby pokazać, ile testów danego typu należy przeprowadzić.
Najczęstsze są 5 strategii przedstawionych na tym rysunku:
- Piramida testów
- Test Diamond
- Test Lody w rożku (znany też jako Test Pizza)
- Test plastra miodu
- Test Trophy
To naprawdę dużo informacji do przetworzenia. Jak na podstawie tych informacji wybrać strategię testowania dopasowania? Nie martw się, pomożemy Ci. W następnym artykule omówimy te strategie bardziej szczegółowo i wyjaśnimy, jak wybrać tę, która najlepiej pasuje do Twojego projektu. Więcej informacji już wkrótce. 🔥