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