《软件测试技术》课件第10章_第1页
《软件测试技术》课件第10章_第2页
《软件测试技术》课件第10章_第3页
《软件测试技术》课件第10章_第4页
《软件测试技术》课件第10章_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章自 动 化 测 试10.1自动化测试概述10.2自动化测试技术10.3自动化测试工具10.4本章小结

10.1自动化测试概述

10.1.1软件自动化测试

随着应用软件程序规模的不断扩大,业务逻辑越来越复杂,软件系统的可靠性已无法通过手工测试来全面验证。而且随着软件开发技术的快速发展和软件工程的不断进步,软件快速开发的能力越来越强,使得在软件开发过程中短时间内就可以产生多个需要测试的软件版本,这就意味着软件测试周期大大缩短,测试的频率大大增加。传统的手工测试已经远远满足不了软件开发的需求,其局限性越来越多地暴露出来。手工测试面临的主要问题和挑战如下:

(1)不适合回归测试。回归测试是软件开发测试中非常频繁的一项测试,若通过手工测试,则会耗费大量人力物力。

(2)许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉到。

(3)进行系统负载测试时,需要模拟大量数据或大量并发用户等应用场合时,很难通过手工测试来进行。

(4)进行系统可靠性测试时,需要模拟系统长时间(如10年)运行,以验证系统能否稳定运行,这也是手工测试无法模拟的。

(5)如果有大量(几千上万)的测试用例,需要在短时间内(1天)完成,手工测试几乎不可能做到。传统的手工测试已经远远满足不了软件开发的需求,使用自动化测试技术势在必行。

软件自动化测试就是使用自动化测试工具来代替手工进行的一系列测试动作,以验证软件是否满足需求,它包括测试活动的管理与实施。自动化测试主要是通过所开发的软件测试工具、脚本等来实现,其目的是减轻手工测试的工作量,以节约资源(包括人力、物力等)、保证软件质量、缩短测试周期、提高测试效率。自动化测试以其高效率、重用性和一致性成为软件测试的一个主流。正确实施软件自动化测试并严格遵守测试计划和测试流程,可以达到比手工测试更有效、更经济的效果。相比手工测试,自动化测试具有如下优点:

(1)程序的回归测试更方便。回归测试是自动化测试最主要的任务,特别是在程序修改比较频繁时,效果非常明显。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大地提高测试效率,缩短回归测试时间。

(2)可以运行更多更繁琐的测试。自动化的一个明显的好处是可以在较少的时间内运行更多的测试。某些测试序列可能包括成百甚至上千条测试消息,这样的测试用手工设置和评价,常常是不可行的。为了能够准确地重复一个冗长序列,必须实现测试自动化。

(3)可以执行一些手工测试困难或不可能进行的测试。对于软件性能方面的一些测试,如压力测试、负载测试、大数据量测试等,用手工测试是不可能实现的。而通过测试工具进行自动化测试可以完成这些手工测试不可能完成的任务。例如,对于大规模用户的联机系统,用手工进行并发操作的测试几乎是不可能的,而用自动化测试工具就可以很轻松地模拟出大量用户的操作。此外,在测试中使用测试工具,可以发现一些正常测试中很难发现的缺陷。例如,Numega工具就可以发现软件在内存方面的问题。

(4)充分利用资源。将繁琐的任务自动化,可以提高测试准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例,以让测试人员专注于手工测试部分,提高手工测试的效率。另外,测试人员还可以利用计算机进行7×24小时的自动化测试。

(5)测试具有一致性和可重复性。只要每次自动化测试的环境是相同的,运行的脚本是相同的,那么每次执行测试就具有一致性,很容易就能够重现缺陷,并发现被测试软件的修改之处和缺陷。这在手工测试中是很难做到的。而且,有些测试可能在不同的硬件配置下执行,使用不同的操作系统或不同的数据库,此时要求在多种平台环境下运行的产品具有跨平台质量的一致性,这在手工测试的情况下更不可能做到。

(6)测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。

(7)让产品更快面向市场。一旦一系列自动化测试准备工作完成,就可以重复地执行一系列的测试,因此能够缩短测试时间,加快产品开发周期。

(8)增加软件信任度。由于测试是自动执行的,所以不存在执行过程中的疏忽和错误,完全取决于测试的设计质量。一旦软件通过了强有力的自动测试后,软件的信任度自然会增加。当然,自动化测试也并非万能,人们对自动化测试的理解也存在许多误区,认为自动化测试能完成一切工作,从测试计划到测试执行,都不需要人工干预。其实自动化测试所完成的测试功能也是有限的。自动化测试存在下列局限性:

(1)不能完全取代手工测试。软件自动化测试不可能也没必要取代手工测试来完成所有的测试任务。因为有些测试使用手工测试比自动化测试要简单,如果采用自动化测试,则费用就比较大了。

(2)不能期望自动化测试发现大量新缺陷。自动化测试的最大特点在于适合重复测试。一般情况下,以前运行过的测试再次用来检查软件的新版本往往暴露的缺陷要少得多。测试专家JamesBach总结出:85%的缺陷靠手工发现,而自动化测试只能发现15%的缺陷。自动化测试能够很好地发现老缺陷。

(3)软件自动化测试可能会制约软件开发。应用软件的变化对自动化测试的影响要比手工测试更大一些,软件的部分改变有可能使自动化测试脚本和用例不可再用。而设计和实施自动化测试要比手工测试开销大,并需要维护,所以对自动化测试影响较大的软件修改可能受到限制。

(4)软件自动化测试本身没有想象力。自动化测试是通过软件进行,测试程序只是按照运行机制执行。手工测试可以直接判断结果的正确性,而自动化测试在许多情况下测试结果还需要人工干预判断。手工测试可以处理意外事件,如网络连接中断,此时必须重新建立连接,手工测试时可以及时处理该意外,而自动化测试时意外事件一般会导致测试的

中止。

(5)自动化测试实施的难度较大。首先,商用测试执行工具是较庞大且复杂的产品,要求具有一定的技术知识,才能很好地利用工具。除工具本身的技术问题外,用户也要了解被测试软件的技术问题。如果软件在设计和实现时没有考虑可测性,则测试时自动化测试难度会非常大。如果使用工具测试这样的软件,无疑更增加测试的难度。其次,还必须有管理支持及组织艺术。最后,还要考虑管理者是否能够重视,是否能成立这样的测试团队,是否有这样的技术水平。另外,测试脚本的维护工作量也是很大的,要考虑是否值得维护等问题。

