news 2026/6/16 16:46:12

压力测试(Stress Test)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
压力测试(Stress Test)


压力测试严格地说不属于效能测试。压力测试要验证的问题是:软件在超过设计负载的情况下是否仍能返回正常结果,没有产生严重的副作用或崩溃。
问:为啥不要求软件在这种情况下仍然在23秒钟内返回结果?
答:因为我们做不到。
提示:我们在这一部分要求返回"正常结果",啥叫"正常"?我们也要就此与客户达成一致。比如,同一个购物网站,所有请求都能在网络返回"超时"错误前返回,就可以认为是"正常"。或者网站返回"系统忙,请稍候",也是正常结果。但是,如果用户提交的请求一部分执行,另一部分没有执行,或者出现用户信息丢失,这些都是不正常的结果,
应该避免。那我们怎样增加负载呢?对于网络服务软件来说,主要考虑以下两个方面。
1.沿着用户轴延长
以刚才的购物网站为例,正常的负载是20个请求/分钟,如果有更多的用户登录,怎么办?那么负载就会变成30、40、100个请求/分钟,或更高。
2.沿着时间轴延长
做过网络服务的都知道,网络的负载有时间性,负载压力的波峰和波谷相差很大,那么如果每时每刻负载都处于峰值,程序会不会垮掉?这就是我们要做的第二点:沿着时间轴延长。一般要模拟48小时的高负载才能认为系统通过测试。与此同时,可以减少系统可用的资源来增加压力。注意,压力测试的重点是验证程序不崩溃或产生副作用。即看看在超负载的情况下,我们的程序是否仍能正确地运行,而不会死机。在给程序加压的过程中,程序中的很多"小"问题就会被放大,暴露出来。最常见的问题是:
内存/资源泄漏,在压力下这会导致程序可用的资源枯竭,最后崩溃;
一些平时认为"足够好"的算法实现会出现问题。比如,WindowsPlatfor SDK有一个GerTickCount()函数,它返回自系统启动后所经过的毫秒数,用DWORD来表示。经过47.9天之后DWORD会溢出,GetTickCount()会从O开始重新计数,你的程序如果用了不同的TickCount来计算时间,不要假设后来的Tick-Count一定会比先前的TickCount大,也许系统在运行一段时间后会出现莫名其妙的错误,但是系统重新启动后,又找不到原因。
进程/线程的同步死锁问题,在压力下一些小概率事件会发生,看似完备的程序逻辑也会出现问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 7:29:11

如何用Excel实现3D打印自由?FullControl-GCode-Designer完全指南

如何用Excel实现3D打印自由?FullControl-GCode-Designer完全指南 【免费下载链接】FullControl-GCode-Designer Software for designing GCODE for 3D printing 项目地址: https://gitcode.com/gh_mirrors/fu/FullControl-GCode-Designer 还在为3D打印设计软…

作者头像 李华
网站建设 2026/6/12 5:18:52

Anaconda配置PyTorch环境后jupyter not found?重新安装nb_conda_kernels

Anaconda配置PyTorch环境后jupyter not found?重新安装nb_conda_kernels 在搭建深度学习开发环境时,你是否遇到过这样的场景:已经用 Anaconda 创建了一个专用于 PyTorch 的虚拟环境,也安装了 Jupyter Notebook,可一旦启…

作者头像 李华
网站建设 2026/6/10 14:59:19

图解说明Keil5 Debug调试常用按钮与作用

从零搞懂Keil5调试:每个按钮背后都藏着排错的钥匙你有没有过这样的经历?代码编译通过,下载进单片机后却毫无反应。LED不闪、串口无输出,程序像“死”了一样——这时候,光看代码已经没用了。真正能救你的,是…

作者头像 李华
网站建设 2026/6/9 4:53:48

Anaconda配置PyTorch环境后无法识别GPU?检查cudatoolkit版本

Anaconda配置PyTorch环境后无法识别GPU?检查cudatoolkit版本 在搭建深度学习开发环境时,你是否也遇到过这样的场景:显卡驱动已经装好,NVIDIA的nvidia-smi命令能正常输出CUDA版本,可一旦运行torch.cuda.is_available()…

作者头像 李华
网站建设 2026/6/12 13:57:31

如何用NodeGraphQt构建可视化编程环境:终极指南

如何用NodeGraphQt构建可视化编程环境:终极指南 【免费下载链接】NodeGraphQt Node graph framework that can be re-implemented into applications that supports PySide2 项目地址: https://gitcode.com/gh_mirrors/no/NodeGraphQt 在当今数据驱动的时代&…

作者头像 李华
网站建设 2026/6/15 13:41:47

RKNN-Toolkit2深度解析:解锁Rockchip NPU平台的AI部署潜能

RKNN-Toolkit2深度解析:解锁Rockchip NPU平台的AI部署潜能 【免费下载链接】rknn-toolkit2 项目地址: https://gitcode.com/gh_mirrors/rkn/rknn-toolkit2 在AI技术快速落地的今天,边缘计算和嵌入式AI部署已成为行业焦点。RKNN-Toolkit2作为Rock…

作者头像 李华