一、什么是压力测试?

软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。软件压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件压力测试的资源包括内部内存、CPU可用性、磁盘空间和网络带宽。压力测试涵盖,性能测试,负载测试,并发测试等等,这些测试点常常交织耦合在一起。

二、压力测试存在哪些问题?

1、操作系统默认安装,在未做任何优化的情况下实施压力测试

2、未考虑磁盘IO对软件的影响

3、网络软件测试,没有考虑到TCP特点

4、各种超时参数优化

5、测试客户端未优化

6、并发理解有误

7、WEB服务器,数据库,等等服务器未优化

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

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

(2)磁盘IO这是最容易出现瓶颈的地方,常常是CPU还没有达到极限,磁盘已经不堪重负。

(3)TCP连接几乎所有B/S,C/S软件都是采用多线程,或者多进程技术。这种技术有个特点,开发者将程序设计为线程可自动伸缩模式,开启进程后会启动少量线程,当连接不断提高后,线程数逐渐增加,随着线程运行结束后,线程逐渐减少。这样的设计会更有效地利用硬件资源,在程序空闲时将硬件资源让给其他进程。少有软件设计为开启服务独占资源。这样测试软件做压力测试,不能一次并发很多请求,而是要采用逐渐增加的方式,否则第一次测试会有一部们并发不能及时响应,导致测试数据偏差。另外也你可以多做几次压力请求(让多线程工作起来),从第三次开始记录测试数据,忽略前面两次的测试数据。提示:另一个问题是TCP连接复用,这也是一个重要配置项。如果这项没有配置,测试出的数据也会有偏差。

(4)超时参数在压力测试中是非常重要的参数,例如从WEB到数据库连接超时是60秒,如果有一个SQL查询超过300秒,那么后面的请求会持续排队等待,当连接数达到数据库的最大连接时,接下来的所有请求都是失败的。通常我们的WEB服务器超时不会超过30秒,有时我设置为10秒,一旦出现超时,宁可让该连接Timeout,不要让他影响整体服务。

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

(6)并发很多人认为并发,就是同一时间内的最大连接数,这是错误的。如果你写过多线程程序,就会发现多线程运行时又规律的。是顺序排队运行的,根本不是同时运行的。 所以并发是指,相对时间内能完成的连接总和,例如,每秒并发,每分钟并发等等,通常我们以秒为单位。我们目前使用的操作系统叫分时操作系统,这种系统的特点就是可能实现多用户,多任务。操作系统将进程排队(优先级)轮询运行,只不过这个操作太快了,使你认为多个进程在同时运行。

(7)服务器优化主要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 这样测试。这是很多人常常犯的错误,所以测试者需要连接系统的配置参数,不能盲目使用数字实验。