(6)测试工具与其他软件的互操作性。测试工具与其他软件的互操作性也是一个严重的问题,技术环境变化如此之快,使得厂商很难跟上。许多工具看似理想,但在某些环境中却并非如此。

总的说来,软件自动化测试的优点和收益是显而易见的,但同时它也并非万能,只有对其进行合理的设计和正确的实施才能从中获益。10.1.2自动化测试的使用领域

人们一般认为新技术可以解决面临的所有问题,但任何一项技术都不是万能的,自动化测试也不例外。在具体实施自动化测试的时候,总是会出现这样或那样的问题,严重影响自动化测试的效率,造成事倍功半甚至前功尽弃的后果,使自动化测试成了一副空架子。自动化测试与其他技术一样,也有适合使用和不适合使用的情况。

1.适合自动化测试的情况

下面是一些适合使用自动化测试的情况。

1)产品型项目

对于产品型项目,每个项目只需改进少量的功能,但每个项目必须反反复复地测试那些没有改动过的功能。这部分测试完全可以由自动化测试来承担,同时可以把新加入的功能的测试也慢慢地加入到自动化测试当中。

2)增量式开发、持续集成项目

由于这种开发模式是对频繁地发布新版本进行测试,也就需要自动化测试来频繁地测试,以便把人从重复性工作中解脱出来测试新的功能。

3)回归测试

回归测试是自动化测试的强项,它能够很好地确保是否引入了新的缺陷,老的缺陷是否修改过来了。尤其是在软件经常进行版本更新的环境中。当新版本测试时,只需要几分钟时间启动已有的测试用例即可自动完成对新版本的回归测试。在某种程度上可以把自动化测试工具叫做回归测试工具。

4)多次重复、机械性动作的测试

自动化测试的优势更好地体现在那些包含有多次重复、机械性动作的测试。比如要向系统输入大量的相似数据来测试压力和报表,自动化工具比手工输入准确性高,还可以将测试人员从重复性劳动中解脱出来,将精力专注于如何设计好的测试用例。

5)手工测试很难达到或无法完成的测试

使用手工执行大规模的多用户并发测试是很难实现的,但是使用自动测试工具模拟多用户就是很容易的事情了,用户场景测试随时都可以运行,测试执行人员不需要了解应用程序的复杂业务逻辑。

手工测试时,期望的输出通常包含明显的标志,可以让测试人员识别。但是,有很多属性是很难由人工来确认的。例如:图形界面测试中,界面操作经常会触发一些事件,但是并没有立刻输出结果。在这种情况下,测试工具可以检测到事件被触发,并执行相应的操作。

2.不适合自动化测试的情况

自动化测试并不是适合所有的公司或所有的项目。下列情况不适宜进行自动测试。

1)定制型项目(一次性的)

为客户定制的项目,维护期由客户方承担的,甚至采用的开发语言、运行环境也是客户特别要求的,即公司在这方面的测试积累就少,这样的项目不适合作自动化测试。

2)周期短的项目

项目周期很短,测试周期也很短,就不值得花精力去投资自动化测试。好不容易建立起的测试脚本,不能得到重复的利用是很浪费财力和人力的。

3)业务规则复杂的对象

业务规则复杂的对象,有很多的逻辑关系、运算关系,工具就很难测试。

4)美观、声音、易用性测试

界面的美观、声音的体验、易用性的测试等属于主观方面的,而不是客观的,而且这些测试结果很容易通过人员验证,而对于自动化测试来说又比较难以实现。所以这方面的测试只能由人来完成。

5)测试很少运行

测试很少运行,对自动化测试就是一种浪费。自动化测试就是让它不厌其烦地、反反复复地运行才有效率。

6)软件更改比较频繁

如果软件的用户界面和功能频繁更改,那么修改自动化测试的成本比较大,因此不适合自动化测试。另外,如果软件运行不稳定,则会由于这些不稳定因素导致自动化测试的

失败。

7)测试中涉及物理交互

测试工具很难完成与物理设备的交互。例如断开设备的连接,开/关电源等。

正确使用自动化测试技术可以提高测试效率和测试质量,但很多引入自动化测试工具的软件公司并没有能够让测试自动化发挥应有的作用,其主要原因有以下几个方面:

(1)不正确的观念或不现实的期望。没有建立一个正确的软件测试自动化的观念,或操之过急,认为测试自动化可以代替手工测试,或认为测试自动化可以发现大量新缺陷,或不够重视而不愿在初期投入比较大的开支等。多数情况下,对软件测试自动化存在过于乐观的态度、过高的期望,人们都期望通过自动化的方案能解决遇到的所有问题。而同时测试工具的软件厂商自然会强调其测试工具的优势、有利的或成功的一面,可能对要取得这种成功所要做出持久不懈的努力和困难却只字不提,导致最初的期望得不到实现。

(2)缺乏具有良好素质和经验的测试人才。有些软件公司舍得花几十万元去买测试工具软件,但缺乏具有良好素质和经验的测试人才。软件测试自动化并不是简简单单地使用测试工具,还需要有良好的测试流程、全面的测试用例等来配合脚本的编写,这就要求测试人员不仅熟悉产品的特性和应用领域、熟悉测试流程,而且能很好地掌握测试技术和编程技术,具有丰富的测试经验。

(3)没有进行有效的、充分的培训。测试工具的使用者必须对测试工具非常了解,在这方面,有效的培训是必不可少的。如果没有良好的、有效的、充分的培训,测试人员对测试工具了解缺乏深度和广度,就会导致其使用效率低下,应用结果不理想。而且,在实际的使用测试工具的过程中,测试工具的使用者可能还存在着这样那样的问题,这也需要有专人负责解决。

(4)没有考虑到公司的实际情况,盲目引入测试工具。有一点很明确,不同的测试工具面向不同的测试目的,不同的测试工具具有各自的特点和适用范围,所以不是任何一个优秀的测试工具都能适应不同公司的需求。有些公司怀着美好的愿望花了不小的代价引入测试工具,半年或一年以后,测试工具却成了摆设。究其原因,就是没有能够考虑公司的现实情况,不切实际地期望测试工具能够改变公司的现状,从而导致了失败。例如,国内多数软件公司是针对最终用户进行项目开发工程性质的软件,而不是产品开发。项目开发周期短,不同的用户需求不一样,而且在整个开发过程中需求和用户界面变动较大,这种情况下就不适合引入黑盒测试工具。因为黑盒测试工具的基本方法是录制/回放,对于不停变化的需求和界面,可能录制脚本和修改脚本的工作量大大超过测试实施的工作量,运用测试工具不但不能减轻工作量,反而加重了测试人员的负担。这种情况下可以考虑引入白盒测试工具,以提升代码质量。

