鸿蒙OpenHarmony【xDevice测试调度执行框架使用】 调测

锦通  论坛元老 | 2024-12-7 03:00:17 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1012|帖子 1012|积分 3036

概述

OpenHarmony开源利用系统有浩繁芯片场景基于其之上进行开发版本等相关产物的开发,为了保障OpenHarmony生态的兼容性,OpenHarmony提供了[兼容性测试测评服务],其中针对产物必要进行接口相关的测试执行验证,但是大量主动化用例的执行必要一套调度执行框架,并且支持天生可视化的测试报告等本事,故我们设计并开发了xdevice测试调度框架来支持该场景。
简介

xDevice测试调度框架是OpenHarmony中测试底子办法的核心组件,提供调度主动化用例执行所依靠的相关服务,支持大量主动化用例的调度执行本事,并可自带天生可视化测试报告。而xDevice二进制包会跟踪随OpenHarmony的XTS套件编译,开发者可以从XTS套件归档路径中获取xDevice工具,
根据设备类型的差别,xDevice主要测试的使命场景有以下三个:


  • 对轻量系统设备进行XTS测试(如:Hi3861开发板)
  • 对小型系统设备进行XTS测试(如:Hi3516开发板)
  • 对尺度系统设备进行XTS测试(如:RK3568开发板)
实现原理

xDevice包括以下功能模块:


  • command:用户与测试平台命令行交互模块,提供用户输入命令分析,命令处理。
  • config:测试框架配置模块,提供测试平台串口毗连方式和USB毗连方式的差别配置选项。
  • driver:测试用例执行器,提供测试用例分发,执行,效果收集等主要测试步骤定义。
  • report:测试报告模块,提供测试效果分析和测试报告天生。
  • scheduler:测试框架调度模块,提供差别类型的测试执行器调度的调度功能。
  • environment:测试框架的环境配置模块,提供设备发现,设备管理的功能。
  • testkit:测试框架工具模块,提供json分析,网络文件挂载等利用。
  • log:测试框架日志模块,提供记载使命日志以及设备日志的功能。
除了上述功能模块之外,测试调度框架还依靠了用户自定义配置文件,配置文件主要分为两类。
测试使命配置文件
user_config.xml是框架提供的测试使命配置文件,用户可以根据自身环境信息配置相关内容,主要包括以下配置内容。
environment环境相关配置,详解先容如下。
  1. <environment>
  2. <!-- 富设备配置 -->
  3. <device type="usb-hdc">  <!-- type:设备连接方式,usb-hdc表示使用hdc控制设备(默认),当前框架只支持设置一个usb设备 -->
  4.     <ip></ip>        <!-- ip: 远端设备地址,ip和port为空时使用本地设备,非空时使用远端设备 -->
  5.     <port></port>    <!-- port: 远端设备端口号 -->
  6.     <sn></sn>        <!-- sn: 设备串号列表,串号之间使用分号;分隔,sn为空时使用本地所有设备,非空时使用指定的sn设备 -->
  7. </device>
  8. <!-- 轻量系统设备配置 -->
  9. <device type="com" label="wifiiot">    <!-- type: 设备连接方式,com表示连接方式是串口; label: 表示设备种类,如wifiiot -->
  10.     <serial>                           <!-- serial:  表示一个串口定义 -->
  11.         <com></com>                    <!-- com: 表示本地连接的串口,如COM20 -->
  12.         <type>cmd</type>               <!-- type 表示串口类型,cmd是命令串口 -->
  13.         <baud_rate>115200</baud_rate>  <!-- baud_rate、data_bits、stop_bits、timeout: 为串口波特率等串口参数 ,一般采用默认值即可 -->
  14.         <data_bits>8</data_bits>   
  15.         <stop_bits>1</stop_bits>
  16.         <timeout>20</timeout>
  17.     </serial>
  18.     <serial>                        
  19.         <com></com>
  20.         <type>deploy</type>            <!-- type 表示串口类型,deploy是刷机串口 -->  
  21.         <baud_rate>115200</baud_rate>
  22.     </serial>
  23. </device>
  24. <!-- 小型系统设备本地连接配置 -->
  25. <device type="com" label="ipcamera">
  26.     <serial>
  27.         <com></com>                       
  28.         <type>cmd</type>
  29.         <baud_rate>115200</baud_rate>
  30.         <data_bits>8</data_bits>
  31.         <stop_bits>1</stop_bits>
  32.         <timeout>1</timeout>
  33.     </serial>
  34. </device>
  35. <!-- 小型系统设备远端连接配置,可配置多个 -->
  36. <device type="com" label="ipcamera">
  37.     <ip></ip>
  38.     <port></port>
  39. </device>
  40. </environment>
