HarmonyOS发布了声明式开发结构ArkUI,带来了极简高效的开发体验,备受广阔开发者的青睐。那么,咱们在开发过程中,怎么确保ArkTS运用的功用和界面满意预期呢?ArkTS运用怎样高效进行专项测验?接下来,有请咱们本期的主角——自动化测验结构Hypium闪亮登场。

Hypium 测验结构介绍

想必我们对自动化测验结构Hypium并不陌生,此前有关于Hypium的详细介绍《HarmonyOS自动化测验结构—Hypium》,我们可自行查阅。下面,咱们一起了解Hypium测验结构,首要包含三个维度:

1、测验履行调度层

xDevice支撑手机、平板、PC、穿戴、才智屏、音箱和车机等多设备,助力运用跨设备测验验证。

2、测验结构层

包含HTSUnit、HUITest、HCUnit与HCPPTest多层次测验结构,从运用的单元/接口层、到UI界面层、再到C/C++体系层,构建多维度测验服务保证。

3、测验才能库

包含体系测验组件、UITestKit组件、专项测验组件,以及分布式测验组件,完成丰厚的场景模仿才能和跨设备分布式测验才能。

Hypium框架使能ArkTS应用高效测试
Hypium测验结构架构

Hypium测验结构以插件形式集成到DevEco Studio中,运用非常便捷。今天,咱们重点分享Hypium新版本支撑ArkUI引擎,一起新增了测验才能库,构建丰厚的场景模仿才能和专项测验履行才能,全面使能ArkTS运用自动化测验。

丰厚的场景模仿API,助力多层次测验

ArkTS运用选用了相似MVC经典结构1,包含View(视图)、Model(模型)、Server(服务)三个部分。View(视图)担任页面元素界说生成页面和一些根底的页面逻辑;Model(模型)是数据模型,担任存储运用的数据;Server(服务)担任处理杂乱的事务逻辑,包含网络、设备硬件交互等。针对三个不同层次的测验场景,咱们能够选用不同的测验方法,验证运用的正确性。

1、View层: UI界面层,建议运用体系集成测验,验证根底功用和界面。

2、Model层:数据逻辑层,能够运用运用接口测验,验证数据逻辑的正确性。

3、Server层:事务逻辑层,能够运用运用接口测验,验证事务逻辑的正确性。

Hypium框架使能ArkTS应用高效测试
ArkTS运用多层次测验

在测验过程中,为了验证运用的功用,咱们需求构建不同的场景。例如,测验导航场景需求构建方位移动轨迹,测验重力感应游戏需求构建重力传感器数据,测验低电量场景需求比及设备电量低于5%等。但构建这些场景耗时费力,乃至部分无法完成自动化,只能依赖人工测验,依据这种状况,Hypium测验结构提供了通用的接口模仿才能,支撑开发者模仿运用接口,方便构建测验场景。

以下是单元测验模仿才能通用接口列表:

Hypium框架使能ArkTS应用高效测试
模仿才能通用接口

运用以上模仿接口,咱们能够便捷地模仿恣意接口的返回值,从而到达场景模仿效果,提升运用单元测验功率。但关于部分特别场景,开发者模仿功率较低,通用模仿才能无法满意特定的测验需求。别担心,除了通用模仿才能,Hypium测验结构还提供了特别场景模仿才能,包含设备交互模仿、设备环境模仿、云端交互模仿。

1、设备交互模仿:构建运用与设备之间数据交互模仿才能,首要模仿设备物理器材数据与运用的交互,包含不限于:物理方位模仿、重力传感器、加速度传感器等多种传感器数据模仿。依据设备交互模仿才能能够构建多种场景,例如:导航、重力感应、挨近光等。

2、设备环境模仿:构建设备状况的模仿才能,包含不限于:体系电量、信号强度、媒体播映、资源占用等,依据设备环境模仿才能能够结构设备的不同状况,例如:低电量、弱信号、后台媒体播映等。

3、云端交互模仿:构建云端模仿才能,模仿云端服务器的返回值,将运用与云端服务解耦。

专项测验履行才能,使能多维度测验

ArkTS运用除了根底的测验场景外,还面对许多特别的测验场景,例如:怎么测验运用接口的性能?接口的参数类型比较多,怎么完成全量覆盖?测验某项场景时,怎么防止履行全部测验用例,只履行相应部分测验用例?

针对这些特别场景,Hypium测验结构从测验履行粒度、履行方法、履行调度等多维度提供压力、数据驱动、挑选才能等场景的测验履行才能,进一步提升ArkTS运用测验履行功率。

1、压力测验

适用于接口压力测验场景,用户能够自界说测验用例的履行次数。履行测验aa test测验指令带上压力参数即可,例如:

aa test –p xxxx –n xxxxx –s stress 10

参数 取值 含义
-s stress 正整数 测验用例履行次数

2、数据驱动测验

适用于接口参数类型比较多,无法经过测验用例直接覆盖的场景。咱们能够自界说装备参数方便驱动测验用例的履行次数和每一次传入的参数,运用时依赖data.json装备文件,文件内容如下:

{
               "suites": [{
                               "describe": ["actsAbilityTest"],
                               "stress": 2,
                               "params": {
                                              "suiteParams1": "suiteParams001",
                                              "suiteParams2": "suiteParams002"
                               },
                               "items": [{
                                              "it": "testDataDriverAsync",
                                              "stress": 2,
                                              "params": [{
                                                             "name": "tom",
                                                             "value": 5
                                              }, {
                                                             "name": "jerry",
                                                             "value": 4
                                              }]
                               }, {
                                              "it": "testDataDriver",
                                              "stress": 3
                               }]
               }]
}

装备参数阐明:

Hypium框架使能ArkTS应用高效测试

3、测验用例挑选

Hypium支撑依据用例属性,挑选履行指定的测验用例,运用方法是先在测验用例上符号用例属性后,再在测验运用的发动shell指令后新增”-s Key{Key} {Value}”。

Hypium框架使能ArkTS应用高效测试

示例代码

import { describe, it, expect, TestType, Size, Level } from '@ohos/hypium';
export default function attributeTest() {
    describe('attributeTest', function () {
        it("testAttributeIt", TestType.FUNCTION | Size.SMALLTEST | Level.LEVEL0, function () {
            console.info('Hello Test');
        })
    })
}

示例指令

XX -s level 1 -s size small -s testType function

该指令的作用是:挑选测验运用中一起满意a)用例级别是1 b)用例粒度是small c)用例测验类型是function 三个条件的用例履行。

4、测验套挑选

测验套与用例名称运用“#”号连接,多个挑选规矩运用“,”英文逗号分隔。

Key 含义阐明 Value取值范围
class 指定要履行的测验套&用例 {describeName}#{itName},${describeName} , 例如:-s class attributeTest#testAttributeIt
notClass 指定不履行的测验套&用例 {describeName}#{itName},${describeName} , 例如:-s notClass attributeTest#testAttributeIt

示例指令

XX -s class attributeTest#testAttributeIt,abilityTest#testAbilityIt

本期分享的自动化测验结构Hypium,你学会了吗?快来上手试试吧!未来,咱们还将继续打磨演进Hypium测验才能,助力我们开发更卓越的运用产品,广阔开发者朋友敬请期待!

注:MVC结构即 Model 模型、View 视图、Controller 控制器。

Hypium框架使能ArkTS应用高效测试