今天看到了梁兄在博客里发的《阿里巴巴测试难题》博文,非常有代表性,很多是目前测试领域普遍存在的难题。趁着刚上班,还有点空闲,节选其中几道题,简单谈谈我的看法。
(一) 功能测试
1 测试环境搭建时编译抛出错误,快速判断是否系代码问题
几年以前我做测试具体工作的时候,这个问题也经常遇到。我的看法是这样,既然测试组已经开始搭建测试环境,此时开发组交付的软件一般情况下应该是能够正常编译并生成可执行文件的,也就是说,我认为这个时候代码存在问题的几率比较小,但并不是说没有。我以前做的主要是c/c++开发的c/s应用,也做过.net平台上使用c#开发的b/s应用,在搭建测试环境时遇到的问题通常有以下几种:
X 头文件路径问题
开发组在编写代码时,已经把所有的头文件的正确路径添加到了project settings里,所以他们那边编译没问题,测试组刚开始可能不清楚,对头文件的路径没有添加或者添加不全,导致编译器“找不到头文件”的错误。一般表现形式为“No Such file or directory”。
这种问题解决很简单了,在类似于project settings添加所有的头文件路径即可。
X 代码中使用绝对路径,导致头文件或库找不到
开发不太规范的程序员新手,有时候在代码中使用绝对路径,例如
#include "c:\xxx\include\t.h"
#import "c:\xxx\dll\tt.dll"
测试组在测试机器上搭建环境时,这些文件可能并不在上面提到的绝对路径,此时也会导致compiler提示找不到某个具体文件。
这个问题的解决方法更简单,直接把这些记录到BUG管理库,算作“编程规则违例”。因为这种写法会给以后的发布部署带来很多意外的困难,坚决避免。
× 第三方的控件或者第三方的应用没有安装
现在的网络应用通常是“大集成”,其中用到的很多专业的东东都是外包或者直接购买的,例如水晶报表。测试组搭建环境时,可能对总体的应用还不是特别熟悉,在编译前没有先安装水晶报表的应用或者控件,也会导致编译错误。
暂时想到这么多。总之,在搭建测试环境时遇到这样那样的问题,也不完全是坏事,所谓“塞翁失马,焉知非福”。在解决问题的过程中,测试人员会进一步加深对被测软件的认识,对以后的测试工作也会有一定的指导作用。
4(高优先级) 测试数据准备工具(数据库、搜索引擎、cache等持久化或临时数据)
6 数据准备 如:不同类型账号生成,像生成10中供新单账号, 10个中供服务中账号等等,批量生成而不需要手工完成,否则效率慢了。
10 海量数据查询结果正确性验证
在这方面我能给出的建议比较少。我对搜索引擎的测试了解不多,所以下面的几点还是基于以前我对传统的B/S和C/S的认识,主要是向数据库(SQL Server、Oracle)中添加测试数据,可能不一定完全适合梁兄的测试环境。
× 借助于自动化工具,添加大量测试数据
使用LoadRunner或者WinRunner等自动化工具,模拟用户业务操作,同时并发数百个用户或者单用户自动循环上千次生成相关数据。
这么做的好处是测试工程师不需要特别清楚的知道数据表与表之间的复杂关系等细节内容,就可以“傻瓜”式的、事半功倍的,生成大量有效测试数据。
× 使用SQL语句或者存储过程,自主开发数据生成工具
测试工程师向DBA求助,在完全了解数据库整个结构的基础之上,利用SQL自主开发数据生成工具,也可以利用数据库本身提供的辅助工具来生成。
这么做的难点在于测试工程师要对数据库结构搞得特别清楚,而且还要自己开发应用,起点稍高。
× 使用一些专业的工具帮忙
以前听中国软件评测中心的讲座时了解过,他们有专业的大数据量生成工具,当时提的是TESTBytes,据说只需要确定生成的数据类型,通过与数据库的连接就可以自动生成数百万行的正确的测试数据。
我只是听说过,没有实际用过,具体效果尚不太清楚。但我猜想,即便用专业的工具,测试工程师可能也需要搞清楚数据库的结构,这样生成的数据才会正确,我估计工具还没有那么智能。
另外还有一个工具File-Aid,数据管理工具,看介绍讲,它是一套为帮助开发者、测试人员、质量保证团队更加有效的在开发、测试和支持C/S或者WEB应用中的测试数据管理工具,它提供数据拷贝、构造子集、数据转换、数据编辑、数据浏览、数据生成、数据比较、数据迁移等功能。
我也没有用过,听起来好像很吸引人。具体使用效果还要各位确认。
先说这么多,等有空了再继续写。欢迎梁兄,还有各位朋友批评指正。