LoadRunner内部结构
LoadRunner主要通过控制内部程序的调度来控制整个性能测试过程,LoadRunner内部结构图如下图所示。该图详细地描述了LoadRunner执行过程中内部程序是如何调度的及内部各程序之间的关系。
从LoadRunner内部结构的层次来分析LoadRunner性能测试的过程。
1.首先准备好待测试的应用服务器和待测试的系统。
2.LoadRunner中多线程驱动进程mdrv.exe和r3vuser.exe模拟产生压力,其中r3vuser.exe仿真应用程序的客户端,如IE浏览器。它执行了以下三个主要的操作:
①cci(C语言编译器)建立ci文件,然后使用被测系统的协议来执行。
②通过Windows批处理脚本启动mdrv.exe程序从而启动LoadRunner的运行。mdrv能自动停止加载Vuser,因为它们与Vuser和Windows负载发生器上的CPU监视器之间互相通信。
③在Windows机器上,对于每一个基于Java的Vuser都有一个独立的JVM,注意UNIX平台不支持JavaVuser。
3.虚拟用户在负载发生器端的计算机上使用代理作为服务或进程时,按照组启动方式启动虚拟用户,用户组是多个Vuser组成的逻辑集合,在Vuser发生器上运行相同的脚本。
4.每个负载发生器(LoadGenerator)都维护着一个以qtp为后缀名的执行日志。
5.日志服务启动后,代理会根据用户组进行隔离,在结果文件中为每个虚拟用户建立一个顺序文件。
6.在执行过程中,这些文件会在“视图”→“显示”输出窗口中显示出来。
7在预先设置延时上,Controller上运行的Scheduler指导代理(通过Windows54345端口或UNIX上的动态端口)初始化场景会话;控制器(wlrun.exe)在发送请求时发送一份场景的拷贝。
8.代理是由每一个负载发生器上的RemoteAgentDispatcher进程(8.0叫RemoteCommandLauncher(RCL))启动的。
9.每个代理根据场景(.lrs)定义文件来决定哪个虚拟用户组和脚本需要在主机上运行,这就是说控制器可以从DOS批处理文件(.batch)中启动。
10.控制器通过使用Windows操作系统根目录文件夹里的参数值来启动,因为LoadRunner被设计成在一个机器上并且一次只能运行一个控制器实例,所以需要使用Windows文件夹。
为了在几个应用之间快速的切换,Controller工作之后会保存在LoadRunner的ini文件中,然后使用记事本来制作一个批处理文件,在执行wlrun之前拷贝应用程序的指定版本的ini文件。
11.在Vuser中定义的每个虚拟用户进行的操作都是LoadRunner的VuGen.exe生成的,当这个程序启动后,它在Windows文件夹下存储了comparamui.ini文件来保存[LastTablesUsed]下文件的历史,而[ParamDialogDates]项是由“插入”→“新参数”→“数据”来指定。