무엇을 테스트해야 하는가?
무엇을 테스트해야하는지 종종 길을 잃곤 하는데 아래 내용을 보면서 더 적용할만한 것이 있는지 체크리스트로 쓰려고 메모해둔다.
Right-BICEP
- Right: 결과가 올바른가?
- B: Boundary conditions: 경계조건은 맞는가?
- Edge case: 시스템 내부 조건에 의해 발생하는 특별한 케이스를 의미 (Long의 Max값이 언어마다 다른 것 등)
- Coner case: 시스템 내/외부 조건에 의해 발생하는 특별한 케이스들을 의미 (네트워크가 단절된 경우, 서버의 메모리가 128MB이거나 등등)
- I: 역관계를 검사할 수 있는가?
- C: Cross Check 교차검사할 수 있는가?
- E: Error Conditions 오류 상황을 강제로 일어나게 할 수 있는가?
- P: Performacne characteristics 성능 조건은 기준에 부합하는가? (ngrinder)
경계조건 체크리스트
- Conformance: 사용자의 Id가 이메일 형식인지 테스트한다.
- Ordering: 당첨자가 청약 점수에 따라 정렬이 됐는지 테스트한다.
- Range: 덧셈 함수가 Long.Max + Long.Max일 때 어떻게 동작해야 하는지 테스트한다.
- Reference: 휴면 계정 처리된 사용자를 초대하기 했을 때 어떻게 동작해야 하는지 테스트한다.
- Existence: 입력값 null, 0, ““일 때 어떻게 동작하는지 테스트한다.
- Cardinality: 입력값의 길이가 0일 때, 1일 때, n일 때 어떻게 동작하는지 테스트한다.
- Time: 병렬 처리하지만 메세지 순서는 제대로 처리되는지 테스트한다.