0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

HarmonyOS开发者 来源:未知 2023-03-11 13:10 次阅读

作者:leidan,软件测试开发工程师

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';


exportdefaultfunctionattributeTest() {

describe('attributeTest',function() {

it("testAttributeIt",TestType.FUNCTION |Size.SMALLTEST |Level.LEVEL0,function() {

console.info('Hello Test');

})

})

}

左右滑动,查看更多


示例命令

XX -s level1-s size small -s testTypefunction

左右滑动,查看更多


该命令的作用是:筛选测试应用中同时满足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测试能力,助力大家开发更卓越的应用产品,广大开发者朋友敬请期待!


1MVC结构即 Model 模型、View 视图、Controller 控制器



END


想了解更多HarmonyOS技术?

后台留言给我们

立刻安排!


欢迎点击|阅读原文

进入HarmonyOS应用开发在线体验


原文标题:Hypium框架使能ArkTS应用高效测试

文章出处:【微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    79

    文章

    1877

    浏览量

    29337

原文标题:Hypium框架使能ArkTS应用高效测试

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Python自动化测试框架及其应用

    Pytest是一个非常成熟的全功能的Python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起
    的头像 发表于 04-03 16:15 167次阅读
    Python自动化<b class='flag-5'>测试</b><b class='flag-5'>框架</b>及其应用

    鸿蒙实战开发ArkTS运用:【ai聊天框】

    用一个ArkTS编写的HarmonyOS原生聊天UI框架,提供了开箱即用的聊天对话组件。
    的头像 发表于 03-08 15:38 310次阅读
    鸿蒙实战开发<b class='flag-5'>ArkTS</b>运用:【ai聊天框】

    鸿蒙语言ArkTS(更好的生产力与性能)

    有限的问题,ArkTS对并发编程API和能力进行了增强。 ArkTS支持与JS/TS高效互操作,兼容JS/TS生态。 ArkTS设计理念 为更好地支持HarmonyOS应用的开发和运行
    发表于 02-17 15:56

    鸿蒙开发之ArkTS基础知识

    一、ArkTS简介 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配了鸿蒙的ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开
    的头像 发表于 01-24 16:44 701次阅读
    鸿蒙开发之<b class='flag-5'>ArkTS</b>基础知识

    鸿蒙入门实战-ArkTS开发

    声明式UI基本概念 应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程,其实是组合组件的过程,声明式UI的思想,主要体现在
    发表于 01-16 17:27

    鸿蒙ArkTS的起源和简介

    语义等等。我们将持续致力于提供简洁高效的并发API,帮助应用开发者更容易开发出高性能的应用。 当然,ArkTS以及ArkUI开发框架还很年轻,还有很多其它方面也会持续演进,比如UI自定义能力的进一步
    发表于 01-16 16:23

    HamronyOS自动化测试框架使用指南

    概述 为支撑 HarmonyOS 操作系统的自动化测试活动开展,我们提供了支持 JS/TS 语言的单元及 UI 测试框架,支持开发者针对应用接口进行单元测试,并且可基于 UI 操作进行
    发表于 12-19 10:26

    AD7124-8使内部参考电压无法正确使是为什么?

    ad7124-8使内部参考电压后,测试的REF_OUT 引脚的电压输出; 我测试存在一个问题:按照手册上说明,使
    发表于 12-11 06:51

    HarmonyOS/OpenHarmony原生应用-ArkTS卡片组件Span

    作为Text组件的子组件,用于显示行内文本的组件。无子组件 一、接口 Span(value: string | Resource) 从API version 9开始,该接口支持在ArkTS卡片
    发表于 10-07 17:50

    HarmonyOS/OpenHarmony原生应用-ArkTS卡片组件Badge

    : BadgeStyle}) 创建数字标记组件。 从API version 9开始,该接口支持在ArkTS卡片中使用。 参数: 方法2: Badge(value: {value: string
    发表于 09-28 11:53

    API测试框架Grillon概述

    API测试框架Grillon概述
    的头像 发表于 09-08 10:22 1760次阅读

    最通俗易懂的ArkTS语言入门指南

    本文为我整理出来最通俗易懂的 ArkTS 语言入门指南。
    的头像 发表于 06-18 15:12 2.1w次阅读
    最通俗易懂的<b class='flag-5'>ArkTS</b>语言入门指南

    HarmonyOS优选主力应用开发语言-ArkTS概述

    之前,建议开发者具备TS语言开发能力。 当前,ArkTS在TS的基础上主要扩展了如下能力: 基本语法:ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架
    发表于 06-09 10:52

    HarmonyOS/OpenHarmony应用开发-ArkTS语言基本语法说明

    以一个具体的示例来说明ArkTS的基本组成。如下图所示,当开发者点击按钮时,文本内容从“Hello World”变为“Hello ArkUI”。 本示例中,ArkTS的基本组成如下所示。 图2
    发表于 06-01 10:25

    一款扩展性高的渗透测试框架渗透测试框架

    MYExploit 简介 一款扩展性高的渗透测试框架渗透测试框架(完善中) 只支持部分EXP 利用 使用声明 本工具仅用于安全测试目的 用于
    的头像 发表于 05-30 09:06 383次阅读
    一款扩展性高的渗透<b class='flag-5'>测试</b><b class='flag-5'>框架</b>渗透<b class='flag-5'>测试</b><b class='flag-5'>框架</b>