Witam,
Czytam ostatnio 2 książki: "Inżynieria oprogramowania w ujęciu obiektowym" oraz "JUnit in Action". Doszedłem do rozdziału 11. pierwszej książki który mówi o testowaniu. Jako, że ładnie wiąże się to z drugą książką postanowiłem wypróbować w praktyce to o czym czytam. Wymyśliłem sobie, że napiszę i przetestuję jednostkowo klasę do operacji na ułamkach. Piszę w tym dziale, gdyż poradziłem sobie z implementacją (Java) a mam problemy z testowaniem. Z konstruktorem klasy mi jeszcze jakoś poszło. Konstruktor odpowiada za ew. upraszczanie ułamka, redukcję minusów czy przeniesienie minusa z mianownika do licznika a takze za sprawdzenie czy ulamek moze byc utworzony (dzielenie przez 0). Pisząc testy dla konstruktora uzylem testów strukturalnych, czyli zidentyfikowalem wszystkie ścieżki ktorymi może podązyc egzekucja programu i dla każdej z nich napisalem 1 test.
Problem pojawił się w testowaniu operacji dodawania ulamkow. Zalozylem sobie, że jesli licznik lub mianownik wynikowego ulamka po dodaniu (i po ew. skroceniu) nie miesci sie w granicach int to rzuce wyjatek. Testując dodawanie chcialbym podejsc do tego od strony TDD (tak, wiem, że powinienem zaczać od testow ale teraz zakladam, że nie widzę implementacji). A wiec pytanie brzmi: jakiego podejscia uzyć aby wlasciwie przetestowac dodawanie ulamkow i nie skonczyc z powiedzmy 30 testami? Czy inaczej, jak dobrac zestaw danych testowych (zakladając ze nie widzimy implementacji) aby mieć największa pewnosc, ze metoda dodawania ulamkow zostala zaimplementowana poprawnie?
pozdrawiam