福田街道计生办:测试工具汇总

来源:百度文库 编辑:偶看新闻 时间:2024/07/08 20:03:42

1、从测试功能上分
(1) 单元测试
针对不同语言,如JUNIT
(2) 功级测试
E—Test:功能强大,由于不是采用POST URL的方式回放脚本,所以可以支持多内码的测试数据(当然要程序支持),基本上可以应付大部分的WEB SITE。
MI公司的WINRUNNER
COMPUWARE的QARUN
RATIONAL的SQA ROBOT
(3) 压力测试
MI公司的WINLOAD
COMPUWARE的QALOAD
RATIONAL的SQA LOAD
(4) 负载测试
LOADRUNNER
RATIONAL VISUAL QUANTIFY
(5) WEB测试工具
MI公司的ASTRA系列
RSW公司的E—TEST SUITE等
(6) WEB系统测试工具
WORKBENCH
WEB APPLICATION STRESS TOOL(WAS)
(7) 数据库测试工具
TESTBYTES
(8) 回归测试工具
RATIONAL TEAM TEST
WINRUNNER
(9) 嵌入式测试工具
ATTOLTESTWARE。是ATTOLTESTWARE公司的自动生成测试代码的软件测试工具,特别适用于嵌入式实时应用软件单元和通信系统测试
CODETEST是AppliedMicrosystemsCorp.公司的产品,是广泛应用的嵌入式软件在线测试工具。
GammaRay。GammaRay系列产品主要包括软件逻辑分析仪GammaProfiler、可靠性评测工具GammaRET等。
LogiScope是TeleLogic公司的工具套件,用于代码分析、软件测试、覆盖测试。
LynxInsure++是LynxREAL-TIMESYSTEMS公司的产品,基于LynxOS的应用代码检测与分析测试工具。
MessageMaster是ElviorLtd.公司的产品,测试嵌入式软件系统工具,向环境提供基于消息的接口。
VectorCast是VectorSoftware.Inc公司的产品。由6个集成的部件组成,自动生成测试代码,为主机和嵌入式环境构造可执行的测试架构。
(10) 系统性能测试工具
Rational Performance
(11) 页面链接测试
Link Sleuth
(12) 测试流程管理工具
Test Plan Control
(13) 测试管理工具
TestDirector
Rational公司的TestManager
Compuware公司的QADirector
TestExpert:是Silicon ValleyNetworks公司产品的测试管理工具,能管理整个测试过程,从测试计划、测试例程、测试执行到测试报告。
(14) 缺陷跟踪工具
TrackRecord等
(15) 其他测试工具包
TestVectorGenerationSystem是T—VECTechnologies公司的产品。提供自动模型分析、测试生成、测试覆盖分析和测试执行的完整工具包,具有方便的用户接口和完备的文档支持。
TestQuestPro是TestQuest公司的非插入码式的自动操纵测试工具,提供一种高效的自动检测目标系统,获取其输出性能的测试方法。
TestWorks是SoftwareResearch.Inc公司的一整套软件测试工具,既可单独使用,也可捆绑销售使用。
2、 从测试的方法上分:
(1) 白盒测试工具
白盒测试工主要有:Numega、PuRe、软件纠错工具(Rational Purify)。
内存资源泄漏检查:
Numega中的BounceChecher
Rational的 Purify等
代码覆盖率检查:
Numega的TrueCoverage
Rational的PureCoverage
TeleLogic公司的LogiScope
Macabe公司的Macabe
代码性能检查:
Numega的TrueTime
Rational的Quantify等
代码静态度量分析度量检查工具:LogiScope和Macabe等
黑盒测试工具主要有:QACenter、SQATeamTest、Rational Visual Visual Test。
QACenter:QACenter帮助所有测试人员创建一个快速、可重用的测试过程。这些测试工具自动帮助管理测试过程、快速分析和调试程序,包括针对回归、强度、单元、并发、集成、移植,容量和负载建立测试用例,自动执行测试和产生文档结果。QACenter主要包括以下几个模块:
QARun:应用的功能测试工具。
QALoad:强负载下应用的性能测试工具。
QADirector:测试的组织设计和创建以及管理工具。
TrackRecord:集成的缺陷跟踪管理工具。
EcoTools:高层次的性能监测工具。


