이전에 Joseph Morgan은 JMP에서 단위 테스트의 개념을 자세히 논의했습니다. 훌륭한 글 몇 가지:
이 블로그에서는 간단하게 설명하기 위해 Whittaker(2000)의 용어를 사용하여 단위 테스트를 정의합니다.
단위 테스트: 입력 도메인
"단위 테스트"라는 용어는 개별 소프트웨어 구성 요소 또는 구성 요소 컬렉션을 테스트하는 것을 의미합니다. 테스터는 문제의 단위에 대한 입력 도메인을 정의하고 나머지 시스템은 무시합니다.
테스터가 입력 도메인을 정의하는 두 번째 부분에 집중해 보겠습니다. 테스트하고 싶은 함수가 있지만 개별 인수를 단위로 취급하고 싶은 경우는 어떨까요?
예를 들어, JSL의 베타 분포 함수를 살펴보겠습니다(스크립팅 인덱스의 스크린샷). 베타 분포 함수는 베이지안 통계에서 자주 사용되는 0과 1 사이의 범위로 제한된 확률 변수를 모델링하는 데 사용됩니다.

알파와 베타를 0.5 정도로 고정하고 q의 다양한 값을 테스트해 볼 수도 있습니다.
alpha = 0.5;
beta = 0.5;
Beta Distribution( 0.5, alpha, beta );
Beta Distribution( -1, alpha, beta );
Beta Distribution( 0, alpha, beta );
이제 베타 분포 함수에 대한 각 함수 호출에 대해 무엇을 기대하는지 결정하는 것은 그 자체로 블로그 게시물입니다(오라클 문제라고 함). 그러나 우리가 무엇을 기대하는지 알고 있다고 가정하면(이 경우 0.5, 누락된 값, 0) q를 테스트할 수 있습니다. 각 입력은 알파, 베타, 심지어 세타와 시그마와 같이 이런 방식으로 개별적으로 확인할 수 있습니다.
한 번에 한 가지 요인(OFAT) 테스트
한 번에 한 인수에 집중한다면 무슨 의미일까요? 다른 인수를 고정된(예: 기본값) 값으로 설정하고 한 인수의 값을 변경하는 것은 OFAT를 통한 테스트처럼 들립니다.
(일반적인) 설계된 실험에 소개될 때, OFAT의 함정에 대해 논의합니다. 특히 OFAT는 리소스의 비효율성과 누락된 상호 작용으로 인해 권장되지 않습니다. 이러한 테스트 접근 방식에는 동일한 문제가 있음을 알 수 있습니다. 그러나 소프트웨어를 테스트하는 경우 나중에 이러한 테스트 사례를 재사용할 수 있으므로 이러한 테스트를 만들고 예상 결과를 결정하는 것이 반드시 테스트 리소스의 낭비는 아닙니다. 문제가 발견되면(즉, 결과가 예상과 다름) 문제를 일으킨 입력이 무엇인지 알 수 있습니다. 이는 이러한 테스트를 정기적으로 실행할 수 있는 애플리케이션 개발 프로세스의 일부로 수행하는 경우 특히 유용합니다(다시 말하지만, 이는 향후 블로그의 주제입니다).
이제 어디로 가야 할까?
이 블로그를 읽고 왜 한 번에 하나 이상의 입력을 변경하지 않는지 궁금했다면 안심하세요. 우리는 변경할 것입니다. 사실, 향후 블로그에서는 이 테스트 과제를 실험 설계 문제로 취급하는 것에 대해 논의할 것입니다. 계속 지켜봐 주세요!
Whittaker, JA, 2000. 소프트웨어 테스팅이란 무엇인가? 그리고 왜 그렇게 어려운가?. IEEE 소프트웨어 , 17 (1), pp.70-79.