Testowanie oprogramowania 1/30 Testowanie oprogramowania Testowanie niefunkcjonalne dr inż. Grzegorz Michalski 27 października 2015
Testowanie oprogramowania 2/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 3/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 4/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 5/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 6/30 Testowanie atrybutów jakościowych Atrybuty jakościowe 1 testowanie dziedzinowe 2 testowanie techniczne
Testowanie oprogramowania 7/30 Testowanie dziedzinowe Testowanie dziedzinowe dokładność dopasowanie współdziałanie użyteczność dostępność funkcjonalne bezpieczeństwo
Testowanie oprogramowania 8/30 Testowanie techniczne Testowanie dziedzinowe bezpieczeństwo niezawodność efektywność pielęgnowalność przenaszalność
Testowanie dziedzinowe Testowanie oprogramowania 9/30
Testowanie oprogramowania 10/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 11/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 12/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 13/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 14/30 Dopasowanie Testowanie typowego przypadku L.p. Krok testowy Oczekiwany wynik 1 Włóż 1 produkt do koszyka Produkt w koszyku 2 Kliknij checkout Ekran checkoutu 3 Wpisz poprawny adres, formę płatności (przelew) Ekrany wyświetlone prawidłowo i formę dostawy i wejścia zaakceptowane 4 Weryfikuj informację o zamówieniu Wyświetlone jak podano 5 Potwierdź zamówienie Zamówienie w systemie 6 Powtórz 1-5, ale z 2 produktami, kartą Visa Tak jak w 1-5 i zamówienie międzynarodowe 7 Powtórz 1-5, ale z max liczbą produktów Tak jak w 1-5 i kartą MasterCard
Testowanie oprogramowania 15/30 Dopasowanie Testowanie przy wyjątkowych przypadkach L.p. Krok testowy Oczekiwany wynik 1 0 produktów w koszyku Koszyk pusty 2 Kliknij checkout Komunikat o błędzie 3 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 eranu potem złą inf. o dostawie dopóki dane nie są poprawne 4 Zweryfikuj info o zamówieniu Wyświetlone jak podano 5 Potwierdź zamówienie Zamówienie w sytemie 6 Powtórz 1-3, ale zatrzymaj i przerwij Użytkownik wylogowany po po włożeniu produktu 10 minutach nieaktywności 7 Powtórz 1-3, ale zatrzymaj Jak w 6 i przerwij po każdym ekranie 8 Powtórz 1-4, nie potwierdzaj zamówienia Jak w 6
Testowanie oprogramowania 16/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 17/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 use-case y, scenariusze testowe 2 podział na klasy równoważności 3 pair-wise, techniki kombinacyjne 4 drzewa klasyfikacji
Testowanie oprogramowania 18/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 19/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 20/30 Techniki testowania użyteczności inspekcja (ewaluacja, przegląd) 1 efektywne w wykrywaniu błędów wcześnie 2 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 obserwowanie użytkowników podczas użytkowania oprogramowania 2 standardowe ankiety typu SUMI
Testowanie oprogramowania 21/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 22/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 techniczne Testowanie oprogramowania 23/30
Testowanie oprogramowania 24/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 25/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 26/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 27/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 28/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 29/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 30/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