文章目录
- 前言
- 一、博客笔记项目性能测试介绍
- 二、编写性能测试脚本(VUG)
- 2.1 测试脚本编写步骤
- 2.2 脚本总代码和结果分析
- 三、创建测试场景(Controller)
- 3.1 测试场景创建实现步骤
- 四、生成测试报告(Analysis)
- 4.1 测试报告
- 4.2 报表分析
- 五、遇到的问题
- 总结
前言
一、博客笔记项目性能测试介绍
使用loadrunner进行简单性能测试:
(1)测试功能:
针对登录、编写并发布博客以及删除博客、注销等功能进行简单的性能测试。
(2)测试进阶:
然后在实现的过程中,插入集合点以及事务等,并通过设置来实现用户的并发操作。
博客笔记页面展示:
博客登录页:博客列表页:
博客详情页:
二、编写性能测试脚本(VUG)
2.1 测试脚本编写步骤
1、创建项目
由于我们测试的博客系统是一个Web项目,因此需要创建一个Web性能测试脚本。
2、代码编写
(1)访问博客笔记系统登录页面实现:
使用web_url 函数访问到博客笔记系统登录页面,为后续操作做准备。
(2)输入登录账号和密码进入博客详情页:
使用web_submit_form函数访问到博客笔记系统详情页面
使用form函数是因为登录页面中NetWork,本web是使用form表单形式进行提交请求的。
(3)性能测试脚本的增强操作
1.添加事务
lr_start_transaction
开启事务lr_end_transaction
结束事务2.添加集合点:
lr_rendezvous 集合点设置
(若存在事务则在开启前面进行设置)
3.添加检查点:
在页面中查找某元素是否存在(如避免用户的越权行为)
web_reg_find
(注意:也是加在前面的,但是如果存在事务则可以是在开启事务之后)
2.2 脚本总代码和结果分析
代码总结:
Action() { //开始事务 lr_start_transaction("index_trans"); //进入博客笔记登录页 web_url("index", "URL=http://81.70.49.37:8080/BlogSystem/blog_login.html", "TargetFrame=", "Resource=0", "Referer=", LAST); //插入登录集合点 lr_rendezvous("login_rendezvous"); //设置登录事务 lr_start_transaction("login_trans"); //插入登录后检查点 web_reg_find("Text=注销用户", LAST); //登录后进入博客笔记详情页 web_submit_form("login", ITEMDATA, "Name=username", "Value=zhangsan", ENDITEM, "Name=password", "Value=123", ENDITEM, LAST); //结束事务 lr_end_transaction("login_trans", LR_AUTO); lr_end_transaction("index_trans", LR_AUTO); return 0; }
执行结果和分析:
测试脚本通过:
三、创建测试场景(Controller)
3.1 测试场景创建实现步骤
步骤(1)设置虚拟用户并发数量
设置5个虚拟用户,防止电脑崩溃
步骤(2)在Controller中设置场景
1.Action type lnitialize
设置每隔多久初始化一次
2.Action type Start Vusers
没10s上台2个用户。
3.Action type Duration
总持续运行时间3分钟
4.Action type Stop Vusers
每8s退出两个用户
步骤(3)开始进行运行,性能测试开始
运行结果图:
四、生成测试报告(Analysis)
4.1 测试报告
测试报告图示:
4.2 报表分析
(1)点击率报表:
(2)吞吐量报表:
(3)平均事务响应时间:
分析结果总结:
① 剩余的物理内存近70%,即使用了近30%的内存,对于简单的博客系统的核心功能来说还是较高的内存使用,还有内存优化的空间。
② 当点击率较大时CPU使用也是达到了一个较高的点,CPU利用率较高。
③ 总之,该性能还有优化的空间。
五、遇到的问题
问题1:
在VUG中编写脚本时,设置检查点运行一直出错,not found。
1)原因:用户名、密码中因为包含中文,中文会被转码,所以在会一直失败。此时登录直接是失败的,并没有跳转到list列表页面。
2)解决方法:使用Xshell在数据库中新增了两条用户数据,全是非中文字符;然后再VUG中修改变量列表,此时重新进行测试,发现运行通过。
问题2:
如果直接设置访问list页面的url,并且在该请求之前设置检查点,此时是可以检查到列表页面的元素的。此时明明没有进行登录,但是为什么直接访问列表的url是可以拿到该页面的元素的呢?
解析:手动请求的haul就相当于是获取资源,所以就能够拿到页面,也就能够获取到页面信息。使用postman进行直接访问测试,发现是可以拿到该页面的相关元素的。