性能测试你还不会做?看看这篇文章你就懂了!

性能测试的概述

性能:百度百科定义:器物的性质与效用。

生活中:买手机,买电脑,买车 –》 性能好:快(时间短)、资源

软件的性能:软件在允许的范围内使用过程中的反应的速度(时间),消耗的资源的情况等等。

性能测试:是通过自动化测试工具模拟多种正常,峰值,以及异常的负载情况下对系统各项性能指标进行的测试。负载测试、压力测试、容量测试都属于性能测试。

负载测试:确定各种负载下系统的性能,目标是测试负载逐渐增加时各项指标的变化。

压力测试:是通过确定一个系统的瓶颈值或者不能接受的性能点,并且获取提供最大服务的测试。也叫极限测试。

容量测试:在可接受性能范围内,最大的负载情况下的测试。

为什么要做性能测试?

  • 应用程序是否满足用户性能的需求?
  • 应用程序在满足能够预期的用户负载的情况是否有盈余的能力?
  • 应用程序在预期或者非预期的用户负载下,运行是否稳定?
  • 应用程序能够确保用户在使用软件的时候有比较好的性能体验。

性能的问题根源?

多平台,超多服务器,异构系统,多应用并行,数千个网站同时工作,这个过程中特别容易出现交叉故障点。

误区:提高一些硬件配置,性能就变好了,优化了,所以不用做性能测试。

错误:只是临时解决了问题,根本问题没有解决。

影响性能的因素有哪些?

硬件环境

软件本身(算法逻辑,数据,中间件)

网络带宽

软件环境

性能的评定的标准:性能指标

响应时间:指的是从客户端发出请求开始,到接收到服务器的响应,并且看到响应的内容为止,这个时间段,称为响应时间。

响应时间=网络传输的时间+服务器的处理时间+浏览器解析呈现的时间

弱化网络传输时间和浏览器解析的时间:

前期测试建议在局域网测试;

性能测试建议一定要有独立的测试环境;(测试环境必须要进行数据初始化)。

在晚上测试。

用户数:

在线数:在软件上,不一定在操作

并发数:在软件上,并且在操作。(特定的时间点或者时间段,操作不一定相同)

在线数 >=并发数

实际需求 –》测试用例

测试500人 登录的性能 – 》在线数 500,并发没有要求;一个线程组实现或者多个线程实现

测试500人并发登录的性能 – 》在线数500,并发数500;实际测试,建议一个线程组实现,如果想要多个线程组,要进行设置

测试300人并发登录的性能,同时有200人正在注册 – 》500,并发数 500,

注册和登录在不同的线程组设置,还要进行并发设置

资源的利用率:cpu 内存 磁盘 网络

吞吐量:处理事务的总数据量

吞吐率:单位时间内处理的数量

点击量:点击数量

点击率:单位时间内点击的次数

吞吐量、吞吐率、点击量、点击率 都是从软件的处理能力反馈性能的。

例如:软件的响应时间是1秒,所以性能很好,判断正误?

错误,太片面,其它的性能指标不清楚,比如:只有一个用户使用

软件性能是否达标:依据是用户的性能需求。

不同的角度出发,不同的系统平台,对性能的要求不一样,关注的指标也不同。

如何时进行性能测试?

一般都是在功能测试的中后期进行,性能测试依赖于功能测试的。性能测试一定要独立的测试环境,并且测试环境必须进行用户数据的初始化。

性能测试的过程?

前期准备(功能稳定,组建团队)

选择合适的测试工具(loadrunner 商用型、jmeter (开源版)、自研的(loadspace))

性能测试的计划方案(需求分析,计划,策略,资源)

性能测试的实现(准备测试环境—> 设计场景 – > 编写测试用例 – > 辅助工具)

性能测试的执行(工具执行脚本 – > 记录结果)

性能调优分析 – 》 回归测试

性能测试报告

要测试的目的:本次性能测试预期要达到的性能要求

测试概要的描述:结构,人员,环境,场景等等(重点),过程简介。

测试结果和数据

测试结论

Jmeter

基于java开发的开源的测试工具,轻量级

性能测试

接口测试

支持多种协议

Jmeter 的组成

性能测试的原理:基于协议,用工具模拟实际操作(发送多个请求),并且收集测试数据,生成测试报告。

负载发生器:产生负载,产生压力,模拟用户行为

用户生成器:脚本运行的引擎

资源生成器:生成测试过程中服务器的资源数据(收集测试数据)

报表生成器:根据测试中获取的数据,生成报表,提供可视化显示方式

Jmeter 环境搭建

基于java,运行的时候需要java环境,JDK,要配置环境变量(系统变量)

Java 的环境: JDK 软件开发工具包 、 jre运行环境、jvm (java的虚拟机)

