1. Unit Test
막연히 Unit Test를 작성해야 한다고 들었다. 버그를 줄여주고, 그리고 TDD 와의 연계…
(ps. 의외로 Unit Test 와 TDD 를 하나라고 보는 시각이 많은데, 나는 Unit Test 와 TDD 는
조금 다르다고 생각한다. TDD는 실패하는 테스트 케이스를 만들어서, 이를 성공시켜 가면서
개발을 하는것이고, 즉, TDD 안에 Unit Test라는 과정이 포함되어 있는것이고, Unit Test 는
그냥 단순히 모듈에 대해서 테스트를 작성할 수도 있다. Unit Test의 강점은 “회귀 테스트” 가
아닐까 생각한다.)
그런데, Unit Test 를 작성해라. 라는 말은 듣지만, 실제로 어떻게 작성하면 잘 작성하는 것인가?
라는 의문이 생기게 된다.
2. 코드 커버리지
다른 말로 테스트 커버리지 라고도 한다. 팀마다 Statement Coverage, Branch(Decision) Coverage, Condition Coverage, Modified Decision/Condition Coverage 등을 측정하는데
사실 가장 좋은것은 Modified Decision/Condition Coverage 를 측정하는 것이고, 보통의
툴들은 Branch Coverage 를 측정해 준다. 실제 코드 커버리지를 측정하면, 코드의 어느 범위
까지 어떤 경우까지 테스트가 되었는지 알 수 있다.
3. 테스트 케이스 작성
여기서 말하는 테스트 케이스는 QA에서 하게 되는 인수테스트를 말하는 것이 아니라, 개발자의
Unit Test를 말한다. 자, 그럼 이제부터 Unit Test를 어떻게 작성해야 하는가? 바로 위의
Modified Decision/Condition Coverage 나 Branch Coverage 를 모두 측정할 수 있는
형태로 Unit Test 를 작성하면 된다. (말은 퍽 쉽다!!!)
즉, 하나의 모듈에서, 입력과 조건에 따라서 수행될 수 있는 케이스에 대해서 체크를 하고
이에 맞게 Unit Test를 만들면, 잘 만들었다고 할 수 있는 것이다. 그럼 이런 입력 조건에
대해서 테스트 케이스를 만드는 건 어떻게 할 수 있을까?
그래서 개발자가 테스트에 대해서 잘 아는 것도 중요해 질듯 싶다. 나도 잘 몰라서 공부중이다.