Testowanie oprogramowania - Testowanie niefunkcjonalneicis.pcz.pl › ~michalski › download › to...

Post on 03-Jul-2020

4 views 0 download

Transcript of Testowanie oprogramowania - Testowanie niefunkcjonalneicis.pcz.pl › ~michalski › download › to...

Testowanie oprogramowaniaTestowanie niefunkcjonalne

dr inż. Grzegorz Michalski

27 października 2015

Testowanie oprogramowania 1/30

Norma ISO

ISO 9126Norma dotycząca zagadnień jakości oprogramowania wprowadza podziałna testy funkcjonalne i niefunkcjonalne. Norma podzielona jest na czteryczęśći:

9126–1: model jakości opisujący 6 kategorii jakości

9126–2: metryki dla zewnętrznych (dynamicznych) pomiarówcharakterystyk jakości

9126–3: metryki dla wewnętrznych (statycznych) pomiarówcharakterystyk jakości

9126–4: metryki dla quality–in–use (pomiary dla gotowego produktubędącego w użyciu)

Testowanie oprogramowania 2/30

Kategorie i podkategorie jakości

funkcjonalność:dopasowaniedokładnośćwspółdziałaniezgodnośćbezpieczeństwo

niezwodność:odporność na błędyodtwarzalnośćdojrzałość

użyteczność:zrozumiałośćłatwość naukiłatwość obsługi

Testowanie oprogramowania 3/30

Kategorie i podkategorie jakości (2)

efektywność:efektywność czasowazużycie zasobów

pielęgnowalność:analizowalnośćtestowalnośćmodyfikowalnośćstabilność

przenaszalnośćadaptowalnośćzgodnośćinstalowalnośćzastępowalność

Testowanie oprogramowania 4/30

Testowanie niefunkcjonalne

1 Testowanie funkcjonalne =⇒ Co system robi.2 Testowanie niefunkcjonalne =⇒ Jak (jak dobrze) system to robi.3 Główne techniki testowania niefunkcjonalnego to techniki

czarnoskrzynkowe.4 Testowanie niefunkcjonalne może zależeć od wymagań, ale często

zależy od nich niejawnie!

Testowanie oprogramowania 5/30

Testowanie atrybutów jakościowych

Atrybuty jakościowe1 testowanie dziedzinowe2 testowanie techniczne

Testowanie oprogramowania 6/30

Testowanie dziedzinowe

Testowanie dziedzinowedokładność

dopasowanie

współdziałanie

użyteczność

dostępność

funkcjonalne bezpieczeństwo

Testowanie oprogramowania 7/30

Testowanie techniczne

Testowanie dziedzinowebezpieczeństwo

niezawodność

efektywność

pielęgnowalność

przenaszalność

Testowanie oprogramowania 8/30

Testowanie dziedzinowe

Testowanie oprogramowania 9/30

Dokładność

DokładnośćZdolność systemu do dostarczania rezultatów jego działania naodpowiednim poziomie precyzji.Synonim: poprawność (correctness)

Przypadek idelany: dokładność wynika ze specyfikacji.Wykorzystywane techniki:

analiza wartości brzegowych

tablice decyzyjne (gdy wartość wynika z wielu wejść)

Testowanie oprogramowania 10/30

Dokładność a poziomy testowania

sprawdzenie poprawności danych przechowywanych w pamięci

sprawdzenie, czy precyzja nie jest tracona przy transferze danychpomiędzy modułami

sprawdzenie dokładności na poziomie systemowym (zwykle dostępnaspecyfikacja)

klient powinien być zadowolony z rezultatów scenariuszy, raportów izapytań

Testowanie oprogramowania 11/30

Dopasowanie

Dopasowanie

Zdolność systemu do dostarczania odpowiedniego zbioru funkcji dlaokreślonych zadań i celów użytkownika.Inaczej: czy system potrafi rozwiązać zadany problem?Konieczna u testera wiedza dziedzinowa.Typ testów posiadający charakter walidacyjny

Wykorzystywane techniki

use case’y

wywiady

scenariusze testowe

testy eksploracyjne

Testowanie oprogramowania 12/30

Dopasowanie – przykład (1)

Zakup w sklepie e-commerce: normalny proces1 Klient umieszcza jeden lub więcej produktów w koszyku2 Klient wybiera „checkout”3 System pobiera od Klienta adres, formę płatności i formę dostawy4 System wyświetla w/w informacje dla potwierdzenia przez Klienta5 Klient potwierdza Systemowi zamówienie

Wyjątki:

