[ Pobierz całość w formacie PDF ]
.)- Programowanie trickowe (szybsze działanie, efektywność) - stosowanie funkcji nie udokumentowanych, odwołanie się do przerwań itp.- Skończoność dokładności obliczeń.- Rekurencje.- Wykorzystanie procesów równoległych i przerwań.- Złożone wyrażenia - priorytety.- Wykorzystanie współdzielonych zasobów (danych urządzeń itp.)Jakość kodowania - czynniki:- zasada ograniczonego dostępu - unikanie deklaracji zmiennych globalnych i dostępu do nadmiarowej ilości obiektów z modułów- kompilacja - zgodność typów różnych obiektów, należy używać kompilatorów sprawdzających zgodność typów (problem z językami implementacyjnymi Java, SQL)Błędy:- błąd (error, failure) - niepoprawna konstrukcja w SI, która może doprowadzać do niewłaściwego działania)- konsekwencją błędu jest błędne wykonanie.- „Każdy program ma błąd - tylko nie wiemy”.- Błędy w oprogramowaniu są od początku - nie powstają w trakcie eksploatacji.Błędy w SI - typy:- błędy krytyczne vs niekrytyczne- uciążliwe vs kosmetyczne- losowe vs stabilne- narastające- funkcjonalne vs obliczeniowe- wyjątkoweTolerancja błędów:- właściwość SI poprawnego działania po wystąpieniu błędu- wymagania tolerancji:o wykrycie błędu przez programo wyjście z błędu (zakończenie pracy modułu z błędem)o ewentualna naprawa błęduTechniki uzyskania tolerancji:- weryfikacja warunków integralności danych (warunki sprawdzone przez inne moduły czy metody)- porównywanie wyników wielu wersji oprogramowania, wyciąganie średnich, odrzucanieTestowanie SI:- Wykrycie i usunięcie błędów i błędnych wykonań => wykrywanie błędów- Ocena niezawodności systemu => testy statystyczneDwa typy testowania:- Atestowanie (walidacja) - zgodność z wymaganiami użytkowników- Weryfikacja - zgodność z dokumentacją (np.: specyfikacją systemu)Czarna i biała skrzynka:- testy na zasadzie białej skrzynki wykorzystują informację o programie do konstrukcji testów (danych testowych, analizy kodu) - nie pozwalają odkryć błędów funkcjonalnych- testy na zasadzie czarnej skrzynki, traktuje się program jako obiekt o nieznanej konstrukcjiFazy testowania:- test modułów (test kodu i funkcji)- testy systemu (całość)- testy akceptacyjne (końcowa, użytkownik sprawdza zgodność ze specyfikacją wymagań)Sposoby testowania kodu:- statyczne (inspekcje kodu, inny zespół niż programiści tego kodu):o śledzenia wykonania „na sucho”o wyszukiwanie błędów- dynamiczne (wykonanie + analiza wyników)- dowód poprawności - obliczenia matematyczne (10 KLOC = 500K$) - kosztKryteria doboru danych w testach dynamicznych:- każda instrukcja powinna wykonać się przynajmniej jeden raz - pokrycie testem wszystkich instrukcji- pokrycie instrukcji warunkowych (w tym i wartości granicznych)- testy pętli - minimalna liczba iteracji (w tym i 0) oraz maksymalna ich liczbaTypowe zagrożenia - konstrukcje:- brak inicjacji wartości zmiennych- porównania zmiennoprzecinkowe (różne liczby na którym miejscu)- indeksy tablic- operacje na wskaźnikach- pętle (wyjście z pętli)- warunki (np.: < zamiast <=)- złożone wyrażenia (stosowanie nawiasów)- nieuwzględnienie błędnych danychTestowanie systemu techniki:- Wstępujące (operowanie danych: procedur testujących, hierarchiczność strategii -> brak możliwości zrównoleglenia prac) - testowanie funkcji oddzielnie każdej.- Zstępujące (robienie aplikacji od góry, najpierw ogólna nazwa programu, później drobiazgi, funkcja) - konieczność opracowania „zaślepek” - trudność w testowniu nowego modułu- test pod obciążeniem - (stress testing) - Do jakiego czasu aplikacja pracuje poprawnie dokładając na nią obciążenie (objętość, new users, klienci, obciążenie sieci - efektywność)- test odporności - (na nadzwyczajne zdarzenia).Zasilanie, sprzęt, niepoprawne dane, odłączenie od sieci, wyciągnięcie wtyczki - jak się zachowuje po ponownym uruchomieniu.Dane testowe:- kryteria wyboru danych testowych:o testy pozytywne (dane + poprawne wyniki)o testy negatywne (błędne dane, brak danych)o testy funkcjonalne (funkcje programów)o testy strukturalne (testowanie wszystkich ścieżek w programie)- pochodzenie danych:o dane losoweo dane deterministyczneo dane rzeczywisteMiary niezawodności:- prawdopodobieństwo błędnego wykonania transakcji- częstotliwość występowania błędu (ilość błędów w jednostce czasu)- średni czas między błędami (MTBF) - storna techniczna dotyczy sprzętu- średni czas odtwarzania systemu po awarii- dostępność systemu (np.: 99% czasu przy 1% konserwacji - procent dostępności do systemu)Liczebność testów:- Arbitralne (czas, koszty) - ograniczone ze względu na czas i koszty wytworzenia systemu.- Szacowane w trakcie testowania (np.: koniec testowania w odpowiednich przestankach, np.: stwierdzenie że zostało tylko S błędów)Metoda „posiewanie błędów”:- wprowadzenie do aplikacji (N) błędów- testowanie (wykrywanie) przez testerów- szacunek liczby pozostałych błędów„Sianie błędów” - uwagi:- posiane błędy powinny być tego samego rodzaju co poszukiwane- inny zespół „sieje” inny „testuje”- możliwość sprawdzenia efektywności metod testowania i jakości pracy testerówFaza testowania w praktyce:- testowanie zwykle jest przeplatane poprawianiem kodu (przez programistę np.)- poprawianie wprowadza błędy (ponownie należy sprawdzić od początku)Scalanie SI:- scalanie oprogramowania- scalanie oprogramowania ze sprzętem- scalanie oprogramowania z BD- konwersja starej (spadkowej) BD - problemy poprawności, aktualności, integralności, kompletności spadkowej BDDokumentowanie:- Odbiorcy: autor systemu (projekt systemu), użytkownicy, administratorzy SI- Przeznaczenie: dokumentowanie budowy SI - rozwój, pielęgnowanie; uczenie się użytkownika i administratora; pomoc w rozwiązywaniu problemów - instalacja, użytkowanie, administrowanieSkutek pakietów dokumentacji:- opis funkcjonalny (co system robi)- podręcznik użytkownika- kompletny opis (SI)- opis instalacji SI ( na różnych systemach operacyjnych, konfiguracja systemu operacyjnego - biblioteki, sprzętu)- podręcznik administratora systemu- słownik terminów- indeks (wyszukiwanie) - podręczniki elektroniczneJakość dokumentacji:- cel: jaki odbiorca (język)- struktura- standardy- sposób pisania
[ Pobierz całość w formacie PDF ]