复制代码
测试用例目录设置。
  1. <testcases>
  2.   <!-- dir标签和server标签同时配置时只有一个会起作用 -->
  3.   <!-- 指定测试用例目录,为空则默认设置为当前项目下的testcase文件夹 -->
  4.   <dir></dir>
  5.   <!-- nfs挂载配置,label取值为NfsServer -->
  6.   <server label="NfsServer">
  7.       <ip></ip>             <!-- 挂载环境IP地址 -->
  8.       <port></port>         <!-- 挂载环境端口 -->
  9.       <dir></dir>           <!-- 对应挂载的外部路径 -->
  10.       <username></username> <!-- 登录用户名 -->
  11.       <password></password> <!-- 登录用户密码 -->
  12.       <remote></remote>     <!-- nfs服务器与xDevice执行机不在同一台机器时,remote配置为true,否则为false -->
  13.   </server>
  14. </testcases>
复制代码
资源目录设置。
  1. <resource>
  2.   <!-- 指定资源目录,为空则默认设置为当前项目下的resource文件夹 -->
  3.   <dir></dir>
  4. </resource>
复制代码
日志打印级别设置。
  1. <!-- 默认为INFO,如需更加详细的信息可切换为DEBUG -->
  2. <loglevel>INFO</loglevel>
复制代码
测试套配置文件
设备执行的测试支持套件是由测试配置文件所指定。
每个测试套都都有一个测试配置文件,主要配置了必要使用的测试支持套件(kits)等信息,并支持配置执行预制和清算利用。
以下为配置文件样例。
  1. {
  2.     // 测试支撑套件描述
  3.     "description": "Configuration for aceceshi Tests",
  4.    
  5.     // 指定执行当前测试支撑套的设备
  6.     "environment": {
  7.         "type": "device",
  8.         "label": "wifiiot"
  9.     },
  10.     // 指定设备执行的驱动
  11.     "driver": {
  12.         "type": "OHJSUnitTest",
  13.         "test-timeout": "700000",
  14.         "bundle-name": "com.open.harmony.acetestfive",
  15.         "package-name": "com.open.harmony.acetestfive",
  16.         "shell-timeout": "700000"
  17.     },
  18.     // kit的作用主要是为了支撑测试执行活动,在测试前执行预制操作(Setup),在测试后执行清理操作(Teardown)
  19.     "kits": [
  20.        {
  21.             "type": "ShellKit",
  22.             "run-command": [
  23.                 "remount",
  24.                 "mkdir /data/data/resource",
  25.                 "chmod -R 777 /data/data/resource",
  26.                 "settings put secure adb_install_need_confirm 0"
  27.             ],
  28.             "teardown-command": [
  29.                 "remount",
  30.                 "rm -rf /data/data/resource"
  31.             ]
  32.         },
  33.     ]
  34. }
复制代码
测试命令

测试命令可以分为三组:help、list、run。在指令序列中,以run为最常用的执行指令。

输入help指令可以查询框架指令资助信息。
  1. help:
  2.      use help to get information.  
  3. usage:
  4.      run:  Display a list of supported run command.
  5.      list: Display a list of supported device and task record.  
  6. Examples:
  7.      help run
  8.      help list
