这篇文章主要讲述了微信小程序脚本自动化测试方案,包括方案产生的初衷,选型 Minium 的原因,分阶段目标,架构设计(底层服务层、页面功能 Case、流程测试),数据 Mock 方式及流程,最后提到结合工具提升效率,实现配置化测试等。
一段痛苦的日子
从开始负责小程序开始,基本每两周发一次版本,并且是在10点半后开始发版。经常遇到的场景是等到10点,以为测试的差不多了,没有什么问题。
啪啪,打脸来的太快,总会发现一些问题,或是本次迭代导致的,或是之前遗留的,怎么办总不能带着问题上线吧。
“改”,此时回家又变成了“不是在此时 不知在何时”!
这就是我想要去做小程序自动化测试的初衷,通过自动化的方式大幅提升测试效率,尤其是回归测试的效率,提高测试覆盖率,避免漏测。
自动化测试方案选型
这里再补充三条为什么要使用脚本自动化测试的方案,而不是其他方案,毕竟脚本自动化测试还需要编码。
这样考虑是基于我们的项目特点:
-
需求变动不频繁
我们的项目是类app的小程序,页面和功能很多,对单个功能来说需求变动不频繁,这样测试脚本不用频繁变更。
-
项目周期足够长
长期和app需求同步开发,项目周期足够长,这样测试脚本也就可以一点点丰富。
-
对每个迭代来说,测试脚本可以重复利用。
目标
那么做到什么程度,才能解决上边提到的痛点了(对,痛点就是要能早回家😜)。
想象下最合理的脚本自动化测试应该是什么样的?
针对某个功能的测试,可能的操作需要经过多个页面、多个按钮、多块功能,到最后需要验证最终结果是否和预期一致。
流程类似这样:
我希望我们的测试或研发只需要编写一个配置文件,录入需要走的页面,点击的按钮或页面操作,最终需要校验的内容,上传运行配置,就可以做到一个特定流程的自动化测试。
最终一些配置也可以固化下来,因为很多功能不常变,每次回归不但测试脚本可以复用,甚至配置也可以复用。
一口气吃个胖子是不现实的,我们把愿景分为了三个阶段目标:
-
跑通主流程测试,验证技术方案
目的:对于不常变的功能,做到脚本自动化测试
-
搭建Mock系统,基于Mock进行测试
特定的场景需要特定的数据,基于mock可以做接口容灾,功能一致性测试(固定的数据对应固定的展示)。
-
测试用例支持配置化
主要目的:可通过配置,无代码完成测试用例执行
架构设计
除了最下边的依赖层外,整个方案包含三层:
一、底层服务层
包含路由跳转、utils、mock等底层服务,还有常用的底层业务功能,例如登录、定位等。
二、页面功能Case
这一层主要是针对每个页面的基本操作和校验,例如在搜索页通过测试脚本点击搜索按钮、点击搜索历史、自动输入搜索词、校验搜索内容展示等功能。可以说这一层是把页面可继续的操作通过脚本方案暴漏出来。
以搜索页为例,会提供如下方法:
'''
@Author : TesterRoad
@Time : 2024/12
@Desc : 公众号:测试工程师成长之路
@Software: PyCharm
'''
# 选中搜索输入框
def search_focus(self):
# 打印过程
process_print('选中搜索输入框')
search_input = self.get_el