(5)没有形成一个良好的使用测试工具的环境。建立良好的测试工具应用环境,需要测试流程和管理机制做相应的变化,也只有这样,测试工具才能真正发挥其作用。例如,对基于GUI录制/回放的自动化测试来说,产品界面的改变对脚本的正常运行影响较大。再者,白盒测试工具一般在单元测试阶段使用,而单元测试在多数公司是由开发人员自己完成的,如果没有流程来规范开发人员的行为,在项目进度压力比较大的情况下,开发人员很可能就会有意识地不使用测试工具,来逃避问题。所以,有必要将测试工具的使用在开发和测试的流程中明确出来。

(6)其他技术问题和组织问题。软件测试自动化所需要的测试脚本其维护量很大,而且软件产品本身代码的改变也需要遵守一定的规则,从而保证良好的测试脚本使用重复性,也就是说测试自动化和软件产品本身不能分离。其次,提供软件测试工具的第三方厂商,对客户的应用缺乏足够理解,很难提供强有力的技术支持和具体问题的解决能力。也就是说,软件测试工具和被测试对象(软件产品或系统)的互操作性会存在或多或少的问题,加之技术环境的不断变化,所有这些对测试自动化的应用推广和深入,都会带来很大的影响。还有安全性的错觉,即如果软件测试工具没有发现被测软件的缺陷,并不能说明软件中不存在问题,可能是测试工具本身不够全面或测试的预期结果设置不对。 10.2自动化测试技术

1.代码分析

代码分析类似于高级编译系统,一般针对不同的高级语言去构造分析工具。在工具中定义类、对象、函数、变量、运算等定义规则、语法规则;在分析时对代码进行语法扫描,找出不符合编码规范的地方;根据某种质量模型评价代码质量,生成系统的调用关系图等。为了更好地进行代码分析,可以在代码中设置一些“断点”,在这些断点和其他地方插入一些监测代码,存于构造的可执行文件中,随时了解这些关键点/关键时刻的某个变量的值、内存/堆栈状态等。

2.录制和回放

代码分析是一种白盒测试的自动化方法,录制(Record)和回放(Playback)则是一种黑盒测试的自动化方法。录制是将用户的每一步操作都记录下来。这种记录的方式是:把程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或属性变化记录下来,然后将所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。

回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较以判断测试是否成功。通过这种方式,可以大大减轻测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。除了在功能测试中用“录制—回放”技术外,目前自动化负载测试解决方案几乎都要采用这种技术。负载测试中的“录制—回放”是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序。然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样,通过几台机器就可以模拟出成百上千的用户对应用系统进行负载能力的测试。

3.脚本技术

脚本(Script)作为一种特殊的计算机程序,包括数据和指令。指令作为控制信息来操作软件中的对象,数据则主要是被操作对象属性的值。脚本技术是围绕脚本程序结构而进行的设计,它可以实现测试用例所要求的输入、步骤和验证点,在创建脚本和维护脚本的两个不同成本中平衡,以获得测试自动化的最大收益。

脚本可以通过录制用户对被测试软件的操作产生,也可以直接用脚本语言编写脚本。测试脚本按照实现方式和技术可以分为线性脚本、结构化脚本、共享脚本、数据驱动脚本和关键字驱动脚本。

1)线性脚本

线性脚本是录制手工执行的测试用例得到的脚本,这种脚本包含所有手工测试的操作步骤,如点击鼠标键、功能键、箭头、控制测试软件的控制键及输入数据等等。如果只使用线性脚本技术,即录制每个测试用例的全部内容,相当于通过自动化测试工具去模拟手工测试步骤,则被录制的这些测试用例可以被完整地回放。然而实际情况往往是,由于测试环境的稍许改变甚至仅仅是程序界面的小小变动,会使整段测试脚本完全不能运行。因此线性脚本在实际应用中已经很少使用。

2)结构化脚本

结构化脚本是比线性脚本更加灵活的一种脚本技术,它在线性脚本的基础上增加了一些相应的选择条件。结构化脚本类似于结构化程序设计,具有各种逻辑结构(顺序、分支、循环),而且具有函数调用功能,使得脚本变得结构化。这样不仅可以提高脚本的可复用性,而且可以增加脚本的功能和灵活性。在结构化脚本中,充分利用不同的结构控制语句,可以开发出易于维护的合理脚本,更好地支持自动化测试集的实现。结构化脚本的主要优点是其健壮性比较好。由于引入了一些条件判断语句,可以很容易在脚本内加入一些错误处理功能,降低了脚本对被测系统的依赖性。同时,由于加入了循环结构,可以使脚本重复执行一些操作,使下一步的数据驱动脚本技术变得可能。结构化脚本的函数调用技术使得脚本可以成为一个模块被其他脚本调用。

结构化脚本的缺点是脚本更复杂,而且测试数据仍然“捆绑”在脚本中,使得测试修改和定制非常复杂困难。

3)共享脚本

共享脚本意味着一个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本,这样可以节省生成脚本的时间。当重复任务发生变化时,只需修改其中的某个脚本。共享脚本可以是在同一主机、同一系统之间共享脚本,也可以是在不同主机、不同系统之间共享脚本。共享脚本开发的思路是产生一个执行某个任务的脚本,不同的测试可能要重复这个任务,当要执行这个任务时只要在适当的地方调用这个脚本就可以了。

共享脚本使得实现类似的测试花费的开销较少,删除了明显的重复代码,使代码更加简洁易懂。但共享脚本的编写需要更高的编程技能,提高了对测试工程师的要求。

4)数据驱动脚本

数据驱动脚本是将测试输入和预期输出存储在独立的数据文件中,而不是与测试操作捆绑在一起放在测试脚本中。测试脚本中仅仅包含了一些与软件界面交互的操作信息,执行测试时,所需的数据直接从文件中读取,而不是从测试脚本中读取,这样就完成了测试数据和测试操作的分离。这种方法最大的好处是同一个脚本允许不同的测试。需要对数据进行修改时,也不必修改执行的脚本。使用数据驱动脚本可以以较小的开销实现较多的测试用例,这可以通过为一个测试脚本指定不同的测试数据文件达到。将数据文件单独列出,选择合适的数据格式和形式,可将测试工程师的注意力集中到数据的维护和测试上,达到简化数据、减少出错概率的目的。数据驱动脚本技术给测试用例的数据输入和维护带来了极大的方便。

5)关键字驱动脚本