3、部分具体测试工具的介绍
(1)、性能优化工具EcoScope
EcoScope 是一套定位于应用(即服务提供者本身)及其所依赖的所有网络计算资源的解决方案。EcoScope可以提供应用视图,并标出应用是如何与基础架构相关联的。这种视图是其他网络管理工具所不能提供的。EcoScope能解决在大型企业复杂环境下分析与测量应用性能的难题。通过提供应用的性能级别及其支撑架构的信息,EcoScope能帮助IT部门就如何提高应用性能提出多方面的决策方案。
EcoScope的应用主要表现在以下几个方面:
确保成功部署新应用
维护性能的服务水平
加速问题检测与纠正的高级功能
定制视图有助于高效地分析数据
(2)、数据库测试数据自动生成工具——TestBytes
在数据库开发的过程中,为了测试应用程序对数据库的访问,应当在数据库中生成测试用例数据,我们可能会发现当数据库中只有少量数据时,程序可能没有问题,但是当真正投入到运用中产生了大量数据时就出现问题了,这往往是因为程序的编写没有达到,所以一定及早地通过在数据库中生成大量数据来帮助开发人员完善这部分功能和性能。
TestBytes是一个用于自动生成测试数据的强大易用的工具,通过简单的点击式操作,就可以确定需要生成的数据类型(包括特殊字符的定制),并通过与数据库的连接来自动生成数百万行正确的测试数据,可以极大地提高数据库开发人员、QA测试人员、数据仓库开发人员、应用开发人员的工作效率。
(3)、PC—LINT
PC—LINT 主要进行更严格的语法检查功能,还完成相当程度的语义检查功能。可以这样认为:PC—LINT是一个更加智能、更加严格的编译器。PC—LINT在实现语法和某些语义规则检查时,是通过参数配置完成的,它的选项就有数百个之多,因此,在使用PC—LINT过程中,了解选项的含义也很重要。
(4)、TCL
TCL是Tool Command Language的缩写,它是一种很流行的脚本解释器,尤其在测试领域,它的最大特点是可移植性好,接口简单,方便,可以很容易地嵌入到软件中,作为自己的解释器使用。
TCL提供两种接口:编程接口和用户接口。编程接口是通过LIB或DLL形式提供的,提供了一些函数(命令)供调用,包括:分配一个解释器指针(对象);初始化解释器(指针);注册扩展函数等。用户接口很简单,即编写的脚本,脚本里面包含对扩展命令的调用。
(5)VB测试工具:VBWatch
(6)Java 程序的测试工具
1)Bean—Test
2)EJBQuickTest
3)JStyle
4)JTest
5)HttpUnit
6)JUnit
(7)、覆盖测试
C—Cover
C—Cover是一个测试工具软件,用来找出没有被测到的代码,并报告测试的覆盖率。C—Cover
只支持C/C++的代码覆盖率分析,其它语言不支持。但不受OS的限制
单元测试方面:(对开发人员比较有用) J-Unit工具。
  功能测试方面:E-test是个不错的选择,功能很强大,由于不是采用Post URL的方式回放脚本,所以可以支持多内码的测试数据(当然要程序支持)。基本上可以应付大部分的Web Site。
  如果只是利用脚本回放代替手工劳动,或者做对页面响应数的性能测试,Microsoft Web Application Stress Tool是个不错的选择。
  另外,在性能测试方面,PureLoad也是一个不错的工具,完全用Java写成,可以测试各种C/S程序,如SMTPServer等。这两个工具都是使用Post URL的方法测试Web Application的。对大量使用Javascrīpt的页面不太适合。当然,如果程序在Unix,linux下面运行的话,可以直接编写Shell 脚本程序,更加方便。
  另外,还有很多专门的工具,比如说Linkbot是专门作页面链接测试的。
  另外,测试流程管理工具也有不少,个人用过也一直在用的是Test Plan Control,短小精悍,不错。 至于WinRunner和LoadRunner之类,因为没有License,所以都没怎么用过,惭愧。不过我看过一篇英国人评价英国测试市场上最流行的五个软件的文章。WinRunner得分最高。
  测试工具从测试的方法上可以分为两种:白盒测试和黑盒测试 白盒测试工具主要有:
  内存资源泄漏检查:Numega中的bouncechecker,Rational的Purify等
  代码覆盖率检查:Numega中的truecoverage,Rational的Purecoverage,Telelogic公司的 logiscope, Macabe公司的Macabe等 代码性能检查:Numega中的truetime,Rational的Quantify等
  代码静态度量分析质量检查工具:logiscope和Macabe等
  黑盒测试工具主要有: 客户端功能测试:MI公司的winrunner,compuware的qarun,Rational的SQA robot等等
  服务器端压力性能测试: MI公司的winload,compuware的qaload,Rational的SQA load等等
  Web测试工具:MI公司的Astra系列,rsw公司的e-testsuite等等
  测试管理工具:rational的test manager,compuware的qadirector等等,此外还有缺陷跟踪工具 trackrecord等。
  数据库测试工具:TestBytes
  黑盒测试工具:QACenter、SQATeamTest,Rational Viaual Test。
  回归测试工具:RationalTeamTest,WinRunner(MI公司)
  WEB系统测试工具:TEST,Workberch,Web Appication Stress Tool(WAS)
  白盒测试工具:Numega 、PuRe、软件纠错工具(Rational Purity)。
  嵌入式测试工具:Logiscope(静态测试工具)、CodeTest。
  系统负荷测试工具:RationalPerformance
  涵盖测试工具范围评估工具
  软件性能测试工具:LoadRunner(MI产品)、Rational Visual Qantify
  测试管理工具:TestDirector(MI产品支持整个生命周期中测试流程管理)

测试基于Web的应用程序
测试web应用程序和测试桌面系统用很多共同点:例如你需要和执行所有标准测试类型一样测试常见的功能点,配置及兼容性。但是由于与应用程序交互的所有分布式系统组件的复杂性成倍的增加的原因,导致web应用程序测试更加的困难。当我们在web环境中看到一个错误时,通常很难指出错误发生的地方,并且由于我们看到的行为或我们接受到的错误信息可能是发生在Web系统中不同部分的错误的结果。错误可能是很难重现的。那么我们如何在web系统中分析错误呢,并且为了重现那些错误又应该做哪些考虑呢?
当我们对潜在的技术有一个了解时,我们可以更好的最大化测试效率-编写更多可重现的bug报告并且在较少的时间里发现更多的错误。说比做更加容易-特别是在web环境里。Web环境在错误倾向技术变量是密度高的。以下是测试Web应用程序的需要考虑的5个基本事项:
1. 当我们在客户端看到一个错误时,我们所看到的是错误的症状,而不是错误本身。
2. 错误可能是与环境相关的,并且可能不出现在不同的环境里
3. 错误可能是存在代码或是配置中的
4. 错误可能驻留在几个层中的任一个层中
5. 检查操作系统中的两个类别-静态vs动态-需要不同的方法。
现在让我们来详细的看看这5个需要考虑的事项。
 
