黑盒的测试框架,有基于 UI 的测试框架,也有基于分层的测试框架,本人倾向于分层,但在面试过程中或与他人交谈中,或嗤之以鼻,大部分人还是倾向于 Seleniu2、Appium 等基于纯 UI 的解决方案,目前市场上主流的也是如此。
但是在实际使用中,相信大家都遇到过以下问题
- 运行不稳定:session 超时、元素找不到、易受外部因素干扰等,容易造成误报;
- 维护成本高,特别是界面频繁变动,需求迭代快导致自动化得不偿失,可借鉴投入产出比公式,满足收回成本的条件:(手工运行时间 -自动化运行时间)* 执行次数 > 开发脚本的时间;
- 脚本的运行效率低;
- 定位问题粒度大,只停留于表象。
之前看过阿里一篇关于分层测试的文章,给了我启发,也是对该解决方案的忠实拥护者,自己还写了套分层测试的框架,分层原理大致如此
- UI 层:效费比最低,按优先级和重要程度,把主流程覆盖即可,数据隔离,无需校验,解决方案有图像对比技术等,例如:sikuli
- Web 层:截取未渲染前的响应内容,对其内容设置检查点校验,解决方案有 httpclient 向 Controller 发送模拟请求,截取 response
- Data 层:可单独调用存储过程、package 进行校验,也可耦合 Web 层模拟操作后进行校验;
- 接口层:可参考 Web 层的方案,也可用市场上的开源工具;
- 当然,还有业务层,该层属于白盒测试范畴。
优点在哪里呢
- UI 层以目前的技术无法脱离人工测试介入,其他层是完全能自动化的;
- 越是底层,覆盖率越高,测试效费比越高;
- 越是底层,执行效率越高;
- 定位问题的粒度更细。
那么问题来了,既然如此,为什么现在占主导的还是 UI 自动化,分层测试效果好,为什么实践的人少,甚至有抵触呢?是否有更好的解决方案呢?希望大牛能指点迷津,也希望大家提出见解
↙↙↙阅读原文可查看相关链接,并与作者交流