Pytania, które może zadać sobie tester w procesie testowania, da się podzielić na te typowe, dość standardowe oraz te, które mogą być nieoczywiste, ale w efekcie przyniosą nam sporo korzyści. Do tej pierwszej kategorii należą:
- „Czy znam wymagania?”
Wymagania to podstawowa informacja, w oparciu o którą tworzone jest oprogramowanie. Pytanie o znajomość wymagań i o to, jakie informacje powinien uzyskać tester, aby je lepiej zrozumieć, pozwoli uniknąć niekompletnego przetestowania lub testowania funkcjonalności, które nie były zgodne z oczekiwaniami klienta. - „Czy znam użytkowników?”
Wiedza na temat grupy docelowej i zdobycie wszystkich informacji, które pozwolą zrozumieć potrzeby użytkowników, umożliwi lepsze przetestowanie aplikacji pod kątem użyteczności i wrażeń osób z niej korzystających. - „Jakie są najważniejsze przypadki użycia?”
Poznanie i zrozumienie najważniejszych scenariuszy, w których użytkownicy korzystają z oprogramowania, daje możliwość przetestowania funkcjonalności kluczowych dla użytkowników oraz samej aplikacji. - „Czy znam środowisko testowe?”
Środowisko testowe to miejsce, w którym tester przeprowadza test. Jego zrozumienie to gwarancja przeprowadzenia testów w realistycznych warunkach i skutecznego zidentyfikowania potencjalnych problemów. - „Czy znam priorytety testów?”
Ustalenie, jakie funkcjonalności są najważniejsze do przetestowania i w jakiej kolejności powinny być testowane, pozwoli testerowi skupić się na najbardziej istotnych elementach oraz na dokładne ich przetestowanie.
Czasem uzyskanie odpowiedzi na zadane pytania wymaga nie tylko czasu, ale też zastosowania odpowiedniej techniki, aby do niej dotrzeć. Poniższa tabela przedstawia informacje o tym, jakie korzyści dla procesu testowania przynosi poznanie odpowiedzi oraz to, jak i z jakich źródeł można pozyskać informacje. Ich poznanie to w rezultacie lepsze przetestowanie aplikacji i spełnienie oczekiwań klienta.
Zadane pytanie | Znajomość wymagań | Znajomość użytkowników | Znajomość najważniejszych przypadków użycia | Znajomość środowiska testoweg | Znajomość priorytetów |
---|---|---|---|---|---|
Czy znam? | Tak | Tak | Tak | Tak | Tak |
Co mi to daje? | Kompletny i zgodny z oczekiwaniami klienta test | Lepsze przetestowanie użyteczności i wrażeń użytkownika | Przetestowanie kluczowych funkcjonalności | Przetestowanie aplikacji w realistycznych warunkach | Dokładniejsze przetestowanie najważniejszych funkcjonalności |
Jak uzyskać informacje? | Rozmowy z klientem, dokumentacja projektu | Feedback od użytkowników, przeprowadzenie badań rynku | Analiza wymagań, spotkania z klientem | Analiza dokumentacji IT, spotkania z zespołem IT | Analiza wymagań, spotkania z klientem, konsultacje z deweloperami |
5 dodatkowych, nieoczywistych pytań, które pozwolą Ci (jeszcze) lepiej testować
- „Co, jeśli jest / 1 / kilka / dużo tego czegoś?”
Pytanie związane jest z heurystyką TDD (Test-Driven Development) i zasadą 0, 1, N, mówiącą o tworzeniu testów jednostkowych dla kodu jeszcze przed jego napisaniem, co daje lepsze zrozumienie wymagań i zaprojektowanie kodu w sposób bardziej elastyczny i skalowalny. Zgodnie z zasadą, najpierw należy napisać testy dla sytuacji brzegowych (0), następnie dla jednego przypadku testowego (1) i na koniec dla wielu przypadków testowych (N). W ten sposób tworzone są testy, które pokrywają różne przypadki użycia i pozwalają na wczesne wykrycie błędów w kodzie. - „Jak miałoby to działać dla użytkownika?”
Znajdź odpowiedź na pytanie, jaki problem próbuje rozwiązać użytkownik aplikacji? Co chce dzięki temu osiągnąć? Czy tester może sobie wyobrazić, jak użytkownik wykonuje swoją pracę krok po kroku za pomocą używanego przez siebie oprogramowania? Odpowiedzi na te pytania pozwalają na odkrycie luk lub przeorganizowanie wykonania systemu tak, by był on bardziej przyjazny dla użytkowników. - „Gdzie w tym wszystkim jest czas?”
Często myślimy o oprogramowaniu tylko w kontekście wprowadzania danych, które następnie są przetwarzane, w rezultacie oddając użytkownikowi konkretne dane wyjściowe. Niestety, takie podejście często wydaje się ignorować fakt, że wszystko, co robimy, dzieje się w czasie. Dlatego też kiedy testujemy oprogramowanie, musimy zwrócić uwagę także na aspekt czasowy. Czas jest trudny do przewidzenia i może wprowadzać błędy w programie, szczególnie, jeśli nie zdajemy sobie sprawy, że jest on jednym z parametrów. W trakcie pracy z aplikacją, musimy brać pod uwagę wiele elementów, które zachodzą jednocześnie. To może prowadzić do problemów związanych z konkurencją czy szybkością działania (na przykład szybkością połączenia z Internetem). Czasem decyzje podejmowane w przeszłości wpływają na działanie systemu wiele lat później, co również może być trudne do przewidzenia. - „Co mogę odkryć, wchodząc w interakcję w oprogramowaniem?”
Niektóre rzeczy można odkryć tylko przez interakcję z oprogramowaniem. Pomocne mogą tu okazać się testy eksploracyjne. Zamiast testować na podstawie tego, jak tester wyobraża sobie oprogramowanie w swojej głowie, może on użyć samego oprogramowania jako swojej „zewnętrznej wyobraźni”. Takie podejście nie ogranicza się jedynie do interakcji z oprogramowaniem w taki sam sposób, jak zrobiłby to użytkownik. Jeśli istnieje coś, z czym można wchodzić w interakcje (interfejs użytkownika, interfejs API, baza danych, plik konfiguracyjny, wiersz kodu), można przeprowadzić testy eksploracyjne. - „Co masz na myśli mówiąc… (wstaw odpowiedni termin)?”
Często ludzie bez problemu potrafią zrozumieć się nawzajem w różnych kwestiach terminologicznych. Jednak zdarzają się też takie sytuacje, w których pojawia się między nimi płytkie porozumienie, kiedy choć osoby używają tego samego terminu, to w co najmniej jednym ważnym aspekcie termin ten ma dla każdej z nich inne znaczenie. W takim przypadku warto zapytać: "Co dokładnie masz na myśli przez… (wstaw odpowiedni termin)?”. Zadanie tego pytania jest bardzo istotne, ponieważ pomaga ono uniknąć poważnych błędów lub nieporozumień.
Warto poświęcić czas na zadawanie właściwych pytań i dokładne analizowanie uzyskanych odpowiedzi, by osiągnąć jeszcze lepsze wyniki w testowaniu. Właściwy dobór pytań i wyciąganie odpowiednich wniosków z uzyskanych odpowiedzi usprawnią proces testowy i staną się kluczem do lepszego jego zrozumienia oraz poprawy jakości testów. Wprowadzenie takich pytań do codziennej praktyki testowania może pomóc w zwiększeniu skuteczności testów, znalezieniu bardziej wartościowych błędów, a także w zrozumieniu potrzeb użytkowników i wymagań biznesowych, co z kolei pozwoli na bardziej celowe i skuteczne testowanie. Warto zawsze pamiętać, że testowanie to nie tylko sprawdzanie poprawności kodu, ale także zrozumienie potrzeb użytkowników i biznesu, a pytania, które zadajemy, mogą pomóc w osiągnięciu tego celu.