性能测试——Jmeter/loadrunner

性能测试基础

本质:服务器端的性能测试。基于协议模拟用户发送请求(业务的模拟),对服务器形成一定的负载来测试服务器性能指标是否满足要求。与界面无关
性能指标的分类:空间性能,时间性能

性能测试的分类

性能测试(特定条件下验证系统的能力状态),
并发测试(并发访问,是否存在死锁或其他性能问题),
可靠性测试(给系统加载一定业务压力的情况下,使系统运行一段时间,已检测系统是否稳定)72hour
负载测试{极限测试},
压力测试(强度测试)
配置测试(对系统软硬件环境的调整)

性能测试的指标

并发用户数:同一时间向服务器发送请求的用户数量;(与每秒的并发请求数不同,一定要确认需求的目的是并发用户数还是并发请求数)
响应时间(网络传输时间+服务器处理时间)(不包含前端页面渲染时间, 到浏览器收到请求后响应数据截止
tps:每秒处理的事务数 吞吐量:描述服务器的处理能力
资源利用率: 在一定的负载情况下,服务器资源占用情况。CPU利用率(不超过70%,队列长度),MEM利用率(80%以下,页交换频率),带宽利用率(if资源利用率太小,会造成资源浪费)

性能测试流程

  1. 需求分析
  2. 测试计划
  3. 测试方案
  4. 用例设计
  5. 测试设计
  6. 定位分析问题

需求分析

测试对象(常用的,核心的重要的,数据量并发量)(登录,注册,搜索,下单deng)
确定性能指标(并发用户数,资源利用率,tps,响应时间)
测试场景:单一场景(登录,注册,下单)/混合场景(用户使用场景,系统使用场景)

测试计划

测试目标
测试人员组织
压测进度安排
压力机(测试机)(配置,要求,数量)
风险

测试方案

测试工具(loadrunner,Jmeter)
测试环境(数据库,服务器,架构设计,有条件的情况下尽量满足和线上环境一致)
测试策略(单一场景/混合场景)
监控工具(linux{nmon,rpc.Spotlight})(windows{Spotlight,perfmon.exe})

用例设计

测试脚本
场景设计

测试执行

脚本编写
场景监控设计
运行场景
监控场景
测试报告

定位分析问题

后端(代码/软件:数据库,应用服务器/硬件)
前端
网络

性能测试报告总结(bug不会很多,但是修改起来比较困难)

1.性能测试需求覆盖情况,性能测试过程中出现的问题,如何分析,调优,解决的(回顾 )
2.测试人员,进度控制,实际执行偏差和性能测试过程中遇到各类风险是如何控制的(管理角度)
3.经过该项目性能测试后,有那些经验和教训等内容(总结)

loadrunner

说明

工业级标砖性能测试负载工具,可以模拟上万用户实施测试,并在测试可实时检测 (应用服务器和服务器硬件各种工具,来确认和查找存在的瓶颈)
支持多协议,web(http/HTML ),windows,Socket,ftp,oobc,ms,sql,server等协议
c语言编写

缺点

收费
体积度大
无法定制功能

优点

多用户(支持单位:万)
详细分析报表
支持IP欺骗

jmeter

基于java开发的一款性能测试软件
多协议(http/https,jdbc,java)
可以用于对服务器,网络或对象模拟巨大的负载
通过创建带有断言的脚本来验证程序是否能返回期望的预期

  1. 优点
    开源免费,跨平台,支持多协议,小巧,功能强大,易上手,应用广泛,丰富学习资料及扩展组件
  1. 缺点
    不支持IP欺骗
    使用JMeter无法验证JS程序,也无法验证页面UI,则需和Selenium配合使用
jmeter环境搭建
  1. 安装jdk
  2. 安装JMeter
    下载与安装

官方下载地址:https://jmeter.apache.org/download_jmeter.cgi

在这里插入图片描述
下载好安装包后,解压到你想要安装的目录,打开bin目录下的APacheJMeter文件,这种方式叫做图形化启动入口
在这里插入图片描述

jmeter的功能概要

  1. jmeter文件目录介绍
  • bin目录

存放可执行文件和配置文件
jmeter.bat:window的启动文件
jmeter.log:日志文件
jmeter.sh:linux的启动文件
jmeter.properties:系统配置文件
jmeter-server.bat:windows分布式测试要用到的服务器配置
jmeter.serve:linux分布式测试要用到服务器配置

  • docs目录
    docs:jmeter的api文档,可打开api/index.html页面查看
  • printable_docs目录
    printable_docs的usermanual子目录下的内容是jmeter的用户手册文档
    usermanual下的component_reference.HTML是最常用的核心元件帮助文档
  • lib目录

该目录下存放jmeter依赖的jar包和用户扩展所依赖的jar包

  1. 修改默认配置

汉化配置:实现jmeter界面的汉化包括两种方式:1.临时性 2.永久性
主题修改:选项–主题–选择对应的主题,并重启

  1. jmeter基本操作步骤
    需求:

使用jmeter访问百度首页接口,并查看接口请求和响应信息

操作步骤:

1.启动jmeter
2.在“测试计划”下添加“线程组”
3.在“线程组”下添加“http请求”取样器
4.填写“http请求”的相关请求数据
5.在“线程组”下添加“查看结果树”监听器
6.点击“启动”按钮运行,并查看结果

在这里插入图片描述
在这里插入图片描述

  1. jmeter元件及基本作用域
    目标

1.熟悉元件之间彼此作用域
2.掌握元件执行顺序

名词科普

1.元件:多个类似功能组建的容器统称
2.组件:实现独立某个功能的统称(类似于函数)
3.取样器:不同协议实现的组件

  1. 元件的作用域
    在jmeter中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的
    提示:核心是“取样器”,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同

取样器的原则

1.取样器:元件不和其他元件相互作用,因此不存在作用域的问题
2.逻辑控制器:元件只对其子节点的取样器和逻辑控制器作用
其他六大组件:除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用
4.如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)
提示:以上元件中还没有开始学习,暂时理解jmeter这种树形结构影响作用域即可

  1. 元件执行顺序

