鸿蒙5.0开发【网络诊断】Network分析

创建Instrument Test测试用例

创建默认测试用例

  1. 在工程目录下打开待测试模块(支持HAP、HAR、HSP模块)下的ets文件,将光标置于代码中任意位置,单击右键 > Show Context Actions > Create Instrument Test或快捷键Alt+enter > Create Instrument Test创建测试类。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 在弹出的Create Instrument Test窗口,输入或选择如下参数。

    • Testing library:测试类型,默认为DECC-ArkTSUnit,JS语言默认为DECC-JSUnit。
    • ArkTS name:创建的测试套件名称。测试套件为包含了测试用例的文件。测试套件名称要求在工程目录范围内具有唯一性,且不能使用逗号、横线、空格以及\ / : * ? “”< > | ()&等特殊字符。
    • Destination package:测试套件存放的位置,建议存放在待测试模块的test目录下。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. DevEco Studio在ohosTest/ets/test目录下自动生成对应的测试类。在测试类中,DevEco Studio会生成对应方法的用例模板,具体测试代码需要开发者根据业务逻辑进行开发。

    说明

    • 您也可以手动在ohosTest > ets > test文件夹下创建测试用例,手动创建后,需要在List.test.ets文件中添加创建的用例类。手动创建的工程或历史工程,ohosTest > ets > test文件夹下所有文件的文件名必须以.test.ets结尾,否则将在运行时弹窗提示“Error: Test files must end with ‘.test.ets’.”请点击Fix按钮,DevEco Studio将自动对ohosTest > ets > test目录下的文件名进行修改。
    • 测试用例名称应保持唯一性,并且不能使用逗号、横线、空格以及\ / : * ? “”< > | ()&等特殊字符。
    • 首次在HarmonyOS设备上运行UI测试框架需要使用命令“hdc -n shell param set persist.ace.testmode.enabled 1”使能UiTest测试能力。

自定义Ability和Resources

从5.0.3.403版本开始,新创建的工程/模块的ohosTest目录下默认不创建testability、testrunner和resources目录,历史工程仍保留这些目录,如果新工程需要使用ability或resources能力,需要开发者自行创建。

说明

如果需要使用ability能力,需要同时创建testrunner目录及OpenHarmonyTestRunner.ets文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 创建以下目录或文件,文件内容示例可在[运行Instrument Test测试用例]后,在对应模块的build/default/intermediates/src/ohosTest下查看。

    • testability目录 > TestAbility.ets文件
    • testability目录 > pages目录 > Index.ets文件
    • testrunner目录 > OpenHarmonyTestRunner.ets文件
    • resources目录 > base目录 > element目录 > color.json文件
    • resources目录 > base目录 > element目录 > string.json文件
    • resources目录 > base目录 > media目录 > icon.png文件
    • resources目录 > base目录 > profile目录 > test_pages.json文件
  2. 在module.json5文件中补充ability配置字段mainElement、pages、abilities。

