软件性能测试Ⅸ

性能测试用户的设计策略—“普遍撒网,重点查看”原则

性能测试是一个复杂的过程,因为它的对象是一个由多个模块甚至多个中间件构成的庞大系统,而每个模块在理论上都有存在性能问题的可能。不可能测遍所有的模块的性能,再给客户出性能报告。性能测试和其他类型测试一样,遵循软件测试定律:对软件的完全测试是不可能的。在做性能测试时要做到,设计尽可能少的测试用例来发现尽可能多的性能问题,这样设计的用例才是好的用例

“普遍撒网”:就是一个好的性能测试用例的执行应该调用软件系统中尽可能多的模块。不同的测试用例最好覆盖不同部分的模块。这样做至少有两个好处,一是软件系统被全方位调动起来,容易发现各个环节的问题。二是一次执行,多处测试,节约测试成本

“重点查看”则要求在做性能测试时特别关注软件系统中那些基本的、使用频率高的模块

保证数据的有效性

在做性能测试时,写好了脚本,面对被测系统时,有些茫然,不知道做什么,该怎么样才能找到性能瓶颈。在执行性能测试时,看到一堆监控数据,执行日志,不知该如何分析哪里出了问题

在这种情况下,如果不能让自己的技术经验指导自己的行为,那么就确信自己至少还有清晰的逻辑来维护自己的判断

性能测试是一个复杂的过程,因为它的目标是一个由多个模块甚至多个中间件构成的庞大系统。目标就是要从一堆结果数据中分析出瓶颈,前提:不仅要得到正确的数据,还要正确地得到数据。

在实际系统中,性能测试的环境和条件有很多

1、数据库中记录数量是不是差不多,在一个数量级上

2、各个中间件的配置是不是一样

3、Server是不是有其他人也在占用资源(性能测试最好保证Server是Clean的)

4、Client 和 Server 的 Cache要被清除掉或关掉

5、最好做完一组数据后,各个 Server 都 Restart 一下,释放掉原先的资源(除非就想在这个基础上测试)

6、有时日志不断地变大也会影响Server的性能表现,可以从I/O指标上看到

Web Click Vuser 的产生背景

60%的用户使用LoadRunner 做 Web 系统的性能测试。统计,Web系统性能测试有70%的时间花在开发和调试脚本上。在LoadRunner 8.1以前,测试Web系统都是使用HTTP Vuser来捕获 Web系统客户端和Server之间的交互,而生成基于HTTP协议的脚本。但是HTTP脚本同其他Vuser脚本一样,基于网络协议,又长又难以理解

Web Click Vuser 与传统 Vuser 的差别

基于这样的情况,LoadRunner 从 8.1版本开始使用 Click and Script技术(实际上是QTP技术,QTP是MI的一个基于Web UI 的功能测试工具),创造了一种新型的Vuser,叫做Web Click Vuser 和 WinRunner 、QTP一样,是基于Web UI事件的。用户对Web系统的操作被记录成基于UI事件的函数,如:点击一个Button,填写一个Edit Box,而不是一个HTTP协议上的get请求、post请求。因此,Web Clic Vuser 能像浏览器一样,去执行Java Script 和 Applet

web_edit_field:在一个Eidt Box中填写数据

web_text_link:点击一个链接

web_button:点击一个Button

Web Click Vuser 还是会记录网络协议级别上的事件,用户可以随时从Web Click Vuser脚本转换到HTTP Vuser脚本

Web Click Vuser可以像我们操作浏览器一样执行脚本,Web Click Vuser用途、限制以及License

用途:目前,Web Click Vuser的运行环境是LoadRunner X.X + SP2。在HP网站中的patch list 中叫做 FP2。Web Click Vuser是基于界面对象的脚本,好处就是它度量的是一个完整的系统时间,从客户端界面发起请求一直到服务器的响应返回。使用过Web Click Vuser后,发现同样事务的响应时间比HTTP Vuser慢了0.2秒左右

限制:由于Web Click Vuser 是 LoadRunner 新推出的功能,还不是很稳定,也有不少需要完善的地方:

1、只支持IE录制(windows)

2、目前Web Click Vuser只支持英文

3、对Applet、ActiveX控件的支持不够

License:Web Click Vuser 被要求和HTTP Vuser同样的License,也就是说,如果有HTTP Vuser的License,那么就可以使用Web Click Vuser

(1)并发指的是多个客户端同时对服务器发起网络连接请求,并发送数据。从服务器看来,它必然要开启大量的线程,消耗内存、网络套接字、句柄等资源。这是并发测试的考察目标所在

