正好最近松勤软件测试程老师参与了一款自动化测试平台的设计工作想跟大家分享其中一些关键的设计步骤是怎样的这里以 Android 自动化测试系统做示范希望给你们一些启发。
1.当我们开始分析一个自动化系统的构成时首先应该思考一下自动化究竟需要解决一个什么样的场景它是为了解决测试人员写脚本难的问题还是解决测试效率的问题又或者是解决复杂场景的问题
只有先搞清楚了这一点我们才明确设计核心是什么。
举个例子
网易有一款自动化平台叫 AirTest它重点解决了两类问题1)就算不熟悉 python 的人用了它也能把自动化用例实现出来2)因为很多游戏 APP 的控件不是原生的 View 渲染的必须依赖图像识别技术或者界面渲染引擎的控件定位技术这在业务上难度是比较大的用了它这一切也就不成为问题。因此它的设计核心是解决测试人员写脚本难的问题以及解决复杂场景的问题。
还有个例子
蚂蚁金服开源的 SoloPi 是一款 APP 自动化工具它重点解决了这两类问题1)脚本录制回放功能解决的是测试人员写脚本难的问题2)一机多控解决的是测试效率的问题每一个产品都有自己核心立足点明确了核心才知道要怎样去做技术选型。所以第一步是确认好这款自动化产品它的核心解决场景是什么。
2.有了核心就如同设定好了目标接下来的具体设计都是围绕目标展开的。
有一些同学在做设计的时候想做到 Appium 那样支持多语言客户端获得更广泛的群众基础或是像 SoloPi 那样支持录制回放功能还想添加……这种持续做加法的原则对原型开发并不友好。
原型版本的设计应该尽可能做减法让主流程能跑通再考虑锦上添花的事。做技术开发往往都知道 “迭代” 这个词产品很难一口吃成一个大胖子一开始做得简单有三个好处
- 容易对不明确的技术做调试确认其可行性
- 容易围绕核心去做事不会迷失在过多的细节中
- 开发过程往往会伴随 “重构” 的发生越是简单的东西越容易做重构。
3.核心的功能现在已经基本梳理好了整个业务流程图这时就应该筹备起来。这里要考虑系统是如何进行工作的在哪个环节有输入哪个环节有输出等等。
拿 SoloPi 举例
录制回放业务中整个过程分为两部分一个在录制把用户操作的过程和设置的参数进行保存输入的是操作输出的是数据另一部分是回放将得到的数据作为新的输入传给固定的操作模板去执行这样整个业务流程的闭环就有了。
4.要考虑分工协作的事将模块进行拆分。
一个产品不管是独立开发还是一群人合作开发都要将其功能进行合理拆分尽可能让不同的模块独立化开发这样不仅可以将任务分解出去也能让新的模块更好的扩展进来。
拿 AirTest 举例
划分为 IDE 模块系统支持模块控件识别模块的话一组人专门把界面做好实现 button代码编辑器等一组人去支持 AndroidiOSWindowsWeb 等系统的连接控制一组人做好图像识别Unity 控件识别。这样就可以同步干活了。
总结一下
设计一款自动化测试系统首先要确认好核心功能是什么其次让原型设计做得尽可能简单再次考虑整个业务流程是如何流转的抓住几个关键的输入输出点最后合理将模块进行拆分进行团队的分工协作。