RIGHT BICEP
RIGHT
- 결과가 올바른지 검증할 수 있어야 함.
package unit02;
public class Calculator {
private int result;
public int add(int a, int b) {
result = a + b;
return result;
}
public int subtract(int a, int b) {
return a - b;
}
public int multiply(int a, int b) {
return a * b;
}
public int divide(int a, int b) {
if (b == 0) throw new IllegalArgumentException("Division by zero");
return a / b;
}
public int getResult() {
return result;
}
}
위의 계산기 예제를 활용해서 테스트 가능함.
B (Boundary Conditions - 경계 조건)
시나리오에서 경계조건을 검증해야함.
@Test
void testDivideByZero() {
Calculator calculator = new Calculator();
assertThrows(IllegalArgumentException.class, () -> calculator.divide(10, 0));
}
I ( Inverse relationship - 역관계)
- 수학과 같이 논리적인 역관계를 사용해서 테스트한다.
- add 메서드의 역함수로 테스트
@Test
void testInverse() {
Calculator calculator = new Calculator();
int result = calculator.add(10, 5);
assertEquals(10, calculator.subtract(result, 5));
}
C - Cross Check
// C
@Test
void testCrossCheckMultiply() {
int result = calculator.multiply(5, 3);
int crossCheckResult = 0;
for (int i = 0; i < 3; i++) {
crossCheckResult = calculator.add(crossCheckResult, 5);
}
assertEquals(result, crossCheckResult);
}
- multiply 메서드를 반복적인 add 메서드로 교차 검증함
E - Error Condition
@Test
void testErrorConditions() {
Calculator calculator = new Calculator();
assertThrows(IllegalArgumentException.class, () -> calculator.divide(10, 0));
}
- divide 메서드에서 0으로 나눌때 오류가 발생하는지 확인
P - Performance Characteristics
@Test
void testPerformance() {
Calculator calculator = new Calculator();
long startTime = System.currentTimeMillis();
calculator.multiply(1000, 1000);
long endTime = System.currentTimeMillis();
assertTrue(endTime - startTime < 100);
}
특정 입력으로 multiply의 성능을 검증한다.
728x90
반응형
'TDD' 카테고리의 다른 글
TDD 사이클 (0) | 2024.09.16 |
---|---|
Test Smell 처리 방법 (0) | 2024.09.09 |
Mock과 Stub의 차이 (0) | 2024.09.09 |
좋은 테스트의 요건 - FIRST (0) | 2024.08.31 |
단위 테스트의 기초 (0) | 2024.08.21 |