Klient próbuje zrobić „checkout” z pustym koszykiem – systemzwraca odpowiedni komunikat o błędzie

Klient wpisuje błędny adres, formę płatności lub formę dostawy –system zwraca odpowiedni komunikat o błędzie

Klient przerywa transakcję przed lub w trakcie checkoutu; Systemwylogowuje Klienta po 10 minutach nieaktywności

Testowanie oprogramowania 13/30

Dopasowanie – Testowanie typowego przypadku

L.p. Krok testowy Oczekiwany wynik1 Włóż 1 produkt do koszyka Produkt w koszyku2 Kliknij checkout Ekran checkoutu3 Wpisz poprawny adres, formę płatności (przelew) Ekrany wyświetlone prawidłowo

i formę dostawy i wejścia zaakceptowane4 Weryfikuj informację o zamówieniu Wyświetlone jak podano5 Potwierdź zamówienie Zamówienie w systemie6 Powtórz 1-5, ale z 2 produktami, kartą Visa Tak jak w 1-5

i zamówienie międzynarodowe7 Powtórz 1-5, ale z max liczbą produktów Tak jak w 1-5

i kartą MasterCard

Testowanie oprogramowania 14/30

Dopasowanie – Testowanie przy wyjątkowychprzypadkach

L.p. Krok testowy Oczekiwany wynik1 0 produktów w koszyku Koszyk pusty2 Kliknij checkout Komunikat o błędzie3 Włóż produkt, kliknij checkout, wpisz Komunikaty o błędach; nie da

zły adres, potem złą formę płatności, się przejść do następnego eranupotem złą inf. o dostawie dopóki dane nie są poprawne

4 Zweryfikuj info o zamówieniu Wyświetlone jak podano5 Potwierdź zamówienie Zamówienie w sytemie6 Powtórz 1-3, ale zatrzymaj i przerwij Użytkownik wylogowany po

po włożeniu produktu 10 minutach nieaktywności7 Powtórz 1-3, ale zatrzymaj Jak w 6

i przerwij po każdym ekranie8 Powtórz 1-4, nie potwierdzaj zamówienia Jak w 6

Testowanie oprogramowania 15/30

Współdziałanie

Współdziałanie

Zdolność systemu do interakcji z jednym lub wieloma komponentamisystemu

Testowanie poprawności funkcjonalności we wszystkich zamierzonychśrodowiskach (hardware, software, middleware, infrastruktura sieciowa,systemy bazodanowe, systemy operacyjne). Dotyczy też komponentów dlaktórych współdziałanie jest niebezpośrednie

Testowanie oprogramowania 16/30

Współdziałanie

Silny nacisk na element testowania konfiguracji

Ważny typ testów w przypadku tworzenia lub integracjioprogramowania z półki (COTS) oraz „systemów systemów” (systemsof systems)

Ważny typ w fazie testów integracyjnychStosowane techniki:1 use-case’y, scenariusze testowe2 podział na klasy równoważności3 pair-wise, techniki kombinacyjne4 drzewa klasyfikacji

Testowanie oprogramowania 17/30

Użyteczność

Użyteczność

Zdolność systemu do bycia zrozumiałym, łatwym do nauczenia, użycia iatrakcyjnym dla użytkownika.

Testowanie skupiające się na użytkownikach.

Często wymaga wiedzy psychologicznej, socjologicznej oraz wiedzy zzakresu ergonomii; również narodowych/lokalnych standardów dot.dostępności

Chcemy obserwować efekty testowania na prawdziwych, końcowychużytkownikach (a nie testerach)

Testowanie oprogramowania 18/30

Podcharektyrystyki użyteczności

Zrozumiałość – jak łatwo zrozumieć co program robi i dlaczegomielibyśmy go używać?

Łatwość nauki – łatwość zrozumienia jak program działa

Łatwość obsługi – czy obsługa programu jest intuicyjna?

Atrakcyjność – czy użytkownik chętnie używa programu?

Testowanie oprogramowania 19/30

Techniki testowania użyteczności

inspekcja (ewaluacja, przegląd)1 efektywne w wykrywaniu błędów wcześnie2 można wykorzystać końcowych użytkowników

walidacja aktualnej implementacji – może zawierać uruchamianiescenariuszy testów użytecznościankieta/kwestionariusz/obserwacja1 obserwowanie użytkowników podczas użytkowania oprogramowania2 standardowe ankiety typu SUMI

Testowanie oprogramowania 20/30

Software Usability Measurement Inventory

SUMI opiera się na badaniu ankietowym w sześciu obszarach mających decydującywpływ na wydajność pracy. Badane obszary to:

