배열에서 요소를 무작위로 섞는 방법을 고려하십시오. 이것이 효과가 있는지 확인하기 위해 간단하면서도 강력한 단위 테스트를 어떻게 작성 하시겠습니까?
나는 눈에 띄는 결함이있는 두 가지 아이디어를 생각해 냈습니다.
- 배열을 섞은 다음 순서가 이전과 다른지 확인하십시오. 이것은 잘 들리지만 셔플이 같은 순서로 섞이면 실패합니다. (불가능하지만 가능합니다.)
- 일정한 시드로 어레이를 셔플하고 미리 결정된 출력과 비교하여 점검하십시오. 이것은 동일한 시드에 대해 항상 동일한 값을 반환하는 랜덤 함수에 의존합니다. 그러나,이는 가끔 잘못된 가정 .
주사위 롤을 시뮬레이션하고 난수를 반환하는 두 번째 함수를 고려하십시오. 이 기능을 어떻게 테스트 하시겠습니까? 그 기능을 어떻게 테스트하겠습니까?
- 주어진 범위 밖의 숫자를 반환하지 않습니까?
- 유효한 분포로 숫자를 반환합니까? (하나의 주사위에 대한 균등, 많은 주사위에 대한 정상)
이 예제뿐만 아니라 일반적으로 임의의 코드 요소를 테스트하는 데 대한 통찰력을 제공하는 답변을 찾고 있습니다. 단위 테스트도 여기에 올바른 솔루션입니까? 그렇지 않은 경우 어떤 종류의 테스트입니까?
모든 사람의 마음을 편하게하기 위해 나는 내 자신의 난수 생성기를 작성 하지 않습니다 .