复制代码
说明:
help run:展示run指令相关说明 。
help list:展示 list指令相关说明。

list指令用来展示设备和相关的使命信息。
  1. list:
  2.      This command is used to display device list and task record.  
  3. usage:
  4.       list
  5.       list history
  6.       list <id>  
  7. Introduction:
  8.      list:         display device list
  9.      list history: display history record of a serial of tasks
  10.      list <id>:    display history record about task what contains specific id  
  11. Examples:
  12.      list
  13.      list history
  14.      list 6e****90
复制代码
说明:
list: 展示设备信息。
list history: 展示使命历史信息 。
list : 展示特定id的使命其历史信息。

run指令主要用于执行测试使命。
  1. run:
  2.      This command is used to execute the selected testcases.
  3.      It includes a series of processes such as use case compilation, execution, and result collection.  
  4. usage: run [-l TESTLIST [TESTLIST ...] | -tf TESTFILE
  5.             [TESTFILE ...]] [-tc TESTCASE] [-c CONFIG] [-sn DEVICE_SN]
  6.             [-rp REPORT_PATH [REPORT_PATH ...]]
  7.             [-respath RESOURCE_PATH [RESOURCE_PATH ...]]
  8.             [-tcpath TESTCASES_PATH [TESTCASES_PATH ...]]
  9.             [-ta TESTARGS [TESTARGS ...]] [-pt]
  10.             [-env TEST_ENVIRONMENT [TEST_ENVIRONMENT ...]]
  11.             [-e EXECTYPE] [-t [TESTTYPE [TESTTYPE ...]]]
  12.             [-td TESTDRIVER] [-tl TESTLEVEL] [-bv BUILD_VARIANT]
  13.             [-cov COVERAGE] [--retry RETRY] [--session SESSION]
  14.             [--dryrun] [--reboot-per-module] [--check-device]
  15.             [--repeat REPEAT]
  16.             action task  
  17. Specify tests to run.
  18.   positional arguments:
  19.    action                Specify action
  20.    task                  Specify task name,such as "ssts", "acts", "hits"
复制代码
run指令基本使用方法如下。
xDevice命令功能示例run xts运行全部指定类型的XTS模块,如acts,hits,ssys等run actsrun -l xxx运行指定的模块测试套,模块间用分号隔离run -l ActsWifiServiceTest;ActsLwipTestrun -sn指定运行设备的SN号,多个SN号用分号隔离run acts -sn 10.117.183.37:17001 run acts -sn 88Y0257723;VEG0216642run -rp指定报告天生的路径,默认会在工作目录的reports下用时间戳或使命ID建立子目录run acts -rp /suites/hits/xdevice_reports/2020.09.28-14.21.26run -respath指定测试资源路径,默认为resource目录run acts -respath /cloud/zidane/xts/release/suites/resourcerun -ta指定模块运行参数,可以指定运行模块用例中指定的用例,多个用例用逗号隔离,目前支持JS驱动测试套run acts -ta classhos.hardware.soundtrigger.SoundTriggerTest#testKeyphraseParcelUnparcel_noUsersrun --retry重新运行上一次使命的失败用例,天生新的测试报告run –retryrun --retry --session 2020-10-30-17-15-11(使命目录名) 测试报告

框架执行run指令,控制台会输出对应的log打印,还会天生对应的执行效果报告。如果使用了-rp参数指定报告路径,那么报告就会天生在指定的路径下。否则报告会存放在默认目录。
  1. 当前报告目录(默认目录/指定目录)
  2.     ├── result(模块执行结果存放目录)
  3.     │     ├── <模块名>.xml
  4.     │     ├──  ... ...
  5.     │      
  6.     ├── log (设备和任务运行log存放目录)
  7.     │     ├── <设备1>.log
  8.     │     ├── ... ...
  9.     │     ├── <任务>.log
  10.     ├── summary_report.xml(任务汇总数据报告)
  11.     ├── summary_report.html(任务汇总可视化报告)
  12.     ├── details_report.html(用例执性可视化报告)
  13.     ├── failures_report.html(失败用例可视化报告,无失败用例时不生成)
  14.     ├── summary.ini(记录测试类型,使用的设备,开始和结束时间等信息)
  15.     ├── task_info.record(记录执行命令,失败用例清单等信息)
  16.     ├── xxxx.zip(对上述文件进行压缩得到的压缩文件)
  17.     ├── summary_report.hash(对压缩文件进行sha256加密得到的文件)
  18.     └── ... ...
