一个自动化测试系统的设计步骤

最近参与了一款自动化测试平台的设计工作,想聊一聊其中一些关键的设计步骤是怎样的,这里以 Android 自动化测试系统做示范。

一个自动化测试系统的设计步骤

1.

当我们开始分析一个自动化系统的构成时,首先应该思考一下,自动化究竟需要解决一个什么样的场景,它是为了解决测试人员写脚本难的问题,还是解决测试效率的问题,又或者是解决复杂场景的问题
只有先搞清楚了这一点,我们才明确设计核心是什么。

举个例子

网易有一款自动化平台叫 AirTest,它重点解决了两类问题:
1)就算不熟悉 python 的人,用了它也能把自动化用例实现出来;
2)因为很多游戏 APP 的控件不是原生的 View 渲染的,必须依赖图像识别技术,或者界面渲染引擎的控件定位技术,这在业务上难度是比较大的,用了它这一切也就不成为问题。
因此,它的设计核心是解决测试人员写脚本难的问题,以及解决复杂场景的问题。

还有个例子

蚂蚁金服开源的 SoloPi 是一款 APP 自动化工具,它重点解决了这两类问题:
1)脚本录制回放功能,解决的是测试人员写脚本难的问题;
2)一机多控,解决的是测试效率的问题;
每一个产品都有自己核心立足点,明确了核心,才知道要怎样去做技术选型。
所以,第一步是确认好,这款自动化产品它的核心解决场景是什么

2.

有了核心,就如同设定好了目标,接下来的具体设计都是围绕目标展开的。
有一些同学在做设计的时候,想做到 Appium 那样支持多语言客户端,获得更广泛的群众基础;或是像 SoloPi 那样支持录制回放功能,还想添加……
这种持续做加法的原则对原型开发并不友好。
原型版本的设计,应该尽可能做减法,让主流程能跑通,再考虑锦上添花的事。
做技术开发往往都知道 “迭代” 这个词,产品很难一口吃成一个大胖子,一开始做得简单,有三个好处:

  • 容易对不明确的技术做调试,确认其可行性;
  • 容易围绕核心去做事,不会迷失在过多的细节中;
  • 开发过程往往会伴随 “重构” 的发生,越是简单的东西,越容易做重构。

3.

核心的功能现在已经基本梳理好了,整个业务流程图这时就应该筹备起来。这里要考虑系统是如何进行工作的,在哪个环节有输入,哪个环节有输出,等等。

拿 SoloPi 举例

录制回放业务中,整个过程分为两部分,一个在录制,把用户操作的过程和设置的参数进行保存,输入的是操作,输出的是数据;另一部分是回放,将得到的数据作为新的输入,传给固定的操作模板去执行
这样整个业务流程的闭环就有了。(关于SoloPi的使用可以参见文章《
[SoloPi] 我的 Soloπ体验尝试,录制回放篇》)

4.

要考虑分工协作的事,将模块进行拆分。
一个产品不管是独立开发还是一群人合作开发,都要将其功能进行合理拆分,尽可能让不同的模块独立化开发,这样不仅可以将任务分解出去,也能让新的模块更好的扩展进来。

拿 AirTest 举例

划分为 IDE 模块,系统支持模块,控件识别模块的话,一组人专门把界面做好,实现 button,代码编辑器等;一组人去支持 Android,iOS,Windows,Web 等系统的连接,控制;一组人做好图像识别,Unity 控件识别。这样就可以同步干活了。

总结一下

设计一款自动化测试系统,首先要确认好核心功能是什么,其次让原型设计做得尽可能简单,再次考虑整个业务流程是如何流转的,抓住几个关键的输入输出点,最后合理将模块进行拆分,进行团队的分工协作。

源自公众号 henryWoo



留言