1. 什么是我们真正看到的东西?是一个错误还是一个症状?
如果不诊断环境,我们不能够确定是什么导致了一个症状出现。如果客户端和服务器端的一个环境特定的变量被移除或被改变的话,我们或许将不能够重现问题。
例如,我正在测试一个Web的缺陷跟踪应用程序,并且遍历创建一个bug报告的流程。当我选择“新建”按钮时,我接收到一个错误信息:Microsoft OLE DB Provider for ODBC Drivers error '80040e14'。在花了一些时间调查我的浏览器环境后,我发现Javascrīpt在浏览器的参数设置对话框中被禁止了。启用Javascrīpt 就消除了这个错误。(这个问题是否是个bug不在我们今天讨论的范围里)这里是要说如果我在bug报告中增加关于Javascrīpt的信息,我可以节约我们团队花费在分析这个问题的时间。此外,“禁用Javascrīpt”从此应该要添加到我的测试包中;它将被应用到应用程序的各个地方,以使所有潜在的相关问题不会出现。
 
2. 这个错误是环境依赖的吗?
为了重现一个环境相关的错误,我们不得不完全地复制活动的准确顺序和应用程序操作所在环境的条件(操作系统,浏览器版本,插件的组件,数据库服务器,web服务器,第三方组件,服务器/客户端资源,网络带宽和通信量等等)。例如,当你试图使用一个28.8 kbps的拨号连接登录到你的Web应用程序中,你会碰到一个由于在认证过程中因超时而导致的登录失败-但是同样的登录步骤如果你用一个1.54 mbps 的T-1连接将会成功的通过认证。在这个案例中,你有一个环境依赖的错误,这个依赖条件是在带宽中。
环境无依赖的错误,用另一种话说,相对来说是容易重现的-它没有必要复制操作环境。环境无关的错误,需要复制所有都能够揭示错误的步骤。例如,如果公司的名称在所有产品在线页面上错误地拼写为WebTessting.Con, 你就总能看到这个错误-它是和硬件,软件和你操作环境中资源变量无关的。更为常见的是,我们将环境无关的错误称为功能特定的错误。
 
3. 是一个代码错误或是一个配置问题
错误(或是假定错误的症状)可能会在代码修复中或系统重新配置(客户,服务器或网络)解决(假设错误是真实的)。不要太快的下结果它是一个bug。
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 对比真正的软件错误,这是一个说明识别可能的配置问题挑战。它显示了由于Web应用程序“登录失败”而引起的一个错误信息。只是简单的查看这个错误信息,是不可能判断这个错误是由于软件bug引起的还是服务器端配置问题,或是兼容性问题,浏览器配置问题或以上所有的。
在进一步分析这个失败以后,我发现几个可能的产生这个错误信息的条件:
IIS (Web server) virtual directory has not been set up properly当虚拟目录没有被正确的配置时,将找不到请求的文件,脚本或数据。这是一个典型的服务器配置的问题。然而,如果安装程序未能根据说明书一样配置web服务器,那么这是一个软件的错误。如果一个系统管理员未能根据说明书正确地配置web服务器,这个就变成了用户错误。
Application directory has not been configured properly to execute scrīpts一个典型的应用服务器目录包含了需要执行的脚本,它们会被代表客户端的Web服务器调用。为了安全的原因,一个Web服务器可以被配置以允许或不允许脚本在一些目录里执行。如果你的应用服务器目录被设计来包含将要被执行的脚本-但是Web服务器被配置为在那个目录里禁用脚本执行-应用程序将不能工作。这是软件错误还是一个配置问题呢?
Default Web page has not been set up properly这个问题和上面的问题相似
SQL Server is notrunning为了执行查询,存储过程和访问数据,应用服务器需要连接后台在SQL服务器上的数据库。如果SQL服务器进程没有运行,显然应用程序将不能工作。
DLL/COM objects are missing or were unsuccessfully registered可能安装程序在安装过程中未能复制应用服务器要使用的所有DLL。如果遗漏了其中一个应用程序所需的DLL,应用程序将不可以工作。
也可能安装程序正确的复制了所有需要的模块,但是失败的注册一个或多个DLL。例如OLE-Based的对象,例如COM或DCOM,它们的class ID(CLSID) 在它们可以被使用之前必须注册到注册表库中。如果一个应用程序试图访问一个没有被成功注册的COM对象,应用程序将不能工作。
这个问题通常由安装过程中的错误引起来。另一方面,如果组件必须被手工注册地话,就变成一个配置问题。
Browser-side Javascrīpt setting has been disabled这是一个浏览器端的配置问题,由于应用程序要求浏览器启用Javascrīpt。这是一个软件错误,配置问题或是一个技术支持的问题呢?
 