关键字驱动技术是数据驱动技术的一种改进类型。数据驱动技术的限制是每个测试用例执行的步骤和操作都必须一样,测试的逻辑建立在脚本中而不是独立的数据文件中。而关键字驱动技术将测试的逻辑从脚本中剥离开来,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(Value),用面向对象形式可将其表现为Item.Operation(Value)。关键字驱动脚本技术将被测试软件的业务逻辑从测试脚本中脱离出来,克服了数据驱动技术对业务无法灵活适应的缺点,实现了关键字驱动技术所带来的数据、业务和脚本三者的分离。关键字驱动脚本的数量不随测试用例的数量变化,而仅随软件规模而增加。关键字驱动脚本技术可以极大地减少脚本的维护开销,加速自动化测试的实现,提高自动化测试的效率。

4.自动比较技术

测试验证是检验软件是否产生了正确输出的过程,是通过在测试的实际输出与预期输出(例如,当软件正确执行时的输出)之间完成一次或多次比较来实现的。进行自动化测试工作,自动比较就成为一个必需的环节,有计划地进行比较会比随意地比较有更高的效率和发现问题的能力。

在自动化测试中,预期输出是事先定义的。在测试过程中运行脚本,将捕获的结果和预期的输出进行比较,从而确定测试用例是否通过,这就需要自动比较技术。自动比较的内容可以是多方面的,包括基于磁盘输出的比较,如对数据文件的比较;基于界面输出的比较,如对显示位图的比较;基于多媒体输出的比较,如对声音的比较;还包括其他输出的内容的比较。

比较可以是简单的比较,仅匹配实际输出与预期输出是否完全相同,这是自动化比较的基础。智能比较是允许用已知的差异来比较实际输出和预期输出。比如,要求比较包含日期信息的输出报表的内容。如果使用简单比较,显然是不行的,因为每次生成报表的日期信息肯定是不同的。这时就需要智能比较,忽略日期的差别,比较其他内容,甚至还可以忽略日期的具体内容,比较日期的格式,要求日期按特定格式输出。智能比较需要使用较为复杂的比较手段,包括正则表达式的搜索技术、屏蔽的搜索技术等。

5.虚拟用户技术

将业务流程转化为测试脚本,就是创建虚拟用户脚本或虚拟用户。创建虚拟用户时,将被测软件的业务流程从头至尾进行确认和记录,弄清每步操作的细节和时间,并能精确地转化为脚本。此过程类似制造一个能够模仿人的行为和动作的机器人的过程。这个步骤非常重要,在这里将现实世界中的单个用户行为比较精确地转化为计算机程序语言。虚拟用户通过驱动一个真正的客户程序来模拟真实用户。一般通过多进程或多线程来创建多个虚拟用户。

虚拟用户对于性能测试意义重大。一些负载测试工具可用较少的硬件资源模拟成千上万虚拟用户同时访问被测软件,并可模拟来自不同IP地址、不同浏览器类型以及不同网络连接方式的请求,同时可实时监视系统性能指标。

10.3自动化测试工具

10.3.1测试工具分类

测试工具可以从不同的方面去分类。根据测试方法不同,自动化测试工具可以分为白盒测试工具和黑盒测试工具。根据测试的对象和目的不同,自动化测试工具可以分为单元测试工具、功能测试工具、负载测试工具、数据库测试工具、嵌入式测试工具、页面链接测试工具、测试管理工具等。

1.白盒测试工具

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

静态测试工具是在不执行程序的情况下,分析软件的特性。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。

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

2.黑盒测试工具

黑盒测试工具是在明确软件产品应具有的功能的条件下,完全不考虑被测程序的内部结构和内部特性,通过测试来检验软件功能是否按照软件需求规格的说明正常工作。

黑盒测试工具的一般原理是利用脚本的录制/回放,模拟用户的操作,然后将被测系统的输出记录下来同预先给定的预期结果进行比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。按照完成的职能不同,黑盒测试工具可以分为两种:

(1)功能测试工具——用于检测程序能否达到预期的功能要求并正常运行。

(2)性能测试工具——用于确定软件和系统的性能。

功能测试工具通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结果比较,功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版本的功能进行测试,提高测试人员的工作效率和质量。其主要目的是检测应用程序是否能够达到预期的功能并正常运行。性能测试工具通常指用来支持压力、负载测试,能够录制和生成脚本、设置和部署场景、产生并发用户和向系统施加持续压力的工具。性能测试工具通过实时性能监测来确认和查找问题,并针对所发现问题对系统性能进行优化,确保应用的成功部署。性能测试工具能够对整个企业架构进行测试,通过这些测试企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。

3.测试管理工具

一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,而且测试管理工具还包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的IT人员通过一个中央数据仓库,在不同地方就能交互信息。

一般情况下,测试管理工具应包括以下内容:

(1)测试用例管理。

(2)缺陷跟踪管理(问题跟踪管理)。

(3)配置管理。

4.专用测试工具

除了上述的自动化测试工具外,还有一些专用的自动化测试工具,例如,针对数据库测试的TestBytes,对Web系统中的链接进行测试的XenuLinkSleuth等工具。10.3.2测试工具介绍

1.白盒测试工具

1) C++Test

C++Test是Parasoft公司出品的一个针对C/C++源代码进行自动化单元测试的工具。它可以自动测试任何C/C++函数、类或部件,而不需要编写测试用例、测试驱动程序或桩调用代码。C++Test能够自动测试代码构造(白盒测试)、测试代码的功能性(黑盒测试)和维护代码的完整性(回归测试)。

白盒测试时,C++Test对C/C++源代码进行分析,针对所有的类的成员函数(包括:公共的、保护的以及私有类型的)进行测试。在此状态下,软件针对指定的文件、类或者是函数自动生成测试用例。黑盒测试时,不对源代码进行分析,并且只针对类的公共接口函数进行测试。在此状态下,软件不生成测试用例,而是直接运行在“测试用例编辑器”中已有的测试用例(可以是手工添加的)。

回归功能测试时,在修改源代码后用原有的测试用例进行重新测试。在实际使用中,应首先用Record命令执行一遍白盒测试,让软件根据函数自动生成相应的测试用例,然后再根据需要手工添加一些测试用例,最后再通过Play命令执行一遍黑盒测试。

C++Test能很容易地快速将单元级的测试覆盖率达到100%,而且可自动生成覆盖率报告。

参考网站:/jsp/home.jsp

2) Jtest

Jtest是Parasoft公司推出的一款针对Java语言的自动化白盒测试工具,它通过自动实现Java的单元测试和代码标准校验,来提高代码的可靠性。

