- 테스트 코드는 말 그대로 우리가 작성한 코드에 문제가 없는지 테스트하기 위해 작성하는 코드다.
- 올바른 테스트 코드 작성을 위해선 흔히 기본 원칙이라 불리는 일곱 테스트 원칙을 따르는 것이 좋다.
[ 일곱 테스트 원칙 ]
- 테스팅은 결함의 존재를 보여주는 것이다.
- 완벽한 테스트는 불가능하다.
- 테스트 구성은 가능한 빠른 시기에 시작한다.
- 결함은 군집되어 있다.
- 살충제 역설 - 비슷한 테스트가 반복되면 새로운 결함을 발견할 수 없다.
- 테스팅은 정황에 의존적이다.
- 오류 부재의 오해 - 사용되지 않는 시스템이나 사용자의 기대에 부응하지 않는 기능의 결함을 찾고 수정하는 것은 의미가 없다.
1. Testing 단위에 따라 분류하기
테스트는 단위에 따라 아래와 같이 3가지로 나눌 수 있다.
- unit test: 의존성 없이 하나의 로직을 테스트
- integration test: 다른 함수에 의존성을 가진 로직을 테스트
- E2E test(End-to-End): 테스트하는 경우
2. TEST CODE를 왜 작성해야 하는가?
[ 읽어보면 좋을 아티클: test code를 왜 작성해야 하는가? ]
설마 아직도 테스트 코드를 작성 안 하시나요?
3. 테스트 커버리지?
[ 테스트 커버리지 ]
- 종류
- 구문 커버리지(Statement Coverage)
- 모든 문장이 실행. 코드의 모든 문장이 적어도 1회 이상 실행
- 결정 커버리지(Decision Coverage)
- 모든 결정이 실행. 모든 결정 분기가 적어도 1회 이상 실행
- 100% 결정 커버리지는 100% 문장 커버리지는 보장함
- 조건 커버리지(Condition Coverage)
- 결정 내부의 모든 조건이 실행
- 결정을 구성하는 조건의 결과가 적어도 1회 이상 나타남.
- 결정 조건 커버리지(Decision Condition Coverage)
- 모든 조건이 실행되고, 모든 결정이 실행됨
- 모든 결정을 포함하고, 결정 내 모든 조건의 결과가 나타남
- 변형 결정 조건 커버리지(Modified Decision Condition Coverage)
- 결정 내부의 하나의 조건이 다른 조건과 무관하게 결정에 영향을 주는 경우 추가
- 가장 효율적임
- 다중 조건 커버리지(Multiple Condition Coverage)