Testowanie oprogramowania Rodzaje testw Rodzaje testw n Testy

  • Slides: 17
Download presentation
Testowanie oprogramowania Rodzaje testów

Testowanie oprogramowania Rodzaje testów

Rodzaje testów n Testy dynamiczne – wykrywanie błędów w programie n Testy statyczne –

Rodzaje testów n Testy dynamiczne – wykrywanie błędów w programie n Testy statyczne – oparte na analizie kodu

Testy dynamiczne n Testy funkcjonalne (functional tests, black-box tests) zakładają znajomość jedynie wymagań wobec

Testy dynamiczne n Testy funkcjonalne (functional tests, black-box tests) zakładają znajomość jedynie wymagań wobec testowanej funkcji n Testy strukturalne (structural tests, white-box tests) zakładające znajomość sposobu implementacji testowanych funkcji.

Testy funkcjonalne n Pełne przetestowanie rzeczywistego systemu jest praktycznie niemożliwe z powodu ogromnej liczby

Testy funkcjonalne n Pełne przetestowanie rzeczywistego systemu jest praktycznie niemożliwe z powodu ogromnej liczby kombinacji danych wejściowych i stanów. n Zakłada się, że jeżeli dana funkcja działa poprawnie dla kilku danych wejściowych, to działa także poprawnie dla całej klasy danych wejściowych. n Fakt poprawnego działania w kilku przebiegach nie gwarantuje zazwyczaj, że błędne wykonanie pojawi się dla innych danych z tej samej klasy.

Testy black-box testing n n Polegają na testowaniu programu bez zaglądania do jego wnętrza

Testy black-box testing n n Polegają na testowaniu programu bez zaglądania do jego wnętrza Powinno obejmować cały zakres danych wejściowych Testujący powinni podzielić dane wejściowe w „klasy równoważności”, co do których istnieje przypuszczenie, że będą powodować te same błędy. Celem jest uniknięcie eksplozji danych testowych Wiele wejść danych (wiele parametrów funkcji) może wymagać zastosowania pewnych systematycznych metod określania ich kombinacji, Np. tablic decyzyjnych lub grafów przyczyna-skutek

Testy strukturalne n Kryterium pokrycia wszystkich instrukcji Trzeba dobrać tak dane wejściowe, aby każda

Testy strukturalne n Kryterium pokrycia wszystkich instrukcji Trzeba dobrać tak dane wejściowe, aby każda instrukcja została wykonana co najmniej raz n Kryterium pokrycia instrukcji warunkowych Trzeba dobrać tak dane wejściowe, aby każdy warunek instrukcji warunkowej został co najmniej raz spełniony i co najmniej raz nie spełniony

Testy white-box testing Pozwalają sprawdzić wewnętrzną logikę programów poprzez odpowiedni dobór danych wejściowych, dzięki

Testy white-box testing Pozwalają sprawdzić wewnętrzną logikę programów poprzez odpowiedni dobór danych wejściowych, dzięki czemu można prześledzić wszystkie ścieżki przebiegu sterowania programu n n n Programiści wstawiają kod diagnostyczny, który pozwala śledzić wewnętrzne przetwarzanie (debbugery) Dane muszą zostać tak dobrane aby każda ścieżka w programie była co najmniej raz przetestowana Nie można pokazać brakujących funkcji w programie (potrafią to testy na zasadzie czarnej skrzynki)

Testowanie programów zawierających pętle n n n Należy dobrać dane wejściowe tak, aby nie

Testowanie programów zawierających pętle n n n Należy dobrać dane wejściowe tak, aby nie została wykonana żadna iteracja pętli, lub jeżeli to nie możliwe została wykonana minimalna liczba iteracji Należy dobrać dane wejściowe tak, aby została wykonana maksymalna liczba iteracji pętli Należy dobrać dane wejściowe tak, aby została wykonana przeciętna liczba iteracji

Programy uruchamiające n Mogą być przydatne dla wewnętrznego testowania, jak i dla testowania, przez

Programy uruchamiające n Mogą być przydatne dla wewnętrznego testowania, jak i dla testowania, przez osoby zewnętrzne. Zakładają testowanie na zasadzie białej skrzynki. n Debuggery zapewniają: Krok po kroku wykonywanie programu ¨ Znajomość zmiennych w każdym kroku programu ¨ Punkty kontrolne ¨ Zarządzanie plikiem źródłowym podczas testowania i ewentualna poprawa wykrytych błędów w tym programie ¨

Analizatory przykrycia kodu n Są to programy umożliwiające ustalenie obszarów kodu źródłowego, które były

