책너두 5기 48일차
로버트 C. 마틴의 클린코드 p. 437~ p.446
내용정리
부록 A 동시성 2
다중 스레드 코드 테스트
- 변수의 현재 값을 기억한다.
- 스레두 두 개를 새엉하여 각 스레드가 해당 변수에 관한 메서드를 호출한다.
- 의도에 맞게 값이 변경되었는지 확인한다.
- 의도와 다르게 변한것이 확인될 때까지 반복한다.
위와 같은 테스트는 아주 드물게 문제가 발생하기 때문에, 일억 번은 돌려야 한다. 따라서 많은 시간이 소모된다. 이를 대체하기 위한 방법들은 다음과 같다.
-
몬테 카를로 테스트
-
조율이 가능하게 유연한 테스트를 만든다.
-
그런 다음, 임의로 값을 조율하면서 반복해 돌린다.
-
테스트가 실패하면 버그가 있다는 증거다.
-
- 시스템을 배치할 플랫폼 전부에서 테스트를 돌린다. 실패 없이 돌아가면 두 가지 중 하나이다.
- 실제 코드가 올바르다.
- 테스트가 부족해 문제를 드러내지 못한다.
- 부하가 변하는 장비에서 테스트를 돌린다. 실제 환경과 비슷하게 부하를 걸어 준다.
위와 같은 방법들로도 스레드 문제를 찾을 가능성은 매우 낮다.
스레드 코드 테스트를 도와주는 도구
IBM에서 내놓은 ConTest를 사용할 수 있다.
결론
동시성 프로그래밍을 살펴보았지만 빙산의 일각에 불과하다. 더 많은 내용을 알아야 한다.
읽고나서
클린 코드 끝…