Testowanie oprogramowania
Transkrypt
Testowanie oprogramowania
Testowanie oprogramowania Wykład 02 dr inż. Grzegorz Michalski 20 października 2015 Testowanie oprogramowania 1/19 Test “białej skrzynki“ wgląd do kodu źródłowego, systematyczne sprawdzanie elementów tego kodu, można przeprowadzić w sposób statyczny lub dynamiczny Testowanie oprogramowania 2/19 Analiza pokrycia kodu metoda dynamiczna w testowaniu metodą białej skrzynki, pozwala na przetestowanie stanu programu oraz przepływów sterowania pomiędzy tymi stanami, sprawdzane jest wejście i wyjście każdego bloku programu, celem jest wykonanie każdego wiersza programu i każdej możliwej ścieżki programu, pozwala na znalezienie znaczącej liczby błędów we fragmentach rzadko wykonywanych, wyjątkowe sytuacje często są pomijane przez projektantów systemów, fragmenty z założenia rzadko wykonywane mogą rzeczywiście znacząco obciążać system, do analizy kodu wykorzystuje się programy śledzące, pozwalające na generowanie szczegółowych raportów. Raporty takie pozwalają na wykrycie fragmentów kodu nie pokrytych zastosowanymi testami. Testowanie oprogramowania 3/19 Pokrycie kodu Pokrycie kodu realizowane jest poprzez: wykonanie przynajmniej jednokrotnie każdej instrukcji w programie – pokrycie wiersza kodu, wykonanie jak największej liczby ścieżek programu – testowanie ścieżek, uwzględnienie złożonych warunków logicznych instrukcji warunkowej – analiza pokrycia warunków logicznych. Testowanie oprogramowania 4/19 Statyczna analiza kodu. Elementy wspierające statyczną analizę kodu: Standardy kodowania – jawnie określają zestawy instrukcji jakich nie wolno lub nie powinno się w danym projekcie używać oraz narzucają zestaw obligatoryjnych instrukcji. Z reguły nie ma odstępstw od standardów. Stworzone, aby wyeliminować tymczasowe rozwiązania. Reguły kodowania – wskazówki/sugestie dotyczące sposobu wytwarzania kodu źródłowego. Ułatwiają czytelność kodu, a co z tym związane jego zrozumienie. Testowanie oprogramowania 5/19 Test “czarnej skrzynki“ ”Czarna skrzynka” testowanie nakierowane na wymagania funkcjonalne oprogramowania, umożliwia weryfikację zgodności programu z wymaganiami użytkownika, stosowane najczęściej na zakończenie procesu testowania, pozwala na wykrycie pominiętych lub niepoprawnie zaimplementowanych funkcjonalności określonych w specyfikacji. Testowanie oprogramowania 6/19 Zasady testowania oprogramowania. Zasada 1. Dla każdego przypadku testowego należy koniecznie określić spodziewany wynik. Każdy przypadek testowy musi zawierać dwa elementy: opis danych wejściowych, precyzyjny opis poprawnego wyniku, który program powinien wyprodukować dla określonych w danym przypadku danych. Testowanie oprogramowania 7/19 Zasady testowania oprogramowania. Zasada 2. Programiści powinni unikać testowania tworzonych przez siebie programów. Testowanie oprogramowania 8/19 Zasady testowania oprogramowania. Zasada 3. Firmy/zespoły programistyczne nie powinny testować swych własnych produktów. Testowanie oprogramowania 9/19 Zasady testowania oprogramowania. Zasada 4. Wyniki każdego przypadku testowego powinny być starannie analizowane. Testowanie oprogramowania 10/19 Zasady testowania oprogramowania. Zasada 5. Przypadku testowe powinny uwzględniać zarówno dane wejściowe niepoprawne i nieoczekiwane przez program, jak i dane prawidłowe pod każdym względem. Testowanie oprogramowania 11/19 Zasady testowania oprogramowania. Zasada 6. Weryfikacja programu pod kątem realizowania przezeń pożądanych funkcji to jedynie połowa zadania. Równie istotne jest to, czy program nie realizuje funkcji niepożądanych z punktu widzenia specyfikacji. Testowanie oprogramowania 12/19 Zasady testowania oprogramowania. Zasada 7. Nalęzy bezwzględnie unikać tworzenia ulotnych przypadków testowych, chyba że testowany program sam jest tworem o charakterze ulotnym. Testowanie oprogramowania 13/19 Zasady testowania oprogramowania. Zasada 8. Nie można planować strategii testowania oprogramowania przy milczącym założeniu, że testowany program wolny jest od błędów. Testowanie oprogramowania 14/19 Zasady testowania oprogramowania. Zasada 9. Prawdopodobieństwo wykrycia kolejnego błędu w testowanym fragmencie programu jest proporcjonalne do liczby błędów już w tym fragmencie wykrytych. Testowanie oprogramowania 15/19 Zasady testowania oprogramowania. Zasada 10. Testowanie oprogramowania jest czynnością w ogromnym stopniu twórczą i stanowi niezwykłe wyzwanie intelektualne. Często też jest czynnością deprecjonowaną przez inne osoby pracujące nad oprogramowaniem. Testowanie oprogramowania 16/19 Zasady testowania oprogramowania. A tak w skrócie: Testowanie jest zespołem czynności wykonywanych w celu wykrycia błędów w oprogramowaniu. Dobrym przypadkiem testowym jest taki, który z wysokim prawdopodobieństwem doprowadzić może do wykrycia nowego błędu. Jeżeli przypadek testowy doprowadził do wykrycia nowego błędu w oprogramowaniu, można określić że jest to pomyślny przypadek testowy. Testowanie oprogramowania 17/19 Przypadek testowy Definicja IEEE–610 Zbiór danych wejściowych, wstępnych warunków wykonania, oczekiwanych rezultatów i końcowych warunków wykonania opracowany w określonym celu lub dla warunku testowego jak wykonanie pewnej ścieżki programu w celu zweryfikowania zgodności z pewnym wymaganiem. Przypadek testowy niskiego poziomu Przypadek testowy z konkretnymi (na poziomie implementacji) wartościami wejściowymi i wynikami oczekiwanymi. Logiczne operatory z przypadków testowych wysokiego poziomu są zamieniane na konkretne wartości, które odpowiadają celom logicznych operatorów. Przypadek testowy wysokiego poziomu Przypadek testowy bez konkretnych (poziom implementacji) wartości danych wejściowych i oczekiwanych rezultatów. Używane są operatory logiczne; rzeczywiste wartości nie są jeszcze zdefiniowane i/lub dostępne. Testowanie oprogramowania 18/19 Dobry przypadek testowy. Dobry przypadek testowy powinien być zbudowany z wartości: unikalny identyfikator, nazwa, krótki opis, warunki wstępne, poszczególne kroki do wykonania, oczekiwany rezultat, warunek końcowy, Opcjonalnie dobrze jest opisać go wartościami: dane testowe; środowisko testowe; identyfikator wymagania, którego dotyczy; priorytet; autor; numer wersji; kategoria; Testowanie oprogramowania 19/19