Testowanie oprogramowania Rodzaje testw Rodzaje testw n Testy

















- Slides: 17
Testowanie oprogramowania Rodzaje testów
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 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 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 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 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 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 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 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 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 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 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ść 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 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 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 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 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 ¨

















