21(45) Testowanie, weryfikacja i walidacja oprogramowaniaid 29151 ppt

background image

Inżynieria oprogramowania

Testowanie, weryfikacja i

walidacja oprogramowania

background image

Slajd 2

Plan wykładu

• Podstawowe pojęcia
• Co testujemy?
• Rodzaje testów
Testy statystyczne
Testy dynamiczne
Testy statyczne
• Narzędzia wykorzystywane podczas

testowania

• Testy systemu
• Audyt
• Inspekcie oprogramowania

background image

Slajd 3

Podstawowe pojęcia

Testowanie

Testowanie

- polega na przeprowadzeniu

eksperymentów z pewnymi częściami systemu (lub jego

całością), wykorzystujące specjalnie dobrane dane

testowe i porównaniu wyników uzyskanych z

oczekiwanymi. Tak postępując można w sposób

kontrolowany i systematyczny, zademonstrować

obecność określonej funkcjonalności systemu oraz badać

obecność niepożądanych efektów

Weryfikacja

Weryfikacja

jest to testowanie oprogramowania pod

względem wymagań zdefiniowanych w fazie analizy.

Walidacja

Walidacja

(ang. validation) - ocena systemu podczas

lub na końcu procesu jego rozwoju na zgodność z

rzeczywistymi wymaganiami użytkownika

background image

Slajd 4

Typowe błędy

Klasa błędu Możliwy błąd

Funkcjonalny

zła lub brakująca funkcja

Systemowy

pomylone interfejsy, nieprawidłowe zarządzanie zasobami

Przetwarzania

niewłaściwe przetwarzanie danych

Danych

błędna specyfikacja, projekt, rozmieszczenie lub inicjalizacja

struktur danych

Kodowania

niewłaściwe użycie języka programowania

Dokumentacyjny niepełna lub błędna treść dokumentu

background image

Slajd 5

Co testujemy?

background image

Slajd 6

Co testujemy? 1/4

Kompletność i jakość

Kompletność i jakość założonych funkcji
systemu

Wydajność

Wydajność systemu i poszczególnych jego
funkcji

Zabezpieczenie systemu

Zabezpieczenie systemu - odporność systemu
na naruszenia prywatności, tajności,
integralności, spójności i dostępności

Własności operacyjne systemu, np.

wymagania organizacyjne, jakość komunikatów
systemu, jakość informacji o błędach, jakość
pomocy

background image

Slajd 7

Co testujemy? 2/4

Przenoszalność oprogramowania

Przenoszalność oprogramowania - poprawność
działania w zróżnicowanym środowisku, różnych
rozmiarach zasobów i rodzajach sprzętu

Odtwarzalność oprogramowania

Odtwarzalność oprogramowania (ang.
maintainability) - mierzoną zwykle średnim czasem
doprowadzenia do sprawnego działania po
wystąpieniu awarii (od zgłoszenia awarii do
ponownego działania)

Bezpieczeństwo oprogramowania

Bezpieczeństwo oprogramowania - stopień
minimalizacji katastrofalnych skutków wynikających
z niesprawnego działania (standardowy przykład -
awaria zasilania)

background image

Slajd 8

Co testujemy? 3/4

Obciążalność systemu

Obciążalność systemu - zdolność do
poprawnej pracy przy dużych obciążeniach; np.
maksymalnej liczbie użytkowników, bardzo
dużych rozmiarach danych; w tych testach czas
nie odgrywa najistotniejszej roli, chodzi
wyłącznie o to, czy system poradzi sobie w
ekstremalnych warunkach)

Skalowalność systemu

Skalowalność systemu - spełnienie warunków
(m.in. czasowych) przy znacznym wzroście
obciążenia

Niezawodność oprogramowania

Niezawodność oprogramowania - zwykle
mierzoną średnim czasem pomiędzy błędami

background image

Slajd 9

Co testujemy? 4/4

Modyfikowalność oprogramowania - zdolność do

