Xem xét một phương thức để xáo trộn ngẫu nhiên các phần tử trong một mảng. Làm thế nào bạn sẽ viết một bài kiểm tra đơn vị mạnh mẽ nhưng đơn giản để đảm bảo rằng điều này đang hoạt động?
Tôi đã đưa ra hai ý tưởng, cả hai đều có những sai sót đáng chú ý:
- Xáo trộn mảng, sau đó đảm bảo thứ tự của nó khác với trước. Điều này nghe có vẻ tốt, nhưng thất bại nếu xáo trộn xảy ra để xáo trộn theo cùng một thứ tự. (Không thể cải thiện, nhưng có thể.)
- Xáo trộn mảng với một hạt giống không đổi và kiểm tra nó với đầu ra được xác định trước. Điều này phụ thuộc vào hàm ngẫu nhiên luôn trả về cùng các giá trị được cung cấp cùng một hạt giống. Tuy nhiên, điều này đôi khi là một giả định không hợp lệ .
Hãy xem xét một hàm thứ hai mô phỏng các cuộn súc sắc và trả về một số ngẫu nhiên. Làm thế nào bạn sẽ kiểm tra chức năng này? Làm thế nào bạn sẽ kiểm tra chức năng ...
- không bao giờ trả về một số bên ngoài giới hạn nhất định?
- trả về số trong một phân phối hợp lệ? (Đồng phục cho một người chết, bình thường cho số lượng lớn xúc xắc.)
Tôi đang tìm kiếm câu trả lời cung cấp cái nhìn sâu sắc về kiểm tra không chỉ các ví dụ này mà cả các yếu tố ngẫu nhiên của mã nói chung. Là bài kiểm tra đơn vị thậm chí là giải pháp đúng ở đây? Nếu không, loại thử nghiệm là gì?
Chỉ để làm dịu tâm trí của mọi người Tôi không viết trình tạo số ngẫu nhiên của riêng tôi.