4.哪个层真正的引起了那个问题?
在Web 系统中的错误通常是很难一直重现因为许多由C/S架构的分布式特性而引入的许多变量。(例如,服务器,客户端和网络组件)。在一个web环境中至少由3个常见的怀疑部分:客户端,服务器和网络。客户端和服务器都会携带诶之和兼容性问题,那些和PC环境相似,所有的组件都在一个盒子里。在C/S系统里,问题成倍的增长,然而,由于可能有很多的客户端和服务器链接在一个网络中。典型的C/S配置和兼容性问题涉及到硬件和操作系统的混合(例如,基于UNIX的 vs基于windows的盒子)以及在服务器端的软件组合(Web服务器包,数据库服务器包,防火墙,COM对象,CORBA对象等等)。问题也可能涉及客户端的软件组合(TCP/IP堆栈,拨号软件,帮助组件,浏览器带宽和浏览器版本)。另外,浏览器设置,例如一些常见的设置,连接设置,安全设置(包括 ActiveX空间,插件,Java,脚本,下载,用户认证等等),内容设置,程序设置,和其他高级设置(包括浏览器选项,多媒体选项,JVM选项,打印选项和HTTP选项)引入很多可以被测试并分析的变量。
网络提供了另一套变量。网络用几个方式影响着Web应用程序,包括由于带宽和响应时间引起的分时相关的问题(竞态条件,性能,超时等等),由于硬件设备例如网关和路由器导致的潜在的配置和兼容性问题,以及和安全实现相关的端问题。
 
5.静态和动态操作环境是不同的
一般来说,有两类操作环境-每个都有自己独一无二的测试牵连:
静态环境(例如配置和兼容性错误)不兼容性问题可能存在其中,不管可变的条件,例如处理速度和可用的内存
动态环境(例如资源及时间相关的错误)其他方面可兼容的组件可能出现错误在其中,由于内存相关的错误和反应时间条件(我们将在这一节中更详尽的探讨动态环境)
 
静态操作环境:配置和兼容性变量
配置和兼容性问题可能会出现在web系统中的任何一个点上:客户端,服务器端,或网络中。配置问题包括不同的服务器软件和硬件设置,浏览器设置,网络连接,和TCP/IP堆栈设置。浏览器设置/ 前面提到的Javascrīpt例子说明了配置问题的一种类型。图1和图2展示的是另一个配置问题的类型,两种可能的物理服务器配置:one-box 和two-box配置。
我们用来示范的所测试应用程序有一些制图的功能,可以让用户生成度量报告,例如条形图和直线图。当用户请求一个度量报告时,应用程序服务器执行的伪码如下:
1. 连接服务器并运行查询,
2. 编写查询结果到一个名为c:\temp\chart.val的文件中,
3. 执行Chart的JavaApplet。从c:\temp\chart.val文件中读取数据以生成一个图表
4. 发送JavaApplet到浏览器
在测试这个应用程序过程中,我发现图表功能可以在以上的配置上运行,但是却不能在其他配置上工作。在我更进一步的研究之后,我认识到问题可能出现在two- box配置中。在检查代码之后,我认识到问题在步骤2和3中。在步骤2中,查询结果被写到数据库服务器本地驱动器中c:\temp\chart.val。在步骤3里,ChartJavaApplet是运行在应用服务器上而不是和数据库服务器在一个相同的盒中。当它试图在应用服务器本地驱动器中打开c:\temp\ chart.val文件时,文件并不存在。
在这个用例中,我不建议在遇到问题时就阅读代码,我把调试的工作留给开发人员。我只不过想指出识别哪个服务器配置是有问题的,并且在bug报告中含括这些信息。我也会在测试下的应用程序支持的全部的分别式配置下运行一个粗略的测试用例包。
配置问题在静态操作环境中也是很终于的。例如,在图3中我们看到在Netscape Navigator和IE浏览器的一个兼容性区别。
这个例子并不是要说IE比Netscape Navigator更好,它只不过意味着在浏览器之间有不兼容性问题-并且代码应该假设相对路径在所有的浏览器中都可以工作。更重要的是,它建议当你在一个环境中发现一个错误时,如果它是一个环境相关的错误的话,同样的错误可能不会出现在不同的环境中。
动态的操作环境:事情不会保持一样
当特定环境的属性值不是每次都在测试过程中保持常量时,它会引起操作环境变为动态。属性可以从资源特定(可用的RAM,磁盘空间等)转变为时间特定的(网络反应时间,用户要提交的交易顺序等)。
当一个测试用例取决于步骤集和操作环境的准确复制,然而(由于它的动态本质)操作环境不可能被复制,错误变得不可重现或很难重现。
顺便说一下,这也是内存相关错误通常较难重现的原因。当一个内存覆盖的错误出现在代码中时,例如,它常常会引起一个内存覆盖的问题。然而,从一个黑盒测试的角度看,我们永远没有机会看到这个错误的症状直到执行或读取特定的代码或数据溢出字节。在这个例子中,步骤集代表了黑盒测试的准确集合。内存覆盖错误代表了在代码中的真实的错误。被执行或读取的被覆盖的字节的条件代表了动态的操作环境或需要揭露(重现)错误的条件。
这是一个动态环境相关错误的Web应用程序例子,我们在其中将调查一个时间相关错误。功能说明书要求:
在系统中的项目名称必须是唯一的
为了可能的复制需要在客户端使用Javascrīpt来执行错误识别和处理
用户将可以通过请求项目设置页面增加或删除项目名称
当一个用户创建一个新的项目名称时,浏览器端的Javascrīpt检查输入的名称和内嵌在HTML页面中选择列表(如图4)。
看看图5中的时间相关的错误。在项目设置页面之前和之后的屏幕截图中说明了应用程序失败检测重名的“Doomed”。图4解释了这个时间相关的错误,它包括了两个用户增加新的项目名称到同一个数据库中。
如表1中所示,用户A和B同时创建新的项目,但是并不知道其他人的动作。在步骤3中,用户A增加了一个名为Another的项目。由于这个项目名称已经存在,他浏览器的Javascrīpt会显示一个提示他输入不同项目名称的信息。
用户B增加了一个项目名称为Doomed。她浏览器的Javascrīpt不会检测Doomed为一个已经存在的项目名并且添加它到数据库中并返回列表。更新过的项目名称列表被发送到用户B。
用户A随后添加相同名称Doomed到项目列表中。他浏览器的Javascrīpt没有在HTML列表中检测,因此Doomed会再次被添加到数据库中-同样到了返回的列表中。更新的项目名称列表被发送给用户A,并且包括两个Doomed的条目。
这个结果未能满足产品的说明书。除非这种情况出现在一个设计良好的测试用例,偶然发现这个错误并且试图重现它不是一个简单的工作。在这个例子中,实际的错误是应用程序在检查服务器端重名(除了客户端检查以外)的失误。这些步骤包括用户A的活动。通过用户B的活动创建了动态操作环境-这些活动对于用户A是隐藏的或不知道的。
 