Jtest是一个高度自动化、智能化的测试解决方案,它可以直接读取、分析代码,无需任何手工的干预就可以自动地完成单元测试,包括全自动的白盒测试、黑盒测试和回归

测试。测试时,Jtest先分析每个Java类,然后自动生成JUnit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以dbc(designbycontract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成器来添加更多的JUnit用例。Jtest还能按照现有的编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。

参考网站:/jsp/home.jsp

3) CodeWizard

在增强软件质量的同时缩短开发时间的关键是在开发的初始阶段要防止错误的发生,防止错误的一个最好的方法就是按代码开发规范进行。CodeWizard是Parasoft公司推出的一款先进的自动化C/C++源代码分析工具。CodeWizard内嵌了超过500个经过业界验证的编码规范来自动甄别编译器无法发现的危险代码结构,并通过AEP自动防错技术记忆错误类型,防止类似错误再次发生。CodeWizard通过RuleWizard功能可以很方便地建立新的、自定义的规范,或者阻止某条规范的分析。使用CodeWizard可简化代码注释,同时使得代码更易读易维护。

参考网站:/jsp/home.jsp

4) JUnit

JUnit是一个开源的Java测试框架,它是XUint测试体系架构的一种实现。在JUnit单元测试框架的设计时,设定了三个总体目标:第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试来编写相关的测试。

JUnit是通用的测试Java程序的测试框架,可以对Java代码进行白盒测试。由于JUnit相对独立于所编写的代码,所以测试代码的编写可以先于实现代码的编写。XP中推崇的testfirstdesign的实现有了现成的手段:用JUnit写测试代码,运行测试,测试失败,修改实现代码,再运行测试,直到测试成功。以后对代码的修改和优化,运行测试成功,则修改成功。

JUnit可对Java应用程序、Filter、Servlet、EJB、JSP、数据库应用程序、Taglib等进行单元测试,而且JUnit是开放源代码的,可按需要进行扩展。

5) CppUnit

CppUnit是一个基于LGPL的开源项目,最初版本移植自JUnit,是一个非常优秀的开源测试框架。CppUnit和JUnit一样,主要思想来源于极限编程(XProgramming)。主要功能就是对单元测试进行管理,并可进行自动化测试。CppUnit设计遵循很多设计模式,代码结构易于理解。

CppUnit是一个单元测试框架,是目前最广泛使用的单元测试框架之一。单元测试框架是实现编写、运行单元测试并生成测试结果报告的软件程序集。CppUnit能方便快速构造测试用例,可视化运行测试、生成测试结果报告,并提供与IDE集成的快速缺陷定位功能。

参考网站:

6) HttpUnit

HttpUnit是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。

HttpUnit能模拟浏览器的动作,如提交表单、JavaScript运行、基本HTTP认证、Cookies建立以及自动页面重定向,通过编写代码可以处理取回来的文本、XML、DOM、表单、表、链接等。HttpUnit还提供了一个模拟Servlet容器,让测试者不需要发布Servlet就可以对Servlet的内部代码进行测试。当进行Servlet等测试时,可以不需要启动相关的Web或应用服务器,HttpUnit可以通过读取并分析Web.xml来自动定位相应的类。也就是说,在网站开发的过程中,使用了HttpUnit的测试程序可以在服务器端进行网站的测试。

7) HtmlUnit

HtmlUnit不是一个通用的单元测试框架,它是JUnit的一个扩展测试框架。HtmlUnit以一种特殊的方式来模拟浏览器进行测试的目的,用于另一个测试框架中。HtmlUnit将返回文档模拟成HTML,这样便可以直接处理这些文档了。HtmlUnit使用table、form等标识符将测试文档作为HTML来处理。HtmlUnit同样需要遵循JUnit测试框架结构的Java™测试程序。

参考网站:

8) EMMA

EMMA是一个用于检测和报告Java代码覆盖率的开源工具。它不但能很好地用于小型项目,很方便得出覆盖率报告,而且适用于大型企业级别的项目。

EMMA支持许多种级别的覆盖率指标:包、类、方法、语句块和行,特别是它能测出某一行是否只是被部分覆盖(如条件语句短路的情况)。EMMA能生成TEXT、XML、HTML等形式的报告,以满足不同的需求。其HTML报告提供下钻功能,我们能够从package开始一步步地链接到我们所关注的某个方法。EMMA能和Makefile、Ant集成,便于应用于大型项目。EMMA的效率很高,这对于大型项目来说很重要。

EMMA是通过向.class文件中插入字节码的方式来跟踪记录被运行代码信息的。EMMA支持两种模式:Onthefly和Offline模式。Onthefly模式往加载的类中加入字节码,相当于用EMMA实现的applicationclassloader替代原来的applicationclassloader。Offline模式在类被加载前加入字节码。

EMMA支持两种运行方式:Commandline(命令行)和Ant。命令行一般和Onthefly模式一起使用,对于简单的项目能够快速产生覆盖率报告。通过Anttask来运行EMMA的话,特别适用于大型的项目。

参考网站:/

9) Cobertura

Cobertura(cobertura在西班牙语中是覆盖的意思)是一个基于jcoverage的免费Java工具,用于度量测试覆盖率并发现缺陷。它通过用额外的语句记录在执行测试包时,哪些行被测试到、哪些行没有被测试到,来测量测试覆盖率。然后它生成一个HTML或者XML格式的报告,指出代码中的哪些包、哪些类、哪些方法和哪些行没有测试到,之后可以针对这些特定的区域编写更多的测试代码,以发现所有隐藏的缺陷。除了找出未测试到的代码并发现缺陷外,Cobertura还可以通过标记无用的、执行不到的代码来优化代码,并能提供API实际操作的内部信息。

参考网站:/

2.黑盒功能测试工具

1) WinRunner

HP-MercuryWinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动捕获,检测和重复用户交互的操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。

WinRunner具有下列功能和特点:

(1) 轻松创建测试。用WinRunner创立一个测试,只需记录一个标准的业务流程。WinRunner直观的记录流程能让测试者在GUI上轻轻点击鼠标就可以建立测试,即使技术知识有限的用户也能生成完整的测试。测试者还可以直接编辑测试指令来满足各种复杂测试的需求。WinRunner将两种测试创建方式结合在一个环境下,以适应不同的背景支持和不同团队的需求。

(2)插入检测点。在记录一个测试的过程中,可插入检测点。在插入检测点后,WinRunner会收集一套指标,在测试运行时对其进行验证。WinRunner允许使用几种不同类型的检查点,包括文本、GUI、位图和数据库等类型。

