호스트 환경과 타깃 환경의 byte order가 다르면 호스트 출력값과 타깃 출력값이 달라져서 테스트가 실패하는 경우가 있습니다.

호스트/타깃의 출력값이 다른 경우

소스 코드에서 메모리를 직접 다루는 경우, 호스트 환경과 타깃 환경의 byte order에 따라 출력값이 달라질 수 있습니다. 동일한 기대값으로 테스트를 할 경우 호스트 테스트 또는 타깃 테스트가 실패하게 됩니다. 이 때, 기대값에 수직 바(|)를 사용하여 동일한 테스트 케이스로 호스트/타깃 테스트를 진행할 수 있습니다.

  • 예시
    • 호스트 출력값 : 0x1122
    • 타깃 출력값 : 0x2211
    • 입력할 기대값 : 0x1122|0x2211

소스 코드 로직이 byte order에 완전히 종속된 경우

호스트 시험에서 메모리 사용 방법에 의존성이 있는 로직은 정상적인 결과를 얻을 수 없습니다. 메모리 사용 방법에 의존성이 있는 경우는 다음과 같습니다.

  • union을 사용하여 메모리 세부 정보를 직접 접근하고 사용하는 경우
  • 컴파일러에 따라 구현이 달라질 수 있는 비트 필드에 대한 패킹

위와 같은 형태의 코드는 이식성을 고려해볼때 지양해야 합니다. 테스트 결과를 확인할 때에도, 메모리 값을 직접 확인하기보다 자료형의 값을 확인하도록 설계하는 것이 좋습니다.

만약, 소스 코드를 수정하기 어려운 상황이라면, 이와 같은 코드에 대한 테스트는 실제 타깃 환경에서 수행하거나 호스트와 타깃 테스트를 구분해서 설계하고 관리해야 합니다.

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

Thanks for your feedback.