自动化测试框架有分为数据驱动、业务逻辑、测试分数据分离(分层),但大部分人还是趋向于基于UI的解决方案:

 

§ 运行不稳定:session超时、元素找不到、易受外部因素干扰等,容易造成误报;

§ 维护成本高,特别是界面频繁变动,需求迭代快导致自动化得不偿失,可借鉴投入产出比公式,满足收回成本的条件:(手工运行时间 -自动化运行时间)*执行次数 > 开发脚本的时间;

§ 脚本的运行效率低;

§ 定位问题粒度大,只停留于表象。

§ UI层:效费比最低,按优先级和重要程度,把主流程覆盖即可,数据隔离,无需校验,解决方案有图像对比技术等,例如:sikuli

§ Web层:截取未渲染前的响应内容,对其内容设置检查点校验,解决方案有httpclientController发送模拟请求,截取response

§ Data层:可单独调用存储过程、package进行校验,也可耦合Web层模拟操作后进行校验;

§ 接口层:可参考Web层的方案,也可用市场上的开源工具;

§ 当然,还有业务层,该层属于白盒测试范畴。

优点在哪里呢

§ UI层以目前的技术无法脱离人工测试介入,其他层是完全能自动化的;

§ 越是底层,覆盖率越高,测试效费比越高;

§ 越是底层,执行效率越高;

§ 定位问题的粒度更细。

UI占主导的原因无非就是:

§ UI自动化说的人最多,入门最简单,扯淡或者不扯淡的人都在扯,自然大部分人就觉得UI占主导,甚至很多测试觉得自动化就是UI自动化

§ 大部分公司的测试为了有KPI,那么只能从UI自动化入手,原因见第一条

§ UI自动化是最直观的,往往很多公司的老板也只能看得懂这一层的东西

§ 圈子限制了个人的视野,原因见第一条

结论就是并非UI占了主导,只不过你所在的圈子让你觉得占了主导

 

§ 单测:

大部分公司没有强制要求去做;

开发自己的需求都得加班加点,理所当然排斥;

大部分开发基本没从事过类似工作,也不知道该怎么做;(主要还是责任心)

§ UI自动化本身:

入门简单;

执行过程与结果脱离代码层容易理解,与其它层数据结果形成对比;

模拟操作毕竟对于上层比较新奇,且能看到具体的执行过程;

§ 方向问题:

认为所有的验证能都应该在UI自动化中完成,包含数据验证,殊不知UI其实是路径最多的,逻辑最复杂的,条件最苛刻的;

保留着黑盒测试的思路:认为测试应该非侵入式的去做;

急功近利,不愿意使用线上开发平台,而更愿意投入人力自己造轮子,便于出绩效。