自动化测试更适合缺陷预防,而不是提高测试效率

2010-03-20  李辅炳 

很多人在回答为什么要开展自动化测试时,立即回想到的答案是提高测试效率。
这种回答本身并没有错,但我想这只是问题的次要方面。在经过数次的自动化测试时间投入与效益比来看,
可以基本得出,基于某个场景的测试脚本,在没有变更与维护情况下,脚本执行频率大于5-7次才基本能够收回
投入成本,产生自动化效益。基于互联网的产品条件下,一个项目或系统如果包含 > =100个测试场景,事实远超这个数据的N倍,其实很难能够保证在收回自动化效益后,场景业务或数据才变更,通常变更是无法预期的或难以控制。
从技术的手段来保证:
曾经我们大胆试图在技术上创新,尝试如下技术攻关点:
1,能否通过手工用例,自动化生成脚本?
2,业务对象变更自动识别,与脚本自动化维护?
技术点1与2看起来很有挑战,很值得做,曾经为这样的Idea 也热血,与冷静思考过,并开始一步步逼近实现。
但现在可以告诉大家四个字:“得不偿失”,其实上面技术点的本质,是在客观上用技术来代替现实世界中人的主观。
对于技术1,事实上很难能够找到通用的建模方式,来描述用例生成脚本;
对于技术2,   自动化技术是永远落后开发实现技术的发展,任何新的操作对象产生,必须跟进自动化识别技术,但搞自动化一帮人不可能在office意淫明天会有什么新的对象面世。即,真正意义上的做到完全无人职守,脚本自动生成或通过对象嗅探自动维护脚本,几乎是“布尔什维克”主义, 或者可以说实现上述两种技术方法,要先诞生实验室研究或论文阶段,类似于企业或像阿里巴巴,华为这样的大的公司来说,也不会有人站出来说这样做肯定有收益。不过,还是可以参照我的发明专利《http://www.ilib2.com/A-%E7%94%B3%E8%AF%B7%E5%8F%B7~CN200810007645.2.html》,来比较标准与历史对象来发现变更。
 
从流程的手段来保证:通过自动化测试体系中流程来约束变更的发现机制?如果,任何变更的源头来自于需求,
或者业务,他们可以在变更时告诉软件生命周期后期测试环节的QA工程师来维护脚本么?答案也是几乎很难,
 
所以从上述技术与流程两个方面来看,就会涉及到测试效率提高的被动性,当然和重复生成测试数据与
较稳定功能的回归,测试效率还是有提高的,但和刚才提到的测试效率提高的被动性来比,通过自动化测试来提高效率,其局限性就不言而喻了。
 
举例来看:
上个月发布了功能点A, 有2000个case,  这个月发布了功能点B又新增1000个case。
对于QA手工测试来讲,如果没有自动化测试介入的情况下,我们只是测试与后面1000个case相关的功能,如果时间允许的情况下,我们把顶多把A功能其中主要的500case测试一遍,就可以认为尽力测试到放心上线了,但问题恰恰出现在A功能2000减去500后的1500个case中,
但如果我们用了自动化测试角度来看,但我们用了2000个case脚本,我们只要开发功能点B又新增1000个case的脚本,那么我们是可以保证在发布之前,用自动化来check 2000+ 1000=3000case的,
手工测试的发布时间,肯定要早于用了自动化测试的发布时间,但测试的覆盖与范围从1500case增加到3000case
那么最后当然得出结论自动化测试更适合缺陷预防,而不是提高测试效率,希望看完这篇文章的同学,能够和我悟出同样结论与观点,也帮助影响你的主管或身边的同事。
 
 
 
333°/3239 人阅读/10 条评论 发表评论

欧阳辰  2010-03-21

如果是API测试用例,为了考虑未来的复用性,还可以考虑自动化。
如果是界面(GUI) 的自动化测试用例,就需要多多考虑投入产出比。
参考有以前的文章。
http://www.testwo.com/space-227-do-blog-id-64.html


刘俊  2010-03-22

作者说的肯定是针对产品,如果是外包企业,项目多变无法生成方法库,采取敏捷开发方式,需求一天一变,维护脚本复杂,页面元素改动频繁的话,2000个case运行之前得先针对需求变动改一遍脚本,这样的情况下,自动化测试是否还值得去做呢?


魏哲  2010-03-22

刘俊: 作者说的肯定是针对产品,如果是外包企业,项目多变无法生成方法库,采取敏捷开发方式,需求一天一变,维护脚本复杂,页面元素改动频繁的话,2000个case运行之前得先针对需求变
我们一个项目15000 test  case.AT Coverage 60%以上.重点在测试方案


刘俊  2010-03-22

魏哲: 我们一个项目15000 test  case.AT Coverage 60%以上.重点在测试方案
项目如此庞大,开始之前的详细需求设计不会轻易发生变动的吧?


魏哲  2010-03-22

刘俊: 项目如此庞大,开始之前的详细需求设计不会轻易发生变动的吧?
要求严格的process保证.
如果SW Reqs有变更,R&D会把变更的需求放在需求管理工具上,我们现在开发的工具:能直接把需求变更mark在Test Case上,Test case-> Test Script是直接对应,所以维护还好.


刘俊  2010-03-22

魏哲: 要求严格的process保证.
如果SW Reqs有变更,R&D会把变更的需求放在需求管理工具上,我们现在开发的工具:能直接把需求变更mark在Test Case上,Test case-> T
你们需求变更管理很严格,我们这边需求变更有时候是开发与PM口头讨论,测试这边都不知情,并且脚本编写与开发要求同步,就是说开发开始工作的第二天测试就要开始写脚本,而这个时候甚至我们连页面是什么样子都不清楚。根结是否出在管理层?


魏哲  2010-03-22

刘俊: 项目如此庞大,开始之前的详细需求设计不会轻易发生变动的吧?
要求严格的Process保证

R&D会把新的SW Reqs,放在需求管理工具上.
我们开发的工具,可以把变更的需求直接Mark到test case上.
test case->test script为直接对应.所以维护还好.


魏哲  2010-03-22

刘俊: 你们需求变更管理很严格,我们这边需求变更有时候是开发与PM口头讨论,测试这边都不知情,并且脚本编写与开发要求同步,就是说开发开始工作的第二天测试就要开始写脚本,而
搞测试技术,其实也是属于传统的测试方法变革.

需求公司决策层的支持,否则很难推动.


刘俊  2010-03-22

魏哲: 搞测试技术,其实也是属于传统的测试方法变革.

需求公司决策层的支持,否则很难推动.
我们公司是全力支持的,但是感觉还在摸索中,呵呵。所以得向大公司前辈取经


魏哲  2010-03-22

刘俊: 我们公司是全力支持的,但是感觉还在摸索中,呵呵。所以得向大公司前辈取经
大家需要相互交流.


登录 后发表评论