Loadrunner应用之Controller
Loadrunner工具,通常看到的有三大核心组件,VuGen、Controller、Analysis,今天我们继续来聊一下,其中的一个核心组件:Controller。
我们做性能测试的时候,对被测系统,特别是web系统,做完了性能测试脚本开发之后,同时也应该考虑对性能测试脚本进行一些优化,比如,执行一系列的关联、参数化、检查点、集合点、事务等等,使得我们在执行性能测试实施的时候,能够获取更加真实的性能数据。那么,脚本录制和优化完成之后,是不是性能测试就完成了呢?应该说,脚本开发完成了,咱们的性能测试呢,万里长征才刚刚开始。后面的知识呢,会越来越重要,越来越难,而且不在单纯的依赖于工具本身的功能了。很多东西,其实是工具没法控制的,需要我们具体的一个经验,或者说我们本身对性能测试的理解,才能把后面的一些工作做好。那么,性能测试脚本的开发完成之后,脚本能把我们的请求发出去,这是VuGen需要去解决的问题。那么Controller又来解决什么问题呢?我们来梳理一下。
Controller,顾名思义,叫做控制器,所以它很多的功能都是控制部分的(见下图),比如说,它首先控制虚拟用户数量。我们要并发多少虚拟用户,需要在controller中设计。虽然我们前面说过,Loadrunner有三个核心组件,但是,还有另外一个,叫Load Generator--负载生成器, 一个更更重要的隐藏起来的一个核心组件,事实上,这个才是Loadrunner本身最核心的一部分。负载生成器用来模拟虚拟用户数的。如果说我们只有controller,而没有负载生成器,咱们使用Loadrunner也做不了性能测试。负载生成器这个专门的组件用来模拟虚拟用户,模拟多个线程,那么controller呢?它对负载生成器又有怎么样的一个控制呢,这个我们后面慢慢来说。
第二点,controller除了控制虚拟用户数和负载生成器,它还需要控制咱们的性能测试场景。例如,我们现在假设要模拟500个用户,那么到底这个500个用户以什么样的场景来把请求发给服务器,是500个用户逐渐增加,500个用户执行多长时间,以什么样的方式来释放这些用户等等,这些呢,都是controller里面控制的。
第三点,controller需要控制各种运行策略。例如,集合点功能,需要controller去控制。同样,比如咱们在执行性能测试的时候,考虑到,我们要去模拟用户的带宽。而通常情况下,我们都是在局域网内完成的性能测试的,带宽一般都是1000M,甚至更大的流量,都不是问题,但是真实用户在访问你的系统的时候,他的带宽能达到多少呢,现在主流的家庭主流带宽可能就是20m,50,100m,甚至有的还是5m,2m的,所以我们在做性能测试的时候,也需要去考虑用户的带宽问题,Loadrunner也支持这个功能(见下图),我们如果只用最大的带宽在局域网内部去测试,毫无疑问,带宽足够大,但实际上,就偏离了我们的另外一个对性能测试严格要求的这么一个条件,我们的要求相当于就放松了。而我们的loadrunner也可以控制这种各种各样的运行策略,从而达到模拟用户的真实行为。
另外,在controller里面,还有一些附属的功能,附属的功能主要提供了,各种指标的监控。我们在去做性能测试的时候,Loadrunner本身模拟的只是一个客户端,或者说很多个客户端向服务器发送请求,因此呢,它也只能是从客户端的角度来看待和审视这个系统的性能,如果说我们能在性能测试执行的过程中,又能通过LR监控到服务器端的,更有针对性的一些性能指标,那么就可以一方面从客户端的角度对系统有一个整体的掌握,同时咱们也可以对服务器端的更真实的性能指标有一个完全的把握,这样我们把客户端的指标和服务器端的指标结合起来进行相应地分析,我们才能对这个被测系统有一个更完整的掌控,然后对这个被测系统的分析才能更加的准确,虽然controller附属这种指标的监控的功能,并非controller的核心功能,但是呢,他对我们的性能测试实施,提供了一种方便。
上述只是对controller的功能做一个简单的概述,对它的总体功能有一个简单的了解,具体使用过程,待续...