securing debian howto en


Magazine
Przypadek testowy. Teoria i praktyka
Autor: Radosław Smilgin
O autorze:
Radosław Smilgin jest trenerem i konsultantem z zakresu testowania
oprogramowania. Materiał przedstawiony w tym artykule jest częścią
oparty na materiałach szkoleniowych "Dobry Przypadek Testowy".
Basic
Level
1
Magazine Number
Software testing
Section in the magazine
Wprowadzenie
Managerowie patrzą na testowanie z góry. Widzą procesy, zasoby, możliwe straty i przychody. Ten
punkt widzenia na szczęście dotyczy mniejszości. Większośd z testerów widzi testowanie jako ciągłą
pracę u podstaw. Toczymy bitwę o każdą dodatkową godzinę i każdy poprawiony defekt. Na tym polu
bitwy kluczowa jest optymalizacja naszej pracy. Porozmawiajmy więc o przypadku testowym.
W swojej dotychczasowej pracy rozbijałem testowanie na najmniejsze składowe. Poświęciłem dużo
energii i uwagi danym testowym. Czas jednak odejśd od najniższego poziomu i zainteresowad się
przypadkiem testowym jako narzędziem wykorzystania danych testowych.
Przypadek testowy niskiego poziomu
Zacznijmy od analizy definicji przypadku testowego na najniższym jego poziomie. "Słownik wyrażeo
związanych z testowaniem. Wersja 2.0" definiuje go jako: "Przypadek testowy z konkretnymi
wartościami wejściowymi i wynikami oczekiwanymi. Logiczne operatory z przypadków testowych
wysokiego poziomu są zamieniane na konkretne wartości, które odpowiadają celom logicznych
operatorów.". Oznacza to, że przypadek testowy jest złożeniem danych wejściowych, pewnej operacji
logicznej i danych wyjściowych będących oczekiwanym rezultatem.
Rysunek 1. Przykładowa wizualizacja przypadku testowego niskiego poziomu
Rysunek 1 prezentuje przykład przypadku testowego gdzie na test składają się dane wejściowe (1 i 2),
operacja logiczna (suma) oraz dana wyjściowa (3). Komponent "Suma" może mied dowolną
implementację:
a) może byd usługą sieciową (ang. web service), która w oparciu o dwie dane zwraca ich sumę
b) może byd desktopowym kalkulatorem dostępnym z poziomu akcesoriów systemu operacyjnego
Windows
c) może byd również systemem używanym w samolotach, który w oparciu o dwie zmienne
pomiarowe przesyła do kolejnego komponentu ich sumę w celu wyliczenia np. średniej.
Dla każdego z powyższych rozwiązao przypadek testowy będzie wyglądał dokładnie tak samo, chod
jego wykonania będzie miało zupełnie inną postad. Dla a) będzie to przesłanie danych w specjalnie
spreparowanym formacie XML i odebranie podobnego XML-a z wartością dodawania, dla b) przez
interfejs klawiatury lub GUI przekażemy dwie zmienne i wymusimy wyświetlenie na ekranie ich sumy,
a dla c) przygotujemy przypadek jednostkowy, gdzie specjalnie spreparowany sterownik przekaże
nasze zmienne do testowego komponentu.
Różne będą również zakresy wykonywanych testów. Systemom a) i b) prawdopodobnie wystarczą
pojedyncze przypadki testowe dla danego komponentu. Więcej trzeba będzie przygotowad danych
dla systemu c), od którego zależed może bezpieczeostwo lotu. Chod i tu jeden przypadek testowy
będzie w zupełności wystarczający, to musi to byd inny przypadek od tego opisanego na początku.
Przypadek testowy wysokiego poziomu
Przypadek wysokopoziomowy nie zawiera danych testowych, a jedynie pewną informację o
operatorach logicznych. Zgodnie z definicją jest to "przypadek testowy bez konkretnych wartości
danych wejściowych i oczekiwanych rezultatów. "
Rysunek 2. Przykładowa wizualizacja przypadku testowego wysokiego poziomu, gdzie A, B i C są
parametrami pod które podstawia się konkretne dane testowe
Wracając do naszego komponentu sumującego, który zamontowany jest w samolocie, bardziej
właściwy będzie przypadek zobrazowany na rysunku 2. Zakładamy, że potrzebujemy większej ilości
danych, aby mied pewnośd, że nie pojawi się awaria. Dla przypadku, który będzie brzmiał: do
komponentu "Suma" podaj dwie wartości i sprawdz czy otrzymany rezultat jest zgodny wytycznymi
dla implementacji. Wspomniane wytyczne mogą byd wynikiem analizy wymagao i przedstawiad sie w
formie np. tabeli. Przykładowa tabela 1.
Dana A Dana B Dana C Komentarz
1 2 3 Suma
1,1 0,2 1 Wartości przecinkowe zaokrąglane są zawsze w dół do pełnej
wartości całkowitej
-1 -2 0 Wartości ujemne traktowane są jako błędne dane wejściowe,
komponent zwraca 0
257 1 0 Wartości większe i równe 257 traktowane są jako błędne dane
wejściowe, komponent zwraca 0
... ... ... ...
Tabela 1. Przykładowa dane dla przypadku testowego wysokiego poziomu
Wracamy wiec znów do podstaw, czyli danych testowych, których odpowiedni dobór uzupełni
przypadek wysokiego poziomu.
Przypadek w przykładzie
Przeanalizujmy prostą aplikacje z listami rozwijalnymi (rysunek 4) zwracającą ilośd dni przy zadanym
miesiącu i roku. Oczywiście przypadek jest jeden zmieniają się jedynie dane. Wybieramy te miesiące,
które mają 30 i 31 dni oraz luty dla roku przestępnego i nieprzestępnego. Aącznie 4 zestawy danych.
Zgodnie z teorią klas równoważności daje nam to 100% pokrycia klas miesięcy i lat.
Rysunek 4. Interfejs z listą wybieralną dla aplikacji zwracającej ilośd dni miesiąca
Co jednak jeśli interfejs będzie miał pola tekstowe (rysunek 5).
Rysunek 5. Interfejs z polami tekstowymi dla aplikacji zwracającej ilośd dni miesiąca
Przypadek się komplikuje. Jeśli założymy, że nie ma walidacji musimy sobie zadad wiele pytao
odnośnie danych akceptowalnych. Nie ma większych wątpliwości odnośnie roku, jeśli uwzględnimy
realne granice jego podawania np. z przedziału <-9999; 9999>. Trudnośd pojawia się z miesiącem.
Które dane są rozpoznawalne przez system: "STYCZEO", "styczeo", "1", "01", "sty", czy może "I"? A
może wszystkie? Pole tekstowe wymagają więc dodatkowej obsługi komunikatami błędów. Oprócz
czterech podstawowych danych wejściowych musimy również przygotowad dane dla każdego,
możliwego komunikatu błędu.
Składowe przypadku testowego
Wiemy, że na przypadek składają się dane wejściowe i wyjściowe, oraz funkcja, która te dane
przetwarza. Co jeszcze tworzy pełny opis dobrego przypadku testowego?
Na pewno są to wstępne i koocowe warunki wykonania. Warunki wstępne umożliwiają nam
odpowiednie przygotowanie środowiska do wykonania testu. Z kolei koocowe warunki umożliwiają
nam przede wszystkim łączenie przypadków w scenariusze, gdzie informacja wyjściowa z jednego
przypadku jest informacją wejściową dla kolejnego przypadku.
Od strony organizacyjnej przypadek testowy może byd opisany również przez:
a) Unikalny identyfikator dzięki, któremu łatwo przypadek testowy zidentyfikowad
b) Tytuł, który w skrócie opisuje co przypadek robi
c) Wersja, która pozwala nam śledzid zmiany i mapowad przypadki na konkretne wymagania i
implementacje
d) Priorytet, który w optymalnej sytuacji powinien odzwierciedlad ważnośd danej
funkcjonalności dla klienta lub użytkownika
e) Autor, do którego zawsze się można zwrócid z prośbą o uszczegółowienie lub też
interpretację
f) Podstawę testów, czyli dzięki czemu wiemy, jaki jest oczekiwany rezultat.
Oczywiście składowe przypadku testowego będą różnid się w zależności od specyfiki organizacji lub
też narzędzia, które stosujemy do ich przechowywania.
Rysunek 3. Tworzenie przypadku testowego w narzędzi open source RTH
Dobry przypadek testowy
W podsumowaniu warto sobie powiedzied jakie cechy powinien spełniad dobry przypadek testowy.
Przypadek testowy ma cele pokrewne z samym testowaniem. Pierwszy cel to mierzyd jakośd
oprogramowania i pomagad stronie biznesowej podejmowad decyzje odnośnie procesu wytwarzania.
Drugi to wykrywanie błędów. Jeżeli wrócimy do militarnych porównao to dobry przypadek testowy
jest bronią w walce o lepsze oprogramowanie, bez względu na to czy znajduje błędy, czy też nie.
Cechowad się musi skutecznością w znajdywaniu defektów i mied zdolnośd mierzenia jakości
oprogramowania, nawet gdy błędy nie zostaną wykryte.


