반환 상태 변환 검증 테스트 (Return Status Transformation Verification Tests)
1. 개요
반환 상태 변환 검증 테스트는 Inverter, ForceSuccess, ForceFailure 등의 상태 변환 데코레이터가 자식의 각 반환 상태에 대해 올바른 변환을 수행하는지를 체계적으로 검증하는 테스트이다. 각 데코레이터의 상태 변환 테이블을 기준으로, 모든 입력-출력 조합을 빠짐없이 테스트한다.
2. 테스트 전략
2.1 상태 변환 테이블 기반 완전 검증
각 데코레이터에 대해 SUCCESS, FAILURE, RUNNING의 3가지 입력에 대한 출력을 모두 검증한다.
2.2 Inverter 테스트
TEST(InverterTest, AllStatusTransformations)
{
// SUCCESS → FAILURE
mock_child.setReturn(SUCCESS);
EXPECT_EQ(tree.tickOnce(), FAILURE);
// FAILURE → SUCCESS
mock_child.setReturn(FAILURE);
EXPECT_EQ(tree.tickOnce(), SUCCESS);
// RUNNING → RUNNING
mock_child.setReturn(RUNNING);
EXPECT_EQ(tree.tickOnce(), RUNNING);
}
2.3 ForceSuccess 테스트
TEST(ForceSuccessTest, AllStatusTransformations)
{
// SUCCESS → SUCCESS
mock_child.setReturn(SUCCESS);
EXPECT_EQ(tree.tickOnce(), SUCCESS);
// FAILURE → SUCCESS
mock_child.setReturn(FAILURE);
EXPECT_EQ(tree.tickOnce(), SUCCESS);
// RUNNING → RUNNING
mock_child.setReturn(RUNNING);
EXPECT_EQ(tree.tickOnce(), RUNNING);
}
2.4 ForceFailure 테스트
TEST(ForceFailureTest, AllStatusTransformations)
{
// SUCCESS → FAILURE
mock_child.setReturn(SUCCESS);
EXPECT_EQ(tree.tickOnce(), FAILURE);
// FAILURE → FAILURE
mock_child.setReturn(FAILURE);
EXPECT_EQ(tree.tickOnce(), FAILURE);
// RUNNING → RUNNING
mock_child.setReturn(RUNNING);
EXPECT_EQ(tree.tickOnce(), RUNNING);
}
3. 매개변수화된 테스트
struct TransformCase { NodeStatus input; NodeStatus expected; };
class InverterParamTest : public ::testing::TestWithParam<TransformCase> {};
TEST_P(InverterParamTest, Transform)
{
mock_child.setReturn(GetParam().input);
EXPECT_EQ(tree.tickOnce(), GetParam().expected);
}
INSTANTIATE_TEST_SUITE_P(Inverter, InverterParamTest,
::testing::Values(
TransformCase{SUCCESS, FAILURE},
TransformCase{FAILURE, SUCCESS},
TransformCase{RUNNING, RUNNING}
));
4. 반복 tick에서의 일관성
동일한 입력에 대해 반복 tick에서도 동일한 출력이 반환되는지 검증한다.
TEST(InverterTest, ConsistentAcrossTicks)
{
mock_child.setReturn(SUCCESS);
for (int i = 0; i < 100; ++i)
{
EXPECT_EQ(tree.tickOnce(), FAILURE);
}
}
5. 참고 문헌
- Google Test 문서. https://google.github.io/googletest/
- BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |