mirror of
https://gitee.com/jiuyilian/embedded-framework.git
synced 2025-01-06 10:16:51 -05:00
3.9 KiB
3.9 KiB
1. 测试用例开发规范
便于对测试用例进行管理,指定测试用例开发规范。
1.1. 命名规则
制定命名规则,是为了规范测试用例行为,为自动化测试提供管理遍历,因为googletest支持根据测试用例名字通配符检索运行目标测试用例。
1.1.1. 基本概念
硬件仿真:对接口属性/数据进行模拟/检测的能力,常见于芯片板级依赖的接口,例如:串口,GPIO等,还有芯片SDK依赖接口,例如:音视频编解码接口;
单元测试:单元测试指对单一功能接口的测试,一般不需要或少量使用gtest的mock功能即可完成测试,不需要实际链接外部接口,对模块内部代码功能进行有效验证;
用例所属模块:测试时锁定目标测试用例的作用;
集成测试:集成测试指对复杂业务进行测试,往往需要跨多层级多模块,需要大量使用gtest的mock功能才能完成的复杂逻辑测试,一般不针对代码本身而是针对产品定义的功能进行有效验证;
测试用例:
- EXAMPLE:对模块接口进行使用演示的测试用例;
- AUTO:自动化运行的测试用例;
- STRESS:压力测试用例,一般不在单次测试中执行;
1.1.2. 测试用例命名:
- 仿真:硬件仿真,使用hardware simulation的缩写:HS,硬件仿真只能运行在Ubuntu系统进行仿真测试;真实硬件接口使用real hardware的缩写:RH,真实硬件接口测试用例只能运行在开发板进行真机测试;
- 测试用例类型:含单元测试(UNIT)和集成测试(INTEGRATION);
- 用例所属模块:大小驼峰;
- 测试用例属性:EXAMPLE/AUTO/STRESS
- 测试用例小名;
示例:
该测试用例标识属于SharedData模块的单元测试,作为example具有演示接口使用规范的作用,测试用例名为Deme7。
TEST(SharedDataTest, UNIT_SharedData_EXAMPLE_Demo7)
{
// TODO:
}
1.1.3. 测试源码文件命名:
- 每个测试可执行文件都有一个标准mian函数,文件名统一为:mainTest.cpp;
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <thread>
#include <unistd.h>
int main(int argc, char *argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS(); // 此处执行所有的测试用例;
}
- 针对源码文件,对应的测试代码文件名为:源码文件名_Test.cpp;
例如:cjson.c 对应的测试源码文件为cjson_Test.cpp
- 适配层源码文件的TEST文件命名区分Simulator版本和常规版本,Simulator版本在ubuntu模拟仿真环境测试(执行代码会调用芯片SDK接口),常规版本必须运行在开发板:
├── CMakeLists.txt
├── mainTest.cpp
├── src
│ └── BoardMain_Test.cpp // 常规测试代码,可运行在开发板系统;
└── src_mock
└── BoardMain_Simulator_Test.cpp // 运行过程会调用芯片依赖的API,需要对这些API进行mock处理,实现Linux x86平台的仿真测试;
1.2. TestTool 测试工具
每个独立模块(SDK内具有独立CMakeLists.txt的代码模块)都有对应的TestTool模块,主要用于对该模块的接口进行gmock处理,且对外暴露接口具备复用属性。一般类命名:模块名称+TestTool。
1.3. 目录结构
所有测试代码位于< test >目录下,< test >下的目录结构保持和< SDK >一致,表示对应sdk代码模块的测试代码;
如果是芯片平台的test目录,需要区分板载测试代码和x86 Linux系统的测试代码;如下:
└── hal
├── CMakeLists.txt
├── mainTest.cpp
├── src // 芯片平台的测试代码;
├── src_mock // Linux x86测试代码 需要对板载接口打桩进行测试;
└── tool // TestTool:该模块需要对外复用的测试代码;