Niezawodno± oprogramowania Przemysªaw Wesoªek Instytut Informatyki 24 sty 2010 MiASI @ TWO-SUM
Spis tre±ci 1 Wst p 2 Architektura 3 Testy statyczne Inspekcja kodu 4 Testy dynamiczne Testy jednostkowe MS Zune case study 5 Unikanie bª dów
Denicja wg ANSI software reliability the probability of failure-free software operation for a specied period of time in a specied environment Standard Glossary of Software Engineering Terminology, STD-729-1991, ANSI/IEEE, 1991
J zyk polski niezawodny 1. taki, na którym zawsze mo»na polega 2. dobrze funkcjonuj cy Sªownik J zyka Polskiego, http://sjp.pwn.pl
J zyk polski niezawodny 1. taki, na którym zawsze mo»na polega 2. dobrze funkcjonuj cy Sªownik J zyka Polskiego, http://sjp.pwn.pl Czyli: taki, który nas nie zawiedzie
System, które nas nie zawiedzie jakie s nasze oczekiwania? czy wyrazili±my je wcze±niej (specykacja) realistyczno± wymaga«wymagania pozafunkcjonalne, np. wydajno±
Software vs. hardware system = software + hardware ró»na zmiana niezawodno±ci w czasie hardware software
Specyka oprogramowania przyczyna bª du: gªównie defekt w projekcie oprogramowanie si nie zu»ywa okresowe restarty pomagaj unikn bª dów niezawodno± nie jest funkcj czasu dziaªania czynniki ±rodowiskowe nie maj wpªywu u»ycie wielu kopii nie podnosi niezawodno±ci Keene, S. J., Comparing Hardware and Software Reliability, Reliability Review, 14(4), December 1994, pp. 5-7, 21
Jak mo»na zawie± nie dziaªa bª dna implementacja dziaªa niepoprawnie bª dna implementacja robi co innego ni» powinien specykacja! nie daje odpowiedzi nie wiemy czy dziaªa; bª dna implementacja, za niska wydajno±
Sposoby podnoszenia niezawodno±ci specykowanie wymaga«odpowiednia architektura stosowanie gotowych komponentów dowodzenie poprawno±ci unikanie bª dów testowanie odporno± na bª dy
Znaczenie architektury dziaªanie na poziomie wy»szym ni» oprogramowanie odpowiednia architektura zwi ksza niezawodno± serwer zapasowy sie serwerów
Przykªad rozproszenia: DNS 1 jest@idss-pw:~$ host google.com 2 3 google.com has address 209.85.171.100 4 google.com has address 72.14.205.100 5 google.com has address 74.125.45.100 6 google.com mail is handled by 10 smtp1.google.com. 7 google.com mail is handled by 10 smtp2.google.com. 8 google.com mail is handled by 10 smtp3.google.com. 9 google.com mail is handled by 10 smtp4.google.com.
Rodzaje testów statycznych nie wymagaj uruchamiania programu formalne: dowody poprawno±ci programy analizuj ce (np. data-ow analysis) przegl dy kodu
FindBugs
FindBugs
Cechy inspekcji kodu szybko± ok. 150-200 linii kodu na godzin bardzo efektywna forma testowania wymaga przygotowa«, zespoªu oraz umiej tno±ci czytania kodu
Metody czytania kodu na» danie (as-needed) systematyczna (systematic) kierowana poziomem abstrakcji (abstract-driven) z u»yciem list kontrolnych (checklist)
Metoda systematyczna wybór punktu (lub punktów) startowego analiza w gª b wykonywanie kodu odnotowywanie kontekstu wywoªa«za dokªadne przejrzenie kodu analiza wszystkich zale»no±ci Przeciw du»e skomplikowanie nieznany rozmiar przegl danego kodu
Metoda na» danie wybór zakresu kodu (np. lista klas) analiza kodu, bez wchodzenia do wywoªywanych metod zaªo»enie o poprawno±ci wywoªywanych metod Za przewidywalny rozmiar przegl danego kodu l»ejsza analiza zale»no±ci Przeciw brak nabywania wiedzy o zale»no±ciach w kodzie mo»liwa dezorientacja wywoªaniami nieznanych metod
Metoda kierowana poziomem abstrakcji wybór zakresu kodu (np. lista klas) uporz dkowanie elementów kodu w kolejno±ci od najmniej zale»nego od innych analiza kodu i powi za«na poziomie samych klas analiza kodu na poziomie metod, bez wchodzenia do wywoªywanych metod Za przewidywalny rozmiar przegl danego kodu l»ejsza analiza zale»no±ci Przeciw nakªad czasu zwi zany z organizacj przegl du
Metoda list kontrolnych przegl danie kodu pod k tem wyst pienia konkretnych bª dów odnotowywanie zgodno±ci ka»dej z klas z zaleceniami Za metoda mechaniczna nie wymaga du»ych umiej tno±ci czytania kodu Przeciw brak pozyskiwania wiedzy o zale»no±ciach w kodzie mo»liwo± pomini cia bardziej zaawansowanych bª dów
Przykªad listy kontrolnej bª d zakresu bª dne operacje na zmiennych dynamicznych bª d w wyra»eniu arytmetycznym nie zainicjowane zmienne niezgodno± typów, bª dna konwersja nie uwzgl dnione sytuacje wyj tkowe bª d algorytmiczny
Formalny przegl d 36 osób wst pne przygotowanie: 12 godzin na osob czas trwania: ok. 2 godziny uczestnicy: autor, moderator, recenzenci, sekretarz prezentacja autora decyzja: akceptacja, zwrot do maªych poprawek, zwrot do du»ych poprawek
Przegl dy nieformalne indywidualny przegl d kodu (cudzego lub wªasnego) zespóª QA, na» danie (np. di z repozytorium) praca parami (np. Extreme Programming)
Testy dynamiczne wymagaj uruchomienia programu wiele rodzajów testy akceptacyjne testy jednostkowe testy integracyjne testy GUI testy wydajno±ciowe
Testy akceptacyjne rodzaj testów funkcjonalnych typu black-box (nie wymagaj znajomo±ci kodu) maj na celu akceptacj produktu przez klienta opieraj si na zgodno±ci ze specykacj ªatwo testowalna specykacja dodatkowym plusem wiele wariantów, np. testy beta pojedynczy test opisuje jeden spójny element funkcjonalno±ci
Testy jednostkowe typu black-box albo white-box (strukturalne, wymagaj znajomo±ci kodu) sprawdzaj poprawno± maªych fragmentów kodu, najcz ±ciej metod test = porównanie wyniku dziaªania dla danych testowych z wynikiem wzorcowym ich gªówna siªa polega na testowaniu regresyjnym
Testy integracyjne sprawdzaj poprawno± wi kszych elementów, np. wielu zintegrowanych moduªów znacznie bardziej skomplikowane w skongurowaniu od testów jednostkowych podobne w realizacji do testów jednostkowych, równie» uruchamiane regresyjnie
Testy GUI cz sto element testów akceptacyjnych trudne w automatyzacji du»e pole badawcze w ostatnim okresie Przykªad: Selenium
Testy wydajno±ciowe sprawdzaj speªnienie wymaga«pozafunkcjonalnych wi cej na (wcze±niejszym?) wykªadzie dr. Weissa (?)
Schemat dziaªania dla ka»dej klasy piszemy klas testuj c ka»da metoda klasy testuj cej to jeden test test polega na wywoªaniu metody klasy testowanej dla konkretnych danych i porównaniu otrzymanego wyniku z przewidywanym odpowied¹ jest binarna: test przeszedª lub nie przeszedª gªówny problem i sztuka to konstrukcja danych testowych
Metoda black-box dane testowe dobierane w oparciu o specykacj w przypadku testów jednostkowych: API oraz dokumentacja techniczna metody podziaª danych wej±ciowych na klasy, dla których metoda dziaªa tak samo (ale czy na pewno?) testy dla kilku przypadków z ka»dej klasy testy dla przypadków granicznych testy dla warto±ci nieprawidªowych czy metoda poprawnie rzuca wyj tki
Metoda black-box przykªad Zamówienia o warto±ci powy»ej 10 tys. zª realizowane s w trybie przetargu. Zamówienia na ni»sz kwot realizowane s w trybie zapytania ofertowego. zamówienie poni»ej 10 tys. zª zamówienie o warto±ci 10 tys. zª zamówienie o warto±ci powy»ej 10 tys. zª
Metoda black-box przykªad, c.d. [... ] Sprz t komputerowy jest kupowany zawsze w trybie przetargu. sprz t komputerowy, warto± poni»ej 10 tys. zª sprz t komputerowy, warto± dokªadnie 10 tys. zª sprz t komputerowy, warto± powy»ej 10 tys. zª inne zakupy, warto± poni»ej 10 tys. zª inne zakupy, warto± dokªadnie 10 tys. zª inne zakupy, warto± powy»ej 10 tys. zª
Metoda white-box dane testowe dobrane w oparciu o struktur w przypadku testów jednostkowych: struktur kodu istotne jest jak najwi ksze pokrycie kodu testami kilka kryteriów pokrycia wszystkie instrukcje wszystkie instrukcje warunkowe wszystkie warunki elementarne wszystkie ±cie»ki w programie kryteria mo»na ª czy
Kryterium wszystkich instrukcji przykªad B1 W1 B2 Dwie ±cie»ki potrzebne na zrealizowanie kryterium: W1 B1 W2 B3 B5 W1 B2 W2 B4 B5 W2 B3 B4 B5
Kryterium wszystkich ±cie»ek przykªad B1 W1 W2 B2 Cztery ±cie»ki potrzebne na zrealizowanie kryterium: W1 B1 W2 B3 B5 W1 B1 W2 B4 B5 W1 B2 W2 B3 B5 W1 B2 W2 B4 B5 B3 B4 B5
Testowanie p tli 1 while (W1) { 2 B1; 3 } 4 B2; W1 B1 Mo»liwe ±cie»ki W1 B2 W1 B1 W1 B2 W1 B1 W1 B1 W1 B2... W1 {B1 W1} B2 B2
Testowanie p tli 1 while (W1) { 2 B1; 3 } 4 B2; W1 B1 Dobierz dane tak aby wykona p tl zero razy (je±li to mo»liwe) minimaln, niezerow liczb razy przeci tn liczb razy maksymaln liczb razy B2
Newsy 31 grudnia 2008 r. Faulty software has crippled 30GB rst generation versions of the Microsoft Zune digital media player, aecting thousands of customers worldwide. The company said it was aware of the problem, and oered advice to Zune users on how to solve it. Customers have reported that their devices refuse to boot up, and freeze when the start-screen appears. http://news.bbc.co.uk/2/hi/technology/7806683.stm
Kod z bª dem (?)... 1 #define ORIGINYEAR 1980 2 3 // split total days since Jan 1, ORIGINYEAR into year, month and day 4 5 //... 6 7 int year = ORIGINYEAR; 8 9 while (days > 365) { 10 if (IsLeapYear(year)) { 11 if (days > 366) { 12 days -= 366; 13 year += 1; 14 } 15 } else { 16 days -= 365; 17 year += 1; 18 } 19 } http://pastie.org/349916
Zadanie zaproponuj testy black-box narysuj graf odpowiadaj cy kodowi zaproponuj testy white-box
Kod poprawiony 1 #define ORIGINYEAR 1980 2 3 // split total days since Jan 1, ORIGINYEAR into year, month and day 4 5 //... 6 7 int year = ORIGINYEAR; 8 9 while (days > 365) { 10 if (IsLeapYear(year)) { 11 if (days > 366) { 12 days -= 366; 13 year += 1; 14 } else { 15 break; 16 } 17 } else { 18 days -= 365; 19 year += 1; 20 } 21 } http://pastie.org/349916
Warunki poprawno±ci programowe odpowiedniki sprz towych czujników alarmowych wynikaj z zaªo»enia,»e lepiej przerwa bª dne wykonanie, ni» kontynuowa okre±laj warunki, które zawsze musz by speªnione nie s to warunki dostateczne poprawno±ci programu... w odró»nieniu od testów, nie zale» od danych nie s wyj tkami, które reaguj na bª dy ±rodowiska!
ródªa warunków poprawno±ci ograniczenia dotycz ce danych: zmiennych, pól, parametrów wzrost > 0 placa min placa max i, j : i < j A[i] < A[j] niezmienniki algorytmów