BYT 2005 Testowanie oprogramowania

background image

Testowanie
oprogramowania

Rodzaje testów

background image

Rodzaje testów

Testy dynamiczne – wykrywanie
błędów w programie

Testy statyczne – oparte na analizie
kodu

background image

Testy dynamiczne

Testy funkcjonalne (functional tests, black-box tests)

zakładają znajomość jedynie wymagań wobec testowanej
funkcji

Testy strukturalne (structural tests, white-box tests)

zakładające znajomość sposobu implementacji testowanych
funkcji.

background image

Testy funkcjonalne

Pełne przetestowanie rzeczywistego systemu jest
praktycznie niemożliwe z powodu ogromnej liczby
kombinacji danych wejściowych i stanów.

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.

Fakt poprawnego działania w kilku przebiegach nie
gwarantuje zazwyczaj, że błędne wykonanie nie pojawi się
dla innych danych z tej samej klasy.

background image

Testy black-box testing

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

background image

Testy strukturalne

Kryterium pokrycia wszystkich instrukcji
Trzeba dobrać tak dane wejściowe, aby każda instrukcja
została wykonana co najmniej raz

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

background image

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

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)

background image

Testowanie programów

zawierających pętle

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

background image

Programy uruchamiające

Mogą być przydatne dla wewnętrznego testowania, jak i dla
testowania, przez osoby zewnętrzne. Zakładają testowanie
na zasadzie białej skrzynki.

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

background image

Analizatory przykrycia kodu

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

background image

Programy porównujące

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.

Ekranowe programy porównujące mogą być bardzo
użyteczne dla testowania oprogramowania interakcyjnego.
Są niezastąpionym środkiem dla testowania programów z
GUI

background image

Testy statyczne

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:

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

background image

Typowe błędy wykrywane

statycznie

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

background image

Strategia testów
nieformalnych

Programista, który dokonał implementacji danego modułu w

nieformalny sposób analizuje jego kod.

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.

Szczególnie istotne moduły są analizowane przez grupę

osób.

background image

Testy systemu

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

Testowanie zstępujące – odwrotnie

background image

Testy pod obciążeniem, testy

odporności

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:

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

background image

Czynniki sukcesu, rezultaty

testowania

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

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


Document Outline


Wyszukiwarka

Podobne podstrony:
BYT 2006 Testowanie oprogramowania
BYT 2003 Testowanie oprogramowania
BYT 2003 Testowanie oprogramowania
BYT 2005 Pomiar funkcjonalnosci oprogramowania
BYT 2005 Cykl zyciowy oprogramowania
BYT 2005 Pomiar funkcjonalnosci oprogramowania
BYT 2005 Functional size measurement
BYT 2005 Software testing
BYT 2005 Role w zespole projektowym
BYT 2005 Microsoft Office Project 2003 Professional
Testowanie oprogramowania
Projekt plan testowania oprogramowania (2)
BYT 2005 Komunikacja
BYT 2005 Project management
Testowanie oprogramowania
BYT 2005 Komunikacja w zespole projektowym
automatyczne testowanie oprogramowania
Sztuka testowania oprogramowania 2
Sztuka testowania oprogramowania

więcej podobnych podstron