그래서 흔히 하는 예제 기반 테스팅으로는 버그 다 잡기 어려울 거임
property based testing 하세여 이번 기회에 배워 보세여


https://medium.com/happyprogrammer-in-jeju/%ED%8E%B8%EB%A6%AC%ED%95%98%EA%B3%A0-%EA%B0%95%EB%A0%A5%ED%95%9C-%EC%86%8D%EC%84%B1-%EA%B8%B0%EB%B0%98-%ED%85%8C%EC%8A%A4%ED%8C%85-b405ab54fd3c


한글로 소개한 글이 있네여

PBT가 뭔지 간단히 소개해보자면
테스트케이스를 자동으로 생성해서 테스트 하는거임.

여기까지는 이미 하고 있는 사람들이 있을 거임.
문제는 막 key 10000개 넣었는데 터지면 디버깅이 존나 빡세잖음?

PBT 라이브러리는 자동으로 생성한 입력이 테스트를 통과하지 못하면, 지가 알아서 입력 데이터 크기를 줄여가면서 테스트가 계속 실패하는지 봄.
그러다가 일정 크기 이하가 되면 테스트가 실패하는 꽤나 작은 입력데이터를 얻을 수 있음. 내가 비트리로 해보니까 아무리 복잡한 케이스도 보통 노드가 5개 정도 되는 입력으로 축소됨.

속성 기반 테스트를 짜는게 좀 힘들긴 한데 짜두면 효과는 확실함. 그리고 비트리 속성이야 뻔하니까 사실 그리 어렵지도 않음. 전에 내가 올린 코드에서 속성들 확인할 수도 있음 뭐 노드는 어떻고 트리는 어떻고..


C++이면 rapidcheck
파이썬이면 hypothesis
하스켈이면 원조 맛집 quickcheck

이거 진짜 존나 좋으니까 찍먹들 해봐여