(3)检验数据。除了创建并运行测试,WinRunner还能验证数据库的数据值,从而确保交易的准确性。例如,在测试创建时,可以设定哪些数据库表格和记录资料需要检测。在回放时,测试程序会将数据库内的实际数值与预期的数值进行核对。WinRunner能自动显示检测结果,并标识出有更新、修改、测试或插入的记录。

(4)增强测试。为了全面地测试一个应用程序,需要了解在不同类型的数据下是如何运行的。使用WinRunner的DataDriverWizard,只需要点击几下鼠标,就能简单地将一个记录的业务流程转化为一个数据驱动的测试,以此来反映多个用户各自独特且真实的操作行为。WinRunner的另一个能加强测试质量的特征是具有FunctionGenerator,它是一种可视工具,能快速可靠地测试增加功能。使用FunctionGenerator,可以从目录列表里选择一个功能加到测试中以提高测试能力。

(5)运行测试。在测试创建完成、插入检查点,并做出一些必要的功能添加之后,就可以开始运行测试。当WinRunner执行测试时,它会自动操作应用程序,正如一个真实用户根据记录流程执行着每一步的操作。

(6)分析结果。一旦测试运行后,需要分析测试结果。WinRunner的互动式报告工具会列出在测试中发现的错误和出错的位置。通过提供这种详尽的、易懂的报告,WinRunner可以帮助解释所得的结果,这些报告对在测试运行中发生的重要事件进行描述。

(7)维护测试。随着时间的推移,开发人员会对应用程序做进一步的修改,并需要另加额外的测试。使用WinRunner,不必为应用程序的每一次改动创建新的测试,它会自动创立在程序应用周期内可重复使用的测试。

Winrunner用类C语言开发,编程能力强,但对浏览器、ActiveX控件的支持不如QuickTest强。

参考网站:

2) QuickTest

HP-MercuryQuickTest是一个自动化功能测试工具,主要应用在回归测试中。QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。

QuickTest采用关键字驱动的测试理念,能完全简化测试的创建和维护工作,能便捷地插入、修改、数据驱动和移除测试步骤,并且通过所集成的录制能力来捕获测试的步骤,自动生成VBScript来描述测试过程。因此可以通过修改生成的自动化测试脚本优化测试过程。QuickTest通过活动屏幕将文档和一个截屏相结合,还可以自动引入检查点来验证应用的属性和功能点,比如确认输出量或检查链接的有效性。

QuickTest支持多种企业环境的功能测试,包括Windows、Web、.NET、Java/J2EE、SAP、Siebel、Oracle、VisualBasic、ActiveX、Webservices等。

使用QuickTest进行测试,包括创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等活动。

参考网站:

3) Robot

IBMRationalRobot是业界最顶尖的功能测试工具,可以对使用各种集成开发环境(IDE)和语言建立的软件应用程序创建、修改并执行自动化的功能测试、分布式功能测试、回归测试和集成测试。

Robot是一种可扩展的、灵活的功能测试工具,经验丰富的测试人员可以用它来修改测试脚本,改进测试的深度。Robot使用SQABasic语言对测试脚本进行编辑。SQABasic遵循VisualBasic的语法规则,并且为测试人员提供了易于阅读的脚本语言。通过使用这种语言,即便是编程经验很少的测试人员也能够很容易地理解代码的含义。对于那些有丰富编程经验的人来说,使用SQA可以非常灵活地进行一些高级的编程。

Robot提供了非常灵活的执行测试脚本的方式,用户可以通过Robot图形界面和命令行执行测试脚本,也可以从RationalTestManager按照不同的配置计划在远程机器上执行测试脚本。

参考网站:

4) SilkTest

Segue公司的SilkTest是业界领先的、用于对企业级应用进行功能测试的产品,可用于测试Web、Java或是传统的C/S结构。它提供了用于测试的创建和定制的工作流设置、测试计划和管理、直接的数据库访问及校验等功能,使用户能够高效率地进行软件自动化测试。

为提高测试效率,SilkTest提供多种手段来提高测试的自动化程度,包括测试脚本的生成、测试数据的组织、测试过程的自动化、测试结果的分析等。在测试脚本的生成过程中,SilkTest通过动态录制技术,录制用户的操作过程,快速生成测试脚本。在测试过程中,SilkTest还提供了独有的恢复系统(RecoverySystem),允许测试可在全天候无人看管条件下运行。在测试过程中一些错误导致被测应用崩溃时,错误可被发现并记录下来。之后,被测应用可以被恢复到它原来的基本状态,以便进行下一个测试用例的测试。

参考网站:

5) QARun

QARun的测试实现方式是通过鼠标移动、键盘点击操作被测应用,随即得到相应的测试脚本,对该脚本可以进行编辑和调试。在记录的过程中可针对被测应用中所包含的功能点进行基线值的建立,换句话说就是在插入检查点的同时建立期望值。在这里检查点是目标系统的一个特殊方面在一特定点的期望状态。通常,检查点在QARun提示目标系统执行一系列事件之后被执行。检查点用于确定实际结果与期望结果是否相同。

3.性能测试工具

1) LoadRunner

HP-MercuryLoadRunner是一种预测系统行为和性能的负载测试工具。通过以模拟成千上万的用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。

LoadRunner适用于各种体系架构,能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,通过模拟实际用户的操作行为和实行实时性能监测,来更快地查找和发现问题。此外,LoadRunner能支持广泛的协议和技术,为特殊环境提供特殊的解决方案。通过使用LoadRunner,企业能最大限度地缩短测试时间、优化性能和加速应用系统的发布周期。

LoadRunner具有下列功能和特点:

(1)轻松创建虚拟用户。 LoadRunner的虚拟用户产生器(VirtualUserGenerator)能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。利用虚拟用户,可以在Windows、UNIX或Linux机器上同时产生成千上万个用户访问,极大地减少负载测试所需的硬件和人力资源。

(2)创建真实的负载。脚本录制好后,根据测试的不同业务,创建不同的业务组合,设定不同的虚拟用户数量,来模拟不同的真实负载场景。LoadRunner的Controller能很快组织起多用户的测试方案。Controller提供了一个互动的环境,在其中既能建立起持续且循环的负载,又能管理和驱动负载测试方案。Controller中的负载可以来自同一台负载发生器,也可以来自不同的负载发生器。

(3)实时监测器。LoadRunner内含集成的实时监测器,在负载测试过程的任何时候,可以观察到应用系统的运行性能。这些性能监测器实时显示性能数据和其他系统组件,包括应用服务器、Web服务器、网路设备和数据库等的实时性能。这样可以在测试过程中从客户和服务器的双方面评估这些系统组件的运行性能,从而更快地发现问题。

