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