{
  "module": {
    "name": "entry_test",
    "type": "feature",
    "description": "$string:module_test_desc",
    "mainElement": "TestAbility",                                   // 对应下方abilities中的ability name。
    "deviceTypes": [
      "phone",
      "tablet",
      "2in1"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:test_pages",                                 // 对应resources目录 > base目录 > profile目录 > test_pages.json文件。
    "abilities": [                                                  // 添加的ability的配置信息。
      {
        "name": "TestAbility",
        "srcEntry": "./ets/testability/TestAbility.ets",
        "description": "$string:TestAbility_desc",
        "icon": "$media:icon",
        "label": "$string:TestAbility_label",
        "exported": true,
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background"
      }
    ]
  }
}

运行Instrument Test测试用例

运行模式

使用DevEco Studio运行测试用例前,需要将设备与电脑进行连接,将工程编译成带签名信息的HAP,再安装到真机设备或模拟器上运行。

可以采用运行工程目录(test)、测试文件(如Ability.test.ets)、测试套件(describe)、测试方法(it)的方式来运行测试用例:

  • 在工程目录中,单击右键 > Run’测试文件名称’ ,执行测试。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 打开测试文件,单击测试套件左侧按钮。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 如果要根据自定义的配置执行Instrument Test,在[创建测试用例运行任务]后,通过如下方式的其中之一,执行Instrument Test:

    • 在工具栏主菜单单击Run > Run’测试名称’

    • 在DevEco Studio的右上角,选择测试任务,然后单击右侧的按钮,执行Instrument Test。

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行完测试任务后,查看测试结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

调试模式

调试模式相比运行模式增加了断点管理功能。在断点命中时,可以选择单步执行、步入步出、进入下个断点等方式进行调试,另外可以使用线程堆栈可视化、变量和表达式可视化功能,快速定位问题。

以文件级别为例,在添加断点之后,在工程目录中,选中文件,单击右键 > Debug’测试文件名称’ ,以调试模式执行测试任务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在断点命中时,下方将出现Debug窗口。开发者可在该窗口中进行断点管理与基础调试能力的可视化操作,在断点命中时可查看当前线程的变量和堆栈信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

断点命中时,在代码编辑器窗口单击右键,在弹出的菜单中将出现调试模式特有功能,如计算表达式、添加变量监视等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在跳出所有断点后,测试结束,与运行模式相同,在测试窗口查看测试结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

说明

涉及调试C++代码时,请打开Run/Debug Configurations窗口,点击Debugger页签,设置Debug type。

覆盖率统计模式

说明

  • 源码文件的命名不可为“test.ets”、“xx.test.ets”、“test.ts”和“xx.test.ts”,该命名的文件不会生成报告。
  • Instrument Test的覆盖率统计模式暂不支持元服务。

在Instrument Test运行的基础上支持代码覆盖率统计,当前仅支持ArkTS工程。

可以采用运行工程目录(test)、测试文件(如Ability.test.ets)、测试套件(describe)、测试方法(it)的方式来启动代码覆盖率的统计。

以文件级别为例,有两种方式启动测试:

  • 方式一:在工程目录中,选中文件,单击右键 > Run ‘测试文件名称’ with Coverage,执行测试。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 方式二:在DevEco Studio的右上角,选择测试任务,然后单击右侧的外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传按钮,执行测试。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启动测试后,进行编译构建,底部将出现Cover窗口,构建结束后自动拉起Cover窗口,测试任务结束后,窗口中会打印测试报告的路径。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在本地找到报告的位置并在浏览器中打开,查看代码覆盖率详情。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在Cover窗口中,单击rerun按钮可以按照之前的设置,重新执行覆盖率用例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(可选)自定义测试用例运行任务

默认情况下,测试用例可直接运行,如果需要自定义测试用例运行任务,可通过如下方法进行设置。

  1. 在工具栏主菜单单击Run > Edit Configurations进入Run/Debug Configurations界面。

  2. Run/Debug Configurations界面,单击+按钮,在弹出的下拉菜单中,单击Instrument Test。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 根据实际情况,配置Instrument Test的运行参数。然后单击OK,完成配置。

    如果模块依赖共享包,请提前设置HAP安装方式:单击Run > Edit Configurations,设置指定模块的HAP安装方式,勾选“Keep Application Data”,则表示采用覆盖安装方式,保留应用/服务缓存数据。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用过滤条件筛选待运行的测试用例

  1. 在用例编写时,通过配置it的第二个入参,为每个用例添加过滤参数。此参数用于为测试用例添加标注,不添加则参数默认为0表示未被标注。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 打开Run/Debug Configurations窗口,点击Test Args,打开Test Args界面,添加命令行参数。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    例如将测试参数配置为level=1, size=medium

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    Key含义说明Value取值范围
    level用例级别“0”,“1”,“2”,“3”,“4”, 例如:-s level 1
    size用例粒度“small”,“medium”,“large”, 例如:-s size small
    testType用例测试类型“function”,“performance”,“power”,“reliability”,“security”,“global”,“compatibility”,“user”,“standard”,“safety”,“resilience”, 例如:-s testType function
  3. 完成以上配置后,在运行此项配置对应的测试任务时,只运行过滤后的测试用例。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

调试C++代码

当开发者编写Instrument Test测试用例,涉及调试C++代码时,请打开Run/Debug Configurations窗口,点击Debugger页签,设置Debug type。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

调试类型Debug type默认为Detect Automatically,关于各调试类型的说明如下表所示:

调试类型调试代码
Detect Automatically自动检测。根据工程模块及其依赖的模块涉及的编程语言,自动启动对应的调试器。如果检测到是Native模块,出现两个调试窗口(PandaDebugger、Native);如果不是Native模块,只出现PandaDebugger调试窗口。
ArkTS/JS只调试ArkTS/JS,只出现PandaDebugger调试窗口。
Native单独调试C++,只出现Native调试窗口。
Dual(ArkTS/JS + Native)支持ArkTS/JS和C++混合调试,出现两个调试窗口(PandaDebugger、Native)。

说明

调试C++代码时,当前模块及所有依赖的HSP模块的[Address Sanitizer配置]要保持一致,若不一致,可能无法进入C++代码的断点处。

ASan检测

Instrument Test针对C/C++方法提供ASan检测能力,当前暂不支持JS语言。

  1. 在运行/调试配置窗口,选择对应的Instrument Test,点击Diagnostics页签,勾选Address Sanitizer选项,勾选后,测试包和源码包均开启ASan能力。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 如果有引用本地library,需在library模块的build-profile.json5文件中,配置arguments字段值为“-DOHOS_ENABLE_ASAN=ON”,表示以ASan模式编译so文件。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 运行测试用例

  4. 当程序出现内存错误时,弹出ASan log信息,点击信息中的链接即可跳转至引起内存错误的代码处。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用命令行执行测试Instrument Test

说明

从hvigor-ohos-plugin 4.3.0版本开始支持。

通过命令行方式执行Instrument Test,在工程根目录下执行命令:

hvigorw onDeviceTest -p module={moduleName} -p coverage={true | false} -p scope={suiteName}#{methodName}
  • module:执行测试的模块,缺省默认是执行所有模块的用例。

  • coverage:是否生成覆盖率报告,缺省默认是true。

    覆盖率测试报告路径:/.test/default/outputs/ohosTest/reports/index.html

  • scope:格式为{suiteName}#{methodName}或{suiteName},分别表示测试用例级别或测试套件级别的测试,缺省默认是执行当前模块的所有用例。

说明

多个module和scope之间用逗号分割。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值