首页 > 其他分享 >Hypium框架使能ArkTS应用高效测试

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

时间:2023-03-03 17:45:43浏览次数:49  
标签:使能 场景 模拟能力 应用 框架 ArkTS 测试 Hypium

 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

参数

取值

含义

-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

                               }]

               }]

}

 

配置参数说明:

 

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、测试套筛选

测试套与用例名称使用“#”号连接,多个筛选规则使用“,”英文逗号分隔。

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

 

标签:使能,场景,模拟能力,应用,框架,ArkTS,测试,Hypium
From: https://www.cnblogs.com/HarmonyOSDev/p/17176455.html

相关文章

  • 【ArkTS】CheckBox组件选中状态失效
    ​【关键字】ArkTS、CheckBox组件、HarmonyOS 【问题描述】需求如下:使用ArkTS的CheckBox组件设置选项的状态,通过变量保存最后的选中状态,然后在重新打开界面时能够显......
  • 适合编程初学者的开源项目:小游戏2048(鸿蒙ArkTS版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。2048游戏规则一共16个单元格,初始时由2或者4构成。1、手指向一个方向滑动,所有格子会向那个方向运动。2......
  • 鸿蒙ArkTS之装饰器(一)
    以下内容基于HarmonyOS3.1DeveloperPreview(API9)版本,虚拟机测试可以兼容API8参考:鸿蒙开发者官网的文档ArkTS采用装饰器标注对象的功能。基础UI组件结构每个UI组件需......
  • 【FPGA基础】门控时钟与使能时钟
    1、门控时钟门控时钟通过一个使能信号控制时钟的开关组合逻辑中多用门控时钟包含一个门电路,容易因竞争而产生不希望的毛刺当系统不工作时可以关闭时钟,降低系统功耗......
  • 【ArkTS】ArkTS开发组件回调中this指向问题
    ​【问题描述】在学习ArkTS官方自定义弹窗组件时,想在官方demo(自定义弹窗-弹窗-全局UI方法-组件参考(基于ArkTS的声明式开发范式)-手机、平板、智慧屏和智能穿戴开发-ArkTSA......
  • HarmonyOS ArkTS 本地库&三方库的用法
    项目介绍项目内容:自定义基础组件和容器组件、依赖库概念、本地依赖库的创建和引用、三方库的引用。工具版本:DevEcoStudio3.1Canary1SDK版本:3.2.1.4(APIVersion9C......
  • _HAL_RCC_GPIOA_CLK_ENABLE使能GPIO
     MDK5.5-----__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE(); 使能GPIO时钟:MDK4.7 GPIO_InitTypeDefGPIO_InitStruct;//......
  • HUAWEI DevEco Studio 3.1版本发布,配套ArkTS声明式开发全面升级
     今年开发者大会发布了HarmonyOS应用开发套件DevEcoStudio3.1版本,展示了DevEcoStudio3.1版本的关键特性。HUAWEIDevEcoStudio是开发HarmonyOS应用及服务的一站......
  • 【原创】i.MXRT J-Flash烧写算法使能eFuse熔丝位写入
    ​    临近年底,终于又憋了一篇文章出来,本来年初的时候是有计划把去年总结的一些东西整理下发布出来的,结果还是被工作和生活上各种琐事给耽搁了。哎,今年刚过了自己35......
  • 联想thinkpad PC使能虚拟化
    打开任务管理器,选择性能,该PC支持Hyper-V但虚拟化已禁用。需要进入BIOS设置1、在开机后出现Lenovo的logo后,长按F1键,进入BIOS   此PC为E440,型号不同可能快捷键不同,具体的......