부록 A 동시성2 (4)

다중 스레드 코드 테스트

책너두 5기 48일차

로버트 C. 마틴의 클린코드 p. 437~ p.446

내용정리

부록 A 동시성 2

다중 스레드 코드 테스트

  • 변수의 현재 값을 기억한다.
  • 스레두 두 개를 새엉하여 각 스레드가 해당 변수에 관한 메서드를 호출한다.
  • 의도에 맞게 값이 변경되었는지 확인한다.
  • 의도와 다르게 변한것이 확인될 때까지 반복한다.

위와 같은 테스트는 아주 드물게 문제가 발생하기 때문에, 일억 번은 돌려야 한다. 따라서 많은 시간이 소모된다. 이를 대체하기 위한 방법들은 다음과 같다.

  • 몬테 카를로 테스트

    • 조율이 가능하게 유연한 테스트를 만든다.

    • 그런 다음, 임의로 값을 조율하면서 반복해 돌린다.

    • 테스트가 실패하면 버그가 있다는 증거다.

  • 시스템을 배치할 플랫폼 전부에서 테스트를 돌린다. 실패 없이 돌아가면 두 가지 중 하나이다.
    • 실제 코드가 올바르다.
    • 테스트가 부족해 문제를 드러내지 못한다.
  • 부하가 변하는 장비에서 테스트를 돌린다. 실제 환경과 비슷하게 부하를 걸어 준다.

위와 같은 방법들로도 스레드 문제를 찾을 가능성은 매우 낮다.

스레드 코드 테스트를 도와주는 도구

IBM에서 내놓은 ConTest를 사용할 수 있다.

결론

동시성 프로그래밍을 살펴보았지만 빙산의 일각에 불과하다. 더 많은 내용을 알아야 한다.

읽고나서

클린 코드 끝…