W dzisiejszych czasach technologia jest na tak wysokim poziomie i jest dostępna w tak wielu aspektach życia, że ciężko wyobrazić sobie codziennie funkcjonowanie bez niej. Można powiedzieć nawet więcej – życie bez niej zdaje się być niemożliwe.
Jako wytwór pracy człowieka technologia z założenia nie jest doskonała. Ma swoje plusy, minusy, a przede wszystkim ograniczenia. W końcu nierzadko zawodzi nas w najmniej odpowiednim momencie. Wtedy zazwyczaj pada pytanie: czy można było zapobiec awarii, czy można było jej uniknąć? Podpowiadam: owszem, poprzez przeprowadzanie kompleksowej kontroli jakości wdrażanego rozwiązania.
Świadomość korzyści płynących z dodatkowej weryfikacji oprogramowania rośnie, a potrzeba powierzania jej wykwalifikowanym specjalistom staje się coraz bardziej oczywista. Z tego względu kontrolę jakości coraz chętniej uwzględnia się w cyklu projektowym i coraz wcześniej się ją przeprowadza. Na czym jednak polega proces testowy zgodny z najwyższymi standardami? Na to pytanie odpowiadam w dalszej części artykułu.
Czym jest proces testowy?
Zważywszy na stopień skomplikowania, systemy informatyczne – w tym ich wewnętrzne procesy i integracje – wymagają odpowiedniej weryfikacji przed udostępnieniem klientom. Zajmują się nią specjaliści z działu kontroli jakości – implementują tzw. proces testowy w cykl wytwarzania oprogramowania, dostarczając w ten sposób cennych uwag i wskazując wykryte błędy, zwane defektami.
Proces testowy to inaczej plan, dzięki któremu będzie można wykonać odpowiednie czynności testowe w odpowiednim miejscu rozwoju projektu.
Standardy w testowaniu oprogramowania
Różne podejścia do projektów będą wymagały odmiennego spojrzenia na zagadnienia testowania, a co za tym idzie, w zależności od specyfiki projektu proces testowy może wyglądać inaczej. Istnieją jednak pewne standardy związane z pracą testera, a opracowała je ceniona w środowisku IT organizacja ISTQB® (International Software Testing Qualifications Board). Jej misją jest rozwój zawodu testera i utrzymywanie określonego zbioru rozwiązań w zakresie świadczenia usług testerskich. Zdobycie certyfikatu ISTQB® potwierdza, że tester postępuje według sprawdzonych i międzynarodowo uznanych metodologii, dlatego w Infinity Group traktujemy ten krok jako kluczowy etap rozwoju w naszym dziale QA. Wspomniany certyfikat posiada u nas każdy tester na stanowisku samodzielnego specjalisty, co daje naszym klientom gwarancję najwyższej jakości usług testerskich.
Proces testowy według norm ISTQB®
Pracując zgodnie z modelem proponowanym przez ISTQB®, tester powinien postępować według następujących etapów:
- planowanie testów;
- monitorowanie i nadzór nad testami;
- analiza testów;
- projektowanie testów;
- implementacja testów;
- wykonanie testów;
- finalizacja.
W kolejnych akapitach szczegółowo omówię wymienione etapy procesu testowego.
Planowanie testów
Proces testowy odbywa się według planu, który trzeba przygotować odpowiednio wcześniej – najlepiej równolegle z planowaniem całego projektu. W tym miejscu należy zastanowić się nad celami do osiągnięcia w kolejnych etapach projektu. Poszczególne cele określa się tak, by o ich realizacji świadczyło osiągnięcie deklarowanej jakości. Realizacja celu z kolei determinuje, czy dany etap projektu można uznać za zakończony. Należy również ustalić, jakie techniki testowania zostaną wykorzystane oraz przedstawić harmonogram wykonania zakładanych prac w celu dotrzymania terminu oddania projektu. Wszystko to można porównać do remontu mieszkania, gdzie na początku planujemy co i w jaki sposób będzie wykonane oraz które czynności będą po sobie następowały, by maksymalnie wykorzystać dostępny czas.
Warto pamiętać, że raz przygotowany plan testów, pod wpływem zmian założeń biznesowych, może ulec modyfikacjom na różnych etapach zaawansowania. Konieczna może okazać się wtedy rewizja i rewalidacja elementów zawartych w planie w celu dopasowania go do nowych realiów. Sama realizacja i postępy w projekcie również przyczyniają się do zmian w planie testów, dostarczając więcej informacji zwrotnych, które to uszczegóławiają przygotowany wcześniej, bardziej ogólny plan.
Istotnymi elementami planu testów będą:
- wskazanie celu i opracowanie zakresu pracy;
- określenie stopnia ryzyka na podstawie wyszczególnionych zagrożeń;
- wskazanie elementów poddanych testom;
- określenie sposobu pracy testerów – skupienie się na testach manualnych / automatycznych;
- ustalenie osób biorących udział w testach oraz ich zadań;
- ustalenie środowiska testowego;
- przygotowanie harmonogramu testów;
- oszacowanie niezbędnego budżetu na wykonanie zadań;
- opracowanie dokumentów i szablonów dokumentów związanych z testami.
Monitorowanie i nadzór nad testami
Monitorowanie testów to nic innego jak ocena postępu pracy nad przygotowaniem do testowania oraz samego testowania produktu. Na jej podstawie można wywnioskować czy wszystko idzie zgodnie z założeniami i przedziałami czasowymi określonymi dla konkretnych kroków. Oceniane jest również czy zakładane kryteria akceptacji kolejnych etapów planu testów zostały spełnione, czy też nie. W rzeczywistości etap ten jest rozciągnięty od fazy analizy testów aż do ich ukończenia – w zasadzie odbywa się przez cały czas pracy nad testami.
W celu ułatwienia szacunków można wykorzystać takie informacje, jak:
- zestawienie ilości przeprowadzonych testów do całkowitej liczby zaplanowanych testów;
- ilość zgłoszonych i naprawionych błędów;
- pokrycie kryteriów akceptacji – stopień spełnienia założeń projektowych.
Same miary, nazwane tutaj szacunkami, mogą nie wystarczyć do interpretacji czynności testowych. Dlatego zebrane informacje poddaje się obróbce i przedstawia w postaci raportu, który służy do podsumowania i przekazania informacji na temat stanu testów. Raport ten może być przygotowany dla każdej części procesu testowego, np. jako podsumowanie konkretnego okresu lub na zakończenie wszelkich czynności testowych. Jego forma może być dostosowana do potrzeb interesariuszy, do projektu, którego dotyczy, i mogą się w niej znaleźć takie elementy, jak:
- informacje o statusie testów i produktu;
- szacunki, miary, zestawienia związane z defektami, przypadkami testowymi;
- napotkane zdarzenia i wyjątki niebrane pod uwagę podczas planowania;
- informacje o odstępstwach od zakładanego planu i/lub harmonogramu;
- informacje o nowopowstałych zagrożeniach i ryzykach;
- podsumowanie przeprowadzonych prac.
W przypadku stwierdzenia nieprawidłowości (w tym m.in. wystąpienia zagrożenia związanego z dostarczeniem produktu) należy objąć nadzorem wszelkie czynności, które pozwolą zrealizować założenia przyjęte w planie testów.
Analiza testów
Tak jak w fazie planowania testów określamy cele i zakres pracy, tak na tym etapie wchodzimy na wyższy poziom szczegółowości – po przeanalizowaniu podstawy testów ustalamy, co konkretnie należy przetestować.
Następnie aby dobrać odpowiednie metody testowania, trzeba wziąć pod uwagę poszczególne etapy prac nad produktem – od wymagań biznesowych, funkcjonalnych i systemowych, przez informacje dotyczące projektu, implementację modułów, systemu, baz danych, interfejsów, kończąc na raportach z analizy ryzyka. W kolejnych krokach dokonuje się oceny pod kątem często występujących problemów, ustala się warunki testowe w odniesieniu do funkcji produktu, a na końcu nadaje testom priorytety.
Etap ten przynosi wiele potencjalnych korzyści, między innymi dzięki wczesnemu zdiagnozowaniu nieścisłości w ustaleniach czy też poprzez eliminację wątpliwości podczas fazy produkowania. Przeprowadzenie go pozwala upewnić się, że produkt odpowiada zamówieniu interesariuszy i odzwierciedla potrzeby klientów końcowych.
Projektowanie testów
I tak, poruszając się w kierunku coraz bardziej uszczegółowionego planu całej pracy, dochodzimy do etapu, w którym pytanie „co testować?” zastępujemy pytaniem „jak należy testować?”. Znamy już cel, zakres i obiektu testów. Przyszedł więc czas na to, by warunki testowe zastąpić przypadkami testowymi.
Do głównych celów tego etapu należy:
- określenie rodzaju przypadków testowych (niskiego bądź wysokiego poziomu) w zależności od testowanego elementu produktu;
- wybór technik do wykorzystania podczas przeprowadzania testów z przygotowanymi danymi testowymi, które zasilą testy;
- zaprojektowanie środowiska testowego umożliwiającego uzyskanie wiarygodnych wyników wraz z niezbędnymi narzędziami;
- nadanie priorytetu przypadkom testowym.
W myśl tych zasad należy projektować przypadki testowe tak, aby były powtarzalne, weryfikowalne i były związane z testowanym elementami. Powinny również zawierać następujące elementy:
- konkretny cel;
- warunki wstępne – stan środowiska, produktu, który musi zaistnieć przed rozpoczęciem testu;
- spodziewane rezultaty testów;
- kryteria zaliczenia bądź niezaliczenia testu;
- warunki wyjściowe – stan środowiska po przeprowadzonych testach – np. nowe rekordy w bazie danych.
Tak przygotowane przypadki czekają na kolejny etap, w którym zostaną im przydzielone konkretne dane.
Implementacja testów
Nim właściwe testowanie rozpocznie się na dobre, przypadki testowe należy uszeregować według priorytetów. Kolejnym krokiem będzie przygotowanie wszelkich danych, które następnie trafią do środowiska testowego oraz danych, które będą użyte podczas przeprowadzania testów. Przypadki testowe można grupować i łączyć w większe zbiory tworząc procedury testowe – z nich można później utworzyć zestawy testowe.
Wspominając o środowiskach testowych, warto dodać, że etap implementacji jest odpowiednim czasem, by w pełni przygotować te elementy, od których zależy rozpoczęcie testów. Jest to m.in.:
- konfigurowanie serwerów wraz z podłączonymi do nich peryferiami (jeżeli są wymagane);
- konfigurowanie systemów, instalacja niezbędnego oprogramowania oraz jego uruchomienie i walidacja;
- zapewnienie zaślepek, symulatorów w miejsce jeszcze niewytworzonych modułów;
- potwierdzenie dostępności osób odpowiedzialnych za środowisko testowe i jego utrzymanie.
Po tak przygotowanym etapie przychodzi czas na rozpoczęcie testowania.
Wykonanie testów
Jest to faza, która najczęściej utożsamia testera z jego zawodem. I słusznie, wszak wcześniejsze czynności prowadzą do momentu, gdzie – mając niezbędne informacje, przygotowane środowisko – można zacząć sprawdzać system lub jego część (czy to pod kątem defektów, czy też użyteczności).
Na tym etapie efektem pracy jest uzyskanie odpowiedzi, czy przypadek testowy „przeszedł” – tj. czy otrzymaliśmy zachowanie lub stan zgodny z oczekiwaniami, czy też test został zakończony niepowodzeniem (wystąpiło zachowanie niezgodne z oczekiwaniami).
Warto tutaj wspomnieć o tym, że testy piszą również ludzie, a co za tym idzie – produkt ich pracy może być obarczony ryzkiem błędu. Błędne założenie w przypadku testowym prowadzi do fałszywych wyników, a to z kolei – do fałszywych wniosków, że w aplikacji lub systemie jest defekt. W takim przypadku warto dokonać przeglądu samego testu, aby wykluczyć błędne założenia. Wykonanie testów to jedno – uzyskane wyniki zbiera się i zestawia z faktycznymi oczekiwaniami co do tego, jak aplikacja lub system powinny się zachowywać w trakcie wykonywania przypadków testowych.
W momencie występowania defektów dokonuje się analizy ich prawdopodobnych przyczyn a następnie zgłasza zespołowi programistów w celu ich weryfikacji i naprawienia. Podczas fazy testowania wykonuje się również testy potwierdzające naprawę poprzednio zgłoszonych defektów czy testy regresji. Całość zamyka się w raport, który stanowi bardzo cenne źródło informacji o kondycji testowanych elementów.
Finalizacja
Ostatni z opisywanych etapów możemy potraktować jako podsumowanie całego wysiłku włożonego w przygotowanie, realizację i dokumentowanie całego procesu testowego. To właśnie teraz przychodzi czas na archiwizację środowiska testowego, danych testowych (które posłużyły do przeprowadzenia testów) oraz innych elementów w zbiór zwany testaliami, które mogą się przydać w przyszłości.
Testalia przekazuje się zespołom odpowiedzialnym za utrzymanie czy też klientowi, jeżeli tylko odniesie korzyść z ich użycia. Wreszcie, dokonuje się aktualizacji dokumentacji, zbiera się uwagi i wnioski z przeprowadzonych czynności testowych oraz analizuje je w celu usprawnienia procesów w następnych wydaniach czy też projektach.
Podsumowanie
W myśl zasady, że im wcześniej znaleziony defekt, tym jest tańszy jest w naprawieniu, proces testowy warto, a nawet należy, implementować w projekcie tak szybko, jak jest to możliwe. Wczesne wykrywanie problemów nie tylko zwraca uwagę na kwestie użyteczności i funkcjonalności produktu, ale także pozwala oszczędzić czas i pieniądze, które należy zainwestować w naprawę zbyt późno zidentyfikowanych błędów. Nikt, komu zależy na produkcie wysokiej jakości, nie powinien lekceważyć korzyści płynących z odpowiednio przeprowadzonego procesu testowego. Nie powinien także oszczędzać na tym etapie projektu, lecz zainwestować we współpracę z wykwalifikowanymi specjalistami ds. testów i jakości.
Wzajemna współpraca pomiędzy zespołem testerów a interesariuszami pozwala osiągnąć najlepsze efekty, o czym stale przekonujemy się w Infinity Group, gdzie jakość oprogramowania stawiamy od zawsze na pierwszym miejscu. Jesteśmy gotowi dostarczyć produkt spełniający unikalne potrzeby biznesowe i zadbać o najwyższą jakość wdrożenia. Jeśli chcesz dowiedzieć się więcej o naszych usługach testerskich – testów Kentico, Sitecore i innych oferowanych przez nas produktów – skontaktuj się z naszym przedstawicielem i porozmawiajmy o Twoim projekcie.
Źródła
- ISTQB® Certyfikowany Tester – Poziom Podstawowy 2018 – Sylabus
- ISTQB® Certyfikowany Tester – Poziom zaawansowany – Analityk Testów wersja 3.1
- https://www.ibm.com/docs/pl/engineering-lifecycle-management-suite/lifecycle-management/6.0.3?topic=testing-developing-manual-test-scripts
- http://smurf.mimuw.edu.pl/external_slides/