zmiany przy zmieniających się założeniach lub
wymaganiach

Jakość dokumentacji, pomocy, materiałów

szkoleniowych

Wykorzystanie zasobów - np. czas jednostki

centralnej, pamięć operacyjna, przestrzeń dyskowa, ...

Spełnianie ograniczeń - np. na zajmowaną pamięć,

obciążenia procesora, ...

Interfejsy systemu na zgodność z wymaganiami
Akceptowalność systemu, tj. stopień

usatysfakcjonowania użytkowników.

background image

Slajd 10

Rodzaje

testów

background image

Slajd 11

Rodzaje testów

Główne cele testowania:

wykrycie i usunięcie błędów w systemie
ocena niezawodności systemu

Na tej podstawie wyróżniamy:

Wykrywanie błędów

Wykrywanie błędów

- testy, których

głównym celem jest wykrycie jak
największej liczby błędów w programie

Testy

statystyczne

statystyczne - celem jest wykrycie

przyczyn najczęstszych błędnych wykonań
oraz ocena niezawodności systemu

background image

Slajd 12

Typowe fazy testowania systemu

Testy

częściowe

częściowe

(np. modułów)

- wykonywane najczęściej

podczas implementacji, bezpośrednio po zakończeniu
realizacji poszczególnych modułów

Testy

systemu

systemu

- wykonywane po zintegrowaniu części

składowych; testowane są poszczególne podsystemy oraz
system jako całość

Testy

akceptacji

akceptacji

(ang. acceptance testing)

- w

przypadku oprogramowania realizowanego na zamówienie
system przekazywany jest klientowi do przetestowania przez
przyszłych użytkowników (testy takie nazywa się testami

alfa

alfa

);w przypadku oprogramowania sprzedawanego rynkowo

testy takie polegają na nieodpłatnym przekazaniu pewnej
liczby kopii systemu grupie użytkowników (testy

beta

beta

)

background image

Slajd 13

Testy statystyczne

background image

Slajd 14

Testy statystyczne

• Stosowanie testów statystycznych wymaga

określenia rozkładu prawdopodobieństwa danych
wejściowych możliwie bliskiemu rozkładowi, który
pojawi się w rzeczywistości
(dokładne przewidzenie
takiego rozkładu jest trudne, w związku z czym wnioski
wyciągnięte na podstawie takich testów mogą nie być
wystarczająco wiarygodne)

• Założeniem jest przetestowanie systemu w:
typowych sytuacjach (pojawiają się znacznie

częściej);

sytuacjach skrajnych.
• Przykład techniki tzw. „brutalnej siły”, która jest

jednak stosunkowo mało efektywna

background image

Slajd 15

Techniki analizy produktu

Techniki analizy dynamicznej

- testy funkcjonalne
- testy strukturalne

Techniki analizy statycznej

- dowodzenie poprawności programów
- interpretacja symboliczna

background image

Slajd 16

Testy dynamiczne - funkcjonalne

background image

Slajd 17

Testy funkcjonalne

(ang. black-box testing)

• Sprawdzanie funkcji oprogramowania bez

zaglądania do środka programu; testujący
traktuje sprawdzany moduł jak „czarną
skrzynkę
”, której wnętrze jest niewidoczne

• Powinno obejmować cały zakres danych

wejściowych, co zwykle jest praktycznie
niemożliwe
ze względu na olbrzymią liczbę
dopuszczalnych danych wejściowych (efekt
eksplozji danych testowych”)

background image

Slajd 18

Testy funkcjonalne

(ang. black-box testing)

Funkcje systemu znajdujące się w poprzedniej

Funkcje systemu znajdujące się w poprzedniej

wersji są istotniejsze niż nowo wprowadzone

