jmeter脚本开发:性能测试的基础概念(一)

一. 什么是(软件)性能测试

性能:事务、物品的某些特性的评价值

软件性能测试:是用一定的技术,找出或验证某个性能指标值的测试,如:你跑100米,用时多少?

举例:

“看看你有几斤几两”:

  逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载量

“鸭梨好大哦!”:

  在较大的性能压力下,持续运行一个比较长的时间,看系统服务及各项资源利用情况

  关键词:较大压力 + 较长时间

一般测试中,找出最大的负载量,比如100,然后选择一个比100稍微小点的做7 x 24小时压力测试。一般开始前,先做一个较低的比如10或者20的压力测试,测试通过说明系统的可靠性有一定的保障,再在性能瓶颈90的时候做压力测试

可靠性测试:在给定的一定的业务压力下,持续运行一段时间,查看系统是否稳定

  关键词:是否“稳定”,一定业务压力

容量测试:在一定的软、硬件条件下,在数据库不同数量级数据量的情况下,对系统中读写比较多的业务进行测试,从而获得不同数据量级下的性能指标值

  关键词:不同数据量级

举例:

可靠性测试:一定的压力并不要求较高,比较低的压力测试,比如最大负载量为100的时候,选择10或者20

容量测试:比如查询1个用户数据和10000个用户数据,数据库查询的响应时间

二. 性能测试的目的

目的:寻找或证明系统的某些关键性性能指标

  1. 全新系统,从未做性能测试,寻找关键性的性能指标值

  2. 基于已有的性能基础上, 再次做性能测试,验证预定的性能指标值

三. 性能测试的前提

1. 性能测试的必要性研究——关键项评估

  1) 主管部门,监管部门审查

  2) 涉及生命财产安全

  3) 大型新系统

  4) 核心系统

  5) 架构调整

  6) 业务剧增

  7) 重大缺陷修复

2. 可测性——可量化为性能指标值

四. 性能测试工具

1. 开源:Jmeter

  Java开发、跨平台、版本更新快(建议v3.2以后+jdk 1.8),学习资料比较多非常活跃

2. 商业 :loadrunner

  性能测试标杆软件、C语言、国内破解(< lr11),lr12免费试用50限制用户数,更新极慢

3. 自研:python + locust

  python语言自行开发

五. 性能测试主要指标

1. 软件应该关注哪些性能?

1) 企业应该关注哪些性能?

关注点 性能 性能指标
服务器利用情况 资源利用率  
能支持的最大用户 系统容量  
能支持的最大并发用户 并发用户数  
是不是可以更换硬件提供性能 可扩展  
能不能持续运行长时间不宕机 稳定性  

2) 开发人员关注哪些性能?

关注点 性能 性能指标
架构设计是否合理 系统架构  
数据库设计 数据库  
代码逻辑 代码  
线程、异步、同步、队列 实现技术  
资源配置 稳定性  

2. 并发

指同一个时间点执行相同的操作(秒杀)

3. 并发用户数(重要指标)

同一时间点,执行相同请求的用户数

系统用户数、在线用户数、线程数

4. 事务(Transaction)

指一个客户机向服务器发送请求然后服务器做出反应的过程

注意:这里的线程数指的是虚拟用户数,与开发的线程不太一样

jmeter里通常理解为:一个接口从发起请求到响应称为一个事务,LR中多个接口的请求到响应可以看做一个事务,多个接口写在一个事务包里

5. 响应时间(RT)(重要指标)

从发起请求到收到响应的时间

  发起请求网络传输时间 + 服务器处理时间 + 返回响应网络传输时间

6. TPS\QPS(最主要指标)

TPS(Transactions per Second):服务器每秒处理事务数,衡量服务器处理能力的最主要指标

QPS(Queries per Second):每秒查询数

差异:一个Transactions 可能有多个Queries,比如访问网页

注意:TPS高,说明代码复杂度低,CPU好,内存消耗低,数据库运算能力快

一个事务可能包括多个查询,因此可能QPS大一些,TPS小一些,比如百度一下,有可能调用多个查询接口

RT:想要真正的服务器处理时间,因此实际做测试时尽量不要使用堡垒机、跳转机

7. 吞吐量(Throughput)

单位时间内处理的请求数量(事务/s)

如:港口吞吐量,1年5千万标准集装箱

8. 吞吐率

单位时间内通过的数据的平均速率(kb/s)

如:港口日吞吐率,年吞吐量/365天

9. 点击数(Hit per Second)

每秒点击数

10. 资源利用率

指系统资源的使用程度,比如服务器(网络以及数据库)的CPU利用率,内存利用率,磁盘利用率,网络带宽利用率等

CPU利用率

内存利用率

磁盘I/O

一般都不要超过80%

六. 性能测试步骤

1. 性能测试准备

1) 需求分析,熟悉业务

2) 明确性能测试目标(指标值)

3) 了解软件功能,架构

4) 制定测试模型(编辑测试用例)

5) 指定测试计划,做好工作量评估

