这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

我看“阿里巴巴测试难题”——1

上一篇 / 下一篇  2008-06-18 09:26:20

今天看到了梁兄在博客里发的《阿里巴巴测试难题》博文,非常有代表性,很多是目前测试领域普遍存在的难题。趁着刚上班,还有点空闲,节选其中几道题,简单谈谈我的看法。

(一) 功能测试

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应用中的测试数据管理工具,它提供数据拷贝、构造子集、数据转换、数据编辑、数据浏览、数据生成、数据比较、数据迁移等功能。

我也没有用过,听起来好像很吸引人。具体使用效果还要各位确认。

先说这么多,等有空了再继续写。欢迎梁兄,还有各位朋友批评指正。


TAG:

燃灯斋 引用 删除 zengyixun   /   2008-10-22 10:53:08
所以,对于“ 数据准备 如:不同类型账号生成,像生成10中供新单账号, 10个中供服务中账号等等,批量生成而不需要手工完成,否则效率慢了。”这个问题的解决,我的看法是:
以数据文件作为自动化的接口文件,一次设计重复应用(这就可以用工具了),不断维护修改与配置!
燃灯斋 引用 删除 zengyixun   /   2008-10-22 10:48:34
专业的大数据量生成工具,又如何生成具有工程方法(等介类/边界值/正交)而设计出的各种数据呢?这样的数据生成了,对功能测试而言,有何意义?你还不是要按工程方法的数据再全部跑一次。
燃灯斋 引用 删除 zengyixun   /   2008-10-22 10:46:12
专业的大数据量生成工具,如何能适应你们自身系统所具有的数据业务的流程的,数据的前后连贯性呢?这种工具,只能是对简单数据的生成,更多是为了性能测试吧,再更多就是打广告打过头了,要是有了这种工具就能成生正确数据与数据的业务流,那我们就用这个工具,加做一个简单漂亮的客户端,然后随便设计一个数据库,岂不是就能做一个适应于全世界任何业务的应该软件了,这个工具不就天下无敌了,所有应用软件商都要关门大吉了!
燃灯斋 引用 删除 zengyixun   /   2008-10-22 10:39:58
使用SQL语句或者存储过程,自主开发数据生成工具,如此,你只能保证你的数据能正常的进行数据库,你如何保证按测试方法设计出的各种数据,能适应数据库之前的前端检查,中间层检查,与服务器的检查?难道又手工把这些数据跑一遍?
你用SQL的这种方法只能适用于,为了一个难点的非自动化的测试,只能动用手工测试时,我们为了节省时间,才用SQL导入数据,只奔我的测试主题,这可不是为了要做什么自动化测试,更不是功能自动化测试,所应该有的态度与方法!
燃灯斋 引用 删除 zengyixun   /   2008-10-22 10:34:38
测试数据不应该是你的工具添加出来的,有意义的大批量数据,只能是你动用工程方法设计出来,作为工具的输入接口,进而添加到系统中的,想用工具来解决大量数据的问题,就只会造成数据虽然大量,却没有意义的情况产生,这种无意义的自动化,不是又把效率拉下去了么!
燃灯斋 引用 删除 zengyixun   /   2008-10-22 10:30:36
你所谓的产生大批量数量的方法,定然是简单的,通常意义也不是太大,真要自动化起来,应该是各组件业务的组合,然后数据也要组合,要形成业务流程的数据流,而且是大批量业务数据的流程,且要让数据具有工程测试方法之意义,只能用工程方法在你的自动化数据接口文件中设计各种数据,才行,这样做才有意义,否则就成了为了自动化而自动化了,没什么意思,只能用来骗骗不懂的领导,长长自己虚假的威风而已!
最后一公里 引用 删除 rcpp   /   2008-06-18 17:05:45
使用winrunner做大批量数据速度是很慢的;倒是loadrunner这种协议方式速度很可观,但是license也是个心病,呵呵,如果只是用vugen运行未免又嫌单线程了;贪心不足啊。其实随便找个http发包工具,要方便的话有个简单的协议录制功能就行,就可以做了。
阿里巴巴一个测试架构师 引用 删除 liangjz   /   2008-06-18 15:57:59
huior速度很快,
我们针对部分问题有一些 工具解决,但还是希望在原有基础上再提升效率
huior的测试烩 引用 删除 huior   /   2008-06-18 11:18:14
呵呵,可以考虑,不过文字太大好像整体看上去不太美观。可否考虑把浏览器中的“文字大小”设置改为“较大”或者“最大”?
sunny的测试生活 引用 删除 测霸   /   2008-06-18 10:01:13
建议博主装点一下空间,起码把字体弄大一些,看起来比较费劲~搞软件的一般都是近视吧~

不过篇篇精彩~
 

评分:0

我来说两句

Open Toolbar