współpraca – łatwości współpracy i komunikacji pomiędzy użytkownikami

dostęp do danych – tworzenie zestawień, raportów, wyszukiwanie informacji,wymiana informacji;

elastyczność – obsługa nietypowych problemów i zadań, możliwości wprowadzaniamodyfikacji;

użyteczność – łatwość obsługi, komfort pracy;

znajomość – nauka obsługi, intuicyjność rozwiązań;

wydajność transakcyjna – szybkość i niezawodność, wykonywanie powtarzalnychzadań.

Badanie polega na wypełnieniu ankiet przez użytkowników systemu. Pytania wposzczególnych obszarach tworzone są w oparciu o scenariusze użycia, któreodzwierciedlają realną pracę z systemem. Muszą one odpowiadać uprawnieniom izakresom obowiązków użytkowników.

Testowanie oprogramowania 21/30

Dostępność

Dostępność

Zdolność systemu do bycia używalnym przez użytkowników z różnymiformami inwalidztwa. Wymagania często wynikają z jakichś standardówlub wymogów prawnych. Standardy narzucają wykorzystanie technologiiasystujących (np. text–to–speech, lupa, zmiana kontrastu itp.)

Testowanie oprogramowania 22/30

Testowanie techniczne

Testowanie oprogramowania 23/30

Bezpieczeństwo

Bezpieczeństwo

Atrybuty oprogramowania umożliwiające ochronę przed nieautoryzowanymdostępem do programu i danych. Często zagrożenia związane zbezpieczeństwem są ukryte, niejawne i niewidoczne. Błędy bezpieczeństwaczęsto nie mają widocznych symptomów (nawet po włamaniu)

Testowanie oprogramowania 24/30

Obszary związane z bezpieczeństwem

Nieautoryzowany dostęp do danych – SQL injection, hasła, plikitymczasowe, fizyczna lokalizacja serwera

Przepełnienie bufora

DoS (denial of service)

Przechwycenie transferu danych

Łamanie zabezpieczeń (kryptologia)

Bomby logiczne/wirusy/robaki

Przypadki testowe to zwykle ataki na oprogramowanie

Testowanie oprogramowania 25/30

Niezawodność

NiezawodnośćZdolność oprogramowania do bezbłędnego działania przez określony czaslub przez określoną liczbę operacji. Zawsze ważna, ale kluczowa wsystemach krytycznych Testy niezawodności wykorzystują profileoperacyjne.3 cechy niezawodności:1 dojrzałość (zdolność do bezawaryjnego działania przy występowaniu

usterek)2 tolerancja na błędy (wyjątki i ich obsługa)3 odtwarzalność (zdolność działania po awarii)

Testowanie oprogramowania 26/30

Metryki niezawodności

Metryki wykorzystywane do pomiaru niezawodności:

MTTF (mean time to failure)

MTTR (mean time to repair)

MTBF (mean time between failures)

gęstość defektów

złożoność cyklomatyczna

liczba modułów

liczba określonych konstrukcji programistycznych

Wartości metryk porównuje się z odpowiednim modelem do monitorowaniamożna użyć tzw. modeli wzrostu niezawodności

Testowanie oprogramowania 27/30

Pielęgnowalność

Pielęgnowalność

Ławtość modyfikowania oprogramowania w celu naprawy defektów,dostosowania do nowych wymagań, ułatwienia przyszłego utrzymywanialub dostosowania do zmian zachodzących w jego środowisku.Oprogramowanie się nie zużywa, ale staje się przestarzałe. Zatem będąpojawiać się nowe funkcjonalności, patche, update’y, nowe środowiska itp

Testowanie oprogramowania 28/30

Pielęgnowalność (2)

Testowanie pielęgnowalności nie polega na pisaniu skryptów testowych;większość defektów jest niewidoczna dla testowania dynamicznego.Defekty pielęgnowalności powodowane są m.in.:

trudnym do zrozumienia kodem

zależnościami środowiskowymi

ukrytymi informacjami i stanami

zbytnią złożonością

Stosowane techniki: testowanie statyczne

Testowanie oprogramowania 29/30

Przenaszalność

PrzenaszalnośćŁatwość, z jaką oprogramowanie może być przeniesione z jednegośrodowiska do innego.Najczęstsze przyczyny problemów z przenaszalnością:

zależności środowiskowe

zajmowanie zasobów

niestandardowe interakcje systemu operacyjnego

np. klasyczne dla Windows: zmiana w dzielonym rejestrze podczasinstalacji lub usunięcie dzielonych plików przy deinstalacji

Testowanie oprogramowania 30/30