Inżynieria Oprogramowania 9. Testowanie oprogramowania

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Rodzaje testów oprogramowania
Modelowanie przypadków użycia
Projektowanie w cyklu życia oprogramowania
Inżynieria Oprogramowania 10. Szacowanie kosztu oprogramowania cz. 2
Role w zespole projektowym
NOWA MATURA Z JĘZYKA ROSYJSKIEGO
Testowanie oprogramowania
Inżynieria Oprogramowania 8. Weryfikacja i zatwierdzanie
Inżynieria Oprogramowania 5. Prototypowanie
Inżynieria Oprogramowania 10. Szacowanie kosztu oprogramowania cz. 1
Inżynieria Oprogramowania 0. Informacje o zajęciach
Inżynieria Oprogramowania 9. Testowanie oprogramowania
Inżynieria Oprogramowania 6. Projektowanie architektoniczne
Wydział Zastosowań Informatyki i Matematyki SGGW
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 Restrukturyzacja oprogramowania l Reorganizowanie i modyfikowanie istniejącego.
Wyszukiwanie błędów Testowanie programów w celu wyszukania błędów.
Projektowanie architektoniczne
MS Access 2000 Normalizacja Paweł Górczyński 2005.
Projektowanie Aplikacji Komputerowych
Politechnika Gdańska WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI
Co UML może zrobić dla Twojego projektu?
Organizacja Przedsięwzięć Programistycznych Wykład 7, 27.II.03
Poznańskie Centrum Superkomputerowo-Sieciowe Cezary Mazurek
Projektowanie i programowanie obiektowe II - Wykład IV
Praca Inżynierska „Analiza i projekt aplikacji informatycznej do wspomagania wybranych zadań ośrodków sportowych” Dyplomant: Marcin Iwanicki Promotor:
Projekt zaliczeniowy z przedmiotu "Inżynieria oprogramowania"
Projektowanie - wprowadzenie
Dalsze elementy metodologii projektowania. Naszym celem jest...
Wykład 4 Analiza i projektowanie obiektowe
Wykład 5 UML - Unified Modeling Language
Wykład 7 Projektowanie kodu oprogramowania
TESTOWANIE OPROGRAMOWANIA
C.d. wstępu do tematyki RUP
Inżynieria Oprogramowania
© Victo Testowanie dla menedżerów Wersja TDM Slajd 1 (27) Testowanie oprogramowania dla menedżerów Co menedżerowie i kierownicy naprawdę potrzebują
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Instytut Tele- i Radiotechniczny WARSZAWA
Model przestrzenny Diagramu Obiegu Dokumentów
Wykład 1 – część pierwsza
WebQuest wykonane w ramach projektu BelferOnLine
Kalendarz 2011r. styczeń pn wt śr czw pt sb nd
Podsumowanie metodologii OMT
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Modelowanie obiektowe Diagramy UML – diagram przypadków użycia
TESTOWANIE OPROGRAMOWANIA
Unified Modeling Language - Zunifikowany Język Modelowania
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, 85 – 321 Bydgoszcz
Diagram klas Kluczowymi elementami są: klasy (class)
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Kalendarz 2020.
Modelowanie obiektowe - system zarządzania projektami.
Diagram obiektów Diagram obiektów ukazuje elementy i związki z diagramu klas w ustalonej chwili. Diagram obiektów jest grafem złożonym z wierzchołków i.
Copyright © Jerzy R. Nawrocki Team Software Process Inżynieria oprogramowania II Wykład.
©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 20 Slide 1 Testowanie oprogramowania l Przedstawienie metod, które można wykorzystać przy testowaniu.
Projektowanie architektoniczne
Projekt modułu Nazwa całego projektu Nazwa modułu Imię i Nazwisko Inżynieria Oprogramowania II dzień, godzina rok akademicki W szablonie na niebiesko zamieszczone.
Usługa e-Załączniki Automatyzacja usługi - nowy kanał komunikacyjny Izba Celna w Białej Podlaskiej Prezentuje Leszek Krasa Biała Podlaska, dn r.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Inżynieria systemów informacyjnych
Inżynieria oprogramowania
Testowanie oprogramowania
Weryfikacja i zatwierdzanie
Inżynieria Oprogramowania Laboratorium
Projekt modułu BANK INTERNETOWY Moduł funkcji banku
Wykład 1 – część pierwsza
Zapis prezentacji:

Inżynieria Oprogramowania 9. Testowanie oprogramowania 26/03/2017 Inżynieria Oprogramowania 9. Testowanie oprogramowania Leszek J Chmielewski Wydział Zastosowań Informatyki i Matematyki SGGW www.lchmiel.pl

Źródła Materiały dra Waldemara Karwowskiego, wykładowcy w poprzednich semestrach Ian Sommerville, Inżynieria Oprogramowania, WNT, Warszawa 2003