复制代码
环境预备

环境要求



  • python版本>=3.7
  • pyserial>=3.3
  • paramiko>=2.7.1
  • rsa>=4.0
安装xDevice



  • 安装底子框架xDevice。

    • 进入xDevice根目录。
      1. cd testfwk_xdevice
      复制代码
    • 打开控制台,执行如下命令。
      1. python setup.py install
      复制代码

  • 安装OpenHarmony驱动插件ohos。

    • 进行plugin/ohos目录。
      1. cd testfwk_xdevice
      2. /plugin/ohos
      复制代码
    • 打开控制台,当前用户下执行如下命令。
      1. python setup.py install
      复制代码

检验环境是否搭建成功

检验xDevice是否安装成功。

  • 进入xDevice根目录。
    1. cd testfwk_xdevice
    复制代码
  • 打开控制台,执行如下命令。
    1. python -m pip list
    复制代码
  • 查看是否已经成功安装xdevice以及xdevice-ohos两个库。
    1. xdevice                 0.0.0
    2. xdevice-ohos            0.0.0
    复制代码
查看xDevice工具是否可以大概正常运行。

  • 进入xDevice根目录。
    1. cd testfwk_xdevice
    复制代码
  • 打开控制台,执行如下命令。
    1. python -m xdevice
    复制代码
  • 查看控制台是否正常输出如下信息。
    1. [2022-10-13 15:43:31,284] [30076] [Main] [INFO] [*************** xDevice Test Framework 2.11.0.1091 Starting ***************]
    2. [2022-10-13 15:43:31,286] [30076] [ManagerLite] [WARNING] [wifiiot local com cannot be empty, please check]
    3. [2022-10-13 15:43:31,286] [30076] [ManagerLite] [WARNING] [ipcamera local com cannot be empty, please check]
    4. [2022-10-13 15:43:31,287] [30076] [ManagerLite] [WARNING] [device com or ip cannot be empty, please check]
    5. >>>
    复制代码
轻量系统设备XTS测试指导(wifiiot)


  • 识别串口用途,修改根目录中的user_config.xml文件。
    type为cmd的com口对应板子上的AT命令串口,用于对设备发送指令,示例中配置为ChA(COM20)串标语。
    type为deploy的com口对应板子上的日志输出串口,用于镜像烧录和日志打印,示例中配置为ChB(COM18)串标语。
    若AT命令串口和日志输出串口共用,可以配置为雷同,即user_config中的type为cmd的com口与type为deploy的com口可配置为一样的端口,如COM18。

    user_config.xml的修改示例如下。
    1. <user_config>
    2.     <environment>
    3.         <device type="com" label="wifiiot">
    4.             <serial>
    5.                 <com>com20</com>
    6.                 <type>cmd</type>
    7.                 <baud_rate>115200</baud_rate>
    8.                 <data_bits>8</data_bits>
    9.                 <stop_bits>1</stop_bits>
    10.                 <timeout>20</timeout>
    11.             </serial>
    12.             <serial>
    13.                 <com>com18</com>
    14.                 <type>deploy</type>
    15.                 <baud_rate>115200</baud_rate>
    16.             </serial>
    17.         </device>
    18.     </environment>
    19.     <testcases>
    20.         <dir></dir>
    21.         <server label="NfsServer">
    22.             <ip></ip>
    23.             <port></port>
    24.             <dir></dir>
    25.             <username></username>
    26.             <password></password>
    27.             <remote></remote>
    28.         </server>
    29.     </testcases>
    30.     <resource>
    31.         <dir></dir>
    32.     </resource>
    33.     <loglevel>DEBUG</loglevel>
    34. </user_config>
    复制代码
  • 在xDevice根目录下新建testcase文件夹用于存放测试套文件,详细XTS测试套从系统构建的逐日构建中获取。
    测试套测试配置文件json,示例如下。
    1. {
    2.         "description": "Config for ActsAllTest test cases",
    3.         "environment": [
    4.                 {
    5.                         "type": "device",
    6.                         "label": "wifiiot"
    7.                 }
    8.         ],
    9.         "kits": [
    10.                 {
    11.                         "type": "DeployKit",
    12.                         "timeout": "20000",
    13.                         "burn_file": "acts/Hi3861_wifiiot_app_allinone.bin"
    14.                 }
    15.         ],
    16.         "driver": {
    17.                 "type": "CTestLite"
    18.         }
    19. }
    复制代码
  • 执行用例
    进入xDevice根目录;打开控制台进入xDevice控制台,执行如下命令。
    1. python -m xdevice
    复制代码
    执行测试套命令。
    1. run -l ActsAllTest
    复制代码
    执行效果如下。

