1. 最初的想法
现有的工具/平台就不一一列举了,就个人而言,直接用这些工具自然很好,但是其实对自己提高不多,而这些工具的二次开发能力大体还不算太理想,所以为什么想自建测试工具,其实重点以下三样:
- 不能体现技能/KPI 不能足够体现
- 构建简单工具的成本足够低,自身能力足够,可以带来更多灵活性和定制化
- 测试自身技术诉求, 从实践中提高一些代码能力
2. 构思
外面已经很多公司做自动化也好做测试平台,演讲的人很多,但是貌似实际抱怨的也很多.
结合自己的体验抱怨的点主要是:
- 使用自动化/测试平台没有直接提高工作效率,反而增加了工作量
- 使用自动化之后,维护成本高繁琐,又没有减少实际的回归工作量或者其他发现更多的 Bug
- 使用测试平台之后,需要填的数据更多,繁琐而且感觉时刻在被监控进度
很明显,增加额外工作量这个事情其实是抱怨很多,至于监控这方面这个问题不是技术可以解决的问题。
所以在做工具的时候几个要点就是:
- 尽可能减少额外增加的工作量
- 尽可能减少开发成本,利用现有工具进行开发和集成
- 尽可能不涉及监控数据,但是更强调分工,协作方便性
- 开始使用的代码和工具尽可能简单和统一
3. 从减少额外工作量开始
如果想要推广自动化阻力小一点,自己觉得最有可能的方法就是减少额外的工作量.
把自动化测试用例编写结合到现有测试过程中,是自己想尝试的一个方法,其实也没有什么好方法,就是录制和回放功能,那么有什么工具可以支持这样子吗? 现在是一个最简单例子说明一下可能性:
- Python-playwright UI 录制回放
- API 接口拦截路录制回放
3.1 录制例子
下面的是一个设想的例子: 测试->录制操作->记录数据->生成测试代码
- 测试 + 录制
- 运行 playwright 工具,进入到测试环境
- 页面操作会记录成 UI 代码
- 操作过程中进行发送的 API 请求会通过自制 API 录制工具保存到测试平台
- 接口自动化测试
使用自制测试平台工具获取接口自动化测试,选择刚才录制名进行搜索,再生成接口测试用例就可以进行接口测试
- ui 自动化每个场景暂时可以把代码保留,方便后面使用
- 以上步骤其实上额外工作量比较少
- 额外工作量很重要,因为这是成本,而且这个成本 * 人数会放大很多
- 只有额外工作量小了之后,就算接口自动化效果一般也问题不大, 接受度也会高一些,为什么?
因为这些录制的接口自动化,本身成本不高,就是再没用也至少做了一次 ping,跑一次:
A. 制作和跑的成本没太多成本
B. 成本低,就算效果再不好,最好一想有点用吧,至少知道每个 API 通的
C. 但是如果让人自己写接口自动化,就是写一个自动化很简单,但是几百个接口构造数据写好,结果做完发现可能也就是检查一些接口通不通和用这种方式做的简单验证效果可以自己体会
通过这种方式,最终执行的时候其实阻力不大. 因为做的额外事情很少,但是至少这些东西多少都还有点用,并且实现成本及其低,就算不用都不可惜.
4. 构建,实现,实施
从以上的例子说明额外工作量大小的问题,这里面还有一些问题待解决:
- 录制 API 测试覆盖了多少的 API,测试用例是什么呢?
- API 有增加有减少,哪些现在还用,还写现在不用了?
- API 测试覆盖率是什么呢?
- 录制的请求需要花费多少力气才能直接转换呢?是不是工作量也不少呢?
- 录制出来的请求还能不能做来做一部分测试用例的记录呢?
以上这些问题也会增加额外工作量,而这些工作量中
- 关于 API 统计覆盖率计算: 是可以通过测试平台工具解决,不需要人为太多干预
- 录制出来的请求还能做什么: 可以记录一部分测试用例并且流程在平台,减少测试用例整理时间
为了解决以上这些问题,就需要一个后台管理系统来记录这些数据,加工处理这些数据,用 dashboard 来展示这些数据. 不过这些极简的小工具其实做起不算太复杂,这些在之前极简系列中提到不少,使用的技术其实都是简单实用, 就先罗列一些:
4.2 快速构建工具集和实现说明
2024 小结 1: 测试小后台和工具整理
极简测试用例管理 · TesterHome
极简接口回归测试: 录制回放模式 · TesterHome
2023 小结 - 低代码-METABASE,5 分钟让测试从此报表不求人 · TesterHome
4.3 实现代码示例和大部分代码实现
- 一个 JAVA 类实现一个前后端增删改查页面
- 一个 JAVA 类实现树形展示
4.4 GITHUB 代码仓库
以上内容如果代码如果觉得还挺好的欢迎 star 一下,上面这些代码目的不是为了提供一个测试平台,更多的是进行积累而方便做不同的测试开发工具.
最后如果对于以上工具感兴趣可以 clone 代码,或者欢迎加入知识星球一起说说如何快速构建测试开发工具,这个知识星球主要的内容是提供日常实用的工具,开发包,测试开发方法和教程,如果有需要也可以提供日常英语书面和口语交流,这些都不是问题,这里面会有不少你可能以前从来没有听说的工具和内容,就比如说这个文章中提到的一些,也可能会有一些和主流不太一样的想法. 感兴趣欢迎加入或者私信咨询,知无不言哈:
↙↙↙阅读原文可查看相关链接,并与作者交流