性能测试01

本篇博客

1 性能测试基础
2 性能测试流程
3 工具介绍(Loadrunner)

1 性能测试基础

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 性能测试流程 

2.1 需求分析

1)测试对象

常用的
核心的,重要的
数据量、并发量

例子:登录,注册,搜索,添加购物车,下单、支付

2)确定性能指标

吞吐量、TPS:服务器每秒处理的请求数量
响应时间:从浏览器发出请求,服务器处理,到收到响应所需要的处理时间
用户数:并发用户数
资源利用率:

  • Cpu
  • Mem
  • 磁盘io
  • network

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)问题解决方案:

  • 杀毒软件是否关闭
  • 防火墙是否关闭
  • IE的Internet选项是否关闭开启第三方扩展

3.2 组成

1 ) 三大组件

VuGen,Controller,Analysis

工作原理

2)  作用

Virtual User Generator —— 录制回放、开发维护脚本
LoadRunner Controller —— 用于创建、运行和监控场景
LoadRunner Analysis —— 用于生成测试报告,分析性能测试结果

4 VuGen使用介绍

4.1 脚本录制流程

1)新建脚本选择网络协议

  • 如何选择协议:1. 自带协议探测工具    2.借助网络扫描工具  3. 询问开发
  • 单协议脚本
  • 多协议脚本
  • 最近采用的

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不能启动

  • 检查IE是否是默认浏览器
  • 检查IE版本是否是9以下
  • 更换火狐浏览器
  • 检查杀毒软件是否关闭

2.如果始终解决不了,放弃录制,选择手写脚本

 6)停止录制

7)

 8)脚本的组成

init
action
end


总结:

4.2 回放结果查看

4.3 脚本回放设置

run-time settings

1)Run logic

用户建模:

  • init
  • action
  • end

2)Pacing

1.上一次迭代一结束就开始新的迭代

2.在上一次迭代结束之后
延迟固定的时间xx开始新的迭代
延迟随机的时间段开始新的迭代

3.延迟

固定的时间xx开始新的迭代
随机的时间段开始新的迭代
注意:延迟的时间包括上一迭代运行的时间

3)Log

1.启用日志
只有当错误出现的时候才记录日志
扩展日志:参数置换信息
标准日志

2.关闭日志

4)Think time

1.忽略思考时间

2.回放思考时间

  • 按照录制思考时间
  • 让思考时间乘以几倍
  • 使用录制思考时间的随机百分比
  • 统一规则:限制思考时间不超过xx秒

3.作用:更加真实的去模拟用户操作之间的延迟

5)Internet protocol

checks:启用/关闭图片和文本检查

6)Miscellaneous

1.Error Handling

2.Multithreading

以进程方式运行虚拟用户:

  • 进程独享一块内存,比较稳定,大约占用4M以上
  • 内存资源浪费,可模拟的虚拟用户少

以线程方式运行虚拟用户:

  • 线程之间共享一块内存,可以模拟的虚拟用户多,大约占用1M-2M
  • 线程之间容易发生资源竞争,出现线程阻塞,不稳定

进程和线程区别

1.定义

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 线程自己基本上不拥有系统资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

2.关系和区别

a.同一个进程中的多个线程之间可以并发执行,线程不能够独立执行, 必须依存在应用程序中,由应用程序提供多个线程执行控制

b.线程同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉, 进程有独立的地址空间,一个进程崩溃

后,在保护模式下不会对其它进程产生影响

c.一个程序至少有一个进程,一个进程至少有一个线程.

d.进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

e.多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。 但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配

f.线程执行开销小,但不利于资源的管理和保护;而进程正相反

猜你喜欢

转载自www.cnblogs.com/zhangyangcheng/p/12741444.html