OpenHarmony兼容性认证主要是验证合作伙伴的设备和业务应用满足OpenHarmony开源兼容性定义的技术要求,确保运行在OpenHarmony上的设备和业务应用能稳定、正常运行,同时使用OpenHarmony的设备和业务应用有一致性的接口和业务体验。
OpenHarmony兼容性认证服务包括:产品兼容性技术规范文档与兼容性测试两部分,本文重点介绍兼容性测试。
兼容性测试包括:acts、hats、dcts
OpenHarmony兼容性测试需要合作伙伴获取代码和兼容性测试套,并完成自测,取得兼容性测试报告后,在认证流程上传兼容性测试报告供开放原子开源基金会团队进行审核或抽测。兼容性测试的套件范围:
acts(application compatibility test suite)应用兼容性测试套件,看护北向HAP兼容、OpenHarmony开发API兼容。
hats(Hardware Abstraction Test Suite )硬件抽象测试套,看护HDI层接口。
dcts(Distributed Compatibility Test Suite )分布式兼容性测试套,看护分布式兼容(待上线)
本文已acts为例介绍,其余类似参考。
兼容性测试套件版本说明:
合作伙伴可以选择任何OpenHarmony 已经发布的LTS(Long Term Support)分支进行认证,推荐是最新LTS。
选择LTS分支后,需要选择最近发布的V版本进行认证(提交认证时,需要满足6个月内发布的版本)。
兼容性测试认证审批周期:14天;
OpenHarmony支持如下几种设备类型:
面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备,硬件资源极其有限,支持的设备最小内存为128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。
面向应用处理器,例如Arm Cortex-A的设备,参考内存≥1MB,提供更高的安全能力,提供标准的图形框架,提供视频编解码的多媒体能力。典型产品有智能家居领域的IPCamera、电子猫眼、路由器以及智慧出行域的行车记录仪等。
面向应用处理器,例如Arm Cortex-A的设备,参考内存≥128MB,提供增强的交互能力,提供3D GPU以及硬件合成能力,提供更多控件以及动效更丰富的图形能力,提供完整的应用框架。典型产品有高端的冰箱显示屏等
OpenHarmony设备兼容性认证的流程。
兼容性认证主要步骤如下:
步骤 1 合作伙伴获取OpenHarmony源码。
步骤 2 合作伙伴获取设备兼容性技术规范文档。
步骤 3 合作伙伴本地执行兼容性测试套件。
步骤 4 合作伙伴上传兼容性报告到OpenHarmony官网 。
步骤 5 开放原子开源基金会审核开发者上传的报告,给出审核结果,若审批通过,到步骤8;若抽检,到步骤6,若审批不通过,结束流程。
步骤 6 开放原子开源基金会启动抽检流程,上传测试套件包到网站;
步骤 7 合作伙伴下载抽检测试套件包,并在本地执行,生成测试报告后上传到OpenHarmony官网 。
步骤 8 测试报告审核通过后,OpenHarmony兼容性认证通过。
获取OpenHarmony源码,具体步骤请参考链接
安装python3.7及以上版本
若显示出python对应版本则表示安装成功。
安装setuptools(pip install setuptools )
在cmd中执行命令:
pip install setuptools
安装pyserial(pip install pyserial )
在cmd中执行命令:
pip install pyserial
出现如下信息表示安装成功。
安装rsa( pip install rsa )
在cmd中执行命令:
pip install rsa
说明:轻量系统因系统能力限制,兼容性测试在系统初始化阶段进行;并且各设备烧录工具存在差异,导致自动化工具(xDevice工具)无法实现真正的自动适配,因此认证执行方式不对合作伙伴进行限制。
流程如下:
步骤1 编译适配:XTS子系统加入到编译组件中,随版本一起编译;
步骤2 本地执行:完成兼容性测试;
举例:以hispark_pegasus为例。
1,vendor下增加xts_acts与xts_tools组件定义(vendor\hisilicon\hispark_pegasus\config.json)
{
"subsystem": "test",
"components": [
{ "component": "xts_acts", "features":[] },
{ "component": "xts_tools", "features":[] }
]
},
2 ,使用hb命令触发debug版本(非debug版本不会触发测试编译)
hispark_pegasus使用riscv gcc编译工具链与SCons构建工具完成系统编译工作,其他设备如果编译工具链不同需要参考自行完成编译与链接操作。
下面介绍hispark_pegasus的XTS子系统编译流程以供参考。
1,通过hb工具读取系统配置文件(其中涉及文件:vendor\hisilicon\hispark_pegasus\config.json)获取参与编译的子系统以及组件信息;
2,通过gn工具读取 BUILD.gn文件并执行生成 .a文件(XTS子系统gn文件位置:test\xts\acts\build_lite\BUILD.gn);
all_features会读取轻量系统全部acts测试套件:
if (ohos_kernel_type == "liteos_m") {
all_features += [
"//test/xts/acts/communication_lite/lwip_hal:ActsLwipTest",
"//test/xts/acts/communication_lite/wifiservice_hal:ActsWifiServiceTest",
"//test/xts/acts/utils_lite/file_hal:ActsUtilsFileTest",
"//test/xts/acts/startup_lite/syspara_hal:ActsParameterTest",
"//test/xts/acts/iot_hardware_lite/iot_controller_hal:ActsWifiIotTest",
"//test/xts/acts/utils_lite/kv_store_hal:ActsKvStoreTest",
"//test/xts/acts/security_lite/huks/liteos_m_adapter:ActsHuksHalFunctionTest",
"//test/xts/acts/hiviewdfx_lite/hilog_hal:ActsDfxFuncTest",
"//test/xts/acts/hiviewdfx_lite/hievent_hal:ActsHieventLiteTest",
"//test/xts/acts/distributed_schedule_lite/system_ability_manager_hal:ActsSamgrTest",
"//test/xts/acts/update_lite/dupdate_hal:ActsUpdaterFuncTest",
"//test/xts/acts/startup_lite/bootstrap_hal:ActsBootstrapTest",
]
判断非debug版本,all_features置空(非debug版本XTS不参与编译):
if (ohos_build_type == "debug" && ohos_test_args != "notest") {
_all_features = ""
_product_json = rebase_path("${product_path}/config.json")
foreach(one_feature, all_features) {
_all_features = _all_features + one_feature + ","
}
_args = [
"--method_name",
"filter_by_subsystem",
"--arguments",
"testsuites=${_all_features}#product_json=${_product_json}",
]
features += exec_script(rebase_path("//test/xts/tools/lite/build/utils.py"),
_args,
"list lines")
}
all_features与vendor\hisilicon\hispark_pegasus\config.json子系统组件进行对比,存在的子系统组件才会参与最后编译;
最终编译生成.a归档路径:out\hispark_pegasus\wifiiot_hispark_pegasus\libs,其他模组参考类似找到.a:
其中XTS子系统的.a归档格式libmodule_{测试套件模块名称}.a,以及测试框架.a 归档格式:libhctest.a;
举例:
libmodule_ActsParameterTest.a
libhctest.a
3,通过SCons构建工具完成链接操作(其中涉及文件:device\hisilicon\hispark_pegasus\sdk_liteos\SConstruct),其他设备根据编译工具链选择自行完成链接工作;
if app_name != "wifiiot_app":
env['LIBS'] = list(map(lambda x:'-l%s'%x, env_cfg.get_libs()))
else:
env['LIBS'] = list(map(lambda x:'-l%s'%x, env_cfg.get_libs())) + ['--whole-archive'] + list(map(lambda x:'-l%s'%x, env_cfg.get_ohos_libs())) + ['--no-whole-archive']
env.Append(LIBS = app_builder.get_app_libs())
env.Append(LIBS = '-lwifi_flash')
env.Append(LIBS = '-lwifi')
env.Append(LIBS = '-llitekernel_flash')
env.Append(LIBS = '-lsystem')
Sconstruct脚本中链接了测试套对应.a ,没有显示调用所以需要指定 —no-whole-archive。
举例:以hispark_pegasus产品执行acts为例。
手工执行兼容性测试套件,需要使用烧录工具以及串口工具,操作步骤如下:
1,获取编译镜像。
在如下目录获取版本镜像:out/hispark_pegasus/wifiiot_hispark_pegasus/。
说明: 判断当前版本镜像是否集成acts测试套件方法:在map文件中查看对应.a是否被编译即可。
2,版本镜像烧录。
测试步骤。
(1)使用串口工具登录模组,并保存串口打印信息。
(2)重启模组,启动过程中兼容性测试自动化执行,等待执行完,查看串口日志。
3,测试结果分析指导。
(1)基于串口打印日志进行分析;
(2)每个测试套件执行以“Start to run test suite”开始,以“xx Tests xx Failures xx Ignored”结束。
4,测试结果归档。
说明:小型系统不支持usb调试,兼容性测试执行过程依赖串口与网口/WIFI,流程如下:
步骤1 编译适配:XTS子系统加入到编译组件中,参与编译;
步骤2 本地执行:完成兼容性测试;
举例:以hispark_taurus为例。
1,vendor下增加xts_acts与xts_tools组件定义(vendor\hisilicon\hispark_taurus\config.json)
{
"subsystem": "test",
"components": [
{ "component": "xts_acts", "features":[] },
{ "component": "xts_tools", "features":[] }
]
},
2 ,使用hb命令触发debug版本(非debug版本不会触发测试编译)
在out\hispark_taurus\ipcamera_hispark_taurus\suites\acts目录下生产兼容性测试套件
举例:以hispark_taurus为例。
被测设备网络配置:
被测设备网络配置有多种方法,目的是把被测设备与NFS服务器配置在同一个网段,可以互相访问。被测设备可以使用自己的配网方式进行联网设备,也可以通过设备命令进行网络配置。(以下为被测设备网络配置的一个例子)
1,连接被测设备到Windows,Windows工作台识别被测设备,且能够看到对应的COM号,如下图所示;
2,使用串口连接工具连接设备,完成被测设备IP配置;
串口连接被测设备后,查看对应的IP地址,命令行模式下,输入ifconfig,确定IP地址是否跟Windows的IP地址在同一个网段,如果不是同一个网段,可以通过命令配置
ifconfig eth0 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1
测试通信,能够ping通被测设备,被测设备的网络配置成功。
Windows下NFS服务器配置:
NFS全称为Network File System,是一种分布式文件系统,力求客户端主机可以访问服务器端文件,在此测试环境中,NFS服务器主要是用来存储测试用例和测试脚本,通过NFS的方式挂载在小型系统设备上去执行用例,实现和小型系统设备的测试交互。
NFS服务器可使用主流商用软件进行搭建,也可以使用Windows Server进行部署,请用户根据日常搭建方式,配置好NFS服务,最后能够保证NFS Server上设置的NFS共享目录,被测设备能够进行访问,并且使用mount命令成功。
当NFS服务配置好之后,被测设备可以访问NFS服务端的nfs共享文件,格式和举例如下:
**格式:**mount [nfs服务器IP]:[/nfs共享目录] [/Ipcamera开发板目录] nfs
举例:mount执行成功,说明NFS配置正确。
mount 192.168.1.11:/d/work /nfs nfs
Windows上已获取到编译文件acts.zip,解压生成acts目录。
修改acts\config\user_config.xml的配置。
(1)完成小型系统设备(ipcamera)的com配置;
举例:智慧视觉类设备在PC端映射端口为COM18,完成红框中配置。
(2)完成小型系统设备(ipcamera)NfsServer节点配置。
IP:Nfs服务器地址
username:Nfs服务器用户名
password:Nfs服务器密码
port:Nfs服务器端口
dir:Nfs服务器用于存放挂载文件的路径
举例:NfsServer IP为192.168.1.22,Nfs共享目录为D:\work,配置如下图。
在Windows工作台上,获取已经编译完成的测试套件,在Windows命令窗口进入对应目录,直接执行acts\run.bat。
2.界面启动后,输入用例执行指令。
全量执行
run acts
模块执行(具体模块可以查看\acts\testcases)
run –l ActsSamgrTest
等待执行完成。
进入acts\reports\,获取当前的执行记录,打开“summary_report.html”可以获取到测试报告。
步骤1 编译兼容性套件;
步骤2 本地执行:完成兼容性测试;
举例:以hispark_taurus为例。
全量编译 test/xts/acts目录下执行编译命令: ./build.sh suite=acts system_size=standard
测试用例输出目录:out/release/suites/acts/testcases
测试框架&用例整体输出目录:out/release/suites/acts(编译用例时会同步编译测试套执行框架)
举例:以hispark_taurus为例。
其中ip为执行测试所在电脑的IP;port是dhc端口;sn为执行设备的序列号。
在Windows工作台上,找到从Linux服务器上拷贝下来的测试套件用例目录,在Windows命令窗口进入对应目录,直接执行acts\run.bat。
2.界面启动后,输入用例执行指令。
全量执行
run acts
模块执行(具体模块可以查看\acts\testcases)
run –l ActsSamgrTest
等待执行完成。
进入acts\reports\,获取当前的执行记录,打开“summary_report.html”可以获取到测试报告。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。