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