wersji są istotniejsze niż nowo wprowadzone
(użytkownicy, którzy posługiwali się daną funkcją w
poprzedniej wersji systemu będą bardzo niezadowoleni
jeżeli w nowej wersji ta funkcja przestanie działać; poza
tym błąd w czymś nowym jest stosunkowo łatwo
wytłumaczalny, natomiast „popsucie” czegoś dobrze
funkcjonującego dużo trudniej)

Typowe sytuacje są ważniejsze niż wyjątki lub

Typowe sytuacje są ważniejsze niż wyjątki lub

sytuacje skrajne

sytuacje skrajne (błąd w funkcji wykonywanej często
lub dla danych typowych jest znacznie bardziej istotny
niż błąd w funkcji wykonywanej rzadko dla nietypowych
danych)

background image

Slajd 19

Testy funkcjonalne

(ang. black-box testing)

W praktyce przetestowanie kombinacji danych

wejściowych nawet zredukowanych do
“typowych” i “granicznych” jest najczęściej
niemożliwe; konieczny jest pewien wybór.

Możliwość wykonania funkcji jest

Możliwość wykonania funkcji jest

ważniejsza niż jakość jej wykonania

ważniejsza niż jakość jej wykonania

(brak

możliwości wykonania funkcji jest
poważniejszym błędem niż np. niezbyt
poprawne wyświetlenie jej rezultatów na
ekranie)

background image

Slajd 20

Testy dynamiczne -

strukturalne

background image

Slajd 21

Testy strukturalne

• W celu odróżnienia od testów funkcjonalnych

nazywane testowaniem na zasadzie białej skrzynki (ang.
white-box testing)

• Celem jest sprawdzanie wewnętrznej logiki

oprogramowania poprzez odpowiedni dobór danych
wejściowych, dzięki czemu można prześledzić wszystkie
istotne ścieżki przebiegu sterowania programu

• Tradycyjnie programiści wstawiają kod diagnostyczny

do programu aby śledzić wewnętrzne przetwarzanie;
debuggery pozwalają programistom obserwować
wykonanie programu krok po kroku

background image

Slajd 22

Testy strukturalne

• Zwykle niezbędne jest wcześniejsze

odpowiednie przygotowanie danych
testowych lub wykorzystanie specjalnych
programów
usprawniających testowanie (np.
programu wywołującego testowaną procedurę z
różnymi parametrami)

Ograniczeniem testów strukturalnych jest

niemożliwość wykrycia brakujących funkcji
w programie (wadę tę usuwa testowanie
funkcjonalne)

background image

Slajd 23

Testy

statyczne

background image

Slajd 24

Testy statyczne

Polegają na analizie kodu bez uruchomienia

programu, możliwe techniki:

dowody poprawności (nie są praktycznie

osiągalne dla rzeczywistych programów);

sformalizowane przeglądy;

background image

Slajd 25

Narzędzia

wykorzystywane

podczas testowania

background image

Slajd 26

Narzędzia wykorzystywane

podczas testowania

Programy uruchamiające

Programy uruchamiające

(ang. debuggers)

- przydatne dla wewnętrznego testowania jak
i do testowania przez osoby zewnętrzne
(zakładają znajomość kodu)

Analizatory przykrycia kodu

Analizatory przykrycia kodu

(ang. coverage

analysers) - umożliwiają ustalenie obszarów
kodu źródłowego
; umożliwiają wykrycie
martwego kodu, kodu uruchamianego przy
bardzo specyficznych danych
wejściowych
oraz kodu wykonywanego bardzo często (co
może być przyczyną wąskiego gardła w
programie)

background image

Slajd 27

Narzędzia wykorzystywane

podczas testowania

Programy porównujące

Programy porównujące

(ang. comparators) -

narzędzia programistyczne umożliwiające
porównanie dwóch programów, plików lub
zbiorów danych celem wykrycia cech
wspólnych i różnic
; wygodne do porównania
wyników testów z wynikami oczekiwanymi;

Różnorodne inne narzędzia

np. do

