8年性能测试工程师告诉你,压力测试详解,如何做压力测试...

news2024/11/27 10:25:52

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

什么是压力测试?

压力测试的基本思路:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件压力测试的资源包括内部内存、CPU可用性、磁盘空间和网络带宽。

压力测试涵盖,性能测试,负载测试,并发测试等等,这些测试点常常交织耦合在一起。

压力测试存在哪些问题?

操作系统默认安装,在未做任何优化的情况下实施压力测试。
1、未考虑磁盘IO对软件的影响
2、未考虑网络带宽对软件的影响
3、网络软件测试,没有考虑到TCP特点
4、各种超时参数优化
5、测试客户端未优化
6、并发理解有误
7、WEB服务器,数据库,等等服务器未优化

如果上面几项没有做优化,压力测试数据基本没有任何参考价值,任何一项没有优化,都会导致你的压力测试数据出现偏差。

说明:
1、操作系统问题,操作系统是大众化软件,出厂优化都是面向大众,不可能为某个领域做单独优化。所以我们第一步需要优化操作系统。Linux 系统优化内核参数,Windows 系统优化注册表等等。

2、磁盘IO这是最容易出现瓶颈的地方,常常是CPU还没有达到极限,磁盘已经不堪重负。网络IO与磁盘IO相同,TCP连接几乎所有B/S,C/S软件都是采用多线程,或者多进程技术。

这种技术有个特点,开发者将程序设计为线程可自动伸缩模式,开启进程后会启动少量线程,当连接不断提高后,线程数逐渐增加,随着线程运行结束后,线程逐渐减少。

这样的设计会更有效地利用硬件资源,在程序空闲时将硬件资源让给其他进程。少有软件设计为开启服务独占资源。这样测试软件做压力测试,不能一次并发很多请求,而是要采用逐渐增加的方式,否则第一次测试会有一部们并发不能及时响应,导致测试数据偏差。

另外也你可以多做几次压力请求(让多线程工作起来),从第三次开始记录测试数据,忽律前面两次的测试数据。

提示:另一个问题是TCP连接复用,这也是一个重要配置项。如果这项没有配置,我想测试出的数据也会有偏差。

3、超时参数在压力测试中是非常重要的参数,例如从WEB到数据库连接超时是60秒,如果有一个SQL查询超过300秒,那么后面的请求会持续排队等待,当连接数达到数据库的最大连接时,接下来的所有请求都是失败的。

通常我们的WEB服务器超时不会超过30秒,有时我设置为10秒,一旦出现超时,宁可让该连接Timeout,不要让他影响整体服务。

客户端很多网络软件需要从客户端发出压力测试请求,所以客户端的优化也是必须的,否则客户端压力出不去,服务端压力进不来。

4、并发很多人认为并发,就是同一时间内的最大连接数,这是错误的。如果你写过多线程程序,就会发现多线程运行时又规律的。是顺序排队运行的,根本不是同时运行的。

所以并发是指,相对时间内能完成的连接总和,例如,每秒并发,每分钟并发等等,通常我们以秒为单位。我们目前使用的操作系统叫分时操作系统,这种系统的特点就是可能实现多用户,多任务。

操作系统将进程排队(优先级)轮询运行,只不过这个操作太快了,使你认为多个进程在同时运行。服务器优化主要B/S软件压力测试,WEB,缓存,数据库等等服务器,都需要逐一优化到最佳状态。

为什么做压力测试?

如果在软件设计阶段都将这些问题元素都考虑进去,同时开发阶段严格执行。那么开发出些软件几乎不用做这个劳人伤神的压力测试。

所以在软件设计阶段就要考虑,灵活性,扩展性,可靠性与性能,还要考虑高可用与负载均衡。同时软件优化伴随开发,持续集成,持续测试,持续部署。

在哪里做压力测试?

有些软件需要封闭的环境测试,不能在共享资源的环境中做测试。所以你有必要做Vlan隔离,甚至独立的路由器与交换机在封闭网络中测试。

什么时间做压力测试?

任何时间都可能做压力测试,为什么我将“时间”重点提出呢?目前受地球自转影响,经常闰秒,你不得不考虑这个问题。

