Testowanie Testowanie
oprogramowania oprogramowania
Marcin Jerzak Marcin Jerzak
Piotr Fisz
Piotr Fisz
Testowanie oprogramowania Testowanie oprogramowania
►
Jest to proces związany z wytwarzaniem oprogramowania. Jest to proces związany z wytwarzaniem oprogramowania.
Celem testowania jest wykrywanie błędów oraz badanie Celem testowania jest wykrywanie błędów oraz badanie
niezawodności systemu.
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:
► Oprogramowanie testujemy głównie mając O 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 czy Weryfikacja ma na celu sprawdzenie produkt w danej fazie rozwoju spełnia spełnia
założenia powstałe podczas startu danej założenia powstałe podczas startu danej
fazy.
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 założeniami, - audytu (potwierdzenie zgodności z 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 zgodność oprogramowania, która zapewnia zgodność
ze standardami i specyfikacjami oraz daje ze standardami i specyfikacjami oraz daje
obraz o stanie całego projektu.
obraz o stanie całego projektu.
► Dla zapewnienia lepszych wyników audyt Dla zapewnienia lepszych wyników audyt powinien być wykonany przez osoby z
powinien być wykonany przez osoby z zewnątrz.
zewnątrz.
Inspekcje Inspekcje
► Jest to technika polegająca na badaniu kodu przez Jest to technika polegająca na badaniu kodu przez osoby lub grupę osób nie będących autorami
osoby lub grupę osób nie będących autorami programu w celu znalezienia błędów.
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 ludzie.
wymagane są planowanie oraz kompetentni ludzie.
Dodatkowym minusem jest utrudniona analiza Dodatkowym minusem jest utrudniona analiza
kosztów i zysków.
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 testów od - Skrócenie kosztu i czasu wykonywania testów od
5 do 10 razy
5 do 10 razy
Rodzaje testów Rodzaje testów
► Wykrywanie błędów – znajdowanie jak największej Wykrywanie błędów – znajdowanie jak największej ilości błędów
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 poprawnymi programu i porównywanie wyników z 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 logiki Metoda polega na testowaniu wewnętrznej logiki po przez dobranie odpowiednich danych
po przez dobranie odpowiednich danych wejściowych, co umożliwia przetestowanie wejściowych, co umożliwia przetestowanie
wszystkich ścieżek.
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 wykonania Prawdopodobieństwo błędnego wykonania podczas realizacji tranzakcji. Miarą
podczas realizacji tranzakcji. Miarą
nazywamy częstość wystąpienia błędnych nazywamy częstość wystąpienia błędnych
tranzakcji.
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, liczbę Pozwala oszacować koszt serwisu, liczbę personelu, liczbę zgłoszeń błędów.
personelu, liczbę zgłoszeń 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ą znajomość Testy funkcjonalne – zakładają znajomość wymagań wobec testowanej funkcji. System wymagań wobec testowanej funkcji. System
traktujemy jak czarną skrzynkę, która traktujemy jak czarną skrzynkę, która
realizuje funkcje w nieznany sposób.
realizuje funkcje w nieznany sposób.
► Testy strukturalne – zakładają znajomość Testy strukturalne – zakładają znajomość
sposobu implementacji testowanych funkcji
sposobu implementacji testowanych funkcji
Testy funkcjonalne Testy funkcjonalne
► Uniemożliwiają przetestowanie Uniemożliwiają przetestowanie
rzeczywistego systemu ze względu na liczbę rzeczywistego systemu ze względu na liczbę
kombinacji danych wejściowych.
kombinacji danych wejściowych.
► Zakłada się, że jeśli dana funkcja działa dla Zakłada się, że jeśli dana funkcja działa dla kilku danych wejściowych poprawnie to i dla kilku danych wejściowych poprawnie to i dla
reszty też tak będzie.
reszty też tak będzie.
Testy strukturalne Testy strukturalne
► Dane wejściowe dobiera się na podstawie analizy Dane wejściowe dobiera się na podstawie analizy struktury programu realizującego daną funkcję.
struktury programu realizującego daną funkcję.
► Wyróżniamy kryterium pokrycia wszystkich Wyróżniamy kryterium pokrycia wszystkich
instrukcji, czyli dane wejściowe są tak dobrane by instrukcji, czyli dane wejściowe są tak dobrane by
każda instrukcja wykonała się co najmniej raz oraz każda instrukcja wykonała się co najmniej raz oraz
kryterium pokrycia warunkowego czyli istnieje kryterium pokrycia warunkowego czyli istnieje
możliwość, że dla danych wejściowych nie będą możliwość, że dla danych wejściowych nie będą
spełnione ich wymagania.
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 jego ją na analizie kodu bez jego uruchamiania.
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 tabeli, niezainicjowanie zmiennych, przepełnienie tabeli, nieprawidłowe urzucie kursorów i wskaźników itp.
nieprawidłowe urzucie kursorów i 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 testujemy Testowanie zstępujące – najpierw testujemy moduły wyższego poziomy a potem
moduły wyższego poziomy a potem niższego.
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 niepoprawnych zaniku prądu, wprowadzenie niepoprawnych
danych itp.
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 . Jest to standard określający formę zbioru 8
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 każdej z testowania oprogramowania. W efekcie każdej z
tych faz tworzony jest 1 dokument wynikowy.
tych faz tworzony jest 1 dokument wynikowy.
Standard ten określa dokładnie format Standard ten określa dokładnie format
dokumentów, jednak nie wymaga aby wszystkie dokumentów, jednak nie wymaga aby wszystkie
były wykonane. Nie zawiera także informacji o tym były wykonane. Nie zawiera także informacji o tym
co dokładnie mają zawierać.
co dokładnie mają zawierać.
Standardy w testowaniu Standardy w testowaniu
► Test Plan – dokument planowania zarządzania projektem, który składa się z informacji o tym, w jaki Test Plan – 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 testowane, jak długo potrwa 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.
cały proces oraz jaki będzie zakres testów.
► Test Design Specification – szczegóły na temat warunków testowania, oczekiwanych wyników a Test Design Specification – szczegóły na temat warunków testowania, oczekiwanych wyników a także kryteriach przejścia testu.
także kryteriach przejścia testu.
► Test Case Specification – specyfikuje dane testowe do użycia podczas wdrażania warunków Test Case Specification – specyfikuje dane testowe do użycia podczas wdrażania warunków testowania określonych w Test Design Specification.
testowania określonych w Test Design Specification.
► Test Procedure Specification – zawiera szczegóły na temat przeprowadzenia każdego testu Test Procedure Specification – zawiera szczegóły na temat przeprowadzenia każdego testu włączając w to założenia oraz poszczególne kroki testów.
włączając w to założenia oraz poszczególne kroki testów.
► Test Item Transmittal Report – zawiera raporty na temat czasu przejścia testowanych Test Item Transmittal Report – zawiera raporty na temat czasu przejścia testowanych fragmentów oprogramowania między etapami.
fragmentów oprogramowania między etapami.
► Test Log – zawiera informacje o tym, które przypadki testowania zostały użyte, kto je użył i w jakim Test Log – 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.
porządku oraz informacje o ich powodzeniu.
► Test Incident Report – zawiera informacje o testach zakończonych niepowodzeniem. Informacje o Test Incident Report – zawiera informacje o testach zakończonych niepowodzeniem. Informacje o wynikach oraz dlaczego dany test nie powiódł się.
wynikach oraz dlaczego dany test nie powiódł się.
► Test Summary Report – raport ten zawiera wszystkie istotne informacje ujawnione podczas Test Summary Report – raport ten zawiera wszystkie istotne informacje ujawnione podczas
zakończonych testów oraz wyceny jakości procesów testowania, jakości oprogramowania poddanego zakończonych testów oraz wyceny jakości procesów testowania, jakości oprogramowania poddanego testowi, a także statystyki uzyskane z Incident Report. Raport referuje również do typów i czasu testowi, a także statystyki uzyskane z Incident Report. Raport referuje również do typów i czasu trwania wykonanych testów w celu usprawnienia wszelkich planów związanych z testami w trwania wykonanych testów w celu usprawnienia wszelkich planów związanych z testami w
przyszłości. Ostateczna forma dokumentu jest wykorzystywana w celach weryfikacji poprawności przyszłości. Ostateczna forma dokumentu jest wykorzystywana w celach weryfikacji poprawności testowanego systemu względem wymagań zdefiniowanych przez zleceniodawców.
testowanego systemu 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ówZachowywanie wyników testów
►
Wymagania sprzętowe i programowe Wymagania sprzętowe i programowe
►