planowania testów, automatycznego
zarządzania danymi wyjściowymi,
automatyczna generacja raportów z testów,
generowanie statystyk jakości i niezawodności,
wspomaganie powtarzalności testów, ...

background image

Slajd 28

Testy systemu

background image

Slajd 29

Testy systemu

Testowanie wstępujące

Testowanie wstępujące: najpierw testowane są
pojedyncze moduły, następnie moduły coraz wyższego
poziomu, aż do osiągnięcia poziomu całego systemu; nie
zawsze jest to możliwe
, zwłaszcza gdy moduły są od
siebie zależne; niekiedy moduły współpracujące
można zastąpić implementacjami szkieletowymi

Testowanie zstępujące

Testowanie zstępujące: rozpoczyna się od testowania
modułów wyższego poziomu; moduły niższego poziomu
zastępuje się implementacjami szkieletowymi
; po
przetestowaniu modułów wyższego poziomu dołączane są
moduły niższego poziomu; proces ten jest kontynuowany
aż do zintegrowania i przetestowania całego systemu

background image

Slajd 30

Testy systemu

Testy obciążeniowe

Testy obciążeniowe (ang. stress testing) - 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
; polegają na wymuszeniu obciążenia
równego lub większego od maksymalnego

Testy odporności

Testy odporności (ang. robustness testing)
-sprawdzenie działania w przypadku zajścia
niepożądanych zdarzeń
, np. awarii sprzętu,
wprowadzenia niepoprawnych danych czy wydania
sekwencji niepoprawnych poleceń

background image

Slajd 31

Audyt

background image

Slajd 32

Audyt

Audyt

- niezależny przegląd i ocena jakości oprogramowania,

która zapewnia zgodność z wymaganiami na
oprogramowanie, a także ze specyfikacją, generalnymi
założeniami, standardami, procedurami, instrukcjami,
kodami oraz kontraktowymi i licencyjnymi wymaganiami

Celem audytu

projektu informatycznego jest

dostarczenie odbiorcy
i dostawcy obiektywnych, aktualnych i syntetycznych
informacji
o stanie całego projektu

Przedmioty audytu:

*procesy projektu informatycznego - celem jest
sprawdzenie
prawidłowości wykonywanych prac jak i sposobu ich
wykonywania
*produkty (cząstkowe) projektu informatycznego -
celem jest
sprawdzenie czy rezultaty poszczególnych prac
odpowiadają
zakładanym wymaganiom

background image

Slajd 33

Audyt projektu informatycznego

• Aby zapewnić obiektywność, audyt powinien być

przeprowadzony przez osoby niezależne od
zespołu projektowego (np. odpowiednią organizacje
audytu lub przez osoby posiadające
uprawnienia/licencję audytorów)

Reguły i zasady audytu są określone w normie

ANSI/IEEE Std 1028-1988 „IEEE Standard for
Reviews and Audits”

background image

Slajd 34

Inspekcje

oprogramowania

background image

Slajd 35

Inspekcje oprogramowania

• „

Inspekcja

Inspekcja to

formalna technika

oceny,

w której wymagania na
oprogramowanie,

projekt lub kod są

szczegółowo badane przez osobę lub
grupę osób nie będących autorami

, w

celu identyfikacji błędów, naruszenia
standardów i innych problemów

background image

Slajd 36

Inspekcje oprogramowania

• Technika o (potencjalnie) dużej

skuteczności (średnia 60%).

Stosowana dla najważniejszych

systemów, bądź ich najbardziej istotnych
części.

• Dlaczego nie są powszechne?

- nie potrzeba w zasadzie specjalnych

narzędzi, ale potrzeba planowania i
kompetentnych ludzi

- analiza kosztów i zysków nie jest prosta

background image

Slajd 37

Cele oraz cechy inspekcji

Cele inspekcji:

doraźne:

wykrywanie defektów w produktach procesu
wytwarzania oprogramowania a następnie ich usunięcie

formalne potwierdzenie jakości produktu

