실수형 변수의 기대값과 출력값이 달라도 테스트 케이스가 실패하지 않는 경우

Controller Tester에서 실수형 변수의 허용 오차는 소수점 아래 6번째 자리로 설정되어 있습니다. 예를 들어 기대값이 3.14159265이고 출력값이 3.14159274인 경우 Controller Tester는 기대값과 출력값이 같다고 판단하여 테스트 케이스가 성공하게 됩니다. 아래의 방법으로 허용 오차를 바꿀 수 있습니다.

  • %프로젝트 경로%\.csdata\ut.ini 파일을 열고 FLOAT_TOLERANCE의 값을 바꿉니다.
    • 위 예시에서는 FLOAT_TOLERANCE=0.0000001로 수정하면 됩니다.

float 변수의 기대값과 출력값이 같아도 테스트 케이스가 실패하는 경우

Controller Tester가 float 변수를 처리할 때 double로 캐스팅하므로 오차가 발생할 수 있습니다. 이러한 문제는 두 가지 방법으로 해결될 수 있습니다.

  1. float로 선언된 변수를 double로 선언한다.
  2. codescroll_flt 타입을 float으로 바꾼다.
    • ‘환경 설정’ > ‘툴체인’ > ‘설정 디렉터리 열기’에서 사용중인 툴체인의 .info 파일을 열어 다음과 같이 수정하면 됩니다.
  3. 2번 수정 후 ‘환경 설정’ > ‘툴체인’ > 해당 툴체인 선택 > ‘툴체인 편집’ > ‘적용’
// 수정 전
#typeName,valueKind,min,max,size,csType
long double,float,2.22507e-308,1.79769e+308,8,codescroll_flt

// 수정 후
#typeName,valueKind,min,max,size,csType
float,float,2.22507e-308,1.79769e+308,8,codescroll_flt

상수를 이용하여 실수형 변수의 값을 연산할 때 연산 결과가 바르지 않은 경우

계산식에서 상수를 이용하면 Controller Tester는 실수를 정수로 바꾸어 계산합니다. 상수를 이용한 계산을 할 경우 실수를 정수로 변환하지 않도록 옵션을 바꿔야 합니다.

  • ‘환경 설정’ > ‘툴체인’ > ‘설정 디렉터리 열기’에서 사용 중인 툴체인의 .ini 파일을 열어 다음과 같이 수정하면 됩니다.
    leave_float_literal = 0 -> leave_float_literal = 1
// 예제 코드
float sampleFunction(){
    float test_a = (1.0F/300.F);
    float test_b = (1.0/300.0);
    return 0;
}
//leave_float_literal = 0 옵션이 켜진 경우
float sampleFunction(){
    float test_a = (1/300);
    float test_b = (1/300);
    return 0;
}

이와 같은 문제는 RTV 프로젝트나 RTV 타깃 프로젝트를 이용하는 경우에 발생합니다.

Need more help with this?
Don’t hesitate to contact us here.

Thanks for your feedback.