总结
为了有效的在Web环境中分析并重现错误,你需要对操作环境有个掌握。你也需要理解环境特定的变量可能会影响你复制错误的能力。在应用程序有着这份文章中的一些技能,我希望你的Web测试经验将会更少的被挫败和更加开心。
记住没有任何东西将替代你的测试技能-你编写出好的测试用例,问相关what-if的问题,保留仔细的记录,并且有系统的研究难以重现的错误的能力。就是这些技巧不仅在寻找错误中给你提供帮助,而且也会帮助你发现那些和他们相关的隐藏错误。

 

一、自动软件测试工具的分类

目前市场上的软件测试工具,从测试方法上一般分为白盒测试工具、黑盒测试工具、测试管理工具以及辅助测试工具四大类。

  a) 白盒测试工具

  白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。

  i. 静态测试工具

静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。

ii. 动态测试工具

动态测试工具与静态测试工具不同,动态测试工具的一般采用“插桩”的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态测试工具最大的不同就是动态测试工具要求被测系统实际运行。

白盒测试工具比较多,对它们的选择必须考虑它们所支持的语言或环境,这方面网上的资料也比较多,在此无法一一进行介绍,比较有代表性的如下表所示:

公司

软件名称

支持语言

主要功能

Logiscope

Telelogic

C、C++、Java、Ada

软件质量分析工具Audit;代码规范性检测工具Rulechecker;测试覆盖率统计工具TestChecker

parasoft

 

jtest

java

代码静态分析、接口函数测试、自回归测试

C++ Test

C、C++

.test

.net

CodeWizard

C、C++

代码规则检测

Insure++

C、C++

内存检查,覆盖率分析

Compuware

DevPartner

C++,Java,Visual Basic

代码覆盖率分析工具TrueCoverage,代码效率分析工具TrueTime和内存分析检查工具BoundsChecker

Ibm

Rational PurifyPlus

Java、C/C++、Visual Basic 和.NET

代码覆盖率分析工具pureCoverage,代码效率分析工具pureQuantity和内存检查工具purify

McCabe

McCabe IQ

C、C++、Java、Ada、Visual Basic 和.NET

用于静态结构分析、代码复杂度和覆盖率分析,包含McCabe Test ,McCabe QA ,McCabe Reengineering等组件

LDRA

TestBed

C、C++、Ada

静态结构分析、代码检查、覆盖率分析

PRQA

QA

C、C++、Java

代码检查

Gimpel

PC-Lint

C、C++

代码检查

PolySpace

PolySpace

C、C++、Ada

代码静态分析

北航

QESAT

C++、Java

代码动态测试和覆盖率分析

Applied Microsystems

CodeTest

 

嵌入式硬件测试工具,可进行内存检查、覆盖率分析、代码性能分析

开源

JUNIT

Java

单元测试,代码检查

  b) 黑盒测试工具

  黑盒测试工具适用于黑盒测试的场合,黑盒测试工具包括功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大提高测试人员的工作效率和质量,在迭代开发的过程中,能够很好地进行回归测试。

  c) 测试管理工具

  测试管理工具用于对测试进行管理。一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。

  d) 辅助测试工具

除了上述的测试工具外,还有一些专用的测试工具,比如:用于数据库测试的TestBytes、用于性能优化的EcoScope、用于页面链接测试的Link Sleuth等。

 

二、介绍和比较

 

1、    国外大公司所开发的商业测试管理工具

工具名称

公司

官方网址

TestDirector & Quality Center

Mercury

http://www.mercuryinteractive.com

Rational Test Manager

IBM

http://www.rational.com

QADirector

Compuware

http://www.compuware.com

SilkCentral Test Manager

Segue

http://www.borland.com

TechExcel DevSuite

Techexcel

http://www.techexcel.com.cn/

T-Plan Professional

T-Plan

http://www.t-plan.com/

这些工具的共同特点:

1)  功能较全,支持测试需求管理、测试计划管理、测试用例管理和测试缺陷的综合管理。测试需求管理、测试计划、测试日程安排,到测试执行,以至到出错后的缺陷跟踪,可以仅在一个基于浏览器的应用中便可完成。

