OpenHarmony开发者论坛

标题: OpenHarmony 一种应用界面UI自动化测试方法 [打印本页]

作者: 深开鸿-孙炼    时间: 2024-8-7 16:44
标题: OpenHarmony 一种应用界面UI自动化测试方法
[md]# 0 前言

随着OpenHarmony版本更新,应用生态繁荣,如何对应用界面进行自动化测试成为一个迫切的问题。一般情况,对应用的界面测试都是通过人工进行,效率低,误判率高,本文将介绍一种通过图片对比进行UI测试的方法,实现UI测试自动化。

设计思路:通过测试工程在基线版本上执行,截屏并保存图片,然后在被测版本上执行并截屏,将基线图片和测试图片进行对比。

# 1 需求

比如,我们要实现一条UI的测试用例,检查一个按钮是否被正确地绘制:

![image.png](https://forums-obs.openharmony.c ... shb7zk6pkk6x6h8.png "image.png")

# 2 实现

## 2.1 使用DevEco创建测试工程

在testability目录下创建页面,命名规则,用例编号除数字外,相同的用例在pages下创建一个同名子目录,每个编号的用例创建一个ets文件,文件名采用大驼峰如下:

![1.png](https://forums-obs.openharmony.c ... jgehjjhwjjju8wx.png "1.png")

## 2.2 创建测试用例目和文件

在test目录下创建用例目录,目录名称和2.1中的页面相同并在后面加Test,用例文件和页面ets文件相同,后缀多了.test,如下图:

![2.png](https://forums-obs.openharmony.c ... lh4h5i6ivnchhcv.png "2.png")

## 2.3 编写页面代码

按用例要求编写页面,创建文本组件,并设置颜色为Blue。

![3.png](https://forums-obs.openharmony.c ... esrw881b77sjcle.png "3.png")

结构名称和文件名相同,组件需要设置id的,使用本文件名加"\_001"按递增使用,避免和别的文件中的id重名。

![4.png](https://forums-obs.openharmony.c ... yvrl44g4v7ss4n8.png "4.png")

## 2.4 编写用例代码

修改类名,注释,测试套名称,用例名称,和测试用例文件及用例文档中对应,修改调用的页面文件路由,和页面路径对应:

![5.png](https://forums-obs.openharmony.c ... iq92qthcidddcqd.png "5.png")

## 2.5 添加页面路由配置

注意:这里的页面是写在ohosTest模块下,不要写到main模块里。

![6.png](https://forums-obs.openharmony.c ... ouoib3puquqrz59.png "6.png")

# 3 编译运行

## 3.1 编译

因为工程使用了截屏接口,需要系统权限,在SDK的sdk\\12\\toolchains\\lib\\UnsgnedReleasedProfileTemplate.json文件中修改应用级别:"apl":"system\_core", "app-feature":"hos\_system\_app"。

在IDE的file -> Project Structure 中自动签名:

![8.png](https://forums-obs.openharmony.c ... lo7aju4uouacu5e.png "8.png")

Build-> Rebuild 编译hap。

## 3.2 执行

右键xxxxx.test.ets 文件执行用例,或右键test目录执行全部用例:

![10.png](https://forums-obs.openharmony.c ... 9ouaz9c4fuggqto.png "10.png")

观察设备是否正常显示测试页面,显示了蓝色的文字:

![11.png](https://forums-obs.openharmony.c ... gyygie9e7iy79gc.png "11.png")

检查测试结果:

![12.png](https://forums-obs.openharmony.c ... v53gmhsadypdzeo.png "12.png")

## 3.3 获取截屏图片

![13.png](https://forums-obs.openharmony.c ... jxhas86gv929i32.png "13.png")

打开截屏图片看是否显示为正确的蓝色文字。

![15.png](https://forums-obs.openharmony.c ... 25j6h8282u286mu.png "15.png")

# 4 对比图片

使用uicompare\_tools目录下的python对比工具脚本。

使用对比脚本前需要安装python环境,安装依赖包:需安装三个包:openpyxl、numpy、pillow。

hdc配置到系统环境变量。

## 4.1 将编译好的测试HAP 复制到 对比工具的 hap目录下

![17.png](https://forums-obs.openharmony.c ... bwu31az6pb2u336.png "17.png")

## 4.2 在对比工具excel表格中添加用例

excel文件名和hap名必须相同,一个excel对应一个hap。

![18.png](https://forums-obs.openharmony.c ... jpj4rr4rk4outj8.png "18.png")

![19.png](https://forums-obs.openharmony.c ... oveepv6rpvo9mez.png "19.png")

## 4.3 生成基线图片

![20.png](https://forums-obs.openharmony.c ... 0sdos53od05wxwc.png "20.png")

![21.png](https://forums-obs.openharmony.c ... igiq3gcm223v5gy.png "21.png")

## 4.4 对比测试

指定基线图片目录和上中路径一致

![22.png](https://forums-obs.openharmony.c ... pd9b9dx9h8nykki.png "22.png")

测试显示用例执行通过:

![23.png](https://forums-obs.openharmony.c ... ow18s9zdwsgazwh.png "23.png")

## 4.5 测试报告

![24.png](https://forums-obs.openharmony.c ... 3226g3shdr92y93.png "24.png")

![25.png](https://forums-obs.openharmony.c ... y7huhm4wzdsyep6.png "25.png")

# 5 总结

本测试方法全套工程及样例代码已上传到集成测试仓:[UI对比测试](https://gitee.com/openharmony-si ... function/ui_compare "UI对比测试")。 大家可以根据需要下载使用,也欢迎开发者进行优化共建。
[/md]
作者: rainbow    时间: 2024-8-15 17:12
学习学习




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5