【OpenHarmony 移植案例与原理】XTS 子系统之应用兼容性测试用例开发
本文分享自华为云社区《移植案例与原理 - XTS子系统之应用兼容性测试用例开发》,作者:zhushy 。
XTS(X Test Suite)子系统是 OpenHarmony 生态认证测试套件的集合,当前包括:
acts(application compatibility test suite)应用兼容性测试套件,看护北向 HAP 兼容、OpenHarmony 开发 API 兼容。
hats(Hardware Abstraction Test Suite )硬件抽象测试套,看护 HDI 层接口。
dcts(Distributed Compatibility Test Suite )分布式兼容性测试套,看护分布式兼容(待上线)
在移植芯片开发板后,需要运行应用兼容性测试套件。对于大部分工程师,是不需要开发 ACTS 测试用例的。但是了解一下这些知识,在问题定位等会带来极大的方便。本文主要介绍下 ACTS 应用兼容性测试用例开发编译。使用的编程语言为 C 语言。
1、XTS 测试套件目录
XTS 的 ACTS 应用兼容性测试套件目录 test\xts\acts,器目录如下,包含各个子系统的测试用例源代码及测试工具代码。
2、测试用例级别、粒度和类型
测试用例分为 5 个级别,分布为 Level0、Level1、Level2、Level3、Level4,这几个宏定义在文件 test\xts\tools\lite\hctest\include\hctest_internal.h。对这几个级别的解释可以从文章尾部的参考站点上可以了解。
用例粒度分为 LargeTest、MediumTest 和 SmallTest,同样在文件 test\xts\tools\lite\hctest\include\hctest_internal.h 中定义。
测试类型分为 Function、Performance、Power、Reliability、Security、Global、Compatibility、User、Standard、Safety 和 Resilience。宏定义如下,具体含义见参考站点中链接。
3、C 语言用例开发编译指导
根据测试系统选择测试框架和对应测试用例语言。系统类型和测试框架、开发语言对应关系如下:
我们主要看下轻量系统产品用例开发。轻量系统测试使用的测试框架是 hctest,hctest 测试框架支持使用 C 语言编写测试用例,是在开源测试框架 unity 的基础上进行增强和适配。
3.1 用例目录规范
我们上文已经看到了 ACTS 的目录, 测试用例存储到 test/xts/acts 仓中。假如我们在一个名为 subsystem_lite 的子系统中为 module_hal 部件开发用例,目录如下:
可以参考已经存在的用例的目录,比如 test\xts\acts\utils_lite\file_hal、test\xts\acts\utils_lite\kv_store_hal、test\xts\acts\startup_lite\bootstrap_hal 等等。
3.2 编写用例样例
3.2.1 引用测试框架
hctest.h 文件位于./test/xts/tools/lite/hctest/include/目录,定义了 LITE_TEST_SUIT、LITE_TEST_CASE、RUN_TEST_SUITE 等测试套件的宏。
3.2.2 定义子系统、模块、测试套件名称
需要 3 个参数,分别为子系统名称、子系统的部件名称、测试套件名称。
已经存在的示例,可以参考 test\xts\acts\utils_lite\kv_store_hal\src\kvstore_func_test.c,为 utils 子系统的 kvStore 部件注册 KvStoreFuncTestSuite 测试套件。
3.2.3 定义 Setup 与 TearDown
命名方式:测试套件名称+Setup,测试套件名称+TearDown。Setup 与 TearDown 必须存在,可以为空函数。示例可以参考 test\xts\acts\utils_lite\kv_store_hal\src\kvstore_func_test.c,如下:
3.2.4 使用宏定义 LITE_TEST_CASE 写测试用例
LITE_TEST_CASE 函数宏包括三个参数:测试套件名称,测试用例名称,用例属性(测试类型、用例粒度、用例级别)。示例代码中创建测试用例,名称为 TestCase001,属于测试套件 IntTestSuite,测试用例属性为功能测试、测试用例粒度为 MediumTest,用例级别 Level1。
示例可以参考 test\xts\acts\utils_lite\kv_store_hal\src\kvstore_func_test.c,如下,测试套件 KvStoreFuncTestSuite 中创建测试用例 testKvStoreSetValue001,测试 kvstore 部件的 UtilsSetValue 和 UtilsDeleteValue 接口。
3.2.5 使用宏定义 RUN_TEST_SUITE 注册测试套件
3.3 测试模块的构建配置文件
在每个测试模块目录 subsystem_lite/module_hal 下新建 BUILD.gn 编译文件,用于指定编译后静态库的名称、依赖的头文件、依赖的库等;具体写法如下:
3.4 acts 下 BUILD.gn 增加编译选项
需要将测试模块加入到 acts 目录下的编译脚本中,编译脚本路径:test/xts/acts/build_lite/BUILD.gn。
3.4 编译烧录运行
随版本编译,debug 版本编译时会同步编译 acts 测试套件。acts 测试套件编译中间件为静态库,最终链接到版本镜像中 。将版本镜像烧录进开发板。重启设备,查看串口日志。每个测试套件执行以 Start to run test suite 开始,以 xx Tests xx Failures xx Ignored 结束。
参考站点
参考了下述站点,或者推荐读者阅读下述站点了解更多信息。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/4d82ae81c72e985af6cc02f02】。文章转载请联系作者。
评论