2)  应用测试需求驱动测试,自动生成或者外部文档导入测试计划和测试用例,采用树型图或目录形式进行管理,比较直观地将需求和测试用例、测试结果和报告的错误的联系起来,从而确保完全的测试覆盖率。

3)  能够管理多种类型的测试,包括单元测试、功能测试、性能测试、手动测试、集成测试、回归测试、配置测试和构件测试等,并能够一次执行多种测试。

4)  执行自动测试或手动测试时,配置管理比较方便,并把测试结果自动记录到数据库中,测试报告多以报表或图表的方式,或者导出到外部文档,从而很直观的对测试进行很好的评估。

5)  多是使用基于web的界面,使得测试人员、开发人员和业务开发人员可以跨地域、跨机构实现协作,共同服务于测试流程,同时具有用户权限分级管理功能,根据个人在管理中的角色定位,查看相应的记录。

6)  支持与市场上主流的一些功能测试工具、性能测试工具和缺陷管理工具很好的集成。

7)  售后服务多是本地化,但不管是一次性采购成本、后期维护成本,还是从培训成本来说,都是相当昂贵的,都在几十万左右(依用户数而定价,年费)。

8)  安装一般比较复杂,熟悉起来比较费时,此外有些功能对小公司来说可能属于华而不实。

测试管理工具典型产品的比较

工具名称

构架模式

支持平台

支持数据库

价格

TestDirector & Quality Center

B/S

Windows,Unix,Linux

MS Access,SQL Server

几十万,昂贵

Rational Test Manager

C/S,B/S

Windows,Unix

MS Access,SQL Server

几十万,昂贵

QADirector

B/S

Windows,Linux

MS Access,SQL Server

几十万,昂贵

SilkCentral Test Manager

B/S

Windows

MS Access,SQL Server,Oracle

30~50万元

TechExcel DevSuite

C/S,B/S

Windows

MS Access,SQL Server,Oracle,MySQL   

几十万,昂贵

T-Plan Professional

C/S,B/S

Windows

MS Access,SQL Server,Oracle,Sybase 

几十万,昂贵

2、    国产测试管理工具

工具名称

公司

官方网址

微创BMS

上海微创软件

www.wicresoft.com

TestCenter

上海泽众软件

www.spasvo.com

QESuite

北京精易博创&北航

www.qualityeasy.com

这些工具的共同特点:

1)             功能不是很全,一般不包括测试需求的管理,多是围绕测试计划,对测试用例和测试缺陷进行管理。

2)             一般不支持与其他主流功能、性能或缺陷管理工具的集成。

3)             管理的测试类型相当有限,测试报表的输出信息也相对简单。

4)             安装比较简单,价格比较便宜,一般都在万数块钱左右。

工具名称

构架模式

支持平台

支持数据库

价格

微创BMS

B/S

Windows

SQL Server

几万,适中

TestCenter

B/S

Windows

SQL Server

几万,适中

QESuite

B/S

Windows

SQL Server

几万,适中

3、    开源测试管理工具testlink

TestLink 是sourceforge的开放源代码项目之一。作为基于web的测试管理系统,TestLink的主要功能包括:

  • 测试需求管理
  • 测试用例管理
  • 测试用例对测试需求的覆盖管理
  • 测试计划的制定
  • 测试用例的执行
  • 测试结果的度量和统计功能。

它主要特点如下:

  • Web方式访问(支持Mozilla, Firefox, IE浏览器)
  • 测试计划中的每个产品的测试都遵循测试流程
  • 用户可以自定义角色(如测试组长,测试员等等)
  • 关键字的作用用于支持深层次的测试组织
  • 测试可以根据优先级指派给测试员,定义里程碑。
  • 提供测试报告
  • 支持将文档导出成HTML,WORD或是Excel格式
  • 可以直接通过这个工具将测试报告邮件发送出去
  • 可结合通用的bug跟踪系统,如Bugzilla、mantis和Jira

要使TestLink正常运行,需要安装以下软件:

1)MySQL 4.1.x及以上

2)php  4.3.x及以上

3)WebServer (Apache1.3.x或2.0.x及以上,IIS 3及以上)

4)对于操作系统平台没有特别要求

4、网站测试管理工具E-TestManager和TestView Manager

E-TestManager是一款由Empirix公司专门针对Web应用和服务的测试管理软件,可定制测试需求、测试计划,并管理测试流程和测试缺陷,可以集成该公司自己开发的网站测试工具包E-TESTSuite,该网站测试工具包E-Test Suite包括三个部分:e-Tester、e-Load和e-Monitor,这三部分分别适用于应用功能测试、压力测试以及应用监控,每一部分的功能相互独立,测试过程中又可以彼此协同,从多方面保障了Web应用的成功。

国内上海有代理公司,价格比较昂贵,支持Windows、Linux和Unix平台,官方网址www.empirix.com。

Radview公司开发的TestView系列web性能测试工具旨在测试web应用和web服务的功能、性能、程序漏洞、兼容性、稳定性和抗攻击性。从而为测试工作者提供有力的帮助,加速“开发—测试”循环,提高劳动生产率。该系列主要包括四个模块:TestViewManager、WebLoad、WebFT和WebLoad Analyzer。它们各自的职能是:TestViewManager用来定制、管理各种测试活动;WebLoad模拟多个用户行为进行测试,所测试的是系统性能,容量,稳定性和抗攻击性;WebFT模仿单一用户行为进行测试,所测试的是系统功能,漏洞,兼容性和稳定性;WebLoad Analyzer对web服务、中间件和数据库进行监控和分析,找出问题原因和故障点。

