原文链接:https://mp.weixin.qq.com/s/Ncc-x_4zy4wBZmSjknw1lQ,点击链接查看更多技术内容;
 
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 控制器。

Hypium框架使能ArkTS应用高效测试的更多相关文章

  1. python3+selenium框架设计02-自动化测试框架需要什么

    什么是自动化测试框架 自动化测试框架能够提供便利给用户高效完成一些事情,比如,结构清晰开发脚本,多种方式.平台执行脚本,良好的日志和报告去跟踪脚本执行结果. 关于自动化测试框架的定义有很多,在我大致理 ...

  2. 前端测试框架Jest系列教程 -- Asynchronous(测试异步代码)

    写在前面: 在JavaScript代码中,异步运行是很常见的.当你有异步运行的代码时,Jest需要知道它测试的代码何时完成,然后才能继续进行另一个测试.Jest提供了几种方法来处理这个问题. 测试异步 ...

  3. Google官方网络框架Volley实战——QQ吉凶测试,南无阿弥陀佛!

    Google官方网络框架Volley实战--QQ吉凶测试,南无阿弥陀佛! 这次我们用第三方的接口来做一个QQ吉凶的测试项目,代码依然是比较的简单 无图无真相 直接撸代码了,详细解释都已经写在注释里了 ...

  4. 高效测试框架推荐之Ginkgo

    自2015年开始,七牛工效团队一直使用Go语言+Ginkgo的组合来编写自动化测试用例,积累了大约5000+的数量.在使用和维护过程中,我们觉得Ginkgo的很多设计理念和功能非常赞,因此特分享给大家 ...

  5. 从零开始,搭建博客系统MVC5+EF6搭建框架(2),测试添加数据、集成Autofac依赖注入

    一.测试仓储层.业务层是否能实现对数据库表的操作 1.创建IsysUserInfoRepository接口来继承IBaseRepository父接口 namespace Wchl.WMBlog.IRe ...

  6. Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)

    新框架的容器部分终于调通了!容器实在太重要了,所以有用了一个名词叫“核心容器”. 容器为什么那么重要呢?这个有必要好好说道说道. 1.首先我们从框架名称面向接口编程说起,什么是面向接口编程?(这个度娘 ...

  7. Auty自动化测试框架第四篇——生成测试结果报告

    [本文出自天外归云的博客园] 本次为Auty框架添加生成测试结果报告功能,文件结构更新:

  8. SSH框架搭建最终版【测试、log4j、baseDao】

    最详细搭建SSH框架环境 本博文主要是讲解如何搭建一个比较规范的SSH开发环境,以及对它测试[在前面的搭建中,只是整合了SSH框架,能够使用SSH实现功能],而这次是相对规范的. 导入开发包 在Str ...

  9. python3+requests库框架设计01-自动化测试框架需要什么?

    什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...

  10. Spring MVC测试框架详解——服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

随机推荐

  1. 【Azure 应用服务】Azure App Service能否使用Storage Account File Share

    问题描述 Azure App Service能否使用Storage Account File Share? 问题回答 如果部署的App Service为Linux环境,可以直接使用Mount stor ...

  2. mysql-对应删除 dict 脚本

    -- 1. 此 dict 是在不同租户下的数据字典,查询时需要根据 departid 进行分类查询 -- 2. 删除dict, dict分类主表类型与挂载的子表数据 -- 3. 通过查询到的主表的 g ...

  3. BeanShell Sampler 前置处理器

    一概念: 前置处理器主要作用: 用于修改即将发送的http的请求数据 BeanShell预处理器可以在取样器发送请求之前被执行,可以通过它完成发送请求所需的数据 其中的ctx.vars.props.p ...

  4. Java 多态 案列

    1 package com.bytezreo.duotai; 2 3 //多态性的使用 举例一 4 public class AnimalTest 5 { 6 public static void m ...

  5. [学习笔记].Net5项目打包到Linux系统服务时遇到的坑

    ​如果按照官方文档的步骤手动安装.Net5 会有一个坑: 在 Linux 上手动安装 .NET - .NET | Microsoft Docs 在使用systemd打包.Net5服务的时候,无法运行, ...

  6. husky 7.0.4 git hooks 前端 commit 钩子 git转svn [已解决]

    husky 7 的安装,注意下版本 第一步 安装 cnpm install husky@7.0.4 --save-dev 第二步 在package.json script加入 "prepar ...

  7. stm32 文件系统数据读写源码解析

    一 概念 fatfs文件系统在文件读写中不可或却.熟悉和深入理解是一个不可或缺的前提. 这里面需要先明确几个概念:文件open的属性,这个非常重要.可以并列使用. 二  源码解析 A  写入数据: i ...

  8. 5分钟上手Python爬虫:从干饭开始,轻松掌握技巧

    很多人都听说过爬虫,我也不例外.曾看到别人编写的爬虫代码,虽然没有深入研究,但感觉非常强大.因此,今天我决定从零开始,花费仅5分钟学习入门爬虫技术,以后只需轻轻一爬就能查看所有感兴趣的网站内容.广告? ...

  9. 【STM32 F4 HAL】记录一个比较玄学的pwm输出问题

    事情是这样的: 最近在做平衡小车,硬件电路都搭好了,试着驱动了下有刷电机,发现两个都动不了,就以为是电路的问题,后面又重新检查了一遍,问题就进化成了只有一个电机在转. 因为之前看过一个学长的博客说可能 ...

  10. 鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)

    一.GridRow/GridCol 1.概述 栅格布局是一种通用的辅助定位工具,可以帮助开发人员解决多尺寸多设备的动态布局问题.通过将页面划分为等宽的列数和行数,栅格布局提供了可循的规律性结构,方便开 ...