• Nie Znaleziono Wyników

Testowanie oprogramowania

N/A
N/A
Protected

Academic year: 2021

Share "Testowanie oprogramowania"

Copied!
17
0
0

Pełen tekst

(1)

Testowanie

oprogramowania

Rodzaje testów

(2)

Rodzaje testów

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

Testy statyczne – oparte na analizie kodu

(3)

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.

(4)

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.

(5)

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

(6)

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

(7)

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)

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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.

(15)

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

(16)

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

(17)

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

Cytaty

Powiązane dokumenty

Klauzula informacyjna: dotycząca przetwarzania danych osobowych w procesie rekrutacji do Szkoły Podstawowej im. Administratorem Paostwa danych osobowych jest: Szkoła Podstawowa

 Dane osobowe zawarte w aktach ucznia (teczka ucznia) są przetwarzane przez okres jego nauki w szkole, a następnie przez okres archiwizowania danych arkuszy ocen, czyli

Materiały eksploatacyjne muszą być nowe i nieużywane, pierwszej kategorii oraz wyprodukowane przez producenta oferowanych drukarek.. Dodatkowo 2 komplety oryginalnych tonerów

Pani/Pana dane osobowe będą przetwarzane w celu prowadzenia postępowania rekrutacyjnego do klasy I publicznej szkoły podstawowej dla kandydatów zamieszkałych poza

Jeśli zatem, zdaniem rządu, a zwłaszcza ministra finansów, przeszkodą w zwiększeniu nakładów na pu- bliczną ochronę zdrowia jest jej „nieszczelność”, wzy- wam Pana

4 przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o ochronie danych) (Dz. Dane osobowe zawarte w niniejszym wniosku i załącznikach do

- możliwość pracy na oraz współtworzenia jednego dokumentu przez wielu użytkowników usługi Office 365 jednocześnie.. - możliwość udostępniania

Rozesłanie raportu nt stanu diagnozy ekonomii społecznej do badanych podmiotów tj. Powiatowego Zespołu ds. Ekonomii Społecznej oraz przedstawicieli Stowarzyszenia ESWIP,