性能测试学习第一天-----概念、环境、LR录制&参数化
1.性能测试的概念:
通过一定的手段,在多并发情况下,获取被测系统的各项性能指标, 验证被测系统在高并发下的处理能力、响应能力、稳定性等,能否满足预期。定位性能瓶颈,排查性能隐患,保障系统的质量,提升用户的体验。
2.什么样的系统需要做性能测试:
用户量大,PV比较高的系统
系统核心模块/接口
业务逻辑/算法比较复杂
促销/活动推广计划
技术选型
容量评估
新项目、新系统
3.性能测试指标
TPS/QPS 每秒处理的事务数 TPS越高,吞吐量越大,正比例关系。 TPS=1s/响应时间*并发数=并发数/响应时间
响应时间 网络传输的总时间+各组件业务处理时间

平均响应时间
TOP响应时间:将所有请求的响应时间从大到小排序,计算指定比例的请求都是小于某个时间。
tp90:90%的请求响应时间临界值,都小于它。
tp95:95%的请求响应时间临界值,都小于它。
tp99:99%的请求响应时间临界值,都小于它。
并发数/虚拟用户(Vuser):
成功率:
PV(page view)/UV(unique visitor):页面、接口的访问量/页面、接口的每日唯一访客(用户日活量)
吞吐量: 网络中上行和下行的流量综合,吞吐量代表网络的流量
总结:在系统达到瓶颈之前,TPS和并发数策划那个正比关系,和响应时间呈反比关系。
4.性能测试流程
需求调研:项目背景、测试范围、业务逻辑&数据流向、系统架构、配置信息、测试数据量、外部依赖、系统使用场景,业务比例、日常业务量、预期指标、上线时间
测试计划:项目描述、业务模型及性能指标、测试环境说明、测试资源、测试方法及场景设计原则(基准测试、单交易负载测试、混合场景测试、高可用性测试、异常场景测试、稳定性测试、其他特殊场景)、测试进度安排及测试准则
环境搭建:原则--测试机器硬件配置尽量与线上一致,系统版本与线上一致,测试环境部署线上最小单元模块,应用、中间件、数据库配置要与线上一致,其他特殊配置
数据准备:业务接口---适合数据表关系复杂的,优点:数据完整性比较好,存储过程---适合表数量少,简单,有点:速度快,脚本导入---适合数据逻辑复杂,自由度比较高,注意数据量级:测试数据+基础数据
测试脚本:选择工具、协议、参数化、关联、检查点、事物判断
压测执行:分布式执行,监控(linux、中间件、数据库),收集测试结果,数据分析,瓶颈定位
调优回归:性能调优、反复尝试、回归验证、监控工具、全链路排查、日志分析、模块隔离
5.常用工具
loadrunner---功能强大、重量级、商业软件收费
jmeter----小巧灵活、轻量级、开源
Ngrinder--平台级产品、开源
6.入门学习环境搭建(以一个web项目OA系统为例子练习)
1.安装VirtualBox,下载winXP虚拟系统快照文件(已装LR11);
2.启动VirtualBox,新建32位XP系统虚拟机--选择已有文件,设置共享文件夹E:\\share--新增固定分配位置;
3.开启虚拟机,从我的电脑-网络驱动器-共享文件里拷贝出jdk、mysql(typical-standard-密码123456)、navicat、apache-tomcat,然后在32位XP系统安装好,配置jdk环境变量,向数据库中导入oa系统sql,讲oa项目代码移动至tomcat下webapps目录下,修改 OA\WEB-INF\classes\jdbc.properties 文件中的用户名和密码,设置为 mysql 的用户名和密码;
4. 双击运行 apache-tomcat-7.0.6\bin\startup.bat
5. 在浏览器里打开 http://localhost:8080/TestOA/userAction_loginUI.action
6. 在登录页输入用户名/密码:admin/1234,即可登录成功。
7.LR三大组件
virtual user generator:脚本生成器,录制编写脚本
controller:调度压力机、场景管理、展示性能图表、监控等
analysis:对测试数据进行分析
8.脚本录制和回放
新建script---options设置recording:HTML-base script--》advance脚本类型修改为第二项urls only ---advance:utf-8----开始录制。完成后回放