压力测试过程参与部门有哪些?

运维部门、开发部门、测试部门

如何做压力测试?

下面我们举一些例子,讲述压力测试方法,限于篇幅不可能面面俱到,我仅仅是给你提供思路。
测试前你需要一些监控工具,事实监控服务器的资源变化。

例如 Web 服务器压力测试,测试场景是 nginx :
worker_processes 8; 处理器数;
worker_rlimit_nofile 65530; 允许最多打开文件数;
worker_connections 4096; 最大连接数数为;
keepalive_timeout 65; 开启复用连接;
gzip on; 压缩传输数据。

怎么做压力测试呢?你要最大化性能?还是相对性能?我们通常需要的是满足需求就好的相对性能,而不是最大化性能。为什么呢?

因为要最大化性能是要做出很多配置牺牲的,例如关闭日志,禁止访问时间等等。

按照上面的配置你的测试用例应该是,每次并发4000 请求 8000~10000 次, 你不能并发8000 请求 4000 这样测试。

这是很多人常常犯的错误,所以测试者需要连接系统的配置参数,不能盲目使用数字实验。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有拥有坚定的信念和不懈的努力,才能迎来成功的曙光;不要停下脚步,即使有挫折和困难,也要继续前进,因为你已经走了一半的路程。只有勇往直前,才能创造出属于自己的辉煌人生!

每个人的生命旅程都是独一无二的,只有不断努力奋斗,才能让自己的人生更加精彩。即使前途未卜,也要坚定信念,勇往直前,才能迎来成功的曙光。

在人生的道路上,努力奋斗是我们永不放弃的信念。无论前方多么艰难险阻,都要始终坚定向前,不懈追求自己的梦想。只有不断拼搏,才能收获属于自己的美好未来。

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

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

相关文章

灯塔工厂PLC智慧边缘计算机嵌入式linux系统

随着工业物联网的发展,越来越多的企业开始将工业自动化设备接入到物联网平台,以实现设备远程监控、运维和管理。其中,PLC智能网关作为连接PLC和物联网平台的重要设备,发挥着至关重要的作用。本文将介绍PLC数据采集控制网关的功能和…

文心一言 VS 讯飞星火 VS chatgpt (42)-- 算法导论5.4 6题

六、假设将n个球投人 n 个箱子里,其中每次投球独立,并且每个球等可能落入任何箱子。空箱子的数目期望是多少?正好有一个球的箱子的数目期望是多少? 文心一言: 这是一个典型的概率问题。首先,我们可以通过简单的计算来理解问题…

【论文】YOLOv7运行train.py和test.py时,打印不出来计算量GFLOPs解决方法

目录 前提案例解决步骤运行方式打印效果 前提 我在AutoDL云服务器上,会运行失败,不晓得为啥,我感觉可能是CUDA版本的问题,CUDA版本低了就会没有那么深的计算量吧 AutoDL上(显卡RTX3090,4GB)安…

java的网络编程

一、网络编程的三要素 IP、端口号、协议。 特殊IP地址127.0.0.1,也可以是localhost,是回送地址也称回环地址,也称本机IP,永远只会寻找当前所在本机。 常见cmd命令: ipconfig:查看本机IP地址; ping:检查网络…

Innovus: dbGet 快速学习教程

dbGet是innovus/encounter工具自带的"database access command"命令中的一部分,它几乎可以用来获取设计相关的一切信息。 输入dbGet 按[Tab]键,能看到三个选项,分别是head / top /selected。这三个选项所代表的意义如下: head --…

ubuntu 22.04安装mysql 8.0与避坑指南

MySQL 是一个开源数据库管理系统,可作为流行的 LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装。 它实现了关系模型并使用结构化查询语言( SQL)来管理其数据。 本教程将介绍如何在 Ubuntu 22.04 服务器…

appium+python在Android端的环境配置

一、安装配置JDK 一、安装环境 1、本机系统:Windows 10(64位) 2、JDK版本:1.8(64位) 二、下载安装 1、JDK和JRE简介 Java环境分JDK和JRE ,JDK就是Java Development Kit。简单的说JDK是面向…

