新手上路:盘点「性能测试」必须掌握的技术点

news2024/12/22 18:16:25

前段时间,有一些小伙伴提出希望我们推送点性能测试的技术干货。所以,小编今天通过上网查资料,结合项目实操过程中的一些问题,总结了一些关于性能测试的内容,希望是大家想要了解的内容哈。

1、性能测试的目的

首先,先来明确一个问题,我们为什么要给产品/软件等做性能测试?

时下,市面上绝大多数的软件产品,都是分布式应用。这就产生了一些有意思的现象:开发的产品在少量用户使用时,可能不存在问题,一旦用户多起来,就容易出现系统瘫痪等多种问题。

那么,为什么会出现这种情况呢?这是由于用户的使用数量、用户场景的不确定性造成的。当并发用户数量超过负载量,系统就会陷入崩溃状态。由此可见,对新开发的产品做性能测试是非常重要的。它能帮助我们了解系统可承受的并发用户数量,带宽、cpu、内存、硬盘速度等。

2、性能测试的内容

性能测试主要包括以下几个方面的内容:负载测试、压力测试、容量测试等。

负载测试:不限制软件的运行资源,测试软件的数据吞吐量上限,以发现设计上的错误或验证系统的负载能力。目标是确定并确保系统在超出最大预期工作量的情况下,是否能够正常运行。

压力测试:也称为强度测试。通过模拟实际应用的软硬件环境,及用户使用过程的系统负荷,长时间或超大负荷地运行,来测试被测系统的性能、可靠性、稳定性等。

容量测试:可以看作是系统性能指标中,特定环境下的特定性能指标,即设定的界限或极限值。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

3、性能测试评价指标

说了这么多,下面就要对性能测试的指标做评价了。

从用户的角度来说,一般响应时间<2秒,就属于流畅的体验;如果响应时间>10秒,则要考虑改进响应速度的问题;

从产品的吞吐量来说,我们需要关注硬盘IO(读写)、网络IO(上行下行带宽)、cupIO、服务器的处理能力、客户端的打开页面数量等。

另外,我们还需要了解用户打开页面、登陆服务器、实现消息发送等某一动作的事务处理能力。

4、性能测试关注点

  • l 响应时间快慢,服务器端的处理速度
  • l 服务器端的使用情况
  • l 数据库端的资源使用情况
  • l 最大用户访问数量
  • l 同时处理最大业务数量
  • l 考察系统能否支撑7x24小时运转
  • l 内存资源、线程资源能否正常回收
  • l 代码,算法,sql语句设计是否合理
  • l 整个系统的稳定性,可恢复性

5、性能测试的核心原理

1)基于协议(前端、后端的通信机制),基于界面(与前端的交互),基于代码(后端);

2)基于网络的分布式架构:基于网络协议去模拟用户发送请求等;

3)基于多线程:模拟多线程操作,多人同时操作,模拟大负载量;

4)基于真实场景:模拟真实的网络环境,用户操作时间不确定性,操作不确定,得出数据的准确性也存在差异。场景不对,数据也不一定可用。

6、代码实现性能测试

针对某一功能做性能测试,可以通过论坛的登陆以及发帖(post协议,多线程这两点)、登陆操作、发帖操作(涉及协议)等,并采用多线程同时操作。

7、Loadrunner的使用

Loadrunner 的四个部件,分别是指:

  • Vuser generator:开发性能测试脚本;
  • Controller:提供多线程并发等操作;
  • Ananlysis:结果分析;
  • Load generator:负载生成器(controller 里面的一个主键)

下面给大家详细介绍一下。

在vuser generator (虚拟用户生成器)中,新建一个脚本:

进入界面,点击start录制一段脚本;

internet application 指的是b-s 架构,win 32 是指c-s 架构,默认是录制到action,勾选recond表示立即开始。

可以手写,可以录制。点击web_url,使用get请求;点击web_submit_data,使用post请求。

如果出现乱码,可以这样解决:

开始时:tool > advaced > support charset // utf-8 或者本机编码

运行时:vuser > preferences > option > convert from/to utf-8

最后是编码的差别,大家可以参考一下:

国标GB-x ,2byte-16bit , 2^16种组合,只对中文进行编码。

utf-8 :3byte = 24bit 2^24种组合 ,对全世界的文字进行统一的编码。

ascii码:一个字节 (2^8=128)

END今天的分享到此结束了!点赞关注不迷路!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式环境认证和授权-基于springboot+JWT+拦截器实现-实操+源码下载

1、功能概述&#xff1f; 1、当用户登录的时候&#xff0c;将用户的信息通过JWT进行加密和签名&#xff0c;并将JWT产生了token信息保存到当前浏览器的localStoragee中,即本地存储中。 2、当用户登录成功后&#xff0c;访问其他资源的时候&#xff0c;程序从localStorage中获…

linux(4):linux基础命令第三弹

在linux基础命令第二弹中http://t.csdnimg.cn/JPNYY我们讲了有关路径&#xff0c;创建目录和文件、文件夹&#xff0c;以及如何查看文件内容的问题&#xff0c;第三弹我们将学习有关文件操作和查找以及过滤关键字、展示文件字节&#xff0c;行数的命令&#xff0c;还有一个很重…

【程序员的自我修养04】目标文件生成可执行文件过程

绪论 大家好&#xff0c;欢迎来到【程序员的自我修养】专栏。正如其专栏名&#xff0c;本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度&#xff0c;我会尽自己最大的努力&#xff0c;争…

.Net中的集合

