soneta / Soneta.MsBuild.SDK

Sdk stworzone przez firmę Soneta pozwalające automatycznie skonfigurować oraz uzupełnić projekty dodatków o niezbędne elementy potrzebne do współpracy z oprogramowaniem enova.
MIT License
8 stars 12 forks source link

testy a niezmienność wejścia #5

Closed Infotelecom closed 5 years ago

Infotelecom commented 5 years ago

Nie jestem pewien czy to właściwe do tego miejsce. Jeśli mówimy, że testy powinny zapewniać niezmienność wejścia, to czy baza nunit_default powinna zawierać dane demonstracyjne? Okres obrachunkowy jest co roku inny - ten sam test puszczony za rok może nie zadziałać. A co będzie, jak zmienią się nazwiska pracowników? Może lepiej byłoby te dane dodać jako plik dbinit, do wykorzystania, jeśli ktoś ich potrzebuje, a bazę generować pustą?

TomekScieplek commented 5 years ago

Testy integracyjne zawsze (w przeciwieństwie do dobrze napisanych testów jednostkowych) stanowią pewnego rodzaju kompromis i nasze doświadczenia wykazały, że konfiguracja podstawowa bazy demo jest bardzo dobrym punktem wyjściowym. Większość danych w tej bazie się nie zmienia, natomiast jeżeli dane wejściowe mają wpływ na wynik testu, należy to uwzględnić. Mamy tutaj kilka opcji:

  1. Zasilenie bazy demo danymi przed testem z poziomu samego kodu. Jest to bardzo dobre, łatwe w utrzymaniu rozwiązanie. Zmiany nie zaśmiecają bazy pozostałym testom. Bardzo wygodne kiedy danych wejściowych nie jest dużo. Szczególnie przydatne dla zmian konfiguracyjnych na moment testu.
  2. Dbinit - tutaj wnosimy już dane trwale, które mają znaczenie w całym procesie testowania. Musimy też zadbać separację, by kolejne dbinity nie psuły rezultatów testów. W handlu separacje robimy za pomocą różnych kartotek towarowych lub kontrahentów. Przykładowo jeśli już mamy jakieś testy oparte o dbinit dla jakiejś kartoteki/kontrahenta, to kolejne dbinit rejestrują dane dla innej kartoteki/kontrahenta. Testy, które działają na szerszym zbiorze danych nie uwzględniając separacji, oczywiście obrywają po dodaniu dbinit.
  3. Kopia bazy - tutaj rodzi się pytanie ile takich baz się pojawi. Zarządzanie nimi może być dosyć uciążliwe.
  4. Ładowania plików dbinit na życzenie z kodu testu. Jest to jakiś kompromis pomiędzy 1 i 2.
gentooser commented 5 years ago

Jeżeli chodzi o okres obrachunkowy to większość testów księgowych wymaga jego istnienia i dodawanie go za każdym razem byłoby nieoptymalne czasowo. Radzimy sobie z jego zmianą na dwa sposoby. Jeżeli test wymaga specyficznego okresu, to go dodajemy. Jeżeli nie, to pobieramy ten aktualny i uwzględniamy jego rok w weryfikacji wyników testu.