Wyszukiwarka

Podobne podstrony:
Downgrader HOWTO [EN]
debian faq en
debian apt howto pl
security howto 7 bif7pmbdlmrob6tcblpvwkf37huqfjqc5eeufry bif7pmbdlmrob6tcblpvwkf37huqfjqc5eeufry
security howto 12 sezbwv7n6y47gabon75tio6lcgxevwjrrm4eeta sezbwv7n6y47gabon75tio6lcgxevwjrrm4eeta
Samba 3 ldap PDC HOWTO Debian Sarge 3 1 (2005)
security howto 10 tvgtmcpwo322hl5vo7uep26qcjhacrhtfsnf7nq tvgtmcpwo322hl5vo7uep26qcjhacrhtfsnf7nq
security howto 13 442ylxnyi72eqfya3rkcmf3aqybwose2mqs7tha 442ylxnyi72eqfya3rkcmf3aqybwose2mqs7tha
Red Hat Enterprise Linux 6 Beta Virtualization Security Guide en US
security howto 3 zpephbiqdl4t6dtrzvfpzajgtecytw6eezc3z3q zpephbiqdl4t6dtrzvfpzajgtecytw6eezc3z3q
security howto 14 z3b5loblb2pw4qjxpvcaxiw3pe7hvjayyyf5esq z3b5loblb2pw4qjxpvcaxiw3pe7hvjayyyf5esq
security howto 2 chtz4dahk7w65lxpd7g56vamt2uy3fxv4rogaky chtz4dahk7w65lxpd7g56vamt2uy3fxv4rogaky
security howto 9 f7342fcwwas3fsaa4esqnbl3i7fjisuryfs5aci f7342fcwwas3fsaa4esqnbl3i7fjisuryfs5aci
security howto osdc3t5dnaiuk2szi6fvz2cd2yqyvbvgf4wavay osdc3t5dnaiuk2szi6fvz2cd2yqyvbvgf4wavay
security howto 15 3zax2ehwxqawfacyqfs7solwqd6wh2ertk6x4ci 3zax2ehwxqawfacyqfs7solwqd6wh2ertk6x4ci
security howto 4 oyn2jwy6vqxvea42zoci4csptsaomiur256qxpq oyn2jwy6vqxvea42zoci4csptsaomiur256qxpq
Red Hat Enterprise Linux 6 Virtualization Security Guide en US
Red Hat Enterprise Linux 7 Virtualization Security Guide en US
security howto 5 jbeju3l27fjg2sip3a2spfnomfbvrsveawv6qta jbeju3l27fjg2sip3a2spfnomfbvrsveawv6qta

więcej podobnych podstron