2. 搭建性能测试环境

1) 工具选型与准备

2) 被测系统环境搭建(服务器、服务版本更新、数据库数据准备)

3) 网络配置

3. 性能测试脚本开发

1) 选取协议

2) 制作脚本

3) 调试脚本

4) 验证脚本

4. 性能测试脚本执行

1) 试用行

2) 场景执行

5. 结果分析与调优

1) 分析依据:结果图表

2) 分析思路:服务器硬件瓶颈 > 网络瓶颈 > 服务器os瓶颈(参数配置、数据库、web服务器) > 应用瓶颈(sql语句、数据库设计、业务逻辑、算法)

3) 调优

4) 修改脚本或场景

注意:做性能测试的必要条件:性能测试服务器的配置要尽可能的和生产服务器配置相近

6. 测试报告与结果追踪

性能测试报告

性能测试问题跟踪

七. 开展性能测试必备条件

1. 网络要求:内网(zoom域)  外网 独立分开 千万不要用跨内网外网

2. 独立环境  功能测试不能和性能测试共用环境

原文地址:https://www.cnblogs.com/my_captain/p/11756343.html

时间: 2024-08-05 01:46:56

jmeter脚本开发:性能测试的基础概念(一)的相关文章

记录一次jmeter脚本开发缺少utf-8惹的祸

背景:需要模拟余额发放,并进行大批量的发放,我就想到了jmeter.就是几个简单的接口,我想很简单,就上手,没想到最后鸡鸡,害我查了半天原因. 操作:我编写的脚本: 请求默认值的内容编码我也是为空,当时就一直提醒我账户不存在或者错误,我是一脸懵逼. 排查方法: 使用postman,请求一模一样,请求成功:这是我就懵逼了,为什么这个可以 然后我又回到jmeter,打开eads日志,发现有些中文编译了,都是?? 我感觉可能是不是我忘了加utf-8,我就加上了,果然成功了,然后最后我就吐血 postm

老李分享:Eclipse中开发性能测试loadrunner脚本

前篇我分享了如何用loadrunner搭建javauser的性能测试脚本环境,本次我来告诉大家如何在eclipse开发loadrunner脚本如何配置环境,poptest是业内唯一一家培养测试开发工程师的培训机构,以培养学员做性能测试,自动化测试,测试工具开发的能力为目标,在poptest的课堂上分享大量的性能测试案例,由于个人的经验有限,资源有限,无法让讲师个人的能力跟上业务的技术进步,培训机构的讲师都在吃老本,poptest创始人李爱然,王远兵和我都希望能把一线的技术教给学员,让学员真正学到

【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!

[COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-16 10:08 30803人阅读 评论(18) 收藏 举报 游戏脚本luaanimationpython 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/681.htm

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

【嵌入式4412开发板学习教程】Uboot教程之uboot基础概念和框架

[4412开发板教程]Uboot教程之uboot基础概念和框架 正在学习uboot,教程讲解的很详细,先上个笔记,视频上传到网盘后再补上...... 知识点: 1.操作系统分层的概念 Windows:bios→内核模式→用户模式→用户程序 linux:bootloader→内核→文件系统→用户程序 2.bootboader种类介绍 U-boot是最通用的bootboader.(210,4412等等) vivi 针对三星的ARM来定制2440上有用到 3.4412休眠问题 它可以直接跳过uboot

Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析

关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 -- IIC总线 ,下面回顾下 IIC 基础概念 一.IIC 基础概念 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信.例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇.可随时监

U3D脚本开发基础

1.MonoBehaviour类,定义了对各种特定事件的脚本响应函数.这些函数均以On做开头. 2.U3D中常用的组件及对应变量名如下: Transform(transform),Rigidbody(rigidbody),Renderer(renderer),Light(light),Camera(camera),Collider(collider),Animation(animation),Audio(audio). 如果游戏对象上不存在某个组件,那么其对应值为null. 若要访问自定义组件,

WCF分布式开发步步为赢(1):WCF分布式框架基础概念

众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推出了自己的中间件产品,比如Oracle Fusion和 SAP NetWeaver,IBM.BEA等企业也推出了自己基于SOA的解决方案.基于J2EE平台的SOA架构设计中的一个重要概念就是EJB企业服务总线,作用是实现各个系统的数据交互.而.NET平台上,WCF就是微软为各个系统的数据交互提供通讯

项目开发基础概念

项目开发基础概念 企业的web项目类型 1. 商城 1.1 B2C 直销商城 商家与会员直接交易 ( Business To Customer ) 1.2 B2B 批发商城 商家与商家直接交易 1.3 B2B2C 购物平台 商家和会员在另一个商家提供的平台上面进行交易 1.4 C2B 定制商城 会员向商家发起定制商品的需求,商家去完成. 1.5 O2O 线上线下交易平台 1.6 C2C 二手交易平台 2. 门户网站[企业站和门户站] 3. 社交网络 4. 资讯论坛 5. 内部系统 6. 个人博客