关于harmonyos:Hypium框架使能ArkTS应用高效测试

36次阅读

共计 2866 个字符,预计需要花费 8 分钟才能阅读完成。

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 测试框架架构

Hypium 测试框架以插件模式集成到 DevEco Studio 中,应用十分便捷。明天,咱们重点分享 Hypium 新版本反对 ArkUI 引擎,同时新增了测试能力库,构建丰盛的场景模拟能力和专项测试执行能力,全面使能 ArkTS 利用自动化测试。

丰盛的场景模仿 API,助力多层次测试

ArkTS 利用采纳了相似 MVC 经典构造 1,包含 View(视图)、Model(模型)、Server(服务)三个局部。View(视图)负责页面元素定义生成页面和一些根底的页面逻辑;Model(模型)是数据模型,负责存储利用的数据;Server(服务)负责解决简单的业务逻辑,包含网络、设施硬件交互等。针对三个不同档次的测试场景,咱们能够采纳不同的测试形式,验证利用的正确性。

1、View 层:UI 界面层,倡议应用系统集成测试,验证根底性能和界面。
2、Model 层:数据逻辑层,能够应用利用接口测试,验证数据逻辑的正确性。
3、Server 层:业务逻辑层,能够应用利用接口测试,验证业务逻辑的正确性。

ArkTS 利用多层次测试

在测试过程中,为了验证利用的性能,咱们须要构建不同的场景。例如,测试导航场景须要构建地位挪动轨迹,测试重力感应游戏须要构建重力传感器数据,测试低电量场景须要等到设施电量低于 5% 等。但构建这些场景耗时费劲,甚至局部无奈实现自动化,只能依赖人工测试,基于这种状况,Hypium 测试框架提供了通用的接口模拟能力,反对开发者模仿利用接口,快捷构建测试场景。

以下是单元测试模拟能力通用接口列表:

模拟能力通用接口

应用以上模仿接口,咱们能够便捷地模仿任意接口的返回值,从而达到场景模仿成果,晋升利用单元测试效率。但对于局部非凡场景,开发者模仿效率较低,通用模拟能力无奈满足特定的测试需要。别放心,除了通用模拟能力,Hypium 测试框架还提供了非凡场景模拟能力,包含设施交互模仿、设施环境模拟、云端交互模仿。

1、设施交互模仿:构建利用与设施之间数据交互模拟能力,次要模仿设施物理器件数据与利用的交互,包含不限于:物理地位模仿、重力传感器、加速度传感器等多种传感器数据模仿。基于设施交互模拟能力能够构建多种场景,例如:导航、重力感应、靠近光等。

2、设施环境模拟:构建设施状态的模拟能力,包含不限于:零碎电量、信号强度、媒体播放、资源占用等,基于设施环境模拟能力能够结构设施的不同状态,例如:低电量、弱信号、后盾媒体播放等。

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

专项测试执行能力,使能多维度测试

ArkTS 利用除了根底的测试场景外,还面临很多非凡的测试场景,例如:如何测试利用接口的性能?接口的参数类型比拟多,如何实现全量笼罩?测试某项场景时,如何防止执行全副测试用例,只执行相应局部测试用例?

针对这些非凡场景,Hypium 测试框架从测试执行粒度、执行形式、执行调度等多维度提供压力、数据驱动、筛选能力等场景的测试执行能力,进一步晋升 ArkTS 利用测试执行效率。

1、压力测试
实用于接口压力测试场景,用户能够自定义测试用例的执行次数。执行测试 aa test 测试命令带上压力参数即可,例如:

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

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

                               }]

               }]

}

配置参数阐明:

3、测试用例筛选
Hypium 反对依据用例属性,筛选执行指定的测试用例,应用形式是先在测试用例上标记用例属性后,再在测试利用的启动 shell 命令后新增 ”-s ${Key} ${Value}”。

示例代码

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、测试套筛选
测试套与用例名称应用“#”号连贯,多个筛选规定应用“,”英文逗号分隔。

示例命令

XX -s class attributeTest#testAttributeIt,abilityTest#testAbilityIt

本期分享的自动化测试框架 Hypium,你学会了吗?快来上手试试吧!将来,咱们还将持续打磨演进 Hypium 测试能力,助力大家开发更卓越的利用产品,宽广开发者敌人敬请期待!

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

正文完
 0