Hejo,
Jednak nie pojechałem na ten basen. Uznałem, że dzisiaj raz na dobre skończę serię o ISTQB, żeby móc jutro zająć się co ciekawszymi Study Case pewnej znanej firmy IT : )
Ostatnia część z sylabusa ISTQB będzie traktować o testowaniu wspieranym narzędziami, ich typami, skutecznym użyciem, korzyściami z ich używania oraz sposobem wdrażania narzędzi do organizacji. Zaczynajmy!
Polecam obejrzeć również ten paru odcinkowy kurs. Rozjaśni w fajny sposób omawiany temat.
Kandydat potrafi podzielić różne typy narzędzi testowych według ich celów, według czynności w podstawowym procesie testowym oraz w cyklu życia oprogramowania. Potrafi również wyjaśnić samo pojęcie "narzędzia testowego" oraz cel wsparcia narzędzia testowego dla testów.
Narzędzia testowe mogą być wykorzystywane w jednej lub wielu czynnościach wspierających testowanie. Mogą to być:
- narzędzia używane wprost w testach takie jak narzędzia wspierające wykonanie testów, narzędzia generujące dane testowe i narzędzia porównujące wyniki,
- narzędzia wspomagające zarządzanie procesem testowym takie jak narzędzia do zarządzania testami, wynikami testów, danymi, wymaganiami, incydentami, defektami itd. oraz narzędzia raportujące i monitorujące wykonanie testów,
- narzędzia używane w rozpoznaniu (eksploracji), np. narzędzia monitorujące dostęp do plików przez aplikację,
- dowolne narzędzie wspierające testy (w takim znaczeniu arkusz kalkulacyjny jest również narzędziem testowym).
W zależności od kontekstu wsparcie narzędziowe dla testów może mieć jeden lub kilka poniższych celów:
- zwiększenie efektywności czynności testowych przez zautomatyzowanie powtarzających się zadań lub wsparcie dla czynności testowych wykonywanych ręcznie takich jak planowanie testów, projektowanie testów, raportowanie i monitorowanie testów,
- automatyzacja czynności, które wymagałyby wielkich nakładów, gdyby były wykonywanie ręcznie (np. testy statyczne),
- automatyzacja czynności, które nie mogą być wykonane ręcznie (np. testy aplikacji klient-serwer na wielką skalę),
- zwiększenie niezawodności testów (np. przez automatyzację porównywanie dużej ilości danych lub symulacje).
Termin "struktura testowa" jest również często używany przynajmniej w trzech znaczeniach:
- biblioteki testowe, które mogą zostać wykorzystane do zbudowania narzędzi testowych,
- typ projektu automatyzacji testów,
- ogólny proces wykonywania testów.
Klasyfikacja narzędzi testowych
Istnieje wiele narzędzi wspierających różne aspekty testowania. Narzędzia testowe można podzielić na wiele sposobów: według celów, na komercyjne, darmowe, o otwartym kodzie, shareware, według wykorzystywanej technologii etc.
Niektóre narzędzia wspierają jeden rodzaj czynności, inne mogą być przydatne w różnych czynnościach testowych. Narzędzia od jednego dostawcy, a szczególnie narzędzia, które zostały zaprojektowane do współdziałania, mogą zostać powiązane w jeden pakiet.
Niektóre typy narzędzi są inwazyjne w tym sensie, że samo narzędzie może wpływać na wynik rzeczywisty testu. Na przykład czasy uzyskane podczas testów wydajnościowych mogą się różnić, ponieważ narzędzie wykonuje dodatkowe instrukcje, albo można uzyskać różne wyniki pokrycia kodu. Zjawisko to jest nazywane efektem próbnika.
Niektóre z narzędzi testowych są przeznaczone bardziej dla programistów (np. w testach modułowych lub testach integracji modułów).
===============
>Wsparcie narzędziowe dla zarządzania testowaniem i testami
Narzędzia do zarządzania przydają się we wszystkich czynnościach testowych przez cały SLC.
Narzędzia do zarządzania testami
Narzędzia te dostarczają interfejsów do wykonywania zadań, śledzenia defektów oraz zarządzania wymaganiami, jak również wspierają analizę ilościową i raportowanie na temat obiektów testów. Wspierają również śledzenie powiązań pomiędzy obiektami testów i mogą posiadać własne mechanizmy zarządzania wersjami lub interfejs do zewnętrznych narzędzi zarządzających wersjami.
Narzędzia do zarządzania wymaganiami
Narzędzia te przechowują tekst wymagań, ich atrybuty (np. priorytet), generują unikalne identyfikatory i wspierają śledzenie powiązań pomiędzy wymaganiami, a poszczególnymi testami. Mogą one również pomóc w znalezieniu niespójnych lub brakujących wymagań.
Narzędzia do zarządzania incydentami
Narzędzia te przechowują i zarządzają raportami incydentów, to jest defektów, awarii, żądań zmian lub zauważonych problemów i anomalii. Pomagają też zarządzać cyklem życia incydentów, opcjonalnie mogą wspomagać analizy statystyczne.
Narzędzia do zarządzania konfiguracją
Chociaż nie są one w ścisłym tego słowa znaczeniu narzędziami testowymi, są konieczne do przechowywania i zarządzania wersjami testaliów (Wszystkie dokumenty i narzędzia (artefakty) wytworzone i używane podczas procesu testowania niezbędne do planowania, projektowania i wykonywania testów, takie jak dokumentacja, skrypty, wejścia, oczekiwane rezultaty, procedury, pliki, bazy danych, środowiska oraz każde dodatkowe oprogramowanie i narzędzia uzyte podczas testowania) i innego oprogramowania, a w szczególności gdy konfigurowane jest więcej niż jedno środowisko sprzętowo-programowe.
===================================
>Wsparcie narzędziowe dla testów statycznych
Narzędzia wspierające testy statyczne stanowią opłacalny sposób na znajdowanie większej ilości defektów we wcześniejszych fazach życia oprogramowania.
Narzędzia wspierające przeglądy
Wspomagają one proces przeglądu, listy kontrolne, wytyczne dla przeglądów i są wykorzystywane do przechowywania i komunikowania komentarzy z przeglądów, raportów defektów oraz pracochłonności. Mogą również wspierać przeglądy on-line, co jest przydatne, gdy zespół jest duży lub rozproszony geograficznie.
Narzędzia do analizy statycznej
Narzędzia te pomagają programistom i testerom jeszcze przed testami dynamicznymi przez wymuszenie standardów kodowania (włącznie z bezpiecznym programowaniem), analizę struktur i zależności. Mogą również pomóc w planowaniu i analizie ryzyka przez dostarczanie metryk kodu.
Narzędzia do modelowania
Narzędzia te używane są w walidacji modeli oprogramowania (np. fizycznego modelu danych w bazach relacyjnych) do wymienienia niezgodności i wyszukiwania defektów. Narzędzia te pomagają też często w generowaniu przypadków testowych z modeli.
===================================
> Wsparcie narzędziowe dla specyfikacji testów
Narzędzia do projektowania testów
Narzędzia te wykorzystywane są do generowania wejść do testów, wykonywalnych testów lub wyroczni testowych (źródło dostarczające oczekiwanych rezultatów umożliwiające porównanie ich z otrzymanymi rezultatami. Wyrocznią może być istniejący system (np. dla benchmarków), podręcznik użytkownika, wiedza testera, ale nie może być nią kod.)z wymagań, graficznych interfejsów użytkownika, modeli projektowych lub kodu.
Narzędzia do przygotowywania danych testowych
Przetwarzają bazy danych, pliki lub transmisję danych by uzyskać dane do wykorzystania podczas testów. Korzyścią ich stosowania jest to, że dane produkcyjne przeniesione na środowisko testowe są dla ochrony szyfrowane.
===================================
> Wsparcie narzędziowe dla wykonania testów oraz logowania
Narzędzia do wykonania testów
Umożliwiają automatyczne lub półautomatyczne wykonanie testów z wykorzystaniem zapisanych wejść i oczekiwanych wyników, poprzez użycie języka skryptowego, a także zwykle tworzą log testowy dla każdego przebiegu testów. Mogą one zostać również użyte do nagrania testów, zwykle też wykorzystują język skryptowy lub konfigurację opartą na GUI do parametryzowania danych lub dostosowywania testów na inne sposoby.
Jarzma testowe/struktury do testów jednostkowych
Wspomagają testy komponentów lub części systemu przez symulację środowiska, w którym element testowy będzie działała, dostarczając makiety (sterowniki testowe i zaślepki)
Komparatory testowe
Znajdują różnice pomiędzy plikami, bazami danych oraz wynikami testów. Narzędzia wspomagające wykonywanie testów zwykle zawierają komparatory dynamiczne ale porównania po wykonaniu testów mogą być dokonywane przez odrębne narzędzia. Komparator testowy może wykorzystać wyrocznię testową szczególnie w przypadkach, gdy jest zautomatyzowany.
Narzędzia mierzące pokrycie
Narzędzia te w sposób inwazyjny lub nieinwazyjny mierzą odsetek określonych struktur kodu, które zostały pokryte przez zbiór testów.
Narzędzia do testowania zabezpieczeń
Narzędzia te oceniają cechy oprogramowania związane z zabezpieczeniem. Wchodzi w to ocena zdolności oprogramowania do ochrony poufności danych, spójności, uwierzytelniania, autoryzacji, dostępności oraz niezaprzeczalności. Narzędzia do testowania zabezpieczeń są zwykle związane z konkretną technologią, platformą i celem.
=====================================
> Wsparcie narzędziowe dla wydajności i monitorowania
Narzędzia do analizy dynamicznej
Znajdują usterki, które ujawniają się jedynie podczas działania oprogramowania, takie jak zależności czasowe lub wycieki pamięci. Narzędzia tego typu są zwykle używane podczas testów modułowych lub testów integracji modułów oraz podczas testów warstw pośrednich.
Narzędzia do testów wydajnościowych/narzędzia do testów obciążeniowych/narzędzia do testów przeciążeniowych
Raportują oraz monitorują zachowanie systemu w różnych zasymulowanych warunkach użytkowania uwzględniających liczbę równolegle pracujących użytkowników, ich wzorzec aktywacji, częstość i względny procent transakcji. Symulacja obciążenia jest uzyskiwana przez utworzenie wirtualnych użytkowników wykonujących wybrany zbiór transakcji, rozproszonych na wiele maszyn testowych, które są powszechnie nazywane generatorami obciążenia.
Narzędzia do monitorowania
Bezustannie analizują, weryfikują i raportują wykorzystanie konkretnych zasobów systemowych i ostrzegają o możliwych problemach w obsłudze żądań.
======================================
> Wsparcie narzędziowe dla różnych obszarów zastosowań
Ocena jakości danych
Dane stanowią centrum wielu projektów, takich jak projekty konwersji/migracji danych, czy aplikacje takie jak hurtownie danych, a ich krytyczność i wielkość może się różnić. W takich okolicznościach musza zostać użyte narzędzia do oceny jakości danych do przejrzenia i sprawdzenia konwersji danych oraz reguł migracji, po to żeby zapewnić że przetworzone dane są poprawne, kompletne i zgodne ze zdefiniowanymi standardami.
=====================================
Kandydat potrafi opisać krótko potencjalne korzyści oraz ryzyko automatyzacji testów oraz wspierania testów narzędziami. Pamięta specjalne uwarunkowania dla narzędzi wspierających wykonywanie testów, analizę statyczną oraz zarządzanie testami.
Każdy typ narzędzia może wymagać wykonania dodatkowego wysiłku do osiągnięcia prawdziwych i trwałych korzyści. Z używaniem narzędzi wiążą się potencjalne korzyści i możliwości ale wiążę się też z tym pewne ryzyko.
Potencjalnymi korzyściami z używania narzędzi są:
- zredukowana zostaje powtarzająca się praca,
- zwiększa się spójność i powtarzalność,
- ocena jest obiektywna,
- łatwiejszy jest dostęp do danych o testach i testowaniu.
Ryzyko związane z narzędziami do testowania obejmuje:
- nierealistyczne oczekiwania od narzędzia,
- niedoszacowanie czasu, kosztów oraz pracochłonności wdrożenia narzędzia,
- niedoszacowanie czasu i pracochłonności potrzebnych do osiągnięcia znaczących i trwałych korzyści z narzędzia,
- niedoszacowanie pracochłonności utrzymania artefaktów testowych,
- zbytnie poleganie na narzędziu,
- lekceważenie zależności i problemów z współpracą krytycznych narzędzi takich jak narzędzia do zarządzania wymaganiami, do kontroli wersji, do zarządzania incydentami etc.,
- słaba reakcja dostawcy w ramach wsparcia, nowych wersji oraz poprawiania usterek,
- ryzyko wstrzymania projektu dla narzędzia darmowego/open-source,
=====================================
> Specjalne uwagi dla niektórych typów narzędzi
Narzędzia do wykonywania testów
Narzędzia do wykonywania testów uruchamiają skrypty zaprojektowane tak, aby zaimplementować testy przechowywane elektronicznie. Ten typ narzędzi często wymaga wykonania znaczącej ilości pracy, zanim zostaną osiągnięte istotne korzyści.
Nagrywanie akcji wykonywanych przez testy wydaje się być atrakcyjne ale nie skaluje się do dużej liczby zautomatyzowanych skryptów testowych. Nagrany skrypt jest liniową reprezentacją z konkretnymi danymi i akcjami będącymi częścią każdego skryptu. taki typ skryptu może okazać się niestabilny, gdy wystąpią niespodziewane zdarzenia.
Testowanie sterowane danymi wydziale wejścia testowe (dane testowe), zwykle do arkusza kalkulacyjnego i używa bardziej ogólnego skryptu testowego, który może odczytać dane wejściowe i wykonać ten sam skrypt dla różnych danych. Testerzy, którzy nie znają języków skryptowych mogą wtedy tworzyć dane testowe dla tych predefiniowanych skryptów.
Istnieją też inne techniki wykorzystywane w testowaniu sterowanymi danymi, w których zamiast stałych danych zapisanych w arkuszu kalkulacyjnym dane są generowane przy użyciu algorytmów sterowanych parametrami konfigurowalnymi w czasie ich działania i podanymi aplikacji. Na przykład, aby uzyskać powtarzalność, narzędzie może używać algorytmu generującego przypadkowe identyfikatory użytkowników, który jest inicjowany stałą wartością.
W podejściu sterowanym słowami kluczowymi arkusz kalkulacyjny zawiera słowa kluczowe opisujące akcje do wykonania oraz dane testowe. Testerzy mogą w takim przypadku definiować testy przy użyciu słów kluczowych, które zostają dostosowane do testowanej aplikacji.
Techniczna znajomość języków skryptowych jest konieczna przy każdym z wyżej wymienionych podejść.
Niezależnie od tego którakolwiek z technik skryptowych zostanie użyta oczekiwane wyniki dla każdego testu muszą być przechowywane do późniejszych porównań.
Narzędzia do analizy statycznej
Gdy narzędzia do analizy statycznej zostają użyte w kodzie źródłowym mogą wymusić stosowanie się do standardów kodowania, ale takie narzędzie zostanie użyte na kodzie już istniejącym i może generować dużą liczbę komunikatów. Ostrzeżenia nie powodują zatrzymania kompilacji kodu ale powinny być zaadresowane tak, żeby utrzymanie kodu było w przyszłości łatwiejsze.
Narzędzia do zarządzania testami
Narzędzia do zarządzania testami musza się komunikować z innymi narzędziami lub arkuszami kalkulacyjnymi w celu dostarczenia użytecznej informacji w formacie, który najbardziej pasuje do potrzeb organizacji.
=================================
Kandydat potrafi wymienić główne zasady wprowadzania narzędzi do organizacji. Potrafi wymienić cele dowodu słuszności pomysłu w ocenie narzędzia oraz cele fazy pilotażowej we wdrażaniu tego narzędzia. Uznaje, że poza samym zakupem narzędzia potrzebne jest też dobre wsparcie w jego użyciu.
Główne aspekty do wzięcia pod uwagę podczas wyboru narzędzia dla organizacji to:
- ocena dojrzałości organizacji, mocnych i słabych stron oraz identyfikacja możliwości doskonalenia procesu testowania wspierającego narzędziami,
- ocena według jasnych wymagań i obiektywnych kryteriów,
- wykonanie dowodu słuszności pomysłu (proof-of-concept) z użyciem narzędzia testowego po to, żeby zbadać czy jest ono skuteczne dla danego testowanego oprogramowania w ramach istniejącej infrastruktury,
- ocena dostawcy lub firm udzielających wsparcia w przypadku narzędzi komercyjnych,
- identyfikacja wymagań wewnętrznych na doradztwo i szkolenia w użyciu narzędzia,
- ocena potrzeb szkoleniowych z uwzględnieniem obecnych umiejętności automatyzacji testów przez zespół testowy,
- szacowanie stosunku korzyści do kosztów na podstawie konkretnego przypadku biznesowego.
Wdrażanie wybranego narzędzia w organizacji zaczyna się od projektu pilotażowego, który ma następujące cele:
- szczególe zapoznanie się z narzędziem,
- ocena czy i jak narzędzia pasuje do obowiązujących procesów i praktyk oraz ustalenie, co ewentualnie należałoby zmienić,
- ustalenie standardów użycia, zarządzania, przechowywania oraz pielęgnacji narzędzia oraz artefaktów testowych,
- ocena czy korzyści zostaną osiągnięte przy rozsądnych kosztach.
Czynnikami wpływającymi na sukces wdrożenia narzędzia w organizacji są:
-stopniowe wdrażanie narzędzia w pozostałej części organizacji,
- adaptacja i udoskonalenie procesu tak, aby pasował do sposobu używania narzędzia,
- zapewnienie szkoleń i doradztwa nowym użytkownikom,
- zdefiniowanie wytycznych co do użycia narzędzia,
- wdrożenie sposobu na zbieranie użytecznych oraz osiąganych korzyści,
- zapewnienie wsparcia dla zespołu testowego w użyciu danego narzędzia,
- zbieranie wniosków z wykorzystania narzędzia przez wszystkie zespoły.
===================================
Uff, to już wszystko. Tak, praktycznie sam własnoręcznie przeleciałem przez ISTQB pisząc to wszystko (promise, nie było kopiuj-wklej) i jednocześnie utrwalając wiedzę. Mam nadzieję, że przyda się to Wam tak samo, jak przyda się mi :) Z czasem stworzę swoją interpretację ISTQB, bardziej przystępną i popartą konkretnymi przykładami oraz praktyką ale na to musicie poczekać. Nie mam jeszcze odpowiedniej ilości doświadczenia, by móc rozpracować ISTQB w taki sposób, w jaki bym chciał :)
Dziękuję, trzymajcie się!
F.