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

Testowanie kodu

By Jacek Bzdak

Testowanie kodu

  • 1,282