Testowanie oprogramowania - Testowanie niefunkcjonalne

Transkrypt

Testowanie oprogramowania - Testowanie niefunkcjonalne
Testowanie oprogramowania
Testowanie niefunkcjonalne
dr inż. Grzegorz Michalski
27 października 2015
Testowanie oprogramowania 1/30
Norma ISO
ISO 9126
Norma dotycząca zagadnień jakości oprogramowania wprowadza podział
na testy funkcjonalne i niefunkcjonalne. Norma podzielona jest na cztery
częśći:
9126–1: model jakości opisujący 6 kategorii jakości
9126–2: metryki dla zewnętrznych (dynamicznych) pomiarów
charakterystyk jakości
9126–3: metryki dla wewnętrznych (statycznych) pomiarów
charakterystyk jakości
9126–4: metryki dla quality–in–use (pomiary dla gotowego produktu
będącego w użyciu)
Testowanie oprogramowania 2/30
Kategorie i podkategorie jakości
funkcjonalność:
dopasowanie
dokładność
współdziałanie
zgodność
bezpieczeństwo
niezwodność:
odporność na błędy
odtwarzalność
dojrzałość
użyteczność:
zrozumiałość
łatwość nauki
łatwość obsługi
Testowanie oprogramowania 3/30
Kategorie i podkategorie jakości (2)
efektywność:
efektywność czasowa
zuż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ściowe
1
testowanie dziedzinowe
2
testowanie techniczne
Testowanie oprogramowania 6/30
Testowanie dziedzinowe
Testowanie dziedzinowe
dokładność
dopasowanie
współdziałanie
użyteczność
dostępność
funkcjonalne bezpieczeństwo
Testowanie oprogramowania 7/30
Testowanie techniczne
Testowanie dziedzinowe
bezpieczeń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 na
odpowiednim 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 danych
pomiędzy modułami
sprawdzenie dokładności na poziomie systemowym (zwykle dostępna
specyfikacja)
klient powinien być zadowolony z rezultatów scenariuszy, raportów i
zapytań
Testowanie oprogramowania 11/30
Dopasowanie
Dopasowanie
Zdolność systemu do dostarczania odpowiedniego zbioru funkcji dla
okreś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 proces
1
Klient umieszcza jeden lub więcej produktów w koszyku
2
Klient wybiera „checkout”
3
System pobiera od Klienta adres, formę płatności i formę dostawy
4
System wyświetla w/w informacje dla potwierdzenia przez Klienta
5
Klient potwierdza Systemowi zamówienie
Wyjątki:
Klient próbuje zrobić „checkout” z pustym koszykiem – system
zwraca 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; System
wylogowuje Klienta po 10 minutach nieaktywności
Testowanie oprogramowania 13/30
Dopasowanie – Testowanie typowego przypadku
L.p.
1
2
3
4
5
6
7
Krok testowy
Włóż 1 produkt do koszyka
Kliknij checkout
Wpisz poprawny adres, formę płatności (przelew)
i formę dostawy
Weryfikuj informację o zamówieniu
Potwierdź zamówienie
Powtórz 1-5, ale z 2 produktami, kartą Visa
i zamówienie międzynarodowe
Powtórz 1-5, ale z max liczbą produktów
i kartą MasterCard
Oczekiwany wynik
Produkt w koszyku
Ekran checkoutu
Ekrany wyświetlone prawidłowo
i wejścia zaakceptowane
Wyświetlone jak podano
Zamówienie w systemie
Tak jak w 1-5
Tak jak w 1-5
Testowanie oprogramowania 14/30
Dopasowanie – Testowanie przy wyjątkowych
przypadkach
L.p.
1
2
3
4
5
6
7
8
Krok testowy
0 produktów w koszyku
Kliknij checkout
Włóż produkt, kliknij checkout, wpisz
zły adres, potem złą formę płatności,
potem złą inf. o dostawie
Zweryfikuj info o zamówieniu
Potwierdź zamówienie
Powtórz 1-3, ale zatrzymaj i przerwij
po włożeniu produktu
Powtórz 1-3, ale zatrzymaj
i przerwij po każdym ekranie
Powtórz 1-4, nie potwierdzaj zamówienia
Oczekiwany wynik
Koszyk pusty
Komunikat o błędzie
Komunikaty o błędach; nie da
się przejść do następnego eranu
dopóki dane nie są poprawne
Wyświetlone jak podano
Zamówienie w sytemie
Użytkownik wylogowany po
10 minutach nieaktywności
Jak w 6
Jak w 6
Testowanie oprogramowania 15/30
Współdziałanie
Współdziałanie
Zdolność systemu do interakcji z jednym lub wieloma komponentami
systemu
Testowanie poprawności funkcjonalności we wszystkich zamierzonych
środowiskach (hardware, software, middleware, infrastruktura sieciowa,
systemy bazodanowe, systemy operacyjne). Dotyczy też komponentów dla
któ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 integracji
oprogramowania z półki (COTS) oraz „systemów systemów” (systems
of systems)
Ważny typ w fazie testów integracyjnych
Stosowane techniki:
1
2
3
4
use-case’y, scenariusze testowe
podział na klasy równoważności
pair-wise, techniki kombinacyjne
drzewa klasyfikacji
Testowanie oprogramowania 17/30
Użyteczność
Użyteczność
Zdolność systemu do bycia zrozumiałym, łatwym do nauczenia, użycia i
atrakcyjnym dla użytkownika.
Testowanie skupiające się na użytkownikach.
Często wymaga wiedzy psychologicznej, socjologicznej oraz wiedzy z
zakresu ergonomii; również narodowych/lokalnych standardów dot.
dostępności
Chcemy obserwować efekty testowania na prawdziwych, końcowych
użytkownikach (a nie testerach)
Testowanie oprogramowania 18/30
Podcharektyrystyki użyteczności
Zrozumiałość – jak łatwo zrozumieć co program robi i dlaczego
mielibyś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
2
efektywne w wykrywaniu błędów wcześnie
można wykorzystać końcowych użytkowników
walidacja aktualnej implementacji – może zawierać uruchamianie
scenariuszy testów użyteczności
ankieta/kwestionariusz/obserwacja
1
2
obserwowanie użytkowników podczas użytkowania oprogramowania
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ący
wpł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 wprowadzania
modyfikacji;
użyteczność – łatwość obsługi, komfort pracy;
znajomość – nauka obsługi, intuicyjność rozwiązań;
wydajność transakcyjna – szybkość i niezawodność, wykonywanie powtarzalnych
zadań.
Badanie polega na wypełnieniu ankiet przez użytkowników systemu. Pytania w
poszczególnych obszarach tworzone są w oparciu o scenariusze użycia, które
odzwierciedlają realną pracę z systemem. Muszą one odpowiadać uprawnieniom i
zakresom 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óżnymi
formami inwalidztwa. Wymagania często wynikają z jakichś standardów
lub wymogów prawnych. Standardy narzucają wykorzystanie technologii
asystują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 nieautoryzowanym
dostępem do programu i danych. Często zagrożenia związane z
bezpieczeństwem są ukryte, niejawne i niewidoczne. Błędy bezpieczeństwa
czę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, pliki
tymczasowe, 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 czas
lub przez określoną liczbę operacji. Zawsze ważna, ale kluczowa w
systemach krytycznych Testy niezawodności wykorzystują profile
operacyjne.
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 monitorowania
moż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 utrzymywania
lub 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 podczas
instalacji lub usunięcie dzielonych plików przy deinstalacji
Testowanie oprogramowania 30/30

Podobne dokumenty