Rozważ metodę losowego tasowania elementów w tablicy. Jak napisałbyś prosty, ale solidny test jednostkowy, aby upewnić się, że działa?
Wymyśliłem dwa pomysły, z których oba mają zauważalne wady:
- Potasuj tablicę, a następnie upewnij się, że jej kolejność różni się od poprzedniej. Brzmi to dobrze, ale kończy się niepowodzeniem, jeśli losowanie jest losowe w tej samej kolejności. (Nieprawdopodobne, ale możliwe.)
- Potasuj tablicę ze stałym ziarnem i sprawdź ją z ustalonym wynikiem. Zależy to od funkcji losowej, która zawsze zwraca te same wartości dla tego samego ziarna. Jednak czasami jest to nieprawidłowe założenie .
Rozważ drugą funkcję, która symuluje rzuty kostką i zwraca losową liczbę. Jak przetestowałbyś tę funkcję? Jak przetestowałbyś tę funkcję ...
- nigdy nie zwraca liczby poza podanymi granicami?
- zwraca liczby w prawidłowym rozkładzie? (Jednolity dla jednej kości, normalny dla dużej liczby kości.)
Szukam odpowiedzi oferujących wgląd w testowanie nie tylko tych przykładów, ale ogólnie losowych elementów kodu. Czy testy jednostkowe są tu nawet właściwym rozwiązaniem? Jeśli nie, jakie to są testy?
Aby uspokoić wszystkich, nie piszę własnego generatora liczb losowych.