Plan Wstęp Testowanie defektów Testowanie integracyjne Testowanie obiektowe Warsztaty do testowania Podsumowanie

Plan Wstęp Testowanie defektów Testowanie integracyjne Testowanie obiektowe Warsztaty do testowania Podsumowanie

Metody nieformalne Metody formalne: do systemów krytycznych Specyfikacja wymagań Specyfikacja systemu Projekt systemu Projekt szczegółowy Testowanie komponentów Testowanie integracyjne Twórca oprogramowania Zespół testujący integrację Plan testów akceptacyjnych Plan testów integracji systemu Plan testów integracji podsystemu Testy modułów i jednostek Metody formalne: do systemów krytycznych Zwyczajne przypadki: testowanie na podstawie ogólnego opisu funkcji elementów Jednak integracja musi być przetestowana na podstawie pisemnej specyfikacji systemu Robi się to różnie w systemach funkcyjnych i obiektowych Działanie Test akceptacyjny Test integracji systemu Test integracji podsystemu

Plan Wstęp Testowanie defektów Testowanie integracyjne Testowanie obiektowe Warsztaty do testowania Podsumowanie

Specyfika testowania defektów Nie w celu zatwierdzenia – stwierdzenia realizacji funkcjonalności, ale w celu ujawnienia defektów Pozytywnym wynikiem testu jest znalezienie defektu

Model testowania defektów Przypadki testowe Dane testowe Wyniki testów Raport z testów Opracuj przypadki testowe Przygotuj dane testowe Uruchom na nich program Porównaj wyniki z przypadkami testowymi Dane testowe można generować automatyczne, przypadki testowe – nie Testować trzeba tylko podzbiór dopuszczalnych przypadków testowych Do wyboru tego podzbioru – strategia

Strategia wyboru przypadków testowych Przykład: Przetestować wszystkie funkcje dostępne z menu Przetestować wszystkie kombinacje funkcji dostępnych z tego samego menu (wyobraźmy sobie edytor tekstu) Przetestować wszystkie funkcje, w których użytkownik wprowadza dane dane poprawne dane niepoprawne (Świadomie pominęliśmy tu rzadkie kombinacje funkcjonalności)

Testowanie czarnej skrzynki Testy wyprowadza się ze specyfikacji, nie biorąc pod uwagę struktury programu Inaczej: testowanie funkcjonalne – bierze się pod uwagę tylko funkcjonalność, a nie implementację Dane wejściowe powodujące anormalne zachowanie Wejb Testowe dane wejściowe Dane wyjściowe umożliwiające wykrycie defektów System Wyjb Wyniki testów

Czarna skrzynka: Dzielenie na klasy równoważności Jak dobrać dane, aby ujawnić defekty? Wykrywamy w danych strukturę: klasy równoważności Testujemy centra i granice klas Przykład: konto telefonu komórkowego z rachunkiem Klasy równoważności: konto rozmów, usługa „darmowe wieczory”, usługa Internet z limitem, „pakiet rodzinny”, ... „środki” klas: stany typowe granice klas: rachunek nie opłacony, rozmowa rozpoczęta na granicy czasu „wieczory”, przekraczamy granicę transferu w pakiecie Internet, dokupujemy dodatkowy pakiet, telefon w pakiecie staje się nieaktywny, ...

Testowanie strukturalne Zwane biała skrzynka, szklana, przezroczysta skrzynka – widać, co jest w środku Widać strukturę oprogramowania Można rozszerzyć wiedzę o klasach równoważności widać warunki, nie tylko dane

Testowanie strukturalne: Testowanie ścieżek Praktyczne dla jednostek mniejszych wzrost złożoności Nie testujemy wszystkich możliwych ścieżek Tylko tak, aby każde rozgałęzienie wykonano dla wszystkich możliwych wyjść każda instrukcja była wykonana co najmniej raz

Testowanie strukturalne: Testowanie ścieżek 1, 2, 3, 8, 9 1, 2, 3, 4, 6, 7, 2 1, 2, 3, 4, 5, 7, 2 1, 2, 3, 4, 6, 7, 2, 8, 9 Nie: 1, 2, 8, 9 1 2 3 4 8 5 6 9 7

Testowanie strukturalne: Testowanie ścieżek Liczba niezależnych ścieżek? O(n)? O(n2)? O(n3)? = złożoność cykliczna Grafu ZC(G) = L_krawędzi(G) – L_węzłów(G) + 2 11-9+2=4 Jeśli nie ma skoków w Programie: ZC(P) = L_warunków(P) + 1 Przypadki testowe dla każdej ścieżki Dynamiczny analizator programu - Profiler 1 2 3 4 8 5 6 9 7

Plan Wstęp Testowanie defektów Testowanie integracyjne Testowanie obiektowe Warsztaty do testowania Podsumowanie