小型系统设备XTS测试指导(ipcamera)


  • 识别串口用途。
    type为cmd的com口对应板子上的AT命令串口,用于对设备发送指令,示例中配置为ChA(COM20)串标语。

    ipcamera设备有两种毗连方式,一种是本地串口毗连,一种是通过局域网ip毗连。
  • 配置NFS服务器
    NFS挂载方式有两种,一种是长途PC挂载方式,一种是本地局域网挂载方式。
    本地局域网NFS服务的配置方法如下。

    • 下载安装NFS服务器。
    • 配置输出->编辑输出表文件。

    • 添加路径NFS共享路径(如:D:\HS\NFS_Share_File -public –alldirs),这里要留意ftp的IP地点192.168.1.10为开发板的IP。

    • 制止NFS服务器->重启运行NFS服务器使刚才添加的共享路径生效。
    • 找到ipcamera设备在PC上面映射的网口:控制面板->网络和Internet->网络共享中心->以太网状态->以太网属性->手动设置IP地点为:192.168.1.11。


  • 修改根目录中的user_config.xml文件,示例如下。
    1. <user_config>
    2.     <environment>
    3.         <device type="com" label="ipcamera">     <!--两种方式二选一:本地连接方式-->
    4.             <serial>
    5.                 <com>com20</com>
    6.                 <type>cmd</type>
    7.                 <baud_rate>115200</baud_rate>
    8.                 <data_bits>8</data_bits>
    9.                 <stop_bits>1</stop_bits>
    10.                 <timeout>1</timeout>
    11.             </serial>
    12.         </device>
    13.         <device type="com" label="ipcamera">     <!--两种方式二选一:局域网连接方式-->
    14.             <ip>10.176.49.47</ip>
    15.             <port>10003</port>
    16.         </device>
    17.     </environment>
    18.     <testcases>
    19.         <dir></dir>
    20.         <server label="NfsServer">               <!--两种方式二选一:远程挂载方式-->
    21.             <ip>10.176.48.202</ip>
    22.             <port>1022</port>
    23.             <dir>/data/data/local/</dir>
    24.             <username>root</username>
    25.             <password>xxx</password>
    26.             <remote>true</remote>               
    27.         </server>
    28.         <server label="NfsServer">               <!--两种方式二选一:局域网挂载方式-->
    29.             <ip>192.168.1.11</ip>
    30.             <port>2049</port>
    31.             <dir>D:\test</dir>
    32.             <remote>false</remote>               
    33.         </server>
    34.     </testcases>
    35.     <resource>
    36.         <dir></dir>
    37.     </resource>
    38.     <loglevel>DEBUG</loglevel>
    39. </user_config>
    复制代码
  • 在xDevice根目录下新建testcase文件夹用于存放测试套文件,详细XTS测试套从系统构建的逐日构建。
    测试套测试配置文件json,示例如下。
    1. {
    2.         "description": "Config for kernel test cases",
    3.         "environment": [
    4.                 {
    5.                         "type": "device",
    6.                         "label": "ipcamera"
    7.                 }
    8.         ],
    9.         "kits": [
    10.                 {
    11.                         "type": "MountKit",
    12.             "server": "NfsServer",
    13.             "mount": [
    14.                 {
    15.                     "source": "testcases/kernel",
    16.                     "target": "/test_root/kernel"
    17.                 }
    18.             ]
    19.                 }
    20.         ],
    21.         "driver": {
    22.                 "type": "CppTestLite",
    23.         "excute": "/test_root/kernel/ActsKernelIPCTest.bin"
    24.         }
    25. }
    复制代码
  • 执行用例。
    进入xDevice根目录,打开控制台进入xDevice控制台,执行如下命令。
    1. python -m xdevice
    复制代码
    执行测试套命令。
    1. run -l kernel
    复制代码
    执行效果如下。

