欢迎扫码关注一下公众号,Sonic初体验系列文章公众号也同步发布!

前言
本文以钉钉签到为例,详细说明如何使用Sonic1.3.0-release来进行云测UI自动化(多平台(Android&iOS)并行、定时执行测试任务),在正式编写测试流程前,我们首先要了解什么是UI自动化测试,以及一般的UI自动化测试的组织结构。
什么是UI自动化测试
定义:即通过模拟手动操作用户UI界面的方式,以代码方式实现自动操作和验证的一种自动化测试手段。
人话:将用例翻译成脚本,让脚本模拟人工操作进行测试,所以用例没有覆盖到的,UI自动化测试也不可能覆盖到。
UI自动化项目组织结构
自底而上的组织结构如下:最小单位是控件库中的单个控件元素,往上叠加一直到测试套件,明白了基本结构后,我们就可以拆解钉钉签到流程。

钉钉签到流程
签到整体流程如下,但是Sonic1.3.0-release目前还未开放断言和条件语句,本文按照虚线框内的流程构建UI自动化测试流程。

新增项目
登录系统后,点击新增项目,填写项目信息,如下图:


项目设置
新增模块
在进入项目后,按照导航路径进入模块管理,进行项目的配置
导航:相关设置-->模块管理
规范:模块名称,我们统一使用module_中文模块名
的结构命名


新增版本
根据待测App版本号,新增我们测试流程的版本,如下图。这边好评iOS版钉钉的[语义化版本号](https://semver.org/lang/zh-CN/),非常规范
。

新增控件
注意:本节是在远控面板进行添加控件,而非测试数据管理-->控件元素中添加控件
在新增控件前,先明确下控件的命名规范
- 整体规则:
- 控件名:控件类型的英文缩写-控件的平台类型-控件的具体含义名称
- 【必须】控件类型的英文缩写主要用来分配动作
- 【可选】控件的平台类型:Android使用
a
,iOS使用i
,因为目前的Sonic1.3.0-release的版本Android和iOS控件是混在一起的,添加控件的平台类型是为了区分
- 【必须】控件具体含义名称是为了可读性
- 使用如上规范,下表列举了常用控件类型
| 控件类型 | 控件类型的英文缩写 | 控件的平台类型 | 控件含义 | 整体控件名 |
| --- | --- | --- | --- | --- |
| 输入框 | input | Android | 手机号码输入框 | input-a-请输入手机号码 |
| 文本 | txt | Android | 手机号码输入框的placeholder | txt-a-请输入手机号码 |
| 图片 | img | Android | 登录页面头像 | img-a-头像 |
| 按钮 | btn | iOS | 确定按钮 | btn-i-确定 |
| 提示框 | msgbox | iOS | 提交信息的提示框 | msgbox-i-提交信息 |
| 复选框 | chkbox | iOS | 同意隐私政策 | chkbox-i-同意隐私政策 |
| 吐司提示 | toast | Android | 登录成功后的吐司提示 | toast-a-登录成功 |
Android控件
导航:设备中心-->安卓设备-->控件元素
注意:只有在驱动初始化完成后,才能点击获取控件

获取控件路径
在Sonic1.3.0-release获取到控件树后,再点击我们需要的页面控件:手机号码输入框,Sonic1.3.0-release随即在最右侧获取了对应的控件路径,包括相对的和绝对的,这个功能非常奈斯,对新手非常友好,我们这里使用resource-id定位,只要鼠标点击2号红色框,控件路径即复制到剪切板,笔者真的要感动到哭,这个小小的功能,UX体验好到爆啊,终于不用再繁琐的去复制了。
填写控件路径
按照前文的命名规范,手机号码输入框控件元素信息填写如下,其中定位类型是根据你选择的控件元素值来决定的

按照以上方式把测试流程中所需要的控件全部添加到控件库中,完成后如下图,iOS同理,一样的操作复刻一下即可

总结下来的步骤
- 点击要选取的页面控件
- 控件路径进行复制
- 点击添加控件按钮
- 按照规范填写控件路径相关信息
新增全局参数
日常我们在新增控件,编写测试流程中就会发现,某些输入值可以提取成全局参数,其中在钉钉签到流程中可提取的就是手机号码和密码,按照导航路径进入对应页面,完成全局参数的添加,之后我们可以在步骤中按照这个形式{{全局参数名}}
来调用。

新增测试用例
在我们完成添加控件元素后,我们即可以给控件赋予一定的动作,让其成为步骤,多个步骤组织一个流程形成一个测试用例,所以首先我们得先新增测试用例,如下图:

新增完用例后,点击用例名称进入用例详情页来添加步骤


新增步骤
按照流程图中来编排步骤,首先是输入账号密码登录钉钉,我们可以先点击输入框,清空手机号码输入框内容,再输入值,然后再输入密码,勾选协议,点击登录按钮,完成登录流程,其余流程复刻一下即可,必要的步骤间可以添加延时等待。




以上便是登录手机号输入的步骤流程,具体如下图,其余流程复刻即可。

所有步骤完成添加后如下图,由于目前版本没有条件语句,最后的断言使用点击动作替代:

执行结果


测试用例的新增也可从左侧导航进入后进行新增,本文不再赘述。

新增测试套件
- 套件名称:给一个用意义的测试套件名称
- 平台:iOS & Android
- 覆盖类型:挑选设备
- 关联设备:挑选设备
- 关联用例:挑选用例

配置完成后,如下图,点击Run即可执行测试。

新增定时任务
不熟悉Cron表达式的,可查看下图中的文档

例如定时为每周一周五、上午8点签到、下午5.40签退,如下图:

查看执行报告
进入栏目后,展示了该项目下所有的执行报告,这点对于Ranorex Studio这种单机测试工具来说真是降维打击,Ranorex Studio报告太难统一保存了。

报告详情
报告样式美观的,既有概览信息,也有执行结果状态分布图,同时也有步骤级别的执行日志,和Ranorex Studio的执行报告有的一拼,比Allure简洁很多。

异常截图
点击执行失败的定时任务报告,查看定时任务执行报告详情,如下图:

查看具体原因,是最后完成签到后,用于假装断言的字段不一致导致的,修改控件路径即可。

钉钉通知
在新增项目时,我们完成了钉钉通知的配置,所以在执行完成后,机器人会发送执行完成通知,如下图,点击消息卡片,即可查看报告详情:

钉钉签到流程演示视频
002.mov6MB
总结
优势:
Sonic支持Android&iOS双平台、定时、并行测试
对测试人员要求极低,无编码要求
可视化编辑测试流程
不足
测试流程还未支持条件循环语句
未支持自定义脚本(例如:生成假数据之类)
未支持前置和后置
某些控件无法抓取到,虽然可以用坐标和图片识别,但同类产品weditor可以准确抓取到
无法对web端进行测试(我司很多业务需要web端和app端协同测试)
未支持数据库