Analizatory przykrycia kodu n Są to programy umożliwiające ustalenie obszarów kodu źródłowego, które były wykonane w danym przebiegu testowania. Umożliwiają wykrycie martwego kodu uruchamianego przy bardzo specyficznych danych wejściowych oraz kodu wykonywanego bardzo często. Dają raporty, które można wykorzystać przy testowaniu

Programy porównujące n Są to narzędzia programistyczne umożliwiające porównanie dwóch programów, plików lub zbiorów

Programy porównujące n Są to narzędzia programistyczne umożliwiające porównanie dwóch programów, plików lub zbiorów danych w celu wykrycia cech wspólnych i różnic. Często są niezbędne do porównania wyników testów z wynikami oczekiwanymi. n Ekranowe programy porównujące mogą być bardzo użyteczne dla testowania oprogramowania interakcyjnego. Są niezastąpionym środkiem dla testowania programów z GUI

Testy statyczne n Polegają na analizie programu bez uruchomienia go (są efektywniejsze od testów

Testy statyczne n Polegają na analizie programu bez uruchomienia go (są efektywniejsze od testów strukturalnych). Techniki testowania: Metody formalne: dowody poprawności (bardzo trudne, dla programów o obecnej skali nie znajdują zastosowania) ¨ Metody nieformalne: ¨ n n n Symboliczne śledzenie przebiegu programu (wykonanie programu w „myśli” przez analizujące je osoby Wyszukiwanie typowych błędów Testy nieformalne są niedocenione, chociaż bardzo efektywne w praktyce

Typowe błędy wykrywane statycznie n n n n n Niezainicjowane zmienne Porównania na równość

Typowe błędy wykrywane statycznie n n n n n Niezainicjowane zmienne Porównania na równość liczb zmiennoprzecinkowych Indeksy wykraczające poza tablice Błędne operacje na wskaźnikach Błędy w warunkach instrukcji warunkowych Niekończące się pętle Błędy popełnione dla wartości granicznych (Np. > zamiast >=) Błędne użycie lub pominięcie nawiasów w złożonych wyrażeniach Nieuwzględnienie błędnych danych

Strategia testów nieformalnych n Programista, który dokonał implementacji danego modułu w nieformalny sposób analizuje

Strategia testów nieformalnych n Programista, który dokonał implementacji danego modułu w nieformalny sposób analizuje jego kod. n Kod uznany przez programistę za poprawny jest analizowany przez doświadczonego programistę. Jeżeli znajdzie ona pewną liczbę błędów, moduł jest zwracany programiście do poprawy. n Szczególnie istotne moduły są analizowane przez grupę osób.

Testy systemu n Testy wstępujące – najpierw testowane SA pojedyncze moduły , następnie moduły

Testy systemu n Testy wstępujące – najpierw testowane SA pojedyncze moduły , następnie moduły wyższego poziomu aż do osiągnięcia poziomu całego systemu. Nie zawsze można ta metodę zastosować, bo moduły mogą być od siebie niezależna n Testowanie zstępujące – odwrotnie

Testy pod obciążeniem, testy odporności n Testy obciążeniowe (stress testing) – Celem tych testów

Testy pod obciążeniem, testy odporności n Testy obciążeniowe (stress testing) – Celem tych testów jest zbadanie wydajności i niezawodności systemu podczas pracy pod pełnym lub nawet nadmiernym obciążeniem. Dotyczy to szczególnie systemów wielodostępnych i sieciowych. Systemy takie muszą spełniać wymagania: ¨ ¨ ¨ n dotyczące wydajności liczby użytkowników liczby transakcji na godzinę. Testy odporności (robustness testing) – sprawdzenie działania w przypadku zajścia niepożądanych zdarzeń, Np. ¨ ¨ ¨ zaniku zasilania awarii sprzętowej wprowadzania niepoprawnych danych

Czynniki sukcesu, rezultaty testowania n Czynniki sukcesu: Określenie fragmentów systemu o szczególnych wymaganiach wobec

Czynniki sukcesu, rezultaty testowania n Czynniki sukcesu: Określenie fragmentów systemu o szczególnych wymaganiach wobec niezawodności ¨ Właściwa motywacja osób zaangażowanych w testowanie. Np. stosowanie nagród dla osób testujących za wykrycie szczególnie groźnych błędów, zaangażowanie osób posiadających szczególny talent do wykrycia błędów ¨ n Podstawowe rezultaty testowania: Poprawiony kod, projekt, model i specyfikacja wymagań ¨ Raport przebiegu testów, zwierający informację o przeprowadzonych testach i ich rezultatach ¨ Oszacowanie niezawodności oprogramowania i kosztów konserwacji ¨