드문 동작을 관찰하기
몇 개 스레드가 같은 상태를 다루도록 검사하고 여러 상태 객체에서 반복 실행한 결과를 모은다. 재배치나 계약 위반처럼 일반 검사에서 드러나기 어려운 현상을 찾는 데 활용한다. 허용되는 결과와 금지되는 결과 및 특별히 조사할 결과를 올바르게 분류해야 한다. 실행 횟수만 많아도 잘못된 판정 기준을 고칠 수는 없다.
확률적 관찰의 한계
대부분의 검사는 드문 결과를 보려면 충분한 실행 시간이 필요하다. 짧은 자동 빌드용 모드와 긴 조사 실행은 수집하는 표본 수가 다르다. 금지 결과가 관찰되지 않았다고 그런 동작이 불가능하다는 형식 증명이 되지는 않는다. CPU와 JVM 옵션 및 실행 시간을 함께 기록해 비교한다.
실패 결과의 조사
HTML 보고서에서 전체 해석을 살펴보고 실패 원인을 구분한다. 실제 구현 오류 외에 검사 판정이나 하네스 및 하드웨어 문제가 영향을 줄 수 있다. API가 맞지 않아 건너뛴 검사도 성공한 검사와 분리한다. 전체 검사 모음과 하네스 및 사용자 검사의 빌드 조건이 다를 수 있어 실제 필요한 JDK와 구성을 확인한다.
관련 문서
Lincheck / CDSChecker / GenMC / Loom 동시성 테스트