LoadRunner工具性能测试实践

性能测试环境

操作系统:Windows
Web服务器软件:Apache
运行环境:PHP
Web应用:phpwind
数据库:MySQL
phpwind的访问地址如下:
http://192.168.0.153:8090/phpwind/index.php

性能测试方案

使用10个线程同时发帖,持续时间5分钟,测试下服务器的平均响应时间是多少?成功多少?失败多少?
1)录制发帖的LR脚本
2)修改LR脚本(设置cookies,添加集合点,添加事务,文本检查,参数化)
3)调试LR脚本(确保回放成功)
4)创建并设计性能测试的场景
5)运行性能测试
6)测试报告

发帖的LR脚本的设计思路

1)非登录状态下,用户(游客)是没有权限发帖的。服务器返回的登录验证码(动态)是图片,不是文本,无法使用LR的关联技术进行关联。可以使用cookie绕过登录,欺骗服务器,让服务器认为用户已经登录进来,然后发帖。
image.png
2)先缓存cookie数据(目的:后面发请求时,会自动发送这些cookie数据,服务器就会认为用户已经登录)

web_add_cookie("Bzi_winduser=msL4udGA%2BPNSm7bGPAdLhpDKMwseQABD2Z6iMxwPN%2FrtT65uQOO6cw%3D%3D;DOMAIN=192.168.0.153");

3)使用web_submit_data函数发送数据给服务器(发送请求)(模拟发帖)
4)帖子的内容不能重复,否则会被phpwind网站屏蔽,可以使用随机生成的字符串作为帖子的内容。
image.png
5)我们在性能测试项目中,遇到事务与集合点放置顺序问题时,需要将集合点插在开始事务之前。
###设计性能测试的LR脚本
LR脚本的代码如下:

Action()
{

	char subject[11]="";//保存帖子的标题
	char content[101]="";//保存帖子的内容
	char arr[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	int i;
	int index;
	//生成一个随机的字符串(10个字符)
	for(i=0;i<10;i++){
          index=rand()%62;//得到一个0~61之间的随机整数
          strncat(subject,arr+index,1);//将arr字符串index位置开始的1个字符添加到目标字符串subject的后面
	}
	lr_log_message("帖子的标题是:%s",subject);
	//将subject变量的内容保存到参数subject里面
	lr_save_string(subject,"subject");
	//生成一个随机的字符串(100个字符)
	for(i=0;i<100;i++){
          index=rand()%62;
          strncat(content,arr+index,1);
	}
	lr_log_message("帖子的内容是:%s",content);
	//将content变量的内容保存到参数content里面
	lr_save_string(content,"content");

	web_add_cookie("csrf_token=e4233250ddbbd331; DOMAIN=192.168.0.153");
	web_add_cookie("PHPSESSID=eaqejk6kcaqj3mtklv5pnv64b1; DOMAIN=192.168.0.153");
	web_add_cookie("Bzi_winduser=hcUEN%2B3i2IZqpSSFne3zHlq7fDwr%2FEPnZWxN76AatVoIJ9dbCK0LFA%3D%3D; DOMAIN=192.168.0.153");

	lr_rendezvous("同时发送");

	lr_start_transaction("发帖");

	//设置请求的类型为异步请求
	web_add_header("X-Requested-With",
		"XMLHttpRequest");
    
	//设置接收数据的格式为JSON
	web_add_header("Accept",
		"application/json, text/javascript, */*; q=0.01");

	//提交帖子
	web_submit_data("index.php_7", 
		"Action=http://192.168.0.153:8090/phpwind/index.php?c=post&a=doadd&_json=1&fid=2", 
		"Method=POST", 
		"EncType=multipart/form-data", 
		"RecContentType=text/html", 
		"Referer=http://192.168.0.153:8090/phpwind/index.php?c=post&fid=2", 
		"Snapshot=t12.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=atc_title", "Value={subject}", ENDITEM, 
		"Name=atc_content", "Value={content}\n[img]{url}[/img]", ENDITEM, 
		"Name=pid", "Value=", ENDITEM, 
		"Name=tid", "Value=", ENDITEM, 
		"Name=special", "Value=default", ENDITEM, 
		"Name=reply_notice", "Value=1", ENDITEM, 
		"Name=csrf_token", "Value=e4233250ddbbd331", ENDITEM, 
		LAST);

	//验证发帖是否成功
	web_find("web_find",
		"What=\"state\":\"success\"",
		LAST);

	lr_end_transaction("发帖", LR_AUTO);

	return 0;
}

回放脚本

服务器认为用户是登录状态,所以返回的结果为操作成功。
image.png

设计性能测试场景

image.png

运行测试

image.png

测试报告

虚拟用户数量: 10
迭代发帖(持续)时间: 5 min
发帖事务的平均响应时间: 5.321 s
发帖成功数: 258
发帖失败数: 10
失败的原因: 内容重复

测试主机cpu平均占用率内存平均占用率磁盘平均读写效率
Apache服务器N/AN/AN/A
MySQL服务器N/AN/AN/A

分析:
虽然帖子的内容是随机的,但是这些虚拟用户每次并发提交的内容其实是一样的。
另外,并发的情况下,即使帖子的内容重复也可以提交成功。
image.png
用户的等级已经是精灵王
image.png
查看帖子的内容
image.png

参考资料

[01] LoadRunner12安装教程
https://blog.csdn.net/weixin_41585557/article/details/85049457
[02] LoadRunner关联详解
https://blog.csdn.net/u011446864/article/details/38395975
[03] LoadRunner12.02参数化与关联以及中文乱码的解决
https://blog.csdn.net/qq_26718241/article/details/80535333
[04] LoadRunner参数化详解
https://www.cnblogs.com/fnng/archive/2012/06/22/2558900.html
[05] LoadRunner中事务和集合点的放置顺序问题
http://blog.sina.com.cn/s/blog_49e4019f0102vxv5.html
[06] LoadRunner中的时间处理- 响应时间、事务时间、消耗时间等
https://blog.csdn.net/ivyweimiao/article/details/81535120
[07] 事务时间如何去掉wasted time
http://www.cnblogs.com/qmfsun/p/4523150.html
[08] Loadrunner如何进行有效的IP欺骗
https://www.cnblogs.com/liulinghua90/p/9202991.html
[09] 一般台式机用loadrunner最多可以跑多少个虚拟用户
https://www.imooc.com/wenda/detail/395879
[10] Page Download Time Breakdown选项详解
https://blog.csdn.net/lhl_lhl_lhl/article/details/42611969
[11] 页面下载时间分解
https://www.cnblogs.com/littlecat15/p/9456376.html
[12] 如何利用loadrunner12录制app脚本
https://www.cnblogs.com/software-tester/p/8491679.html
[13] LoadRunner函数
http://blog.sina.com.cn/s/blog_93cfcfff0102wwa4.html
[14] nmon的安装及使用
https://www.cnblogs.com/mululu/p/6398483.html
[15] 一篇文章学会使用 nmon
https://www.sohu.com/a/219012698_151779

微信扫一扫关注公众号
image.png
点击链接加入群聊

https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号:511619105

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值