性能测试基础
本质:基于 协议 模拟用户发请求,对服务器形成一定的负载,来测试服务器的性能指标是否满足要求,与界面无关
* 时间
* 空间
分类:
性能(狭义):特定条件下,验证 系统是否有宣称具有的能力
负载:不断 加压 直到达到一种 极限 状态
压力(强度):饱和 状态下,处理能力和表现
并发:多用户同时发送请求,注意是否存在 死锁(同时需要某种资源)
配置:软件件环境的调整,找系统最优资源分配
可靠:一定业务压力下,持续运行 一段时间(一般72h),看系统是否稳定
测试指标:
并发用户数:同一时间向服务器发送请求的用户数量,与并发请求数不同
响应时间(随着并发用户数的增加而增加,等待时间+处理时间+网络传输时间,不包括前端页面渲染时间)
tps(单位事务数,随着并发用户数的增加而增大,并发用户数达到一定数量后不再增加)--- hps(每秒请求数)、吞吐量(处理能力)
资源利用率(CPU利用率--不超过80%,队列长度 、 Mem利用率--80%以下,页交换频率 、 带宽利用率 )--如果资源利用率太小,造成资源浪费
流程:需求分析--测试计划--测试方案--用例设计--测试执行--定位分析问题
需求分析:
测试对象:常用、核心
测试指标:吞吐量、tps、响应时间、用户数
2/8原则:80%的用户请求,集中在20%的热点数据上,或时间段内
测试场景:单一场景、混合场景(业用户使用场景、系统使用场景)
测试计划:
测试目标
测试人员组织
压测进度安排
压力机:配置、要求、数量
风险
测试方案:
测试工具:LoadRunner、Jmeter
测试环境:数据库。服务器、架构设计、尽量和生产环境一致
测试策略:单一场景、混合场景
监控工具:Linux(nmon、rpc、jvisuaIVm、Sportlight)、Windows(Spotlight、perfmon.exe)
用例设计:
测试脚本:根据操作步骤生成脚本
场景设计:场景运行步骤(初始化、开始vuser、持续运行、停止vuser)
测试执行:
脚本编写
场景监控设计(业务场景)
运行场景
监控场景
测试报告
定位分析问题:
后端:代码、软件(数据库、应用服务器、apache等)、硬件
前端
网络
流程图:
LoadRunner安装:(VMware虚拟机)
OS:xp/win7/windows2003/windows2008、专业版和旗舰版、IE(8/9)
安装:直接解压(setup.exe--完整安装程序)、虚拟光驱、可以单独安装压力机(load generator)
破解:
问题解决方案:杀毒软件是否关闭、防火墙是否关闭
LoadRunner三大组件:
VuGen:生成脚本
脚本录制流程:create scripts -- new script -- 选择协议(单协议/多协议/最近使用过的协议) -- start record(录制) -- url地址、工作目录(安装目录)、Action、Record the application startup -- 自动打开网站 -- 登录(jojo bean)并退出 -- stop(停止录制脚本),生成相应的脚本 -- 切到script可以查看脚本
网站例子:samples -- start webServer(启动网站服务器) -- webTours网站
协议选择:询问开发、根据项目经验、自带协议探测工具
录制前准备:被测系统的类型(浏览器、非浏览器)、采用的浏览器(如果是IE 64位的,一定要选择program files(x86)下面的ie浏览器)、被测地址、默认设置
遇到问题:IE不能启动(是否默认浏览器、是否是9以下、更换火狐试试、检查杀毒软件是否关闭、手动编写)
脚本查看及函数介绍:脚本查看模式(tree view:可以查看每个url的页面,script view:可以查看录制的脚本)
注意:每行脚本都是一个函数调用
函数中的参数记录了客户端发送给服务器(请求request)的数据
web_url:请求一个页面
web_link:单击文本链接请求打开一个网页
web_image:单击图片链接请求打开一个网页
web_submit_form:代表在请求打开一个网页时需要将一定的数据上传到服务器
脚本组成介绍-都是action:
vuser_nit():用户初始化 (只存在一个,仅运行一次)
Action:用户操作(可创建多个action,action可以进行多次迭代)
vuser_end:用户结束(只存在一个,仅运行一次)
运行脚本(run或F5)和查看结果:
replay log:运行时日志(函数执行结果,脚本运行次数) --- 不检查业务是否成功(在view-test results中查看结果)
recording log:录制时日志(传输的数据)
correlation results :关联
generation log:普通日志(请求和响应数据)
录制级别:options--recording--HTTP/HTML Level (HTML-based -- 把所有请求封装到一个步骤中 、 URL-based -- 每一个请求封装为一个步骤)-- advance(一种以页面的形式--依赖上下文,一种以接口的形式--不依赖上下文)
Controller:运行脚本
vuGen.tools--create controller scene... --- 选择Menual scene... --- number vuser(虚拟用户数) --- generator(压力机):localhost --- group name --- 结果路径
vugen.action与controller对应策略:vuser_init -------- Initalize action ------- Start Vuser 、 Duration vuser_end -------- Stop Vuser
Analysis:分析
Controller.results --- analysis results
作用:
1、只要订票的actoin的时间?(将登陆放在init块中,将推出放在end中)
2、将订票的过程分开?