1.1 什么是性能测试--本质
基于协议模拟用户发出请求(业务的模拟),对服务器形成一定的负载,来测试服务器的性能指标是否满足要求
关注点:时间性能,空间性能
与界面无关
1.2 性能测试分类:见word文档 !!!
1.3 性能测试指标
1)响应时间
公式
网络传输时间+服务器处理时间
N1+N2+N3+N4+N5+N6+WT+AT+DT
不包含前端页面渲染时间,到浏览器收到请求后响应数据截止
原则
2-5-8
优秀-良好--较差
2)tps
每秒处理的事务数
transaction per second
3)资源利用率
在一定的负载情况下,服务器资源占用情况
CPU利用率:不允许超过70-80%
Mem利用率:80%以下
带宽利用率:
100Mbps=12.5MB/s
1Byte=8bit
如果资源利用率太小,造成资源浪费
4)用户数:并发用户数
在同一时间向服务器发送请求的用户数量
与每秒的并发请求数不同,一定要确认需求的目的是并发用户数还是并发请求数
1.4 通过理发店模型分析程序运行原理、过程、产生性能问题的原因、性能指标
2.1 需求分析
1)测试对象
常用的
核心的,重要的
数据量、并发量
例子:登录,注册,搜索,添加购物车,下单、支付
2)确定性能指标
吞吐量、TPS:服务器每秒处理的请求数量
响应时间:从浏览器发出请求,服务器处理,到收到响应所需要的处理时间
用户数:并发用户数
资源利用率:
1 例子:
要求每天完成交易额2亿
客单价:200-500 以300计算
采用28定律换算得出,以24小时计算
求每秒钟最大交易数?
要求
1.每天8小时系统支持500万用户访问
方案
1.500万在8小时内完成,500万/8*3600,一般不采用,除非系统负载比较平稳/平均
2.先分析流量分布,再根据2/8定律估算每秒请求
500W
500w*0.8=400W
8*0.2=1.6h
计算得出服务器需要支持694次/s
每小时的平均负载*4
3)测试场景
单一场景:
混合场景:
2.2 测试计划
测试计划:
2.3 测试方案
测试方案
测试工具:loadrunner,jmeter
测试环境:
测试策略:单一场景,混合场景
监控工具
Linux:nmon,rpc,jvisualVm,Spotlight
windows:Spotlight,perfmon.exe
2.4 用例设计
用例设计
测试脚本:基于脚本的用例
场景设计:基于场景的用例
2.5 测试执行
测试执行:
2.6 定位分析问题
定位分析问题
1)后端
2)前端
3)网络
3 Loadrunner
3.1 Loadrunner安装
1)OS
xp/win7/windows2003/windows2008
windows:
支持浏览器:IE ,8/9
2)安装:
3)破解:
4)问题解决方案:
3.2 组成
1 ) 三大组件
VuGen,Controller,Analysis
工作原理
2) 作用
Virtual User Generator —— 录制回放、开发维护脚本
LoadRunner Controller —— 用于创建、运行和监控场景
LoadRunner Analysis —— 用于生成测试报告,分析性能测试结果
4.1 脚本录制流程
1)新建脚本选择网络协议
2)录制前准备
选择被测系统的类型:浏览器,非浏览器
录制时采用的浏览器:IE (如果是64位的,一定要选择program files(x86)下面的ie浏览器)
被测服务器地址
其他选项默认
3)设置录制选项
options
General----Recording
HTML-based script
Based-HTML(默认):将与打开一个网页(HTML)有关的的所有请求“封装”为一个步骤
web_link、web_submit_form(示范)
依赖上下文关系
编写规则:web_link("访问首页","Text=LoadRunner",LAST);
web_url、web_submit_data(示范)
不依赖上下文关系
编写规则:web_url("访问首页","url=http://www.baidu.com",LAST);
URL-based script
将每一个不同url的请求封装为步骤
HTTP Properties----Advances
Support Charset
UTF-8
UTF-8解决乱码问题
4)插入命令
5)开始录制
录制过程中的工具栏使用
停止、暂停、插入新的action、开始事务,结束事务、插入集合点、插入注释
遇到的问题:
1.IE不能启动
2.如果始终解决不了,放弃录制,选择手写脚本
6)停止录制
7)
8)脚本的组成
init
action
end
总结:
4.2 回放结果查看
4.3 脚本回放设置
run-time settings
1)Run logic
用户建模:
2)Pacing
1.上一次迭代一结束就开始新的迭代
2.在上一次迭代结束之后
延迟固定的时间xx开始新的迭代
延迟随机的时间段开始新的迭代
3.延迟
固定的时间xx开始新的迭代
随机的时间段开始新的迭代
注意:延迟的时间包括上一迭代运行的时间
3)Log
1.启用日志
只有当错误出现的时候才记录日志
扩展日志:参数置换信息
标准日志
2.关闭日志
4)Think time
1.忽略思考时间
2.回放思考时间
3.作用:更加真实的去模拟用户操作之间的延迟
5)Internet protocol
checks:启用/关闭图片和文本检查
6)Miscellaneous
1.Error Handling
2.Multithreading
以进程方式运行虚拟用户:
以线程方式运行虚拟用户:
进程和线程区别
1.定义
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 线程自己基本上不拥有系统资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
2.关系和区别
a.同一个进程中的多个线程之间可以并发执行,线程不能够独立执行, 必须依存在应用程序中,由应用程序提供多个线程执行控制
b.线程同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉, 进程有独立的地址空间,一个进程崩溃
后,在保护模式下不会对其它进程产生影响
c.一个程序至少有一个进程,一个进程至少有一个线程.
d.进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率
e.多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。 但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配
f.线程执行开销小,但不利于资源的管理和保护;而进程正相反
原文:https://www.cnblogs.com/zhangyangcheng/p/12741444.html