JMeter安装图文及入门教程,(附视频教程)

目录 一、JMeter介绍 二、下载配置安装 三、JMeter入门压测实例 总结: 一、JMeter介绍 JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静…

Go语言并发之context标准库

1、Go语言并发之context标准库 Go中的 goroutine 之间没有父与子的关系,也就没有所谓子进程退出后的通知机制,多个 goroutine 都是平行地 被调度,多个 goroutine 如何协作工作涉及通信、同步、通知和退出四个方面。 通信:chan 通…

ResNet

论文信息 论文名称:Deep Residual Learning for Image Recognition 论文地址:https://arxiv.org/pdf/1512.03385.pdf 发表期刊:CVPR 发表年份:2016 主要问题 在引言中作者提出了一个问题:训练一个更好的网络是否像堆…

这个网站,多希望你早点知道,越早越好!

这是一个有趣、神奇的个人博客网站。 这是一个马斯克经常上的网站,而且马斯克还在推特上关注了这个网站的账号。 网站地址:https://waitbutwhy.com/ 这个网站上的内容并不多,网站2013年创建的,至今已有10年,一共才产出…

python爬虫工程师,如何从零开始部署Scrapyd+Feapder+Gerapy?

突然被告知要连着上整整十一天的班,有一点点累,简单更新一下内容吧,水个积分 关注公众号:python技术训练营,精选优质文档,好玩的项目 内容: 1.面试专题几十个大厂面试题 2.入门基础教程 3.11模块…

活动邀请函五秒钟下载即用

在日常中,人们都是以纸质的邀请函发送给被邀请者,不仅需要花费大量的精力和时间去书写发送活动邀请函,还存在着被邀请人没有及时收到活动邀请函而错过参与的时间等。而这样只需制作一份就可以全网分享,用户短时间就能收到活动邀请…

可变参数列表

"多少人都,生来纯洁完美,心底从不染漆黑。" 我们想要实现一个函数,这个函数的功能是返回一个整形的最大值。 emm,似乎有那点味道。但这应用场景似乎很受限制,因为这个函数比较的有效区间,只能装下…

Pycharm远程开发之全局pip,激活远程虚拟环境pip,以及pip的--user选项

前言 最近需要部署一下生成对抗网络的开发环境,我自己的笔记本没有带显卡,想到实验室的服务器有带显卡索性就用实验室服务器的环境开发,通过pycharm的远程开发功能连接到服务器,本来以为轻轻松松就可以开始写代码了,结…

springcloud整合nacos

1.订单服务(order) 1.1 安装nocas Nacos 快速开始 --注意:nacos 我的是 nacos-server-1.4.1.tar.gz 1.2 新建order-nacos 模块 1.3 修改pom文件 添加 nacos 依赖 1.4 配置文件添加 nacos 地址 1.5 创建启动类 使用 RestTemplate 方式调用服…

字符设备驱动内部实现

只要文件存在,就会有唯一对应的inode号,且相应的会存在一个struct inode结构体.,在应用层通过open()打开一个设备文件,会对应产生一个inode号,通过inode号可以找到文件的inode结构体,inode结构体…

中介者模式(二十一)

相信自己,请一定要相信自己 上一章简单介绍了观察者模式(二十), 如果没有看过, 请观看上一章 一. 中介者模式 引用 菜鸟教程里面中介者模式介绍: https://www.runoob.com/design-pattern/mediator-pattern.html 中介者模式(Mediator Pattern&#xff…

paddlespeech http服务解决输出无符号

1.前情提要 下载paddlespeech官网代码并运行http服务进行中文识别时,会发现选择某些模型(我用的是conformer_wenetspeech),是别的结果为一串文字,没有标点,效果如下: 经过调用padddlespeech相关…

【裸机开发】使用汇编清除 .bss 段

目录 1、为什么要清除 .bss 段 2、使用汇编清除 .bss 段 1、为什么要清除 .bss 段 .bss 段保存的是 未被初始化 或者 初始化为0 的全局/静态变量。在编译器看来,这些东西是多余的,实际并不会给他们分配空间。因此,编译生成目标文件的时候&…