|
知识路径: > 测试技术的分类 > 应用负载压力测试 > 负载压力测试实施 > 测试环境、工具、数据准备 >
|
相关知识点:16个
|
|
|
|
下面通过列举两个实例,来了解自己动手编写测试工具的思路。
|
|
|
|
这个系统不仅能够测试静态HTML页面的响应时间,而且能够模拟真实运行情况测试动态网页(包括ASP、PHP、JSP等)的响应时间,为服务器的性能优化和调整提供数据依据。
|
|
|
为了能够模拟大量用户同时访问Web动态页面的情况,必须要解决下面两个问题:
|
|
|
. 测试工具需要模拟出大量用户同时访问Web的情况;
|
|
|
. 测试工具需要模拟出单个用户访问Web时个性化的请求参数。
|
|
|
本性能测试系统主要由两部分构成:性能测试数据文件和性能测试程序。其中,性能测试数据文件包含着用户访问Web的URL请求格式和大量用户访问系统的请求数据(例如用户名和密码等)。实际测试中,性能测试程序将开设多个进程模拟大量用户对Web的访问,每个进程从性能测试数据文件中随机地读出一组访问数据,然后发起对Web服务器的访问,等待Web服务器应答。测试结束后,性能测试程序将给出对于所有请求的平均系统响应时间。由此,本性能测试工具能够真实地模拟大量用户同时访问Web的情况。
|
|
|
在实际运行的Web应用系统中,用户访问动态页面时传递的query字符串中的参数是互不相同的。为了逼真地模拟实际情况,性能测试系统应该在一段特定的时间内,对待测页面同时发送多个请求,每个请求的query参数互不相同,在发送的同时开始计时,直到收到系统的响应,计时停止,最后对所有请求的响应时间进行分析,就可以得到系统性能的定量估计。系统结构如下图所示。
|
|
|
|
|
|
|
|
|
|
模板文件为纯文本文件,包含单个用户访问Web发送的URL,每行格式如下:
|
|
|
GET(POST)http://host:port/path/filename?xxx=@1@&@2@
|
|
|
其中GET或者POST表示参数传递的方式,query字符串中的@是本系统特设字符,表示@及其后面的数字需要被数据文件中对应的参数数据所取代。两个@之间为参数序号,只能为数字,在整个模板文件中相同的参数序号代表相同的参数。
|
|
|
数据文件是用户访问动态页面时传递的query参数集合,为纯文本文件,参数数据与模板文件中@号及其后面的数字相对应,之间用空格隔开,每组一行。
|
|
|
测试Web应用系统时,性能测试程序将开设c个进程,每个进程可以串行地开设n个会话,每个会话模拟一个真实用户,按照模板文件中提供的访问Web系统的格式,从数据文件中读取一组query参数,然后对Web系统发起请求;与此同时,程序开始计时,直到收到系统的响应,计时停止,系统统计接收的字节数,将结果写入结果文件,本次会话结束,这个进程开始一个新的会话,如此循环n次。测试结束后,结果处理程序对结果文件中每个请求的响应时间进行统计分析,给出系统的综合性能评估。
|
|
|
从上面的分析可以看出,本系统发送请求的并发度是c,即在测试的时间段内,对Web应用系统同时发送的请求有c个;本系统发送请求的串行度为n,一共可以模拟c×n个用户对系统的访问。
|
|
|
|
如下图所示,性能测试程序fork出c个进程,每个进程都开设一个Socket,通过Socket向Web服务器发送请求。为了使测试程序能够快速地向服务器发送请求,程序一开始就将数据文件中的所有数据读入内存,数据使用一个二维数组存放。
|
|
|
|
|
模板文件中的请求格式在程序开始时读入模板数据结构中,模板数据结构定义如下:
|
|
|
|
测试程序运行结束后,生成的结果文件包含着Web服务器对每个请求的响应时间,还包含每个请求返回的字节数。结果文件由结果处理程序处理,计算出Web服务器对所有请求的平均响应时间。
|
|
|
|
大家知道LoadRunner通过运行脚本模拟的方法仍然与应用系统的实际处理逻辑存在一定的差异,因此其评测结果与应用系统实际使用过程中的性能指标之间仍然存在一定的差距。为了弥补这个缺陷,需要一种适用于特定应用的运行模拟和性能评测方法与支撑环境,来对应用系统的实际性能评测提供有效支持。这里提出的通用应用系统性能评测环境,是通过并行执行分布于不同客户机上的多种类型的实际应用程序代码,模拟一个应用系统在多个客户端并发访问情况下的实际运行情况,同时对应用程序代码的执行状态和结果等信息进行记录;在模拟执行完成之后,对执行记录进行分析,给出被测系统的性能指标。应用系统性能评测环境主要由应用逻辑运行模拟代理(PexpAgent)、模拟控制中心(PexpCmdCenter)、数据搜集器(Data Collector)和统计分析工具等部分组成,其系统结构如下图所示。其中,应用逻辑运行模拟代理负责驱动执行被测系统的应用逻辑代码,并记录每一次执行的状态和性能相关信息。模拟控制中心负责控制整个性能评测过程中的所有运行模拟代理。数据搜集器负责在测量完成之后,接收来自运行模拟代理的性能测量数据。统计分析工具负责对测量获得的性能相关数据进行分析,从而得出被测系统的相关性能数据。在评测过程中,运行模拟代理与控制中心之间通过基于对象传输的专用网络通信接口(Performance Network)进行通信;由于应用系统的实际运行环境各异,评测系统被设计成能够运行在多种操作系统平台上,所有其他组件的下层是操作系统相关调用抽象层,对于不同的操作系统平台,需要实现相应的实际处理对象。
|
|
|
|
|
由于我们的目的是通过模拟真实的并发环境来获取系统的实际性能,在设计与实现上需要充分考虑如下问题,并加以解决:
|
|
|
. 应用系统实际处理代码的嵌入方式和响应时间的测定;
|
|
|
|
|
|