Testowanie eksploracyjne
Dowiedz się, na czym polega testowanie eksploracyjne i jaka jest jego historia. Poznaj zalety i wady testów eksploracyjnych oraz dowiedz się, czym różnią się one od testów opartych na skryptach i w jakim kontekście należy je stosować.
Deepak Parmar
Autor współpracujący
Testowanie eksploracyjne to podejście do testowania oprogramowania, które często jest opisywane jako jednoczesne uczenie się, projektowanie testów i ich wykonywanie. Kładzie ono nacisk na eksplorację; w jego ramach wykorzystuje się wskazówki pochodzące od poszczególnych testerów, aby odkryć defekty, które nie wchodzą w zakres innych testów.
Testowanie eksploracyjne stało się w ostatnich latach bardzo popularne. Testerzy i menedżerowie QA są zachęcani do uwzględnienia testów eksploracyjnych w ramach kompleksowej strategii pokrycia testami.
Historia testowania eksploracyjnego
Proces testowania eksploracyjnego funkcjonuje już od jakiegoś czasu, ale często był określany jako „testowanie ad hoc”. Termin „testowanie eksploracyjne” został formalnie wprowadzony przez Cema Kanera, eksperta w dziedzinie testowania oprogramowania, w jego klasycznej książce zatytułowanej „Testing Computer Software”.
Następujący wstęp jest już słynny: „Nieważne, ile różnego typu przypadków testowych stworzyliście, zabraknie Wam formalnie zaplanowanych testów. Możecie dalej testować. Przeprowadzajcie nowe testy, gdy tylko o nich pomyślicie, nie poświęcając wiele czasu na ich przygotowanie lub wyjaśnienie. Zaufajcie instynktowi”.
Dlaczego warto korzystać z testów eksploracyjnych
Zespoły muszą obecnie wdrożyć model ciągłej integracji i dostarczać wysokiej jakości środowiska cyfrowe, aby sprostać rosnącym oczekiwaniom klientów. Podczas gdy szybkość wprowadzania na rynek jest ważna, zdarzają się przypadki błędów kosztujących miliony dolarów lub proste problemy związane ze środowiskiem użytkownika, które są bardzo kosztowne. Od Boeinga po Instagrama — istnieje wiele przykładów, w których pospieszne dostarczanie w celu dotrzymania terminu i słabej jakości testy doprowadziły do utraty reputacji i strat finansowych.
Większość technik testowania jakości oprogramowania wykorzystuje podejście strukturalne. Przypadki testowe są definiowane na podstawie już zdefiniowanych historyjek użytkownika, a dane testowe są ustrukturyzowane na podstawie zdefiniowanych przypadków testowych. Pokrycie testami jest mierzone za pomocą wskaźników inżynierii oprogramowania. W większości przypadków pokrycie jest odpowiednie pod względem technicznym.
Poznaj rozwiązanie
Tworzenie i obsługa oprogramowania za pomocą Open DevOps
Materiały pokrewne
Zautomatyzowane testowanie na potrzeby DevOps
Elementem, którego często brakuje, są przypadki brzegowe, które są wykrywane poprzez testowanie akceptacyjne przez użytkowników (UAT) i testowane w oparciu o persony użytkowników. Z drugiej strony testowanie eksploracyjne jest z natury losowe lub nieustrukturyzowane i może ujawnić błędy, które nie zostałyby wykryte podczas ustrukturyzowanej fazy testowania.
Podczas testowania eksploracyjnego testerzy mogą modyfikować historyjkę użytkownika, która przebiega zgodnie z określoną sekwencją. Testerzy mogą opisywać defekty, dodawać asercje i notatki głosowe oraz na bieżąco tworzyć dokumentację. W ten sposób historyjka użytkownika przekształca się w przypadek testowy. Informacje te można również wykorzystać na potrzeby QA.
W efekcie można wykonać test bez formalnego tworzenia kroków testowych. Narzędzie do testowania eksploracyjnego staje się wówczas prekursorem automatyzacji. Pomaga sformalizować wyniki i automatycznie je udokumentować. Z pomocą wizualnych informacji zwrotnych i narzędzi do testowania zespołowego każdy może uczestniczyć w testach eksploracyjnych. Dzięki temu zespoły mogą szybko reagować na zmiany i dostosowywać się do nich, co ułatwia wprowadzenie przepływu pracy zgodnego z metodyką Agile.
Ponadto tester może przekształcić sekwencje testowania eksploracyjnego w skrypty testów funkcjonalnych za pomocą narzędzi do zautomatyzowanego dokumentowania przypadków testowych. Powoduje to wzmocnienie tradycyjnego procesu testowania.
Dzięki integracji z narzędziami takimi jak Jira i produkty do zarządzania testami zespoły mogą bezpośrednio eksportować zarejestrowaną dokumentację do przypadków testowych.
Testowanie eksploracyjne przyspiesza więc sporządzanie dokumentacji, ułatwia przeprowadzanie testów jednostkowych i pomaga stworzyć natychmiastową pętlę informacji zwrotnych. James Bach, współtwórca podejścia polegającego na testowaniu oprogramowania na podstawie kontekstu, ujmuje to tak: „Testowanie eksploracyjne zachęca do naukowego analizowania procesów w czasie rzeczywistym”.
Kiedy należy stosować testy eksploracyjne?
Testy eksploracyjne dobrze sprawdzają się w specyficznych scenariuszach testowania, np. gdy trzeba szybko poznać produkt lub aplikację i przekazać informacje zwrotne. Pomagają one ocenić jakość produktu z perspektywy użytkownika.
W wielu cyklach oprogramowania wymagana jest wczesna iteracja, gdy zespoły nie mają zbyt wiele czasu na strukturyzację testów. W takich sytuacjach pomocne są testy eksploracyjne.
Podczas testowania aplikacji o znaczeniu krytycznym testy eksploracyjne zapewniają, że nie przeoczysz przypadków brzegowych, które prowadzą do krytycznych błędów jakościowych. Wykorzystaj testy eksploracyjne, aby wspomóc proces testowania jednostkowego i udokumentować poszczególne kroki, a następnie użyj tych informacji, aby przeprowadzić obszerne testy podczas późniejszych sprintów.
Jest to szczególnie przydatne przy poszukiwaniu nowych scenariuszy testowych w celu zwiększenia pokrycia testami.
Kiedy zrezygnować z testów eksploracyjnych
Organizacje muszą być w stanie znaleźć odpowiednią równowagę pomiędzy testami eksploracyjnymi a testami opartymi na skryptach. Same testy eksploracyjne nie mogą zapewnić odpowiedniego pokrycia i zespoły nie powinny ich przeprowadzać, jeśli nie osiągnęły kilku początkowych kamieni milowych.
Szczególnie w przypadku testów, które są regulowane lub bazują na zgodności, najlepszą metodą jest testowanie oparte na skryptach. W przypadku testów bazujących na zgodności, podczas których należy przestrzegać pewnych list kontrolnych i wymogów z powodów prawnych, zaleca się testowanie oparte na skryptach. Jednym z przykładów jest testowanie ułatwień dostępu — protokół testów regulują przepisy i trzeba spełnić określone standardy.
Znaczenie testowania eksploracyjnego dla CI/CD
W procesie testowania eksploracyjnego mogą brać udział wszyscy kluczowi interesariusze, a nie tylko wyszkoleni testerzy. Korzystając z narzędzia do testowania eksploracyjnego, można przechwytywać zrzuty ekranu, nagrywać notatki głosowe i dodawać adnotacje z informacjami zwrotnymi podczas sesji. Umożliwia to szybszą i bardziej efektywną pracę osobom spoza grona tradycyjnych testerów oprogramowania.
Testowanie eksploracyjne uzupełnia istniejącą strategię w zakresie testów stosowaną przez zespoły QA. Proces ten obejmuje serię nieudokumentowanych sesji testów mających na celu wykrycie nowych problemów/błędów. W połączeniu ze zautomatyzowanym testowaniem i innymi praktykami testowania zwiększa on pokrycie testami, pozwala wykryć przypadki brzegowe, potencjalnie dodaje nowe funkcje i ogólnie poprawia jakość oprogramowania. Nie wprowadza sztywnych struktur i zachęca do eksperymentowania, kreatywności oraz eksploracji w zespołach.
Informacje zwrotne są przekazywane niemal natychmiastowo, co pozwala zniwelować dystans między testerami a programistami. Co najważniejsze, wyniki testów eksploracyjnych zapewniają zorientowaną na użytkownika perspektywę i informacje zwrotne dla zespołów programistycznych. Celem jest uzupełnienie tradycyjnych testów o znajdowanie najbardziej kosztownych defektów, które zazwyczaj są ukryte w zdefiniowanym przepływie pracy.
Więcej informacji o aplikacjach do zarządzania testami znajdziesz w sklepie Atlassian Marketplace. Możesz też dowiedzieć się, jak wykorzystać narzędzia firmy Atlassian i innych firm, aby włączyć testowanie do przepływu pracy, sięgając do naszych samouczków dotyczących testowania DevOps.
Udostępnij ten artykuł
Następny temat
Zalecane lektury
Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.