官方网址http://www.radview.com/

5、需求管理工具

使用需求管理工具可以及时地跟踪每个需求的状态,很好地在功能需求与相应的使用实例、设计、代码、测试和项目任务之间建立联系链,可以方便地对需求进行删改,而当需求更改时,可以及时第通知每个小组人员。

主流的需求管理工具功能上基本都差不多,最大区别就是以数据库还是以文档为核心,以数据库为核心的产品把所有的需求、属性和跟踪能力信息存储在数据库中,以文档为核心的产品则使用word等字处理程序制作和存储文档。

主流的需求管理工具一般都支持从外部文档导入需求,并且能够和其他主流测试管理工具相集成。

工具名称

厂商

以数据库或文档为核心

Telelogic Doors

Telelogic

数据库

Borland CaliberRM

Borland

数据库

IBM Rational RequisitePro

IBM

文档

Hansky Dragonfly

Hansky

文档

RTM Workshop

Integrated Chipware, Inc

数据库

RM1.0

中科院软件所

数据库

6、配置管理工具

通过软件配置管理,将对软件系统中的多重版本实施系统的管理;全面记载系统开发的历史过程(为什么修改,谁作了修改,修改了什么);管理和追踪开发过程,完整明确地记载开发过程中的历史变更,形成规范化的文档;保证日后的代码维护和升级,保护代码资源,提高软件重用率。

目前市场上无论是商业的还是开源的,配置管理工具很多,在此我们仅简单介绍几个典型产品:

工具名称

说明

Telelogic Synergy CM

采用Copy-Modify-Merge的工作模式,可在多种平台上使用,安装配置使用比较简单,可无缝集成多种常见的开发工具,服务器采用多线程,适合大型开发团队,存储目录不共享,客户端不可直接访问存储目录,比较安全,价格比较昂贵。

Hansky Firefly

McCabe TrueChange

IBM Rational ClearCase

采用Copy-Modify-Merge的工作模式,支持常见的平台,与Ratinal产品可无缝集成,安装配置使用相对比较复杂,需要进行团队培训,服务器采用多进程机制,适合大型开发团队,采用C/S模式,需要共享服务器上的存储目录以供客户端访问,这将带来一定安全隐患,价格比较昂贵。

Microsoft VSS

采用Check out-Modify-Check in工作模式,仅支持Windows 操作系统,安装配置使用比较简单,很容易上手使用,功能相对单一,适用于几个人的小型开发团队,与Visual Studio开发工具包无缝连接,其它开发工具集成性差,需要共享存储目录,安全性比较差,可免费。

开源CVS

采用Copy-Modify-Merge的工作模式,支持几乎所有的操作系统,安装配置较复杂,但使用比较简单,具有较高的运行性能,适用于各种级别的开发团队,但对开发工具集成性较差,采用C/S 模式,不需要共享服务器上的存储目录,安全性较好。

7、缺陷管理工具

无论是国外还是国产,甚至开源,目前主流的缺陷管理工具功能都差不多,基本上都具备了流程定制、查询功能定制、功能域定制、报表图表定制、用户权限分级管理、优先级管理、Email通知等功能,但是这些工具最主要的区别则在是否支持导出外部文档、是否支持与其他工具的集成、安装配置的复杂度、构架模式、支持的平台和数据库、价格、能否修改源代码等方面。

具体比较见Excel表格。

建议:花钱的不要;开源工具中,对于中小项目,使用Mantis;对于Windows平台,使用Mantis;对于中大项目,使用Bugzilla;对于Unix平台,使用Bugzilla;对于喜欢MS的MSF和BUG管理和里程碑驱动哲学的,使用BugFree。

 

 

8、功能测试工具

功能测试工具是一种通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结果比较,验证被测系统的功能能否按照它的设计正常工作的自动化工具。功能测试工具的测试对象多是那些拥有图形用户界面(GUI)的应用程序,测试的流程一般如下:

 

 

 

 

 

 

 

 


 

目前市场上的主流功能测试工具的共同特点是:

1) 具有录制/回放功能,测试人员只需将应用程序完整操作一遍并录制,即可让测试自动进行;

2) 无人看管下可以进行自动测试;

3) 应用程序发生改变,测试脚本也可以进行相应的改变;

4) 支持分布式测试,并且允许非预期错误的恢复;

5) 图形化设计脚本执行集合;

6) 自动记录测试结果,便于查看

功能测试工具的不同主要表现在支持的测试对象、支持的平台类型、系统架构、用途与功能、所使用的脚本语言以及价格等方面。

具体比较见后面表格。

 

9、性能测试工具

性能测试工具通常指那些用来支持压力、负载测试,能够用来录制和生成脚本、设置和部署场景、产生并发用户和向系统施加持续压力的工具。

性能测试的指标一般包括并发用户数、响应时间、吞吐量和资源利用率,类型一般包括负载测试、压力测试和强度测试。

好的性能测试工具一般支持多种协议,可测试多种对象,可自动生成脚本并进行脚本调试,可进行多种参数配置以输出结果,此外配置和操作简单,以LoadRunner为例,性能测试工具的组成部分一般有如下4个:虚拟用户发生器VuGen,压力调度和监控系统Conductor,压力产生器Player和结果分析工具Analyzer,测试的一般步骤为:

1)             通过用户操作和VuGen的录制,记录并生成自动化脚本,在用户修改的基础上,得到可成功回放的正确无误的脚本;

