|
知识路径: > 测试技术的分类 > 应用负载压力测试 > 负载压力测试概述 >
|
考试要求:掌握
相关知识点:19个
|
|
|
|
负载压力测试可以采取利用手工进行测试和利用自动化负载压力测试工具进行测试两种测试策略。
|
|
|
大多数工程师掌握手工测试技巧,比如,可以手工模拟负载压力,方法是找若干台电脑和同样数目的操作人员,在同一时刻进行操作,然后用秒表记录下响应时间,这样的手工测试方法可以大致反映系统所能承受的负载压力情况。但是,这种方法需要大量的人员和机器设备,而且测试人员的同步问题无法解决,更无法捕捉程序内部的变化情况。利用自动化负载压力测试工具进行测试可以很好地解决这些问题。利用自动化负载压力测试工具可以在一台或几台PC机上,模拟成百或上千的虚拟用户同时执行业务的情景,通过可重复的、真实的测试能够彻底地度量应用的性能,确定问题所在。
|
|
|
可见,负载压力测试的发展趋势是,利用自动化的测试工具进行测试,当然在没有工具的情况下,我们也可以通过手工测试对系统承受负载压力情况做一个近似的评估。下面重点介绍一下利用自动化测试工具进行负载压力测试的策略,分别是利用商业化测试工具进行测试、利用开放资源测试工具进行测试和自主开发工具进行测试。
|
|
|
|
利用商业化的自动化测试工具是进行负载压力测试的主要手段,知名的商业化的测试工具,比如LoadRunner、QALoad等,适用范围非常广,一般都经过了长时间的市场检验,测试效果得到业界的普遍认可,测试结果具有一定的可比性,并且厂商一般都能提供很好的技术支持,其版本的升级也会得到保证。但是商业化的自动化测试工具一般价格较高,如果考虑价格因素,那么利用开放资源工具进行测试也是一个不错的策略。
|
|
|
|
开放资源被定义为用户不侵犯任何专利权和著作权,以及无需通过专利使用权转让,就可以获取、检测、更改的软件源代码,这意味着任何人都有权访问、修改、改进或重新分配源代码。开放资源的理念是,当人们在已存在的工具上共同开发时,最终产品会更加先进。简而言之,很多企业和个体都会从中获益。开放资源的最大优点是测试工具是免费的。
|
|
|
|
最流行的几个开放资源性能测试工具是:开放系统测试体系OpenSTA、TestMaker和JMeter。这些工具中的每一个都能提供完成负载压力测试所需的功能,现存的多种开放资源测试工具都是可获得的。下面列举几个例子。
|
|
|
①开放系统测试体系——OpenSTA(http://portal.opensta.org/)。
|
|
|
OpenSTA是Windows平台、分布式的软件测试体系,基于CORBA(Common Object Request Broker Architecture)。OpenSTA能产生数百或数千个虚拟用户,最初用于测试基于Web的应用软件。此工具还为用户响应时间和平台应用软件(包括应用服务器、数据库服务器、Web服务器)的资源占用信息监控提供了图形化标准。
|
|
|
OpenSTA具有一种简单的脚本语言,即脚本控制语言(SCL)。SCL与商业性能测试工具一样,使用户能够创建测试脚本。它能将输入数据参数化,从外部文件读入参数数据。如下图所示是OpenSTA的脚本模型界面。
|
|
|
|
|
②TestMaker(http://www.pushtotest.com/)。
|
|
|
它是一种基于Java的架构,能够创建测试代理,以用于衡量应用软件和Web服务器的性能。TestMaker可以在Windows、Linux和UNIX平台上运行,可以用它创建针对Web应用的测试案例,而不管这些应用是基于J2EE平台还是.NET平台。TestMaker支持各种不同的协议,例如HTTP/HTTPS、TCP/IP、SOAP以及XML。TestMaker的脚本语言是一种开放资源语言,叫做Jython。Jython其实是Python语言的Java实现形式。Jython除了给开发者提供所有的Java对象外,还提供Python的面向对象的环境。TestMaker包含一个代理日志,同商品化测试工具所提供的功能类似。
|
|
|
③Apache JMeter(http://jakarta.apache.org/jmeter/)。
|
|
|
Apache JMeter是一种纯粹的Java应用软件,用于测试功能和衡量性能。JMeter最初是基于Apache Tomcat设计的,用于测试Web应用软件的性能,但是目前,开放资源发展联盟将此产品的应用扩展得更广泛了,Apache JMeter同时用于功能测试和负载压力测试。应用这一软件可以测试Java对象、JDBC、数据库、Perl脚本、Web服务器和应用服务器等。
|
|
|
和商品化测试工具一样,Apache JMeter的代理记录可以记录浏览器和Web服务器之间的通信。并且,由于JMeter是100%Java的,所以它不受平台约束。
|
|
|
|
自主开发测试即开发自己的负载压力测试程序或者工具。
|
|
|
例如,一个简单的Web应用测试工具可以这样构建。首先编写一个对每一个模拟客户机运行一个线程的程序。每一个线程需要与服务器通信,可能使用Java、Net、URL类。这种方法能够达到基本的HTTP客户机模拟,它可以执行GET和PUT。每个线程需要做的就是发送HTTP请求,收集回复。这一组行动可以相当容易地抽象到一个单独的配置文件中。很快地,就得到一个基本的负载测试工具。同时可能需要增加一些配置选项以确定运行多少个线程(模拟的客户机),以及它们是同时开始,还是慢慢增加负载。当然,需要对与服务器的交互计时,因为这是要测试的核心内容,响应时间。
|
|
|
后面章节中,我们会详细论述开发负载压力测试程序或者工具的一些思路。
|
|
|