
基于 Neptune100的XTS子系统之应用兼容性测试指导 原创
XTS(X Test Suite)子系统是OpenHarmony生态认证测试套件的集合,当前包括:
acts(application compatibility test suite )应用兼容性测试套件,看护北向HAP兼容、OpenHarmony开发API兼容。 hats(Hardware Abstraction Test Suite )硬件抽象兼容性测试套,看护HDI层接口。 dcts(Distributed Compatibility Test Suite )分布式兼容性测试套,看护分布式兼容性。
本文基于 Neptune100移植XTS子系统,分析轻量系统的ACTS应用兼容性测试套件移植案例。轻量系统因系统能力限制,兼容性测试在系统初始化阶段进行;并且各设备烧录工具存在差异,导致自动化工具(xDevice工具)无法实现真正的自动适配,因此认证执行方式不对合作伙伴进行限制。流程如下:
步骤1 编译适配:XTS子系统加入到编译组件中,随版本一起编译;
步骤2 本地执行:完成兼容性测试;
编译适配
产品解决方案适配
需要在产品解决方案配置文件中增加 xts_acts与 xts_tools组件定义(vendor\hihope\neptune_iotlink_demo\config.json)
1.config_ohos_xts_acts_utils_lite_kv_store_data_path选项声明在 test\xts\acts\utils_lite\kv_store_hal\BUILD.gn。在移植适配 XTS子系统时,还必须要加上这一行 config_ohos_xts_acts_utils_lite_kv_store_data_path = “/data” ,如果不加的话,config_ohos_xts_acts_utils_lite_kv_store_data_path等于空字符串“”,没有起到提供默认值的作用。
2.enable_ohos_test_xts_acts_use_thirdparty_lwip 选项声明在 test\xts\acts\communication_lite\lwip_hal\BUILD.gn,默认为true。
编译链接
在文件 vendor\hihope\neptune_iotlink_demo\config.json中,Neptune100需要链接的ACTS部件测试库文件写在了bin_list里的force_link_libs里。
然后在文件 device\soc\winnermicro\wm800\BUILD.gn里组装编译链接选项,需要通过链接选项指定需要链接的 ACTS的测试套库文件,会使用到–whole-archive和–no-whole-archive链接选项。–whole-archive可以把在其后面出现的静态库包含的函数和变量输出到动态库,–no-whole-archive则关掉这个特性。
XTS子系统会编译到 test\xts\tools\lite\hctest\src\hctest.c文件,启动XTS提供的初始化宏函数 CORE_INIT初始化 InitTestSuiteMgr函数实现的服务。由于没有显式调用init函数,所以要使用–whole-archive将它强制链接。
相关代码片段如下:
注意: 需要使用hb命令触发debug版本(非debug版本不会触发测试编译)
Neptune100的XTS子系统编译流程
hb编译构建工具读取config.json
通过 hb工具读取系统配置文件(其中涉及文件:vendor\hihope\neptune_iotlink_demo\config.json)获取参与编译的子系统以及组件信息。XTS测试支持对各个子系统、部件的接口进行测试,产品解决方案配置了哪些子系统才会对这些配置的子系统进行测试。
XTS编译配置文件
通过gn工具读取 BUILD.gn文件并执行生成 .a文件(XTS子系统gn文件位置:test\xts\acts\build_lite\BUILD.gn)。
对于轻量系统,支持的测试套件主要包含communication_lite、startup_lite、iot_hardware_lite、security_lite、hiviewdfx_lite、distributed_schedule_lite、update_lite、utils_lite等子系统及其部件。
all_features会读取轻量系统全部acts测试套件:
判断非debug版本,all_features置空(非debug版本XTS不参与编译):
all_features 与 vendor\hihope\neptune_iotlink_demo\config.json子系统组件进行对比,存在的子系统组件才会参与最后编译。
在bin_list的 force_link_libs中可以看出,Neptune100链接了轻量系统XTS测试套件最小集API。 在满足轻量系统最小API的情况下,all_features 中用不到的子系统组件可以不添加。
轻量系统XTS测试套件最小集API参考 :(https://gitee.com/openharmony-sig/compatibility/blob/master/test_suite/PCS/OpenHarmony-3.1-Release/mini system/OpenHarmony设备兼容性规范3.0自检表_轻量系统.xlsx)
生成的测试套的库文件
成功编译后,在编译构建输出目录,如 out/neptune100/neptune_iotlink_demo/libs,生成测试套和测试框架的库文件,XTS子系统测试套.a归档格式为:libmodule_{测试套件模块名称}.a,测试框架归档格式:libhctest.a。这些生成的文件和上文中的链接选项可以对应起来。 举例:
执行兼容性测试套件
手工执行兼容性测试套件,需要使用烧录工具以及串口工具,操作步骤如下:
1.获取编译镜像及烧录。
在如下目录获取版本镜像:out\neptune100\neptune_iotlink_demo\bin,并将版本镜像烧录进开发板,具体步骤请参考烧录打印(https://gitee.com/openharmony/device_soc_winnermicro#烧录打印)。
说明: 判断当前版本镜像是否集成acts测试套件方法:在map文件中查看对应.a是否被编译即可。
2.测试步骤:
(1)使用串口工具登录模组,并保存串口打印信息。 (2)重启模组,启动过程中兼容性测试自动化执行,等待执行完,查看串口日志。
3.测试结果分析指导。
(1)基于串口打印日志进行分析;
(2)测试框架启动串口log如下:
(3)每个测试套件执行以“Start to run test suite”开始,以“xx Tests xx Failures xx Ignored”结束。
(4)测试结果归档。