2)             Conductor把脚本传送到player上,并控制player对被测系统的加压方式和行为;

3)             Player会记录最终用户响应时间、脚本执行的日志和被测系统的各个环节的性能数据以供conductor定期收集;

4)             压力运行结束以后,Player将数据传送到Conductor中,Conductor负责将数据汇总;

5)             数据分析工具Analyzer读取压力测试数据,进行分析工作,确定瓶颈和调优方法;

6)             针对性地进行系统调优,重复进行压力测试,确定性能是否得到提高;

需要注意的是,功能测试工具的录制一般是针对GUI的操作录制,脚本中记录的是用户对控件的操作,例如“按下了‘确认’按钮”,或是“在姓名文本框中输入了ABCD”等内容,这是因为功能测试工具主要是通过操作和数据来验证功能的正确性,评价的主要标准是GUI的正确性(界面可见内容的正确性),性能测试着重的是“并发的性能”,GUI的很多操作一般对服务器都不构成压力,因此,性能测试工具录制的是服务端和应用之间的通信数据,为此需要首先选择录制的协议。

 性能测试工具的不同主要在支持的协议类型、支持的平台类型、用途与功能、所使用的脚本语言以及价格等方面。

三、市场调查

1、开发者采用的管理需求工具的分布状况

2、开发者团队配置管理工具的种类分布状况

3、开发者团队对缺陷跟踪使用工具的种类分布状况

4、测试方式上的比例

5、开发者及其团队经常使用的黑盒测试工具分布状况

6、 

6、开发者及其团队经常使用的白盒测试工具分布状况

 

 

四、对自动测试软件选择的一些想法和建议

面对如此多的测试工具,对工具的选择就成了一个比较重要的问题。我们在考虑选用工具的时候,建议从以下几个方面来权衡和选择:

  1、功能

  选择一个测试工具首先就是看它提供的功能,但并不是说测试工具提供的功能越多就约好,在实际的选择过程中,适用才是根本。“钱要花在刀刃上”,为不需要的功能花费金钱实在不是明智的行为。事实上,目前市面上同类的软件测试工具之间的基本功能都是大同小异,各种软件提供的功能也大致相同,只不过有不同的侧重点。

  除了基本的功能之外,以下的功能需求也可以作为选择测试工具的参考:

  1) 报表功能;测试工具生成的结果最终要由人进行解释,而且,查看最终报告的人员不一定对测试很熟悉,因此,测试工具能否生成结果报表,能够以什么形势提供报表是需要考虑的因素。

2) 测试工具的集成能力;测试工具的引入是一个长期的过程,应该是伴随着测试过程改进而进行的一个持续的过程。因此,测试工具的集成能力也是必须考虑的因素,这里的集成包括两个方面的意思,首先,测试工具能否和开发工具进行良好的集成;其次,测试工具能够和其他测试工具进行良好的集成。

  3) 操作系统和开发工具的兼容性;测试工具可否跨平台,是否适用于公司目前使用的开发工具,这些问题也是在选择一个测试工具时必须考虑的问题。

  2、价格

  除了功能之外,价格就应该是最重要的因素了。工具的代价不仅仅只是许可证费。还包括每年的维护费用,还应有安装软件,执行管理,获得开发商的支持和咨询,训练用户,升级的费用。购买前一定要权衡利弊。

  3、要考虑到公司的实际情况,不要盲目引入测试工具

  并不是每种测试工具都适合公司目前的实际情况。

  例如,如果一个公司所开发的软件属于工程性质的软件,在整个开发过程中需求和用户界面变动较大,这种情况下就不适合引入黑盒测试软件,因为黑盒测试软件的基本原理是录制/回放,对于不停变化的需求和界面,可能修改和录制脚本的工作量还大过测试实施,运用测试工具不但不能减轻工作量,反而加重了测试人员的负担。

  4、要形成一个良好的使用测试工具的环境

  要形成一种机制让测试工具真正能够发挥作用。例如,白盒测试工具的一般使用场合是在单元测试阶段,而单元测试是由开发人员完成,如果没有流程来规范开发人员的行为,在项目进度压力比较大的情况下,开发人员很可能就会有意识地不使用测试工具,来逃避问题。在这种情况下,就必须形成一种有约束力的机制来强制对测试工具的使用。

  将测试工具的使用明确定义进公司的开发流程,我认为是一种比较好的方式。

  5、要进行有效的测试工具培训和学习

  测试工具的使用者必须对测试工具非常了解,在这方面,有效的培训是必不可少的。测试工具的培训是一个长期的过程,不是通过一两次讲课的形式就能达到良好的效果。而且,在实际的使用测试工具的过程中,测试工具的使用者可能还存在着这样那样的问题,这也需要有专人负责解决,否则的话,对于测试工具使用者的积极性是很大的打击。

7、鉴于目前公司在测试工具引入上还处于调研和尝试阶段,抱着谨慎的态度,建议先试用共享或免费软件,待公司开发规模,质量管理力度,测试管理等达到一定深度时再考虑引入正版收费软件。

a)  测试管理工具,优先学习使用开源TestLink;

b)  需求管理工具,暂时使用Excel;

c)  配置管理工具,暂时使用MicrosoftVSS即可,优先学习使用开源CVS;

d)  缺陷管理工具,暂时使用Mantis,优先学习使用BugFree;

e)  功能测试工具,

f)  性能测试工具,优先学习使用开源stressMark,Microsoft Web application stress tool,openSta和Jmeter;