Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
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