Po co testujemy oprogramowanie? Definicja testowania
Czy testerzy oprogramowania są potrzebni? Przecież programiści sami mogą sprawdzić swój kod...
Choć zawód testera oprogramowania (czy pokrewnych stanowisk, jak np. QA Engineer) staje się coraz bardziej popularny, dalej istnieją firmy szukające oszczędności na tym polu. Wychodzą z założenia, że aplikacje może "przeklikać" programista - bo przecież osoba pisząca kod doskonale wie, jak powinno działać dane rozwiązanie i gdzie są jego słabe punkty. Czy to dobre podejście? Pewnie już się domyślacie, że nie.
Definicja testowania
Wbrew pozorom, definicja testowania oprogramowania nie jest łatwa do określenia. Pytając kilku osób pracujących w IT, prawdopodobnie otrzymacie odmienne odpowiedzi. Ktoś powie, że testowanie to używanie i ocenianie oprogramowania. To prawda. A może testowanie to szukanie defektów i sprawdzenie poprawności działania funkcjonalności aplikacji? To też się zgadza.
Z pomocą przychodzi definicja testowania prosto od ISTQB, czyli organizacji standaryzującej procesy i techniki związane z oprogramowaniem.
Proces składający się ze wszystkich czynności cyklu życia, zarówno statycznych, jak i dynamicznych, skoncentrowany na planowaniu, przygotowaniu i ocenie oprogramowania oraz powiązanych produktów w celu określenia, czy spełniają one wyspecyfikowane wymagania oraz na wykazaniu, że są one dopasowane do swoich celów oraz na wykrywaniu usterek.
Znając definicję możemy przejść do odpowiedzi na główne pytanie...
Po co testujemy oprogramowanie?
Wracając do programistów testujących swoją pracę. Jasne, mogą to zrobić, ale sprawdzając swoje dzieło, nigdy nie spojrzymy na nie obiektywnie. W takich sytuacjach zazwyczaj testowane są tylko podstawowe przypadki - bez szerszego zastanowienia się, co użytkownik mógłby zrobić inaczej (a uwierzcie, cena błędu może być wysoka). W tym miejscu do akcji wkraczają testerzy oprogramowania, których zadaniem jest nie tylko weryfikacja funkcjonalności zgodnie ze spisanymi wcześniej wymaganiami, ale też wcielenie się w rolę klienta. Tester nie powinien opierać się wyłącznie na pozytywnych przypadkach użycia oprogramowania, ale też na negatywnych.
Pozytywne i negatywne ścieżki oprogramowania
Czym są pozytywne i negatywne przypadki użycia oprogramowania? W rozjaśnieniu tych dwóch pojęć pomoże nam przykład - wyobraźcie sobie aplikację służącą do konwersji formatu JPG na PDF. Prosty program, który po otrzymaniu obrazka JPG zwraca dokument PDF.
Pozytywnym przypadkiem użycia oprogramowania jest wskazanie pliku JPG i oczekiwanie, że format pliku zostanie zmieniony na PDF. Jeśli konwersja odbędzie się prawidłowo, można stwierdzić, że aplikacja zadziałała tak jak oczekiwano.
Ale przecież użytkownik może wybrać inny plik (np. EXE) - i na taką sytuację aplikacja musi być przygotowana, bo jest to przykład negatywnego przypadku użycia oprogramowania. Inaczej mówiąc - sprawdzanie negatywnych przypadków użycia, to testowanie ścieżek nieoczekiwanych czy nieoczywistych. Uwierzcie, jeśli jakaś ścieżka jest możliwa do wykonania, to któryś z użytkownik na pewno ją przejdzie. Dlatego niezwykle ważna jest reakcja oprogramowania na nieobsługiwane wyjątki - mogą to być komunikaty wyświetlane użytkownikowi czy blokada pewnych działań. Odnosząc się do przykładowej aplikacji - konwertowanie pliku EXE do PDF jest technicznie niemożliwe, ale program musi to odpowiednio zakomunikować użytkownikowi, a nie przestać działać.
Czy to na pewno dobre rozwiązanie?
Od testerów oprogramowania wymaga się nie tylko wyszukiwania błędów i sprawdzania, czy aplikacja działa zgodnie z wymaganiami. Niezwykle istotne jest wcielenie się w rolę użytkownika i znalezienie odpowiedzi na pytanie, czy dane rozwiązanie jest przyjemne w obsłudze. Czasami rozwiązanie jest zgodne z wymaganiami (czyli pozwala wykonać konkretną czynność w aplikacji), ale jego wykonanie czy przyjazność dla użytkowników pozostawia wiele do życzenia.
Tym razem posłużę się przesadzonym, ale świetnie wyjaśniającym przykładem. Czy powyższe rozwiązanie pozwala na wprowadzenie numeru telefonu? Tak, więc teoretycznie spełnia swoje zadanie. Ale czy jest to wygodne dla użytkownika? Oczywiście, że nie. I to właśnie rolą testera oprogramowania jest wskazywanie nie do końca poprawnych zachowań aplikacji.
Chcesz być na bieżąco?
Zapisz się do mojego newslettera i otrzymuj wiadomości o nowych wpisach. Przy okazji dorzucę też ciekawe artykuły ze świata IT :)
Dziękuję, że czytasz mojego bloga!
Masz jakieś pytania? Z chęcią odpowiem :)