Testowanie oprogramowania

Transkrypt

Testowanie oprogramowania
Testowanie oprogramowania
Wykład 01
dr inż. Grzegorz Michalski
13 października 2015
Testowanie oprogramowania 1/17
Dane kontaktowe:
Kontakt
dr inż. Grzegorz Michalski
pokój 116, WIMiI
al. Armii Krajowej 21
[email protected]
www.icis.pcz.pl/˜michalski
W temacie korespondencji elektronicznej proszę dodawać prefix [TO].
Testowanie oprogramowania 2/17
Wprowadzenie
Główne aksjomaty testowania
1
programu nie da się w pełni przetestować,
2
testowanie jest ryzykowne,
3
test nie udowodni braku błędów,
4
im więcej błędów znaleziono, tym więcej błędów pozostało do
znalezienia,
5
nie wszystkie znalezione błędy zostaną naprawione,
6
trudno określić, kiedy błąd jest błędem,
7
testowanie powinno rozpoczynać się jak najwcześniej,
8
błędy się kumulują,
9
przypadki testowe powinny być aktualizowane,
10
specyfikacje produktów nigdy nie są gotowe.
Testowanie oprogramowania 3/17
Co to jest błąd?
Definicja:
Z błędem oprogramowania mamy do czynienia, kiedy spełniony jest co
najmniej jeden warunek:
1
oprogramowanie nie wykonuje zadania określonego w specyfikacji,
2
oprogramowanie wykonuje coś, czego zgodnie ze specyfikacją robić
nie powinno,
3
oprogramowanie wykonuje coś, czego nie uwzględniono w specyfikacji,
4
oprogramowanie nie wykonuje czegoś nie uwzględnionego w
specyfikacji (ale powinno),
5
oprogramowanie jest trudne do zrozumienia, trudne do użycia lub
powolne.
Testowanie oprogramowania 4/17
Dlaczego powstaje wadliwe oprogramowanie?
Przyczyny błędów
złożoność oprogramowania,
użytkownicy: nieprawidłowe użycie oprogramowania,
ograniczenia projektowe:
terminy,
zasoby,
słaba znajomość technologii i/lub narzędzi.
zbyt ambitne cele,
błędy zawsze zdążymy usunąć.
Testowanie oprogramowania 5/17
Czy testowanie jest ważne?
Zadajmy sobie pytanie:
Czy istnieją dziś branże przemysłu/codziennego życia, w których nie uźywa
się oprogramowania?
Oprogramowanie z błędami:
1
powoduje utratę zaufania klientów,
2
utrudnia zdobywanie nowych klientów,
3
powoduje odpływ starych klientów,
4
może wyeliminować produkt z rynku,
5
może spowodować zagrożenie życia - eliminacja firmy z rynku.
Testowanie oprogramowania 6/17
Co to jest testowanie?
testowanie oprogramowania
Testowanie nie jest tylko wykonywaniem testów (uruchamianie
oprogramowania w celu odszukania defektów/usterek). Wykonywanie
testów to tylko jeden z elementów testowania oprogramowania, takich jak:
planowanie,
nadzorowanie,
projektowanie zadań testowych,
porównywanie wyników,
tworzenie raportów dotyczących przebiegu procesu testowania,
zakończenie i zamykanie testów.
Testowanie oprogramowania 7/17
Cele testowania oprogramowania (I)
Zadania testowania oprogramowania:
wykrywanie błędów w celu ich usunięcia,
sprawdzanie zgodności z innymi aplikacjami,
redukcja kosztów związanych z pomocą techniczną,
kontrola zgodności z zadanymi wymaganiami,
kontrola zgodności z prawnymi uregulowaniami
Testowanie oprogramowania 8/17
Cele testowania oprogramowania (II)
Testowanie wytwórcze
Nadrzędnym celem tego typu testowania jest wywołanie jak największej
liczby awarii systemu oraz wyeliminowanie ich przyczyn.
Testowanie akceptacyjne
Nadrzędnym celem tego typu testowania jest dowiedzenie, że
oprogramowanie działa zgodnie z założeniami.
Testowanie pielęgnacyjne
Nadrzędnym celem tego typu testowania jest zweryfikowane czy po
wprowadzeniu zmian oprogramowanie nie zawiera nowych usterek.
Testowanie produkcyjne
Nadrzędnym celem tego typu testowania jest sprawdzenie niezawodności
oraz dostępności systemu.
Testowanie oprogramowania 9/17
Czy testowanie to debugowanie?
Who is who?
Testowaniem zajmują się testerzy, a debugowaniem programiści!
Co daje testowanie?
Testowanie wykrywa awarie systemu.
A jaka jest różnica?
Debugowanie polega na zidentyfikowaniu w błędu kodzie powodującego
awarię systemu, poprawienie wadliwego kodu. Po wykonaniu debugowania
przez programistę należy wykonać retesty (testy potwierdzające).
Testowanie oprogramowania 10/17
Poziomy testowania oprogramowania
Poziomy testów:
modułowe,
integracyjne,
systemowe,
akceptacyjne,
w fazie utrzymywania systemu.
Testowanie oprogramowania 11/17
Testowanie modułowe
Definicja
Testowanie na najniższym poziomie. Fragmenty kodu testowane są
pojedynczo, w separacji od reszty systemu. Inaczej nazywane są testami
jednostkowymi. Testy modułowe powinny być wykonywane przez
programistów, ponieważ to oni znają kod źródłowy od podszewki. Zmiany
w kodzie mogą spowodować nieprzewidziane efekty uboczne,
niezamierzone usterki, łatwe do zauważenia przez programistę, ale nie
przez niezwiązanego z kodem testera.
Testowanie oprogramowania 12/17
Testowanie integracyjne
Zadania
Testowanie mające na celu wykrycie błędów w interfejsach oraz
interakcjach pomiędzy integrowanymi modułami (elementami). Głównie
skupia się na sprawdzeniu wymiany danych pomiędzy elementami systemu.
Wraz ze wzrostem zakresu integracji coraz trudniej określić który moduł,
system powoduje awarię. W idealnym przypadku testerzy rozumieją
architekturę całego systemu oraz mają bezpośredni wpływ na planowanie
integracji.
Testowanie oprogramowania 13/17
Testowanie systemowe
Zadania
Testy w pełni zintegrowanego systemu. Sprawdzenie, czy zintegrowany
system spełnia określone wymagania. Testowanie systemowe powinno być
przeprowadzone w środowisku jak najbardziej zbliżonym do produkcyjnego,
tak aby zminimalizować ryzyko, że nie zostaną znalezione błędy zależne od
specyfiki środowiska.
Podstawowy podział.
testy funkcjonalne,
testy niefunkcjonalne.
Testowanie oprogramowania 14/17
Testowanie systemowe – podział
Testy funkcjonalne
testy oparte na wymaganiach,
testy oparte o logikę biznesową oprogramowania.
Testy niefunkcjonalne
testy bezpieczeństwa,
testy użyteczności,
testy wydajnościowe,
inne.
Testowanie oprogramowania 15/17
Testowanie akceptacyjne
Cel
Można powiedzieć, że głównym celem tych testów jest oddanie
użytkownikowi gotowego produktu. Testerem w tym przypadku jest
użytkownik końcowy/klient.
Założenia
testy akceptacyjne powinny być przeprowadzone w środowisku
produkcyjnym, lub środowisku najbardziej do niego zbliżonym,
testy akceptacyjne przeprowadzane są wspólnie przez pracowników
odbiorcy oraz twórcy systemu,
stosowane są głównie jeśli odbiorca nie jest jednocześnie
użytkownikiem końcowym,
dwa poziomy testów alfa (u producenta oprogramowania) i beta (w
środowisku niezwiązanym z twórcami oprogramowania).
Testowanie oprogramowania 16/17
Testowanie w cyklu życia oprogramowania
w modelu kaskadowym testowanie jest ostatnia fazą w cyklu
produkcyjnym,
wszelkie metodyki zwinne uznają testowanie jako najważniejszą fazę
wytwarzania oprogramowania. Testowanie w tego rodzaju metodykach
jest obecne od samego początku.
Testowanie oprogramowania 17/17

Podobne dokumenty