Jdk配置环境变量: (系统变量,新建) JAVAHOME: C:\Program Files\Java\jdk1.8.0_111

PATH: %JAVAHOME%\bin

(系统变量,新建)CLASSPATH: .;%JAVAHOME%\lib;%JAVAHOME%\lib\tools.jar

验证:cmd 命令窗口,输入 java 或者 java –version

jmeter 是免安装模式,需要进行环境变量配置(系统变量)

(系统变量,新建)JMETER_HOME: D:\apache-jmeter-5.2.1

Path:%JMETER_HOME%\bin

CLASSPATH: ;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;

验证:cmd 命令 , jmeter -v 或者 jmeter

jmeter 启动

命令启动: jmeter , 启动的是 gui 模式,供制定测试计划和调试就脚本

批处理文件启动

汉化: optinons à选择语言—》中文 ,退出重新登录后,又变成英文

如果需要永久汉化,修改配置文件 jmeter.properties

Jmeter 常见的测试框架

测试计划:启动jmeter,就会 有一个默认的计划,这个测试计划包含了本次测试需要的所有的功能。

线程(用户):一个线程表示一个模拟用户

线程组(主线程组,核心):需要进行性能测试的内容放在其中,不能为空;

Setup 线程组:初始化(准备部分)内容,可以没有;如果有,一定是最先执行的。

Teardown 线程组:收尾的内容,可以没有

线程属性:线程数 == 》用户数

Ramp –up :虚拟用户启动的实际,即用户开始发送请求的时间

循环次数:具体的次数

永远,一定要设置持续时间,不然无法正常结束。

取样器:测试对象及测试内容,基于线程,即要模拟的动作,就是需要模拟的请求。一个取样器就放一个请求。Jmeter下支持多个请求可以一起发送,支持很多种协议。

取样器中:协议、协议方法、服务器的IP,测试的URL地址,端口号等等。

监听器:用来查看测试结果数据的,图形化显示,列表显示,常见的监听器:

查看结果树:同时查看请求和响应的信息,绿色表示测试地址畅通,不代表测试是成功的,红色表示异常。

汇总报告:汇总请求发送的情况

图形结果:图形化展示

表格显示展示:可以查看启动时间(starttime)

请求响应页面有乱码出现,没有做编码处理,修改配置文件

修改后

汇总报告和聚合报告中各项指标项说明

注意:平均响应时间单位是 毫秒

标准偏差:系统的离散程度,体现的是系统的稳定性,值越小,系统越稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/181237.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在国外怎么申请香港优才计划项目?和在内地申请有何区别?

在国外怎么申请香港优才计划项目?和在内地申请有何区别? 随着香港优才计划的热度持续上升,也吸引了不少优秀人才想要申请。如果你现在人在新加坡、加拿大、马来西亚、澳大利亚或者其他国家,想申请香港优才计划拿香港身份&#xff…

最新版灵沐V3.3微信资源类小程序源码支持流量主

源码简介 最新版灵沐V3.3微信资源类小程序源码支持流量主,一套不错的流量主变现资源下载小程序,它支持在微信、QQ和抖音平台上运行。这次更新主要集中在全局UI设计的升级,并依然注重资源下载和激励视频变现的功能。另外,还新增了…

外地人可以在上海当老师吗

随着社会的发展,越来越多的人涌入大城市,其中也包括上海。在这个繁华的城市里,许多人都梦想成为一名老师,但是外地人可以在上海当老师吗? 首先需要了解上海的教育政策。根据相关规定,外地人可以在上海当老师…

淘宝返利APP草柴如何绑定淘宝账号?

草柴APP是一款淘宝、天猫、京东大额优惠券领取及购物返利省钱工具。通过草柴APP绑定淘宝账号,可领取淘宝大额内部隐藏优惠券,领取成功再购物可享券后价优惠,确认收货后可获得淘宝返利。 淘宝返利APP草柴如何绑定淘宝账号? 1、手…

知虾:揭秘Shopee大数据采集及分析平台的全方位运营利器

Shopee是如今备受瞩目的电商平台之一,而要在这个竞争激烈的市场中脱颖而出,了解市场趋势、选择畅销商品、分析竞争对手等是至关重要的。这就是为什么Shopee推出了知虾,一个强大的大数据采集及分析平台。本文将详细介绍知虾的功能和优势&#…

pip安装tkinter模块失败 No matching distribution found for tkinter

我想使用Python创建一个简单的桌面应用程序, 这个应用程序依赖于tkinter, 然而,当我尝试安装过程时,出现了错误。 $ pip install tkinter ERROR: Could not find a version that satisfies the requirement tkinter (from versions: none) ERROR: No matching distributio…