1.配置元件(config elements)
2.前置处理程序(Per-processors)
3.定时器(timers)
4.取样器(sampler)
5.后置处理程序(post-processors)
6.断言 (assertyions)
7.监听器(listeners)
提示:
1.前置处理器,后置处理器,断言等元件功能对取样器起作用(如果在他们的作用域内没有任何取样器,则不会被执行)
2.如果在同一作用域内有多个同一类型的元件,则这些元件按照他们在测试计划中的上下顺序依次执行

  1. 重要组件

线程组
http取样器
查看结果树
提示:无论哪个案例基本都需要以上三个组件。

7.1 线程组

说明:线程组是控制jmeter将用于执行测试的线程数,也可以把一个线程理解为一个测试用户

添加线程组

位置:右键点击测试计划—添加—线程(用户)----线程组

线程组的特点

设定线程数(模拟多人操作)
取样器(请求)和逻辑控制器必须依赖线程组才能使用
线程组可以添加多个,多个线程组可以并行或串行
线程组下可以添加其他元件下组件

线程组分类

1.线程组:
普通的,常用的线程组。可以看作一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
2.setup线程组(前置)
一个特殊类的线程组,可用于执行预测试操作
3.tearDown线程组(后置)
一种特殊类型的线程组,可用于执行测试后工作

线程组参数详解

线程数:模拟虚拟用户数
Ramp-up时间:虚拟用户启动所需要的时间
循环次数:
配置指定次数:控制脚本循环执行的次数。
配置循环永远:需要调度器配置使用,运行时间:脚本执行的时间 延迟启动时间:脚本等待特定的时间才能开始运行
线程数m和循环次数n的关系:如果同时配置,实际发送HTTP请求为m*n;虽然发送请求的次数相同,单不能互相替换(线程数:代表并发用户数,体现服务器的负载量。循环次数:代表执行时间)

在这里插入图片描述
7.2取样器

六级标题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值