所有的集合都是继承自IEnumerable。集合总体可以分为以下几类&#xff1a;关联/非关联型集合&#xff0c;顺序/随机访问集合&#xff0c;顺序/无序集合&#xff0c;泛型/非泛型集合&#xff0c;线程集合。 各集合类底层接口关系图 泛型与非泛型集合类的分析 泛型集合是类型安…

自动化测试基础知识:什么是自动化测试?需要学习哪些知识与工具!

1、自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c; 在设计了测试用例并通过评审之后&#xff0c;由测 试人员根据测试用例中描述的规程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。简言之&#xff0c;自动化测试…

【操作系统导论】比例份额调度

本文介绍一种 比例份额&#xff08;proportional-share&#xff09; 调度程序&#xff0c;也称为 公平份额&#xff08;fair-share&#xff09;。 彩票调度 简介 彩票调度 的基本思想&#xff1a; 每隔一段时间&#xff0c;都会举行一次彩票抽奖&#xff0c;以确定接下来应该…

【上海大学数字逻辑实验报告】六、时序电路

一、 实验目的 掌握同步二进制计数器和移位寄存器的原理。学会用分立元件构成2位同步二进制加计数器。学会在Quartus II上设计单向移位寄存器。学会在Quartus II上设计环形计数器。 二、 实验原理 同步计数器是指计数器中的各触发器的时钟脉冲输入端连接在一起&#xff0c;接…

做题总结 707. 设计链表

做题总结 707. 设计链表 leetcode中单链表节点的默认定义我的尝试正确运行的代码&#xff08;java&#xff09; leetcode中单链表节点的默认定义 class ListNode {int val;ListNode next;//无参public ListNode() {}//有参:1public ListNode(int val) {this.val val;}//有参:…

【项目小结】优点分析

一、 个人博客系统 一&#xff09;限制强制登录 问题&#xff1a;限制用户登录后才能进行相关操作解决&#xff1a; 1&#xff09;前端&#xff1a; ① 写一个函数用于判断登录状态&#xff0c;如果返回的状态码是200就不进行任何操作&#xff0c;否则Ajax实现页面的跳转操作…

Apollo配置发布原理解析

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

Windows下查看删除某一个端口号

背景&#xff1a;Java项目运行时&#xff0c;提示端口号被占用&#xff0c;然后就忘记之前是怎么处理的了&#xff0c;感觉还是像Linux中杀掉端口号就命令行的方式比较简单一些&#xff0c;然后就是各种搜索&#xff0c;记录一下 第一步&#xff1a;在cmd中查看该端口号是否被…

最强文生图跨模态大模型:Stable Diffusion

文章目录 一、概述二、Stable Diffusion v1 & v22.1 简介2.2 LAION-5B数据集2.3 CLIP条件控制模型2.4 模型训练 三、Stable Diffusion 发展3.1 图形界面3.1.1 Web UI3.1.2 Comfy UI 3.2 微调方法3.1 Lora 3.3 控制模型3.3.1 ControlNet 四、其他文生图模型4.1 DALL-E24.2 I…

Nginx的location匹配和rewrite重写

一、location匹配 常用的正则表达式 ^ &#xff1a;匹配输入字符串的起始位置 $ &#xff1a;匹配输入字符串的结束位置 * &#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”&#xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll…

MySQL笔记-第14章_视图

视频链接&#xff1a;【MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板】 文章目录 第14章_视图1. 常见的数据库对象2. 视图概述2.1 为什么使用视图&#xff1f;2.2 视图的理解 3. 创建视图3.1 创建单表视图3.2 创建多表联合视…

C++ exception类:C++标准异常的基类

C语言本身或者标准库抛出的异常都是 exception 的子类&#xff0c;称为标准异常&#xff08;Standard Exception&#xff09;。你可以通过下面的语句来捕获所有的标准异常&#xff1a; try{//可能抛出异常的语句}catch(exception &e){//处理异常的语句} 之所以使用引用&a…

GeoPandas实操:读取数据

GeoPandas 支持读取和写入多种地理空间数据格式&#xff0c;如 ESRI Shapefile、GeoJSON、GeoPackage 等&#xff0c;以及与其他 GIS 软件兼容的格式。 1. 读取数据 1.1. 读取ESRI Shapefile数据 ESRI Shapefile&#xff08;简称 Shapefile 或 .shp 文件&#xff09;是一种常…

Pandas中的Series(第1讲)

Pandas中的Series(第1讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

PHP操作ZIP之ZipArchive类以及如何避免生成压缩文件带有目录层级的问题

常用的方法 php ZipArchive可以说是php自带的一个函数了&#xff0c;他可对对文件进行压缩与解压缩处理&#xff0c;但是使用此类之前我们必须在php.ini中把extensionphp_zip.dll前面的分号有没有去掉&#xff0c;然后再重启Apache这样才能使用这个类库。 ziparchive 可选参数…

解决:Component name “index“ should always be multi-word

原因 要求组件名称以驼峰格式命名&#xff0c;自定义组件名称应该由多单纯组成&#xff0c;防止和html标签冲突&#xff0c;所以index.vue 会报错 解决 1、按照规则驼峰格式&#xff0c;如&#xff1a;appIndex.vue 2、若有.eslintrc.js文件&#xff0c;并在规则中(rules)关…

排序算法4:【快速排序】、查看每趟归并后的结果,定义一个全局变量,用来计数作为总趟数

一、快速排序——时间复杂度&#xff1a;、 最坏的情况 1、原理&#xff1a; 快速排序是通过多次比较和交换来实现排序&#xff0c;首先&#xff0c;先从数列中&#xff0c;任意选择一个数作为基准&#xff08;或叫分界值&#xff09;&#xff0c;比如&#xff0c;第一个数&a…