YOLOv8使用自己训练的模型,将检测图片进行可视化:效果超过YOLOv5模型,丰富改进模型的检测展示

💡更多改进内容📚 芒果专栏 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可💡更方便的统计更多实验数据,方便写作 YOLOv8使用自己训练的模型,将检测图片进行可视化:效果超过YOLOv5模型,丰富改进模型的检测展示 文章目录 核心代码改进新增代码部分修…

头发的方向图(2D和3D)与合成

首先,我们从一个不受光照限制的环境中拍摄一组输入图像,这些图像包含了头发的不同视角和姿态。我们对这些图像进行半自动的分割,将头发从背景中分离出来,然后使用PMVS ,一种先进的多视角立体算法,来重建一个…

环卫大姐张建娜:用实际行动诠释英语学习重要性

近日,一位身穿橘黄色工作服,手拿扫把服务于三里屯使馆区的环卫大姐张建娜,凭借一口流利的英语为外国人指路的视频在网上引起关注。不仅引发了大家对她“英语说的真好”的感叹,还有对如何学好英语的思考,以及引发了人们重新审视英语在日常生活中的重要性。 张建娜表示,其实英语…

玻色量子“揭秘”之可满足性问题(SAT)与QUBO建模

​ 摘要:布尔可满足性问题(Boolean Satisfiability Problem,简称SAT问题)是逻辑学和计算机科学中的一个问题,它的目的是确定是否存在一种解释,使给定的布尔公式成立。换句话说,它询问给定布尔公…

会议动态 | 祝贺2023 中国商品混凝土年会在上海隆重召开!

2023年11月19日-21日,由(国家)建筑材料工业技术情报研究所、中国散装水泥推广发展协会混凝土专委会主办的"笃信固本 行稳致远"——2023 第十九届全国商品混凝土可持续发展论坛暨2023中国商品混凝土年会在上海隆重召开! …

内测分发平台的合作生态和生态效应如何

大家好,我是咕噜-凯撒,随着移动互联网和智能设备的快速发展,越来越多的开发者和企业开始关注产品的质量和体验。而内测分发平台则成为了一种重要的工具,能够帮助他们更好地测试、优化和推广产品。在此过程中,内测分发平…

Flink 替换 Logstash 解决日志收集丢失问题

在某客户日志数据迁移到火山引擎使用 ELK 生态的案例中,由于客户反馈之前 Logstash 经常发生数据丢失和收集性能较差的使用痛点,我们尝试使用 Flink 替代了传统的 Logstash 来作为日志数据解析、转换以及写入 ElasticSearch 的组件,得到了该客…

完美解决:在Ubuntu18.04下ROS Melodic基于python3的cv_bridge的一点子歪门邪道

由于在Ubuntu18.04下ROS Melodic是运行在python 2.7环境下,而我的程序需要运行在anaconda创建的python 3.x环境里,这就需要用到cv_bridge这个库,而不出意外的,各种报错,比如: from cv_bridge.boost.cv_bri…

SOLIDWORKS Explorer是什么?

前几天小编在微信上跟人聊天的时候被问到这样的问题: 这个是干什么用的?看着好像没有建模的功能。。。。。 当时我的内心是这样的 。。。。。。。抱歉,是没做好普及工作的小编的锅。。。。。。这个就不是用来建模用的,通常只有…

Raptor安装

Raptor官网:https://raptor.martincarlisle.com/ 进入官网后,下拉找到 Download RAPTOR,windows系统的选择Windows Users 下载完成后打开,选择“next” 修改一下路径,不要放到C: 继续next 完结撒花

Thread类常用成员方法

点击链接返回标题-> Java线程的学习-CSDN博客 目录 前言 有关线程名字的成员方法: String getName() void setName(String name) Thread(String name) 获取线程对象的成员方法: static Thread currentThread() 让线程睡眠的成员方法&#xff1…

Python基础【三】--数据类型-Number【2023.11.23】

1.数值类型 Number数据类型只要包括三个分别是:整型(int)、浮点型(float)、复数(complex) 整型:包括正整数、负整数。如:1024、-1024。整型有四种进制表示,分…

Rust语言入门教程(二) - 变量与作用域

变量与作用域 变量的声明与初始化 Rust的基本语法格式如下: fn main(){let bunnies 2; }语句以分号结尾,用花括号包含语句块。 Rust的语法其实借鉴了很多其他的语言,比如C语言和Python, 所以变量定义的格式看起来也跟很多我们…

Windows如何使用key登录Linux服务器

场景:因为需要回收root管理员权限,禁止root用户远程登录,办公环境只允许普通用户远程登录,且不允许使用密码登录。 一、生成与配置ssh-key 1.使用root管理员权限登录到目标系统。 2.创建一个新的普通用户,和设置密码用…