(2)并发用户!=系统注册用户数,不是所有的系统注册用户都是活跃用户,而且不是所有的活跃用户都能构成并发关系。因此软件系统性能需求的并发用户数要远远小于系统注册用户数。占比可依据不同的业务模型而定

(3)并发用户数!=在线用户

“用户在线”看起来像是系统级别的概念,这是它能迷惑很多性能测试工程师的原因,误以为“用户在线” 是一个标准的性能指标,能够衡量不同的软件系统

如:QQ在线主要靠心跳报文来维持在线,即每隔一定时间间隔就在Socket连接上和Server交互数据。而网站在线目前很多实现方法都是靠Session 来维持用户在线的,如果Session 存在 Cookie 里,那在线就是非常简单的事情,几乎都不占用什么CPU资源。因为Cookie 只会占用硬盘空间或很少的内存空间。服务器是通过校验客户端发送上来的Session是否超时来判断它是一个“活着”的用户,还是新用户

1、通过LoadRunner来完成,是否能够使用这种方式取决于被测系统的架构。LoadRunner 的 License 是基于虚拟用户的,而虚拟用户可以以进程方式运行,那么知道在进程里可以开启多个线程

2、无论如何,让LoadRunner 实现 10000个用户并发不是一件很容易的事情,LoadRunner胜任负载测试,压力测试却不是它的长项。这种情况下,可以自己写程序实现压力测试


金融业务流程图

1、发出交易请求,由交易一方会员通过会员端机器向Web服务器发出交易请求

2、完成检查,在Web服务层,首先进行各项检查,包括交易请求的有效性、请求者的身份合法性等。对不合格的交易请求,则拒绝继续向交易主机报价,并向交易请求者发送处理结果

3、提交交易请求。通过检查后的交易请求由Web服务器向交易主机进行提交,同事记录日志

4、主机处理。交易主机接收Web服务器请求的交易,进行处理,如生成交易号、记入交易表、交易请求转发等。

5、交易请求接收确认,交易主机将处理结果反馈给请求的Web服务器

6、记录交易请求库。Web服务器接收到交易主机的反馈信息后,记录本地交易请求库,以备查询

7、交易请求接收确认,Web服务器将报价接收确认转发给会员机

8、传送交易请求,交易主机获得交易对方的Web服务器信息,将交易请求发送给对应的Web服务器

9、Web服务器继续将交易请求信息发送给对方会员

10、对方会员查看交易请求,系统将该状态向Web服务提交、系统记录会员是否查看了交易请求

整个流程来看,从交易终端发起的交易业务压力能贯穿整个流程、并施加到各个节点,以收到的反馈结果和反馈时间来考证系统的性能指标

同一流程,同样可以在客户端发起查询业务的压力,来考验WebLogic服务器的承受能力,相应业务逻辑的计算能力和数据库的加锁机制

流程相互对立,又相互依赖的。由于是对同一个数据库系统进行读操作和写操作,查询流程的结果依赖于交易流程数据的产生,交易流程产生的数据又通过查询流程得到验证,在进行压力测试时,两者的协同会对数据库形成压力的冲击

针对各个流程可能出现的薄弱环节,性能测试分为如下几个子测试来进行:

1、并发测试

在业务终端模拟多个用户进行并发登录,通过服务器的返回信息、响应时间和服务器的性能行为表现来考证系统的并发处理能力

2、负载测试

●交易流程测试:在交易终端上,通过模拟多个用户,产生大亮请求业务交易报文,直接施压在前置机上,本流程测试主要考证交易流程上各个节点在并发和持续性大批量业务请求情况下的处理能力

●查询流程测试:在查询终端上,通过模拟多个用户,产生大量请求查询的报文,直接施压在查询前置机上。查询成功与否以是否得到所请求的Web页面为标准。

●综合测试:在上面两种测试都通过的情况下,进行综合测试,即同时在交易终端和查询终端上发起大量请求,分别施压在交易前置机和查询前置机上。该测试流程主要考证数据库的并发处理操作和写操作的能力

LoadRunner可以调用QTP脚本,和Web Click Vuser有什么区别?

QTP脚本的确可以被LoadRunner调用,但如果据此认为LoadRunner可以使用QTP脚本做性能测试,那就错了,因为使用过QTP的知道,QTP脚本是基于界面事件的,也就是说,QTP脚本在运行时,它要独占一台计算机,因为键盘和鼠标资源是唯一的。因此,如果把QTP脚本引用到LoadRunner里来做负载测试,就必须一个Load Generator只能开启一个虚拟用户,一味着如果要做100个用户的并发,就需要100台安装Load Generator的计算机,因此得出,使用QTP脚本做负载测试理论上可行,但是实践上却行不通。这是和Web Click Vuser最大的区别之处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容