Testowanie kodu naukowego
Zalety testowania kodu Naukowego
Kiedy piszesz masz pewność że działa
Szybciej wykrywasz błędy
Łatwiej jest zrobić zmiany w kodzie
Rodzaje Testów
Testy jednostkowe
Dotyczą jednego komponentu
Testy integracyjne
Dotyczą kilku komponentów
Testy systemowe
Dotyczą całego systemu na raz
Testy Jednostkowe
Testują jeden komponent (klasę, metodę...)
Pozostałe komponenty systemu albo są w
teście nieobecne albo są zamarkowane
obiektami atrapami
TESTY JEDNOSTKOWE
Pozwalają przetestować jeden obiekt
Izolują błąd z dokładnością do klasy/metody
Wymagają pracy przy zmianie wewnętrzynych interfejsów programu
Testy integracyjne
Testują kilka komponentów razem
Testy systemowe
Testują cały system
Wymagają zmiany przy zmianach zewnętrznych interfejsów programu
Bardzo trudno jest zidentyfikować błąd
Jakie testy?
Testy jednostkowe do testowania
ważnych, trudnych, fragmentów kodu
Najlepiej do wszystkiego
Test systemowe sprawdzające poprawność całości
Testy systemowe
Testujecie jakość działania programu.
Porównanie z danymi eksperymentalnymi (trudne!)
Symulacja dla przypadku rozwiązywalnego analitycznie.
Sprawdzenie rozwiązywalnego analitycznie szczegółu symulacji.
Porównanie z "poprawnymi wynikami"
Testy regresyjne: porównanie z wynikiami Waszego programu z czasu kiedy działał "dobrze".
Testy czy dane są spójne.
Porównanie z eksperymentem
Tutaj mamy model reaktora podczas total LOCA
Oraz wyniki reaktora testowego doprowadzonego do total LOCA
Widać niezlą zgodność :)
Inny przykład
Boeing wing break test: https://www.youtube.com/watch?feature=player_detailpage&v=Ai2HmvAXcU0#t=133
Porównanie z poprawnymi wynikami
Poprostu
automatycznie
sprawdzacie czy program generuje "poprawne" dane/wykresy/obrazki.
Dostajecie program który trzeba zmodyfikować
Przyśpieszyć
Roszerzyć
Pierwszą rzeczą którą robicie powinno być:
wygenerowanie kilku zestawów danych
sprawdzanie czy program po poprawkach daje spójne wyniki
Testy jednostkowe
Sprawdzają działanie jednego komponentu
Dla przykładu rozwiązywalnego analitycznie
Policzalnego w pamięci (waszej!)
Warto pisać je podczas pisania danego
fragmentu programu
Wtedy macie pewność że dany kawałek działa poprawnie
Na następnych wstępach
Narzędzia do pisania testów
Przykłady
Made with Slides.com