卓越软件评测,一家专业的第三方软件测评机构,提供各类软件测试服务,并出具合格有效的测试报告。更多测试相关内容可以关注卓越软件评测官网(https://www.zyscan.cn/),持续更新中!

什么是压力测试,如何做压力测试?相关推荐

  1. 类似美团外卖APP测试怎么做?测试要点有哪些?

    随着智能化生活的推进,APP外卖带来新的餐饮模式.目前市场上比较活跃的比如美团外卖.饿了么外卖.百度外卖等为餐厅提供外送服务的APP已经深入影响人们的生活.由于外卖APP使用人群范围广泛,对客户信息保 ...

  2. 软件测试 | 测试开发 | 做为测试,那些必须掌握的测试技术体系

    本文节选自霍格沃兹测试学院内部教材 软件测试技术是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程.其目的是尽快尽早地发现在软件产品中 ...

  3. 软件压力测试怎么做?压力测试报告需要多少费用?

    为保证产品质量,任何软件或网站在上线之前,软件测试工作是必不可少的.压力测试作为软件测试中的重要组成部分,主要是通过给软件系统不断加压,观察软件在极限状态下的情况下可以运行到哪个部分,是否有性能.功能 ...

  4. 测试怎么做,测试的流程

    1.需求分析 需求分析:根据产品需求文档,提取出规则要求. 为什么提取规则要求:明确软件有哪些功能和要求:为设计测试点做准备 2.设计测试点 测试点:要进行验证的点,根据需求规则设计测试点 为什么要设 ...

  5. 如何用Jmeter做压力测试

    Jmeter是一个性能测试工具,同loadrunner类似,他功能较多,我们常用的功能是用jmeter模拟多浏览器对网站做压力测试. 我们一般的网站,在进入业务功能前先需登录,然后才能访问业务功能.下 ...

  6. 性能测试入门(六)windows及Linux下做压力测试的注册表设置

    windows及Linux下做压力测试的注册表设置 from: http://www.cnblogs.com/tianzhiliang/articles/2400176.html TcpTimedWa ...

  7. 嵌入式里如何给内存做压力测试?不妨试试memtester

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是内存读写正确性压力测试程序memtester. 在嵌入式系统中,内存(RAM)的重要性不言而喻,系统性能及稳定性都与内存息息相关.关于内 ...

  8. Linux学习13-CentOS安装ab做压力测试

    前言 网站性能压力测试是服务器网站性能调优过程中必不可缺少的一,测试环境准备好了后,如何对网站做压力测试? 压力测试的工具很多,如:ab.http_load.webbench.siege.jmeter ...

  9. 不会压测?没关系,手把手教你用jmeter做压力测试及结果分析

    1.准备 测试之前需要先准备相关的工具,JMeter是运行在jdk下的一款压测工具,所以,要运行JMeter首选要安装jdk并配置环境变量,具体请自行百度jdk环境变量安装: 2.JMeter 是什么 ...

  10. 整机压力测试_app的压力测试怎么做呢?

    首先要明白,APP做压力测试的目的:1.提高和保证产品的稳定性:2.产品经过一段时间使用后,仍然继续有保证使用的用户,也就是所说的留存率. 那么压力测试什么时候展开呢?最好的是在,首轮功能测试通过后. ...

最新文章

  1. 原创 | 一文详解阿里云《人工智能红利渗透与爆发》技术趋势
  2. rabbitMQ在springboot中的使用
  3. div+css 和 xhtml+css是一回事么?
  4. NIO详解(十二):AsynchronousFileChannel详解
  5. Java创建一个文件变量_java如何定义一个类,创建它的成员变量和方法?
  6. 三维向量变化为角度_物体的三维识别与6D位姿估计:PPF系列论文介绍(四)
  7. 常见的设计模式--单例模式
  8. git对指定commitid 打tag_Git-命令行-使用 Tag 标记你的代码
  9. org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException: Widget is disposed
  10. php空间搭建tcshare,新秀网 - 宝塔面板搭建天翼云盘目录列表TCShare
  11. 美检方或起诉刘强东;百度对呛微信规则;澳洲调查 Facebook | 极客头条
  12. 天正电气lisp是什么文件_教大家如何使用天正电气软件绘制图纸
  13. sai笔记3-钢笔图层
  14. CCD和CMOS大小(尺寸)对比图
  15. java实现支付宝app支付
  16. 数据结构的形式定义、数据的逻辑结构、数据的存储结构
  17. auto.js脚本自动点击屏幕双11自动领金币
  18. CIFAR10攻略:基于TensorFlow2.1
  19. python 模块paramiko
  20. 构造二叉树-前序遍历

热门文章

  1. 找企业网站源码学习研究
  2. windows 下安装redis
  3. loadrunner11的安装
  4. MSN无法登陆错误汇总
  5. StudioOne5最新版本电音制作软件
  6. 洛天依官方原版mmd模型_【MMD模型】天羽音官方MMD模型配布
  7. BPM波导matlab,用Matlab画平板波导色散图详解.doc
  8. java 开源客服系统_编程浪子客服系统开源啦
  9. 扒一扒国产 Linux 操作系统架构是怎么设计的 ?
  10. 华硕B365能装服务器系统吗,原生支持Win7,大师级B365主板来了! 华硕PRIME B365M-A主板深度体验-华硕主板bios设置图解...