(4)分析结果以精确定位问题所在。一旦测试完毕,LoadRunner收集汇总所有的测试数据,并提供高级的分析和报告工具,通过使用LoadRunner的分析工具,能很快地查找到出错的位置和原因并做出相应的调整。

(5)重复测试保证系统发布的高性能。负载测试是一个重复过程。每次处理完一个出错情况,都需要对应用程序在相同的方案下再进行一次负载测试。以此检验所做的修正是否改善了运行性能。

参考网站:

2) SilkPerformer

SilkPerformer是业界最强大、且最易用的企业级负载和强度测试解决方案,用于对关键任务应用的质量进行优化。SilkPerformer使用可视化脚本生成技术和对存在成千上万的并发用户的多个应用环境进行测试的能力,能够在企业应用部署之前,就对其性能、可靠性和可伸缩性进行彻底的测试,而无需考虑其规模大小和复杂程度。SilkPerformer强大的诊断工具和管理报告能够隔离错误并快速做出决定,从而最大程度缩短测试周期和加快上市速度。

SilkPerformer具有以下功能和特点:

(1)单一控制、分布测试。SilkPerformer可以实现由单点控制的多点部署,同时对部署节点进行监控。

(2)精确模拟真实部署情况。SilkPerformer能够将虚拟用户分成不同组,每组分配在不同机器上,实现空间分布模拟。通过定义每个用户类型可以使用不同的负载分布方式,以精确对应现实的情况。

(3)精确模拟网络连接环境。SilkPerformer模拟的网络基本种类可达30种,如不同速率的Wireless、GPRS、Modem、ADSL、ISDN、LAN等。针对每种类型,还可按照实际情况进行参数设置,操作方便、不需要手工编写测试脚本,即可进行丰富的模拟,尤其适合企业级的应用测试。

(4)精确用户使用浏览器的体验。通过简单、方便的配置,而不需手工编写脚本,即可准确模拟Web浏览器的缓存行为、Cookies管理,从而实现精确地请求Web页面,达到实际用户负载情况的精确模拟,有助于得出精确的测试结果。

(5)完备、丰富的负载类型。SilkPerformer提供了多种虚拟用户负载模拟策略,包括持续增加虚拟用户数、固定虚拟用户数、动态变化的虚拟用户数、全天候虚拟用户数、按照预定时间序列变化的虚拟用户数等多种负载模拟策略。每种模拟策略还可进一步根据实际情况进行各种参数设置,无需编写脚本。

(6)专门的脚本语言和方便快捷的脚本定制。SilkPerformer的BenchmarkDescriptionLanguage(BDL)专为测试目的而设计,并提供轻松强大的方式对用户活动进行控制。

(7)支持负载均衡的Web服务器体系测试。通过前端IP地址的模拟,能够用单台计算机模拟大量的、不同的IP地址,从而实现对负载均衡站点的压力测试。SilkPerformer还支持DNS搜索模拟技术。

(8)丰富的报表功能。基于Web的管理报告不仅易于共享和定制,而且简单易懂。

(9)支持广泛的协议类型。

参考网站:

3) QALoad

Compuware公司的QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。QALoad是QACenter性能版的一部分,它通过可重复的、真实的测试能够彻底地度量应用的性能和可扩展性。

QALoad可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试,并针对所发现问题对系统性能进行优化,确保应用的成功部署,其主要功能包括:

(1)预测系统性能。当应用升级或者新应用部署时,负载测试能帮助确定系统是否能按计划处理用户负载。QALoad并不需要调用最终用户及其设备,就能够仿真数以千计的用户进行商业交易。通过QALoad,用户可以预知业务量接近投产后真实水平时,端对端的响应时间,以便满足投产后的服务水平要求。

(2)寻找瓶颈问题。QALoad录制/回放能力提供了一种可重复的方法来验证负载下的应用性能,可以很容易地模拟数千个用户,并执行和运行测试。利用QALoad反复测试可以充分地测试与容量相关的问题,快速确认性能瓶颈并进行优化和调整。

(3)管理全局负载测试。QALoadConductor工具为定义、管理和执行负载测试提供了一个中心控制点。Conductor通过执行测试脚本,管理大量的虚拟用户。Conductor可以自动识别网络中可进行负载测试的机器,并在这些机器之间自动分布工作量,以避免网段超载。从Conductor自动启动和配置远程用户,可以进行全球负载测试。在测试过程中,Conductor还可以在负载测试期间收集有关性能和时间的统计数据。

(4)验证应用的可扩展性。利用QALoad进行测试时,可以有选择地改变硬件或软件的配置,并改变测试步调和负载量。QALoad系统的NetLoad模块帮助建立所需的额外网络流量来模拟真实的产品负载。借助于“NetLoad”,可以在大环境下分配虚拟用户,更好地规划投产环境中如何让这些应用更好地工作。

(5)快速创建仿真的负载测试。运用QALoad,可以迅速创造出一些实际的安装测试方案,而不需要手工编写脚本或有关应用中间软件的详细知识和协议。对结合了多种传输协议的应用软件进行负载测试是一个巨大的挑战。为了准确仿真这些应用软件产生的流量,QALoad可以捕获多种协议并在同一测试过程中执行它们。另外,这些应用软件常常包含一些在测试方案中必须申明的动态信息。运用QALoad的ActiveData特征,可以定义脚本参数以帮助确保应用测试脚本的成功执行。

参考网站:

4) WebLoad

WebLoad是RadView公司推出的一个性能测试和分析工具,它让Web应用程序开发者自动执行压力测试。WebLoad通过模拟真实用户的操作,生成压力负载来测试Web的性能,用户创建的是基于JavaScript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量Web应用程序在真实环境下的性能。

WebLoad可被用于测试性能和伸缩性,也可被用于正确性验证(验证返回结果的正确性)。其测试脚本是用JavaScript(和集成的COM/Java对象)编写的,并支持多种协议,如Web、SOAP/XML及其他可从脚本调用的协议,如FTP、SMTP等,因而可从所有层面对应用程序进行测试。

WebLoad的面向目标的测试,也称为“巡航控制(CruiseControl)”,是基于Radview开发的一项专利技术。简而言之,测试时需要给WebLoad定义一组目标(目标之间可用逻辑与/或来结合),WebLoad会定期检查这些目标,一但目标达成,用户就会得到通知。用户可以预先决定当目标达成时是停止测试还是继续。

5) JMeter

