写点什么

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

  • 2023-03-03
    上海
  • 本文字数:2894 字

    阅读完需:约 9 分钟

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 {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 控制器。


用户头像

每一位开发者都是华为要汇聚的星星之火 2021-10-15 加入

提供HarmonyOS关键技术解析、版本更新、开发者实践和活动资讯,欢迎各位开发者加入HarmonyOS生态,一起创造无限可能!

评论

发布
暂无评论
Hypium框架使能ArkTS应用高效测试_HarmonyOS_HarmonyOS开发者_InfoQ写作社区