Specyfika testowania integracyjnego Zdecydowanie najłatwiej jest testować w procesie integrowania przyrostowego – zalecany ze względu na testy integracyjne Moduł Ma, testy Ta + Moduł Mb, testy Ta + Tb + Moduł Mc, testy Ta + Tb + Tc ... Interakcje między modułami zaburzają ten prosty schemat 

Testowanie wstępujące i zstępujące najpierw moduły niskiego poziomu N potem wyższego N-1 ... Zstępujące: system jako całość – struktura, poziom 0 potem moduły poziomu niższego N+1 Wydawałoby się, że testowanie wstępujące jest jedyną rozsądną możliwością ...

Testowanie wstępujące i zstępujące moduły niskiego poziomu N potem wyższy N-1 Zstępujące: struktura systemu, poziom 0 potem niższy N+1 Komponent poziomu N Namiastka komponentu poziomu N+1 Sterownik testowania Namiastka komponentu poziomu N+1 Namiastka komponentu poziomu N+1 Komponent poziomu N+1 Komponent poziomu N+1 Komponent poziomu N+1

Testowanie wstępujące i zstępujące moduły niskiego poziomu N potem wyższy N-1 Zstępujące: struktura systemu, poziom 0 potem niższy N+1 Komponent poziomu N Namiastka  Korek Namiastka komponentu poziomu N+1 Sterownik testowania Namiastka komponentu poziomu N+1 Namiastka komponentu poziomu N+1 Komponent poziomu N+1 Komponent poziomu N+1 Komponent poziomu N+1

Testowanie wstępujące i zstępujące Porównania: Zstępujące: łatwiej zatwierdzić architekturę można zaprezentować koncepcję ALE trudno obserwować testy, bo nie są produkowane prawdziwe wyniki Wstępujące: powstają prawdziwe wyniki ALE trzeba wytwarzać sterowniki testowania

Testowanie interfejsów Podczas laboratorium

Plan Wstęp Testowanie defektów Testowanie integracyjne Testowanie obiektowe Warsztaty do testowania Podsumowanie

Specyfika programów obiektowych Obiekty są zwykle większe, niż funkcje Są luźno powiązane, struktura nie jest ścisła, brak oczywistego „wierzchołka” systemu W programowaniu z użyciem wielokrotnym może nie być dostępu do kodu źródłowego Skutki: Testy białej skrzynki mogą dotyczyć większych jednostek Testowanie integracyjne jest inne

Cztery poziomy testowania obiektowego Testowanie operacji związanych z obiektami testowanie czarnej i białej skrzynki Testowanie klas obiektów rozszerzone podejście do klas równoważności Testowanie gron obiektów testowanie wstępujące/zstępujące  scenariusze Testowanie całego systemu użytkownika nie interesuje obiektowość – zwykłe testy względem specyfikacji wymagań

Testowanie klas obiektów W testowaniu systemów funkcyjnych badano wszystkie instrukcje i wszystkie ścieżki Teraz trzeba również oddzielnie testować wszystkie operacje związane z obiektami – metody zapisywać i odczytywać wszystkie atrybuty obiektów badać obiekty we wszystkich możliwych stanach  symulować wszystkie zdarzenia wywołujące zmianę stanu

Integracja obiektów Nie ma ścisłej hierarchii, ale Zbiór obiektów, które razem oferują określony zbiór usług, nazwiemy gronem Podejścia: Testowanie przypadków użycia, scenariuszy dla gron używamy diagramów przebiegu (sekwencji) Testowanie wątków: reakcji na zdarzenia Testowanie interakcji: ścieżki {zdarzenie wejściowe, ciąg ścieżek metoda-komunikat, zdarzenie wyjściowe} Należy zwrócić uwagę na wyjątki i ich obsługę przez obiekty.

Plan Wstęp Testowanie defektów Testowanie integracyjne Testowanie obiektowe Warsztaty do testowania Podsumowanie

Warsztaty do testowania Podczas laboratorium

Plan Wstęp Testowanie defektów Testowanie integracyjne Testowanie obiektowe Warsztaty do testowania Podsumowanie

Podsumowanie Testy często używanych części systemu są najważniejsze Dziel dane na klasy równoważności; testuj na wartościach centralnych i granicznych Systemy funkcyjne można testować wstępująco i zstępująco Testy czarnej skrzynki – bez znajomości kodu, na podstawie specyfikacji Testy białej skrzynki – strukturalne – na podstawie kodu; warunki i ścieżki Testowanie integracyjne – sprawdza interakcję i interfejsy Defekty interfejsów: często w wyniku błędów rozumienia specyfikacji, fałszywych założeń Testy klas – metody, atrybuty, stany Testy systemów obiektowych trzeba organizować wokół gron obiektów związanych z przypadkami użycia lub wątkami