自动化测试是不是能达到90%的覆盖率?
简单的说,理论上可以。实际上不可能。
在网上看了不少关于测试自动化的文章, 大多是“高屋建瓴”,或者是互相转述。就像写程序,写的越抽象的顶层父类越不容易出错,都是指导性方向性的话,轻易是找不出什么破绽的,也不容易被驳倒。
本人喜欢钻研技术,奉行实用主义,对于遇到的问题常常持否定态度,不会从战略性高度看问题,因为往往技术上的一个小小细节可以否定一整套方案。在考量一个方案是否可行时,首先就是相关的技术细节是否走得通。如果逻辑上都走不通,那也不必费力气去搞下一步了。
对于自动化测试是不是能达到90%的问题想说说自己的体会。
按照实用主义的逻辑我列举几个实践中遇到的困难。
1。眼下的开源工具层出不穷,测web,gui的,unit test的。几乎覆盖了测试的所有方面。那是不是这些工具加在一起,就等于是一个完整解决方案了呢?
拿web测试工具来说,selenium,httpunit,htmlunit,watij。这几个工具,有的是依赖浏览器,有的是不依赖浏览器的,各有长处。
3。有人说我们拿自动化测试工具去发现bug。
这句话要分两面看,如果是用来做回归测试的话,去发现原有功能不应该出现的问题,这是自动化测试工具擅长的,可以为产品提供信心保证。工具只会做人们告诉它要做的事情,要它主动去找bug,这个说不通。
这样说来,测试自动化的前景并不是很乐观。未必,只要认清误区,降低期望值,缩小并专注于一定范围,自动化还是会起到应有的作用。
简单的说,理论上可以。实际上不可能。
在网上看了不少关于测试自动化的文章, 大多是“高屋建瓴”,或者是互相转述。就像写程序,写的越抽象的顶层父类越不容易出错,都是指导性方向性的话,轻易是找不出什么破绽的,也不容易被驳倒。
本人喜欢钻研技术,奉行实用主义,对于遇到的问题常常持否定态度,不会从战略性高度看问题,因为往往技术上的一个小小细节可以否定一整套方案。在考量一个方案是否可行时,首先就是相关的技术细节是否走得通。如果逻辑上都走不通,那也不必费力气去搞下一步了。
对于自动化测试是不是能达到90%的问题想说说自己的体会。
按照实用主义的逻辑我列举几个实践中遇到的困难。
1。眼下的开源工具层出不穷,测web,gui的,unit test的。几乎覆盖了测试的所有方面。那是不是这些工具加在一起,就等于是一个完整解决方案了呢?
拿web测试工具来说,selenium,httpunit,htmlunit,watij。这几个工具,有的是依赖浏览器,有的是不依赖浏览器的,各有长处。
- 困难一,难识别。IE的容错性太好了,对不规范的HTML代码一样可以正确解析,被测试的产品肉眼看上去没有问题,看看HTML代码真是糟糕。设计再好的工具,对这方面还是要有些要求的。虽然有Xpath,那样的代码真是难以读懂。
- 困难二,页面上元素属性经常被随意改动。开发随心所欲,因为只要在浏览器里看起来正常,最终用户是不会在乎某个字段实际的名称是什么的。这样写好的测试代码受到的影响非常大,要花额外的功夫去维护。这个成本在项目开始之初是需要考虑进去的。
- 困难三,难写。这是专门指除selenium外的几个工具,都要求有基本的java基础。这其中htmlunit为最甚,每次点击输入都要指定返回的类型,每次去抓不规范的URL,都要从数组里搜一遍。不熟悉的话,五个页面的操作,估计要写上一天时间。这一点watij相对较好,java包装的IE的api,抓页面上的对象,语法都比较简单,但不能跨平台。
3。有人说我们拿自动化测试工具去发现bug。
这句话要分两面看,如果是用来做回归测试的话,去发现原有功能不应该出现的问题,这是自动化测试工具擅长的,可以为产品提供信心保证。工具只会做人们告诉它要做的事情,要它主动去找bug,这个说不通。
这样说来,测试自动化的前景并不是很乐观。未必,只要认清误区,降低期望值,缩小并专注于一定范围,自动化还是会起到应有的作用。