作者简介
Felix,携程高级测试经理,关注无线测试、DevOps、测试框架方面的技术和动态。
从自动化测试诞生以来,始终阻碍其成功落地实施的重要因素之一是频繁变更的业务需求,导致自动化测试维护成本极其高昂。尤其是随着近些年敏捷开发,DevOps开发模式的流行,一方面迫切地希望在开发生命周期内提高自动化测试的占比,从而缩短测试时间,增加开发迭代次数来加快开发进度和保证开发质量。而另一方面,随着迭代开发频率加快,需求的频繁变更却进一步加剧了维护自动化测试稳定性的难度。这两者不可调和的矛盾往往导致了自动化测试实施的难以为继,很多时候自动化测试成为了鸡肋,食之无味,弃之可惜。
那么如何减少需求变更对UI自动化测试的影响,如何另辟蹊径顺利地进行UI自动化测试?本文后续一一为你解答。
一、自动化测试不是银弹
“自动化测试不是银弹” 这个观点已经得到业界的普遍认同,那么为何业界还是如此推崇自动化测试呢?测试完全的自动化固然不太可能,但在合适场景使用合理的自动化测试,却依然可以发挥出巨大的作用,得到较高的收益。
对于UI自动化测试而言,业务频繁变更导致的UI变化是UI自动化测试失败的主要原因。如果我们能尽可能地消除UI变化对自动化测试的影响,则势必会极大地提高自动化测试的稳定性。
梳理下一条UI自动化测试用例的结构,我们可以简单地归纳出如下图所示的关系:
自动化测试用例结构简化图
UI界面中控件的变化无疑是很频繁的,给自动化测试的实施带来很大的障碍。如果能切断业务操作和结果断言对于控件的依赖,则可以很大程度地提高自动化测试的稳定性。而随着图像识别技术的进步,通过图像识别技术摆脱对控件的依赖正逐渐成为可能。
二、视觉测试
UI自动化测试在验证预期结果是否正确时,通常是通过验证预期结果某些关键信息来实现的,比如是否出现某个关键字,是否标题正确等等。这种验证方式固然简单,却也存在不少的不足,其中最大的不足就是无法验证UI的样式。
UI是最终呈现在用户面前直观的东西,UI交互和样式的好坏直接决定了用户对一款产品的直观印象。视觉测试是验证UI是否正确展示给用户的测试手段之一,通过视觉测试可以找出产品在可视化中存在哪些缺陷,比如字体,布局等问题。那么如何实施视觉测试呢,业界最普遍的做法就是图像比对,具体实施步骤网上相关的资料不少,这里就不赘述了。
三、Watcher
Watcher是一个基于图像比对的App和Web视觉测试平台, 主要分为三个部分:SDK,图像比对服务,Watcher比对平台。
Watcher SDK主要用于与自动化测试框架(如Selenium,Appnium , Airtest)结合来实现与Watcher比对平台的交互(比如图片上传,客户端信息收集,验证结果返回等等)。Watcher比对平台则主要进行图像管理,测试配置管理