JMeter是Apache组织的开放源代码项目,是一个100%的纯Java桌面应用,用于压力测试和性能测试。它最初被设计用于Web应用测试,后来扩展到其他测试领域。JMeter可以用于对静态的和动态的资源(文件、Servlet、Perl脚本、Java

对象、数据库和查询、FTP服务器等)的性能进行测试。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试它们提供服务的受压能力,或者分析它们提供的服务在不同负载条件下的总性能情况。可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器的行为。另外,JMeter能够对应用程序做回归测试,通过创建带有断言的脚本来验证程序返回的期望结果。为了最大限度提高灵活性,JMeter允许使用正则表达式创建断言。

JMeter的特性包括:

(1)能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。

(2)完全的可移植性和100%纯Java。

(3)完全Swing和轻量组件支持包(预编译的JAR使用javax.swing.*)。

(4)完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。

(5)精心的GUI设计允许快速操作和更精确地记录性能指标。

(6)缓存和离线分析/回放测试结果。

(7)高可扩展性。相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下 .jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。

参考网站:/jmeter/index.html

6) OpenSTA

OpenSTA是专用于B/S结构的、免费的性能测试工具。它的优点除了免费、源代码开放的优点外,还能对录制的测试脚本按指定的语法进行编辑。测试工程师在录制完测试脚本后,只需要了解该脚本语言的特定语法知识,就可以对测试脚本进行编辑,以便于再次执行性能测试时获得所需要的参数,然后进行特定的性能指标分析。OpenSTA以最简单的方式让大家对性能测试的原理有较深的了解,其较为丰富的图形化测试结果大大提高了测试报告的可阅读性。

OpenSTA是基于CommonObjectRequestBrokerArchitecture(CORBA)的结构体系。它通过虚拟一个代理(proxy),使用其专用的脚本控制语言,记录通过proxy的一切HTTP/Straffic。测试工程师通过分析OpenSTA的性能指标收集器收集的各项性能指标,以及HTTP数据,对被测试系统的性能进行分析。

参考网站:

7) WAS

WebApplicationStressTool(WAS,Web应用负载测试工具)是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。WAS要求WindowsNT4.0SP4或者更高,或者Windows2000。为了对网站进行负载测试,WAS可以通过一台或者多台客户机模拟大量用户的活动。WAS支持身份验证、加密和Cookies,也能够模拟各种浏览器类型和Modem速度,它的功能和性能可以与数万美元的产品相媲美。要对网站进行负载测试首先必须创建WAS脚本模拟用户活动。可以用下面四种方法之一创建脚本:

(1)通过记录浏览器的活动创建。

(2)通过导入IIS日志创建。

(3)通过把WAS指向Web网站的内容创建。

(4)手工制作。

准备好测试脚本之后,可以调整测试配置以便观察不同条件下的应用性能,获取性能测试数据。

4.测试管理工具

1) QualityCenter(TestDirector)

HP-MercuryQualityCenter提供了基于Web的系统,可在广泛的应用环境下自动执行软件质量测试和管理。仪表盘技术可以了解验证功能和将业务流程自动化,并确定生产中阻碍业务成果的瓶颈。HP-MercuryQualityCenter使IT团队能够在开发流程完成前就参与应用程序测试。这样将缩短发布时间表,同时确保最高水平的质量。利用HP-MercuryQualityCenter,可以实现下列功能:

(1)制定可靠的部署决策。

(2)管理整个质量流程并使其标准化。

(3)降低应用程序部署风险。

(4)提高应用程序质量和可用性。

(5)通过手动和自动化功能测试管理应用程序变更影响。

(6)确保战略采购方案中的质量。

(7)存储重要应用程序质量项目数据。

(8)针对功能和性能测试面向服务的基础架构服务。

(9)确保支持所有环境,包括J2EE、.NET、Oracle和SAP。

2) ClearQuest

RationalClearQuest是一种对缺陷和记录的变化进行跟踪管理的工具。它体现了一个缺陷的完整的生命周期,从提交到关闭,记录了缺陷所有的改变历史,同时ClearQuest提供了各种查询功能,及时反映了缺陷的处理情况。

ClearQuest的基本功能如下:

(1)提供用户弹性的变更需求管理环境。

(2)用户可根据开发工作流程和变更需求周期,通过图示工具定义处理流程。

(3)提供预设的变更需求管理流程,用户可直接使用或进行特殊设置。

(4)提供强大的图表功能,用户可深入分析开发现状。

(5)有浏览器界面,可让远端的用户进行访问。

(6)与业界标准的数据库和报表生成器集成。

(7)与Rational的软件管理工具ClearCase完全集成,让用户充分掌握变更需求情况。

(8)支持数据库MSACCESS和SQLSERVER6.5。

(9)优异的系统扩展性,提供将数据从ACCESS转移到SQLSERVER的功能。

ClearQuest具有下列优点:

(1)简化变更管理。ClearQuest特别针对动态的、不断更新的软件开发工作,提供最佳的变更需求管理解决方案。运用它可以方便地跟踪、管理相关的变更需求,充分掌握变更的现状,用户也可按不同需要调节它的操作模式,让变更需求管理能顺利在开发团队内推动和实施。

(2)提高工作效率。项目管理者能随时跟踪并掌握变更需求的处理情况;程序员可以集中精力于程序编写,节省变更需求寻求确认的时间;测试员则能充分了解每一个变更需求的来龙去脉;而系统管理员会发现ClearQuest不但容易安装、调试而且可以与其他工具集成运用;如果有远程用户,还可以通过浏览器界面访问ClearQuest。

(3)顺畅的自动化工作流程。ClearQuest中不同类型的变更需求(错误修正、功能增强或文件更新等),都可规范特定的工作流程和处理周期。用户可以直接运用ClearQuest预设的变更需求管理流程,或是利用它提供的管理工具自定义符合需要的变更需求管理流程。

(4)了解快速更新的软件。ClearQuest按照趋势、时间及分布等角度描绘出清晰易懂的图表,让开发人员充分掌握项目进展情况。无论是利用预设的或是自定义的图表及查询功能,它们都可以并入功能菜单,方便操作。

参考网站:

3) TestManager

IBMRationalTestManager是针对测试活动管理、执行和报告的中央控制台,在整个项目生命周期中提供流程自动化、测试管理以及缺陷和变更跟踪功能。该工具支持的测试范围从纯人工测试方法到各种自动化范型(包括单元测试、功能回归测试和性能测试),同时支持本地和远程测试的执行。

TestManager可以由项目团队的所有成员访问,确保测试覆盖信息、缺陷和应用程序准备状

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论