tools-generation options-display--勾选第一项,可展示浏览器运行过程。
9.参数化
随机数:random number,例如:编辑内容
唯一数:unique number,全局唯一,分block块儿,例如:user1-user10,长度依次取0-10%,10%-20%......默认设置start:1,block:100,那么第二个值从101开始取
文件: file.dat 最常用,例如:登录账号、id之类的
| 组合 | Sequential | Random | Unique |
| each iteration |
结果:分别将15条数据写入数据表中
功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取
如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条
|
结果:表中写入15条数据,但可能有重复数据出现
功能说明:每次从参数化文件中随机选择一行数据进行赋值
|
结果:分别将15条数据写入数据表中
功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。
注:如果设置迭代次数为16次。结果:在执行第16次迭代时会抛异常,异常日志可在LoadRunner的回放日志(replayLog)中看到
|
|
each occurance |
结果:分别将15条数据写入数据表中
功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取
如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条
|
结果:表中写入15条数据,但可能有重复数据出现
功能说明:每次从参数化文件中随机选择一行数据进行赋值
|
结果:分别将15条数据写入数据表中
功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。
注:如果设置迭代次数为16次,而参数化文件中只有15条数据,明显数据不够。此时可以设置“when out of values”属性来判断当数据不够时的处理方式
Abort Vuser:中断虚拟用户
Countinue in a cylic manage:循环取参数化文件中的值,即:当参数化文件中的值取完后又从参数化文件的第一行开始取值。
Countinue with last value:继续用最后一条数据
|
| once |
结果:表中写入15条一模一样的数据。
功能说明:每次迭代都取参数化文件中第一行的数据。
|
结果:表中写入15条相同数据
功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。
|
结果:表中写入15条相同数据
功能说明:每次都取参数文件中的第一条数据进行赋值
|
性能测试学习第一天-----概念、环境、LR录制&参数化的更多相关文章
- Python学习第一弹——Python环境搭建
一.Python简介: Python,是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具有 ...
- django 学习第一天搭建环境
目前django版本是1.10,我学习的基础教材是 Web Development with Django Cookbook, Second Edition 搭建好配置环境 ssh免认证登录 修改一下 ...
- python学习第一天_环境的搭建
Python linux环境的安装: 1.https://www.python.org/ftp/python/ 大家可以在这里下载自己所需的linux下的版本 ,这里我下载的2.6.6版本: 2.在C ...
- locust 性能测试学习 第一天
不废话 1.安装python库 pip install locustio pip install pyzmq 2.脚本 命名为locust_test.py from locust import Htt ...
- 性能测试学习第八天-----linux环境整合篇
- Elasticsearch7.X 入门学习第一课笔记----基本概念
原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...
- 一、Android学习第一天——环境搭建(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第一天——环境搭建 Android 开发环境的搭建 ...
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
随机推荐
- Solr 全文搜索
## 1. 概述 在本文中,我们将探讨一个[Apache Solr](http://lucene.apache.org/solr/)搜索引擎中的基本概念 - 全文搜索. Apache Solr是一个开 ...
- R035---偷个懒,用UiPath录制电脑操作过程,迅速实现流程自动化
一.缘起 UiPath可以录制你操作电脑的过程,从而实现自动化. 目前有点鸡肋,因为有些操作过程无法录制,例如: 键盘快捷键 修改键 右键点击 鼠标悬停 即便如此,录制功能有时候还是可以用一下,特别 ...
- Linux文件权限设置教程
Linux的文件基本权限有9个,分别是owenr.group.others三种身份各自有自己的r.w和x,比如"rwxrwxrwx",就表示owener具有r.w.x权限,同样gr ...
- python基础一整型、bool、字符串
1整型.bool.字符串 1.整型 --数字(int) 用于比较运算的 32位 -2 ** 31 ~ 2 ** 31 -1 64位 -2 ** 63 ~ 2 ** 63 -1 基础运算 ...
- 使用ML-Agents Toolkit(0.5)训练游戏ai之环境搭建
ML-Agents toolkit目前已经更新到0.5版本了. 要想使用这个Unity插件训练人工智能需要如下软件 1.Anaconda指的是一个开源的Python发行版本,主要是让你的训练环境与其它 ...
- IO流总结2
2.字节流 |-- InputStream(读) |-- OutputStream(写) 由于字节是二进制数据,所以字节流可以操作任何类型的数据,值得注意的是字符流使用的是字符数组char[]而字节流 ...
- 初识web
人得往前走啊 所以学学web 动态网页是指在服务器端运行的,使用程序语言设计的交互式网页,它们会根据某种条件的变化,返回不同的网页内容.可以让用户和服务器交互的网站.然而动态网站并不是指具有动画功能的 ...
- 100天搞定机器学习|Day9-12 支持向量机
机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...
- java中dao层和service层的区别是什么
dao层中已经有操作数据库的方法了,为什么还要service层去封装?有什么好处? tanghui12321 | 浏览 131990 次 我有更好的答案 推荐于2017-10-06 18:44:5 ...
- 【Intellij】导出 jar 包
需要在 Intellij 导出 jar 包,一时不知道该怎么做,后来总算找到了方法,步骤如下: 1. File → Project Structure... → Artifacts → + → jar ...