strategiczne:

doskonalenie procesu wytwórczego w oparciu o analizę
przyczyn znalezionych defektów

obniżenie kosztów wytwarzania

poprawa jakości produktów

doskonalenie samych inspekcji i rozwój kultury jakości w
organizacji

background image

Slajd 38

Cele oraz cechy inspekcji

Pożądane cechy inspekcji:
Sesje są zaplanowane i przygotowane
Błędy i problemy są notowane
• Wykonywana przez techników dla

techników (bez udziału kierownictwa)

• Dane nie są wykorzystywane do oceny

pracowników

Błędy są wykorzystywane w poprawie

procesu programowego (prewencja)

background image

Slajd 39

Schemat inspekcji

Inicjowanie i dopuszczenie do inspekcji

Organizacja i zaplanowanie przebiegu

Spotkanie inicjujące

Spotkanie kontrolne (burza mózgów)

Redakcja dokumentu inspekcji

Kontrola indywidualna

Kontrola indywidualna

Dystrybucja wniosków z inspekcji

Kontrola indywidualna ...

background image

Slajd 40

Korzyści inspekcji

• wzrost produktywności (od 30% do 100%)
skrócenie czasu projektu (od 10% do 30%)
skrócenie czasu wykonywania testów (5x-10x) a

przez to i ich kosztu

• mniejsze koszty pielęgnacji naprawczej
• większy komfort pracy (brak presji czasu i

nadgodzin) oraz większa pewność dostarczania na

czas (bo wcześnie wiemy o problemach)

zwiększenie motywacji pracowników:

– świadomość, że produkt będzie oceniany
– nauka przez znajdowanie błędów

background image

Slajd 41

Zagrożenia inspekcji

Ocena osób na podstawie zebranych metryk
Złe prowadzenie inspekcji - mała efektywność i

skuteczność

• Słabi kontrolerzy
• Kontrola indywidualna niewystarczająca (jakość i

ilość)

• Skłonność autorów do lekceważenia defektów na

etapie opracowywania dokumentów (“inspekcja
wskaże błędy...”)

Poczucie zagrożenia u autora - nieuzasadniona

obrona własnych rozwiązań

Krytyczne nastawienie do autora

background image

Slajd 42

O czym był wykład?

• Podstawowe pojęcia
• Co testujemy?
• Rodzaje testów
Testy statystyczne
Testy dynamiczne
Testy statyczne
• Narzędzia wykorzystywane podczas

testowania

• Testy systemu
• Audyt
• Inspekcie oprogramowania


Document Outline


Wyszukiwarka

Podobne podstrony:
1(45) Przedmiot i cele inżynierii oprogramowaniaid 10176 ppt
1(45) Przedmiot i cele inżynierii oprogramowaniaid 10176 ppt
22(45) Zapewnienie jakości oprogramowaniaid 29565 ppt
14(45) Proces Tworzenia oprogramowaniaid 15602 ppt
głuchowski,inżynieria oprogramowania, Weryfikacja i walidacja
08 Prototypowanie oprogramowaniaid 7587 ppt
Testowanie, WERYFIKACJA HIPOTEZ STATYSTYCZNYCH
2015 04 09 08 21 45 01id 28640 Nieznany (2)
05 Wymagania stawiane oprogramowaniuid 5978 ppt
25(45) Instalacja wdrażanie konserwacja oprogramowania
03 Proces tworzenia oprogramowaniaid 4616 ppt
PIO Testowanie i Weryfikacja
18(45) Metody tworzenia systemów informatycznychid 17860 ppt
2 Informatyka sprzęt oprogramowanieid 19785 ppt
TESTOWANIE, geodezja, Inżynieria oprogramowania
08 Prototypowanie oprogramowaniaid 7587 ppt
Pacewicz O nadużyciach seksualnych wobec dzieci str 13 14,21 45
2015 04 09 08 21 45 01

więcej podobnych podstron