Testowanie
Testowanie
oprogramowania
oprogramowania
Marcin Jerzak
Marcin Jerzak
Piotr Fisz
Piotr Fisz
Testowanie oprogramowania
Testowanie oprogramowania
►
Jest to proces związany z wytwarzaniem
Jest to proces związany z wytwarzaniem
oprogramowania. Celem testowania jest wykrywanie
oprogramowania. Celem testowania jest wykrywanie
błędów oraz badanie niezawodności systemu.
błędów oraz badanie niezawodności systemu.
►
Weryfikacja
(verification)
- testowanie zgodności systemu
z wymaganiami zdefiniowanymi w fazie określenia
wymagań.
►
Atestowanie
(validation)
- ocena systemu lub
komponentu podczas lub na końcu procesu jego
rozwoju na zgodności z wyspecyfikowanymi
wymaganiami. Atestowanie jest więc weryfikacją
końcową.
Cele testowania:
Cele testowania:
►
O
Oprogramowanie testujemy głównie
mając na uwadze wykrycie i pozbycie
się błędów w systemie oraz ocena
niezawodności oprogramowania.
Błędy
Błędy
►
Błąd (failure, error) – jest to niepoprawna
konstrukcja znajdująca się w programie, która
może doprowadzić do niewłaściwego działania.
►
Błędne wykonanie (failure) - niepoprawne
działanie systemu w trakcie jego pracy.
►
Należy mieć na uwadze, że te samo błędne
wykonanie programu może być spowodowane
przez różne błędy pracy oprogramowania.
Weryfikacja
Weryfikacja
►
Weryfikacja ma na celu sprawdzenie
Weryfikacja ma na celu sprawdzenie
czy produkt w danej fazie rozwoju
spełnia założenia powstałe podczas
spełnia założenia powstałe podczas
startu danej fazy.
startu danej fazy.
►
Przy weryfikacji możemy wykorzystać:
Przy weryfikacji możemy wykorzystać:
Przeglądy, inspekcje, testowanie,
sprawdzanie, audytowanie.
Przeglądy
Przeglądy
►
Przeglądem nazywamy spotkanie, w
czasie którego produkt lub jego części
są prezentowane kierownictwu,
użytkownikom, klientom lub innym
osobom mającym kontakt z produktem
w celu uzyskania opinii i wskazówek.
►
Rozróżniamy przeglądu formalne i
nieformalne.
Przegląd
Przegląd
Przeglądy formalne mogą mieć postać:
Przeglądy formalne mogą mieć postać:
- przeglądu technicznego (ocena zgodności
- przeglądu technicznego (ocena zgodności
postępu prac względem planu).
postępu prac względem planu).
- przejść (
- przejść (ocena dokumentów, modeli,
projektów i kodu w celu znalezienia i
naprawy błędów
).
).
- audytu (potwierdzenie zgodności z
- audytu (potwierdzenie zgodności z
założeniami,
założeniami,
dokumentami itp. Przez osoby z „zewnątrz
dokumentami itp. Przez osoby z „zewnątrz
firmy”).
firmy”).
Audyt
Audyt
►
Jest to przegląd i ocena jakości
Jest to przegląd i ocena jakości
oprogramowania, która zapewnia
oprogramowania, która zapewnia
zgodność ze standardami i
zgodność ze standardami i
specyfikacjami oraz daje obraz o stanie
specyfikacjami oraz daje obraz o stanie
całego projektu.
całego projektu.
►
Dla zapewnienia lepszych wyników
Dla zapewnienia lepszych wyników
audyt powinien być wykonany przez
audyt powinien być wykonany przez
osoby z zewnątrz.
osoby z zewnątrz.
Inspekcje
Inspekcje
►
Jest to technika polegająca na badaniu kodu
Jest to technika polegająca na badaniu kodu
przez osoby lub grupę osób nie będących
przez osoby lub grupę osób nie będących
autorami programu w celu znalezienia błędów.
autorami programu w celu znalezienia błędów.
►
Średnia skuteczność wynosi 60%.
Średnia skuteczność wynosi 60%.
►
Jest to technika rzadko stosowana ponieważ
Jest to technika rzadko stosowana ponieważ
wymagane są planowanie oraz kompetentni
wymagane są planowanie oraz kompetentni
ludzie. Dodatkowym minusem jest utrudniona
ludzie. Dodatkowym minusem jest utrudniona
analiza kosztów i zysków.
analiza kosztów i zysków.
Inspekcje
Inspekcje
►
Cechy inspekcji:
Cechy inspekcji:
- Sesje są zaplanowane i przygotowane
- Sesje są zaplanowane i przygotowane
- Błędy i problemy są notowane
- Błędy i problemy są notowane
- wykonywane przez techników dla techników
- wykonywane przez techników dla techników
►
Korzyści inspekcji:
Korzyści inspekcji:
- Wzrost produktywności od 30% do 100%
- Wzrost produktywności od 30% do 100%
- Skrócenie czasu projektu od 10% do 30%
- Skrócenie czasu projektu od 10% do 30%
- Skrócenie kosztu i czasu wykonywania
- Skrócenie kosztu i czasu wykonywania
testów od
testów od
5 do 10 razy
5 do 10 razy
Rodzaje testów
Rodzaje testów
►
Wykrywanie błędów – znajdowanie jak
Wykrywanie błędów – znajdowanie jak
największej ilości błędów
największej ilości błędów
►
Testy statystyczne – wykrywanie najczęściej
Testy statystyczne – wykrywanie najczęściej
statystycznie występujących błędów oraz ocena
statystycznie występujących błędów oraz ocena
niezawodności systemu
niezawodności systemu
►
Testy dynamiczne – wykonywanie kawałków
Testy dynamiczne – wykonywanie kawałków
programu i porównywanie wyników z
programu i porównywanie wyników z
poprawnymi
poprawnymi
►
Testy statyczne – analiza kodu
Testy statyczne – analiza kodu
Fazy testowania
Fazy testowania
►
Testy modułów
Testy modułów
►
Testy systemu
Testy systemu
►
Testy akceptacji
Testy akceptacji
►
Wydajność systemu
Wydajność systemu
►
Interfejs systemu
Interfejs systemu
►
Własności operacyjne systemu
Własności operacyjne systemu
►
Testy zużycia zasobów
Testy zużycia zasobów
►
Zabezpieczenie systemu
Zabezpieczenie systemu
►
Przenoszalność systemu
Przenoszalność systemu
►
Niezawodność programu
Niezawodność programu
►
Odtwarzalność oprogramowania
Odtwarzalność oprogramowania
Fazy testowania
Fazy testowania
►
Bezpieczeństwo oprogramowania
Bezpieczeństwo oprogramowania
►
Kompletność i jakość założonych funkcji
systemu
►
Nie przekraczanie ograniczeń
►
Modyfikowalność oprogramowania
►
Obciążalność oprogramowania
►
Skalowność systemu
►
Akceptowalność systemu
►
Jakość dokumentacji
Testowanie na zasadzie czarnej
Testowanie na zasadzie czarnej
skrzynki
skrzynki
►
Metoda polega na testowaniu bez sprawdzania
Metoda polega na testowaniu bez sprawdzania
wnętrza programu
wnętrza programu
►
Powinno się testować dla całego zakresu danych
Powinno się testować dla całego zakresu danych
►
Dane powinno się podzielić na takie, które mogą
Dane powinno się podzielić na takie, które mogą
dawać podobne błędy
dawać podobne błędy
►
Plusem jest możliwości pokazania brakujących
Plusem jest możliwości pokazania brakujących
funkcji
funkcji
Testowanie na zasadzie białej
Testowanie na zasadzie białej
skrzynki
skrzynki
►
Metoda polega na testowaniu wewnętrznej
Metoda polega na testowaniu wewnętrznej
logiki po przez dobranie odpowiednich
logiki po przez dobranie odpowiednich
danych wejściowych, co umożliwia
danych wejściowych, co umożliwia
przetestowanie wszystkich ścieżek.
przetestowanie wszystkich ścieżek.
►
Często jest wymagane przygotowanie danych
Często jest wymagane przygotowanie danych
testowych spełniających nasze wymagania
testowych spełniających nasze wymagania
►
Minusem jest brak możliwości pokazania
Minusem jest brak możliwości pokazania
brakujących funkcji
brakujących funkcji
Okre
Okre
ślenie niezawodności
ślenie niezawodności
oprogramowania
oprogramowania
►
Prawdopodobieństwo błędnego
Prawdopodobieństwo błędnego
wykonania podczas realizacji tranzakcji.
wykonania podczas realizacji tranzakcji.
Miarą nazywamy częstość wystąpienia
Miarą nazywamy częstość wystąpienia
błędnych tranzakcji.
błędnych tranzakcji.
►
Częstotliwość występowania błędnych
Częstotliwość występowania błędnych
wykonań.
wykonań.
►
Średni czas między błędami.
Średni czas między błędami.
►
Dostępność. Jest to prawdopodobieństwo
Dostępność. Jest to prawdopodobieństwo
dostępności systemu w danej chwili.
dostępności systemu w danej chwili.
Oszacowanie niezawodności
Oszacowanie niezawodności
►
Ma duży wpływ na koszt konserwacji
Ma duży wpływ na koszt konserwacji
oprogramowania.
oprogramowania.
►
Pozwala oszacować koszt serwisu,
Pozwala oszacować koszt serwisu,
liczbę personelu, liczbę zgłoszeń
liczbę personelu, liczbę zgłoszeń
błędów.
błędów.
►
Pozwala ocenić i polepszyć proces
Pozwala ocenić i polepszyć proces
wytwarzania.
wytwarzania.
Wykrywanie błędów
Wykrywanie błędów
►
Testy funkcjonalne – zakładają
Testy funkcjonalne – zakładają
znajomość wymagań wobec testowanej
znajomość wymagań wobec testowanej
funkcji. System traktujemy jak czarną
funkcji. System traktujemy jak czarną
skrzynkę, która realizuje funkcje w
skrzynkę, która realizuje funkcje w
nieznany sposób.
nieznany sposób.
►
Testy strukturalne – zakładają znajomość
Testy strukturalne – zakładają znajomość
sposobu implementacji testowanych
sposobu implementacji testowanych
funkcji
funkcji
Testy funkcjonalne
Testy funkcjonalne
►
Uniemożliwiają przetestowanie
Uniemożliwiają przetestowanie
rzeczywistego systemu ze względu na
rzeczywistego systemu ze względu na
liczbę kombinacji danych wejściowych.
liczbę kombinacji danych wejściowych.
►
Zakłada się, że jeśli dana funkcja
Zakłada się, że jeśli dana funkcja
działa dla kilku danych wejściowych
działa dla kilku danych wejściowych
poprawnie to i dla reszty też tak
poprawnie to i dla reszty też tak
będzie.
będzie.
Testy strukturalne
Testy strukturalne
►
Dane wejściowe dobiera się na podstawie
Dane wejściowe dobiera się na podstawie
analizy struktury programu realizującego daną
analizy struktury programu realizującego daną
funkcję.
funkcję.
►
Wyróżniamy kryterium pokrycia wszystkich
Wyróżniamy kryterium pokrycia wszystkich
instrukcji, czyli dane wejściowe są tak dobrane
instrukcji, czyli dane wejściowe są tak dobrane
by każda instrukcja wykonała się co najmniej
by każda instrukcja wykonała się co najmniej
raz oraz kryterium pokrycia warunkowego czyli
raz oraz kryterium pokrycia warunkowego czyli
istnieje możliwość, że dla danych wejściowych
istnieje możliwość, że dla danych wejściowych
nie będą spełnione ich wymagania.
nie będą spełnione ich wymagania.
Co używamy do testowania:
Co używamy do testowania:
►
Programy uruchamiające (debuggers)
Programy uruchamiające (debuggers)
►
Analizatory przykrycia kodu
Analizatory przykrycia kodu
►
Programy porównujące
Programy porównujące
Testy statyczne
Testy statyczne
►
Testy statyczne p
Testy statyczne p
olega
olega
ją na analizie kodu bez
ją na analizie kodu bez
jego uruchamiania.
jego uruchamiania.
►
Dowody poprawności – praktycznie nie używane
Dowody poprawności – praktycznie nie używane
►
Metody nieformalne – jest to analiza kodu prze
Metody nieformalne – jest to analiza kodu prze
programistów. Pozwala znaleźć błędy takie jak:
programistów. Pozwala znaleźć błędy takie jak:
niezainicjowanie zmiennych, przepełnienie
niezainicjowanie zmiennych, przepełnienie
tabeli, nieprawidłowe urzucie kursorów i
tabeli, nieprawidłowe urzucie kursorów i
wskaźników itp.
wskaźników itp.
Testy systemu
Testy systemu
►
Testowanie wstępujące – najpierw
Testowanie wstępujące – najpierw
testujemy moduły niższego poziomu a
testujemy moduły niższego poziomu a
potem wyższego.
potem wyższego.
►
Testowanie zstępujące – najpierw
Testowanie zstępujące – najpierw
testujemy moduły wyższego poziomy a
testujemy moduły wyższego poziomy a
potem niższego.
potem niższego.
Testy pod obciążeniem i
Testy pod obciążeniem i
odpornościowe
odpornościowe
►
Testy obciążeniowe umożliwiają zbadanie
Testy obciążeniowe umożliwiają zbadanie
zachowania, wydajności i niezawodności
zachowania, wydajności i niezawodności
systemu podczas pracy pod pełnym lub
systemu podczas pracy pod pełnym lub
nadmiernym obciążeniem.
nadmiernym obciążeniem.
►
Testy odpornościowe pokazują jak
Testy odpornościowe pokazują jak
zachowuje się system w przypadku np.
zachowuje się system w przypadku np.
zaniku prądu, wprowadzenie
zaniku prądu, wprowadzenie
niepoprawnych danych itp.
niepoprawnych danych itp.
Testy akceptacyjne
Testy akceptacyjne
►
Testy akceptacyjne polegają na przekazaniu
Testy akceptacyjne polegają na przekazaniu
oprogramowania klientom docelowym w celu
oprogramowania klientom docelowym w celu
zatwierdzenia. Jeżeli oprogramowanie jest
zatwierdzenia. Jeżeli oprogramowanie jest
realizowane na zamówienie system przekazywany
realizowane na zamówienie system przekazywany
jest do przetestowania przyszłemu użytkownikowi
jest do przetestowania przyszłemu użytkownikowi
po stronie zleceniodawcy. Takie testy są nazywane
po stronie zleceniodawcy. Takie testy są nazywane
testami alfa.
testami alfa.
►
Dla oprogramowania sprzedawanego rynkowo
Dla oprogramowania sprzedawanego rynkowo
przewidziane są testy polegające na nieodpłatnym
przewidziane są testy polegające na nieodpłatnym
przekazaniu pewnej liczby kopii systemu grupie
przekazaniu pewnej liczby kopii systemu grupie
użytkowników. Testy te są nazywane testami beta.
użytkowników. Testy te są nazywane testami beta.
Czynniki sukcesu
Czynniki sukcesu
Na czynniki sukcesu wpływa:
Na czynniki sukcesu wpływa:
►
Określenie fragmentów o szczególnej
Określenie fragmentów o szczególnej
niezawodności
niezawodności
►
Właściwa motywacja testerów
Właściwa motywacja testerów
►
Poprawa znalezionych błędów
Poprawa znalezionych błędów
►
Oszacowanie niezawodności i kosztów
Oszacowanie niezawodności i kosztów
konserwacji.
konserwacji.
Standardy w testowaniu
Standardy w testowaniu
►
Podstawowym standardem dla testowania
Podstawowym standardem dla testowania
oprogramowania jest
oprogramowania jest
IEEE 829 – 1998 (829
IEEE 829 – 1998 (829
Standard for Software Test Documentation)
Standard for Software Test Documentation)
.
.
Jest to standard określający formę zbioru 8
Jest to standard określający formę zbioru 8
dokumentów potrzebnych w każdej z faz
dokumentów potrzebnych w każdej z faz
testowania oprogramowania. W efekcie
testowania oprogramowania. W efekcie
każdej z tych faz tworzony jest 1 dokument
każdej z tych faz tworzony jest 1 dokument
wynikowy. Standard ten określa dokładnie
wynikowy. Standard ten określa dokładnie
format dokumentów, jednak nie wymaga aby
format dokumentów, jednak nie wymaga aby
wszystkie były wykonane. Nie zawiera także
wszystkie były wykonane. Nie zawiera także
informacji o tym co dokładnie mają zawierać.
informacji o tym co dokładnie mają zawierać.
Standardy w testowaniu
Standardy w testowaniu
►
Test Plan
Test Plan
– dokument planowania zarządzania projektem, który składa się z informacji o
– dokument planowania zarządzania projektem, który składa się z informacji o
tym, w jaki sposób będą prowadzone testy, kto będzie je przeprowadzał, co będzie
tym, w jaki sposób będą prowadzone testy, kto będzie je przeprowadzał, co będzie
testowane, jak długo potrwa cały proces oraz jaki będzie zakres testów.
testowane, jak długo potrwa cały proces oraz jaki będzie zakres testów.
►
Test Design Specification
Test Design Specification
– szczegóły na temat warunków testowania, oczekiwanych
– szczegóły na temat warunków testowania, oczekiwanych
wyników a także kryteriach przejścia testu.
wyników a także kryteriach przejścia testu.
►
Test Case Specification
Test Case Specification
– specyfikuje dane testowe do użycia podczas wdrażania
– specyfikuje dane testowe do użycia podczas wdrażania
warunków testowania określonych w Test Design Specification.
warunków testowania określonych w Test Design Specification.
►
Test Procedure Specification
Test Procedure Specification
– zawiera szczegóły na temat przeprowadzenia każdego
– zawiera szczegóły na temat przeprowadzenia każdego
testu włączając w to założenia oraz poszczególne kroki testów.
testu włączając w to założenia oraz poszczególne kroki testów.
►
Test Item Transmittal Report
Test Item Transmittal Report
– zawiera raporty na temat czasu przejścia testowanych
– zawiera raporty na temat czasu przejścia testowanych
fragmentów oprogramowania między etapami.
fragmentów oprogramowania między etapami.
►
Test Log
Test Log
– zawiera informacje o tym, które przypadki testowania zostały użyte, kto je
– zawiera informacje o tym, które przypadki testowania zostały użyte, kto je
użył i w jakim porządku oraz informacje o ich powodzeniu.
użył i w jakim porządku oraz informacje o ich powodzeniu.
►
Test Incident Report
Test Incident Report
– zawiera informacje o testach zakończonych niepowodzeniem.
– zawiera informacje o testach zakończonych niepowodzeniem.
Informacje o wynikach oraz dlaczego dany test nie powiódł się.
Informacje o wynikach oraz dlaczego dany test nie powiódł się.
►
Test Summary Report
Test Summary Report
– raport ten zawiera wszystkie istotne informacje ujawnione
– raport ten zawiera wszystkie istotne informacje ujawnione
podczas zakończonych testów oraz wyceny jakości procesów testowania, jakości
podczas zakończonych testów oraz wyceny jakości procesów testowania, jakości
oprogramowania poddanego testowi, a także statystyki uzyskane z Incident Report.
oprogramowania poddanego testowi, a także statystyki uzyskane z Incident Report.
Raport referuje również do typów i czasu trwania wykonanych testów w celu
Raport referuje również do typów i czasu trwania wykonanych testów w celu
usprawnienia wszelkich planów związanych z testami w przyszłości. Ostateczna forma
usprawnienia wszelkich planów związanych z testami w przyszłości. Ostateczna forma
dokumentu jest wykorzystywana w celach weryfikacji poprawności testowanego systemu
dokumentu jest wykorzystywana w celach weryfikacji poprawności testowanego systemu
względem wymagań zdefiniowanych przez zleceniodawców.
względem wymagań zdefiniowanych przez zleceniodawców.
Test plan - zawartość
Test plan - zawartość
►
Opis
Opis
►
Odwzorowanie testów na wymagania
Odwzorowanie testów na wymagania
(ang. requirements traceability)
(ang. requirements traceability)
Weryfikacja pokrycia wymagań
Weryfikacja pokrycia wymagań
►
Wyszczególnienie co będzie podlegać testowaniu
Wyszczególnienie co będzie podlegać testowaniu
►
Plan czasowy
Plan czasowy
►
Procedury przeprowadzania testów
Procedury przeprowadzania testów
Zachowywanie wyników testów
Zachowywanie wyników testów
►
Wymagania sprzętowe i programowe
Wymagania sprzętowe i programowe
►
Znane ograniczenia
Znane ograniczenia
Podsumowanie
Podsumowanie
►
Weryfikacja != walidacja
Weryfikacja != walidacja
►
Cel testowania: stwierdzenie błędów w
Cel testowania: stwierdzenie błędów w
systemie
systemie
►
Testowanie musi być uwzględnione od
Testowanie musi być uwzględnione od
początku w planach projektu
początku w planach projektu
Również w alokacji zasobów do projektu
Również w alokacji zasobów do projektu
Test plan – niezbędny dokument
Test plan – niezbędny dokument
projektowy
projektowy