Main Content

라이브 스크립트를 사용하여 테스트 작성하기

이 예제에서는 라이브 스크립트 'TestRightTriLiveScriptExample.mlx'를 작성하여 만든 함수를 테스트하는 방법을 보여줍니다. 예제의 함수는 직각삼각형의 각도를 계산하는데, 여기서는 이 함수를 테스트하는 라이브 스크립트 기반 단위 테스트를 작성하겠습니다.

라이브 스크립트 기반 테스트는 다음과 같은 규칙을 따라야 합니다.

  • 테스트 파일의 이름은 'test'(대/소문자 구분 안 함)라는 단어로 시작하거나 끝나야 합니다. 파일 이름이 'test'라는 단어로 시작하거나 끝나지 않으면 파일에 포함된 테스트가 어떤 경우에는 무시될 수 있습니다.

  • 각 단위 테스트는 라이브 스크립트 파일의 별도의 섹션에 배치해야 합니다. 섹션에 소제목 1 스타일의 제목이 있으면 제목이 테스트 요소의 이름이 됩니다. 그렇지 않으면 MATLAB이 테스트에 임의의 이름을 할당합니다.

  • 어떻게 라이브 스크립트 기반 테스트가 실행되고 있는지 고려하십시오. 라이브 편집기의 실행 버튼을 사용하여 테스트를 실행하는 경우 MATLAB에서 테스트 실패가 발생하면 MATLAB은 스크립트 실행을 중지하고 나머지 테스트를 실행하지 않습니다. runtests 함수와 같은 단위 테스트 프레임워크를 사용하여 라이브 스크립트를 실행하는 경우 MATLAB에서 테스트 실패가 발생하면 MATLAB은 나머지 테스트를 계속 실행합니다.

  • 라이브 스크립트가 테스트로 실행되는 경우 한 테스트에서 정의된 변수는 다른 테스트 내에서 액세스할 수 없습니다. 마찬가지로, 다른 작업 공간에서 정의된 변수에 대해 테스트가 액세스할 수 없습니다.

이 예제를 벗어나 현재 MATLAB 폴더에서 파일 rightTri.m에 함수를 생성하십시오. 이 함수는 삼각형의 두 변의 길이를 입력값으로 받아 직각삼각형의 세 각의 값을 반환합니다. 입력 변은 삼각형의 빗변이 아닌 짧은 두 변입니다.

type rightTri.m
function angles = rightTri(sides)

A = atand(sides(1)/sides(2));
B = atand(sides(2)/sides(1));
hypotenuse = sides(1)/sind(A);
C = asind(hypotenuse*sind(A)/sides(1));

angles = [A B C];

end

테스트: 작은각 근사

테스트를 문서화하는 데 도움이 되도록 라이브 스크립트에 수식과 이미지를 포함시킬 수 있습니다. 작은각 근사를 위한 다음 테스트를 생성합니다. 통상적으로 부동소수점 값을 비교할 때는 비교를 위한 허용오차를 지정합니다.

rightTri 함수는 sin(θ)θ가 되도록 작은각 근사와 일치하는 값을 반환해야 합니다.

angles = rightTri([1 1500]);
smallAngleInRadians = (pi/180)*angles(1); % convert to radians
approx = sin(smallAngleInRadians);
assert(abs(approx-smallAngleInRadians) <= 1e-10, 'Problem with small angle approximation')

테스트: 각도의 합

kak=180

한 테스트에 assert 문을 여러 개 포함시킬 수 있습니다. 그러나 첫 번째 어설션이 실패할 경우 MATLAB은 나머지 명령문을 실행하지 않습니다.

결과로 생성되는 직각삼각형의 모든 각도의 합은 항상 180도여야 합니다.

angles = rightTri([7 9]);
assert(sum(angles) == 180)
 
angles = rightTri([4 4]);
assert(sum(angles) == 180)
 
angles = rightTri([2 2*sqrt(3)]);
assert(sum(angles) == 180)

테스트: 30-60-90 삼각형

삼각형의 변이 1과 3이 되는지 테스트합니다. 이 경우, 각도는 30, 60, and 90입니다.

tol = 1e-10;
angles = rightTri([2 2*sqrt(3)]);
assert(abs(angles(1)-30) <= tol)
assert(abs(angles(2)-60) <= tol)
assert(abs(angles(3)-90) <= tol)

테스트: 이등변삼각형

이등변삼각형의 경우, 직각이 아닌 두 각은 모두 45도여야 합니다. 그렇지 않으면 assert에서 오류를 발생시킵니다.

삼각형의 두 변의 길이가 같은지 테스트합니다. 이 경우, 해당 변의 각도는 같습니다.

angles = rightTri([4 4]);
assert(angles(1) == 45)
assert(angles(1) == angles(2))

테스트를 실행하려면 라이브 편집기의 실행 버튼 대신 runtests 함수를 통해 테스트 프레임워크를 사용하는 것이 가장 좋습니다. 테스트 프레임워크는 추가적인 진단 정보를 제공합니다. 테스트가 실패할 경우, 테스트 프레임워크는 후속 테스트를 실행하지만 라이브 편집기의 실행 버튼은 그렇지 않습니다. 예를 들어, MATLAB 명령 프롬프트에서 이 테스트를 실행하려면 result = runtests('TestRightTriLiveScriptExample')을 입력하십시오. 자세한 내용은 runtests 항목을 참조하십시오.

참고 항목

|

관련 항목