Architecture Test

  • 기존 전제는 만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해서 높은 커버리지를 유지하는 것이다.

    Test Coverage

    • System, S/W의 테스트를 논할 때 얼마나 충분한가?를 나타낸 것,
    • 수행 테스트가 얼마나 테스트 대상을 커버했는가다.
    • 100%라고 완벽한 것은 아니다.
  • 단위 테스트, 통합 테스트, 시스템 테스트 순으로 가격이 비싸진다. 따라서 커버리지를 순서대로 낮게 잡아야 한다.
  • 단위 테스트는 하나의 클래스를 instantiate 해서 해당 클래스의 인터페이스를 통해서 기능들을 테스트 한다.
    • mocking으로 결합도가 높아진다.
    • 모든 동작, 상호작용을 검사하는게 목표가 아니다.
    • 핵심만 골라서 테스트 한다.
  • 통합 테스트는 여러 유닛을 instantiate 해서 시작점이 되는 클래스의 인터페이스를 실행시켜 전체 기능이 기대한대로 동작하는지 검증한다.
  • 시스템 테스트는 application의 UI를 포함한 end-to-end 테스트 층이 있을 수 있다

LineCoverage

  • 테스트 성공하는데 있어서 크게 관련이 없다.
  • 코드 중요한 부분이 커버되지 않을 수도 있다.

유지보수 용이한 SW와 테스트

  • 도메인 로직은 단위 테스트 진행, 어댑터는 통합으로 테스트 진행과 같이 목표를 나눌 수 있다.
  • 테스트하면서 모킹이 버거워지면 이는 문제가 있음을 암시하고는 한다.
  • 테스트를 귀찮은 것이 아닌 개발을 하면서 사용하는 도구로 인식하는 것이 좋다.