티스토리 뷰

반응형

테스트 케이스란?

테스트 케이스란, 소프트웨어의 테스트를 실시에 대한 절차서입니다. 테스트 케이스를 바탕으로 수동으로 테스트하거나 자동 테스트를 구현합니다.

테스트 유형

소프트웨어 테스트에는 여러 종류가 있으며, 대표적인 것에는 세 가지가 있습니다.

단위 테스트 : 프로그램의 기본 단위인 모듈을 테스트
통합 테스트 : 모듈 간의 협력에 대한 테스트
시스템 테스트 : 사용자 관점에서 인터페이스를 통한 테스트

테스트 케이스 유형

정상 시스템 : 예상되는 입력에 대해 예상대로 출력을 수행하는지 여부
이상 시스템 : 예상되지 않은 입력에 대해 해결 여부
여러 종류의 테스트에 대해서, 정상, 이상 시스템 관점을 바탕으로 테스트의 순서를 써 가는 것이 테스트 케이스입니다. 또한 테스트 케이스는 절차서이므로 독자가 있습니다. 독자가 알 수 있는 문장을 유의하여 쓰는 것이 중요합니다.

테스트 케이스 작성 이유

1. 필요한 테스트 누락 방지

테스트 케이스는 소프트웨어가 작동되어야 할 모습을 기술한 것이라고 할 수 있습니다. 필요한 테스트가 없으면 제공하려는 기능이 버그와 같은 이유로 제공되지 않을 수 있습니다. 특히, 이상 시스템에 대한 테스트 케이스는 부족해지기 쉽습니다. 이러한 테스트 누출은 테스트 케이스를 작성하여 해결할 수 있습니다. 테스트 케이스가 있기 때문에 리뷰를 할 수 있으므로 리뷰를 통해 테스트 누락을 방지할 수 있습니다. 테스트 케이스를 만들 때 작성자가 시스템이나 비즈니스에 완전히 연결되어 있지는 않습니다. 작성자만으로 테스트 케이스 작성을 완료하면 누락이 발생할 수 있습니다. 시스템이나 비즈니스에 익숙한 직원의 검토를 통해 누락된 테스트 케이스를 추가할 수 있습니다. 시스템의 모든 버그를 방지하는 것은 어렵지만 줄일 수 있습니다. 출시 후의 결함에 의한 비용은 테스트의 비용보다 커지기 쉽기 때문에, 그 의미에서도 테스트 케이스를 확실히 만들 필요가 있습니다.

2. 불필요 테스트 제거

필요한 테스트가 누락되는 것은 좋지 않지만, 한편으로 테스트 케이스 항목이 무의미하게 늘어나는 문제도 있습니다. 테스트 케이스가 너무 많아도 좋지 않습니다. 테스트하는 것은 비용이 들고 테스트 케이스를 유지하는 데도 비용이 듭니다. 원래 같은 목적의 테스트 케이스가 중복으로 있어도 품질 향상까지 연결되지는 않습니다. 테스트에 익숙한 직원의 리뷰를 통해 불필요한 테스트 케이스를 삭제하면 비용 절감, 테스트 시간단축과 같은 이점을 얻을 수 있습니다.

3. 누구나 동일한 테스트를 시행하기 위함

테스트를 수동으로 수행하는 경우 테스트를 수행하는 사람의 테스트 기술에 따라 시스템 품질에 차이가 없어야 합니다. 자동 테스트에서도 마찬가지로 구현자에 의해 차이가 나오지 않도록 해야 합니다. 테스트 케이스를 만들고 검토하면 테스트 품질을 높은 수준으로 유지할 수 있습니다.

테스트 케이스를 만드는 방법

순서 품목 내용
1 전제 조건 테스트 대상의 전제가 되는 값, 상태
2 절차 테스트 방법
3 입력값 입력해야 하는 값
4 예상 결과 기대되는 결과

테스트 케이스의 예

알기 쉬운 예로 '한 자릿수의 자연수끼리의 곱셈을 하는 계산 기능'의 테스트 케이스에 대해 생각해 보겠습니다. 한자리의 자연수는 1~9의 값을 취할 수 있습니다만, 다음과 같은 테스트 케이스를 만들 수 있습니다.

순서 품목 내용
1 전제 조건 숫자 7입력
2 절차 곱하기 버튼 누름
3 입력값 입력값 6을 누름
4 예상 결과 42가 표시됨


테스트 케이스 입력 값

이전에 작성한 테스트 케이스의 예는 필요한 테스트 케이스 중 하나일 뿐입니다. 한 자릿수의 자연수끼리의 곱셈, 즉 1~9 끼리의 곱셈이 되므로, 모두 81가지의 조합이 있습니다. 또한, 입력 가능성이라는 의미에서 무한히 있을 수 있습니다. 잘못된 입력으로 0 또는 -1이 입력될 가능성도 고려해야 합니다. 이 조합에 대해 모든 경우를 테스트하는 것은 어렵고 비용이 많이 듭니다. 이와 같이 테스트 케이스가 많을 때 품질을 어느 정도 유지하면서 케이스를 줄이는 방법으로는 다음 4가지가 있습니다.

1. 동등 분할

동등 분할은 입력을 그룹화하여 유효한 것과 유효하지 않은 것으로 나누는 방법입니다. 예를 들어 '한자리의 자연수'가 입력이라면, 1보다 작은, 1~9, 9보다 큰 의 세 그룹으로 나눌 수 있습니다. 즉 입력값으로서, 예를 들면 0, 5, 10의 3개로 하면 된다라고 하는 것이 됩니다.

2. 경계 분석

동등 분할에 있어서, 경험적으로 동등 그룹 간의 경계에 버그가 발생하기 쉽다고 하는 것을 알고 있습니다. 위의 예에서 말하면 0과 1, 9와 10 등입니다. 이러한 경계에서는 등호나 부등호의 실수 등으로 버그가 일어나기 쉬워지므로, 이것을 경계 분석으로 검출할 수 있습니다.

3. 페어 와이즈법

"대부분의 결함은 하나 또는 두 가지 요인에 의한 것"이라는 경험을 바탕으로 한 방법으로, 많은 요소 중 "두 가지 요인의 조합이 포함한다"는 관점에서 값을 선택하는 방법입니다. 위의 계산 기능의 예에서는 요인은 2개입니다만, 테스트의 대상에 따라서는 보다 많은 되는 패턴도 나오게 됩니다. 페어 와이즈 방법을 사용하면 조합 수가 많을 때 테스트 케이스를 크게 줄일 수 있습니다. 그러나 페어 와이즈법에서는 본래 검출할 수 있었을 버그를 누락할 가능성도 있습니다. 그러므로 페어 와이즈법만으로 테스트하지 않고, 테스트 조합을 선택할 때 참고 하여 선택하는 것이 좋습니다.

4. 오류 추측

이것은 위의 3가지 방법론과는 조금 다릅니다. 테스트 케이스를 만드는 사람의 경험에 근거해 에러가 일어날 것 같은 값을 결정하는 방법입니다. 예를 들어 "자릿수의 자연수"라는 입력 값에 대해 음수나 Null 문자, 공백, 전각 문자나 소수 등을 사용하여 테스트합니다.

반응형

'IT' 카테고리의 다른 글

제4차 산업혁명의 의미  (0) 2023.01.03
알파테스트, 베타테스트의 의미  (0) 2023.01.02
P2E의 의미  (0) 2022.12.31
스마트 컨트랙트의 의미  (0) 2022.12.31
Dapp의 의미  (0) 2022.12.31