尺度系统设备XTS测试指导(RK3568)


  • 配置hdc工具,从逐日构建上下载ohos_sdk最新版本即可。
    下载工具后,把hdc配置到环境变量中,配置方法:右键单击我的电脑->属性->高级系统设置->环境变量->ath。
  • 执行如下命令查看设备是否正常毗连。
    1. hdc_std list targets
    复制代码
  • 修改user_config.xml文件,示例如下。
    1. <user_config>
    2.     <environment>
    3.         <device type="usb-hdc">
    4.             <ip></ip>
    5.             <port></port>
    6.             <sn>xxx;xxx</sn>                          <!--连接多个设备的SN号用分号分割-->
    7.         </device>
    8.     </environment>
    9.     <testcases>
    10.         <dir></dir>
    11.     </testcases>
    12.     <resource>
    13.         <dir></dir>
    14.     </resource>
    15.     <loglevel>DEBUG</loglevel>
    16. </user_config>
    复制代码
  • 在xDevice根目录下新建testcase文件夹用于存放测试套文件,详细XTS测试套从系统构建的逐日构建中获取。
    测试套测试配置文件json,示例如下。
    1. {
    2.     "description": "Configuration for hjunit demo Tests",
    3.     "driver": {
    4.         "type": "OHJSUnitTest",
    5.         "test-timeout": "180000",
    6.         "bundle-name": "ohos.acts.bundle.stage.test",
    7.         "module-name": "phone",
    8.         "shell-timeout": "600000",
    9.         "testcase-timeout": 70000
    10.     },
    11.     "kits": [
    12.         {
    13.             "test-file-name": [
    14.                 "ActBmsStageEtsTest.hap"
    15.             ],
    16.             "type": "AppInstallKit",
    17.             "cleanup-apps": true
    18.         },
    19.         {
    20.             "type": "ShellKit",
    21.             "teardown-command":[
    22.                 "bm uninstall -n ohos.acts.bundle.stage.test"
    23.             ]
    24.         }
    25.     ]
    26. }
    复制代码
  • 执行用例。
    进入xDevice根目录,打开控制台进入xDevice控制台,执行如下命令。
    1. python -m xdevice
    复制代码
    执行测试套命令。
    1. run -l ActBmsStageEtsTest
    复制代码
    执行效果如下。

常见题目

hdc list targets能查找到设备,但xDevice识别不到设备。

题目描述
出现如下错误。

可能原因
环境变量中曾设置过HDC_SERVER_PORT变量修改过hdc的端口,由于xDevice默认必要使用8710端口,若曾修改过该端口会导致xDevice框架无法识别设备。
解决方法
检查是否有设置HDC_SERVER_PROT变量,若有设置,请把该端口的值修改为8710,然后重启xDevice即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表