转载自:https://www.cnblogs.com/Bonnieh/p/5826773.html

性能测试(Performance Testing):是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试。通过负载测试,确定在各种工作负载下的系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

负载测试(Load Testing):是模拟实际软件所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其他加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(CPU、内存等),以检验系统的行为和特性,以发现系统可能存在的性能瓶颈,内存泄漏,不能实时同步等问题,负载测试更多的体现了一种方法或一种技术。

压力测试(stress testing):在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下的操作行为,从而有效地发现系统的某项功能隐患,系统是否具有良好的容错能力和可恢复能力。压力测试可分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统奔溃的破坏性压力测试。

三者的区别: 从测试的目的出发,从用户的需求出发,就比较容易区分性能测试、负载测试和压力测试了。性能测试是为了获得系统在某种特定的条件下(包括特定的负载条件下)的性能指标数据,而负载测试、压力测试是为了发现软件系统中所存在的问题,包括性能瓶颈、内存泄漏等。通过负载测试,也是为了获得系统正常工作时所能承受的最大负载,这时的负载测试就成为了容量测试。通过压力测试,可以知道在什么极限情况下系统会奔溃、系统是否具有自我恢复性等,但更多的是为了确定系统的稳定性。

性能测试工具(目前只是知道有这些工具,后期在使用过程中在总结它们的使用方法):

(1) Apache Jmeter: 用户手册 http://jmeter.apache.org/usermanual/index.html

(2) Load Runner

(3) QTP(Quick Test)

(4) Web Polygraph

性能测试不单单是熟悉测试工具,更要注意的是其中的测试思想,下面可以了解一下关于性能测试的三个观念:

  • 精确和模糊

i.e. 一辆汽车开100公里需要多少汽油?

做假设(assumption),下面有3个阶段的假设:

a. 做了假设却不知道自己做了假设

有些人根据自己的切身体验来做测试,然后写测试报告给别人看,关键是你觉得自己的测试是正确的,但并不是所有人都是处于你所处的环境,做和你测试时做完全一样的事情,所以测试出来的结果只会误导到别人。比如前面提到的那个耗油的问题,有人的做法是我开100公里看看,得出来多少就是多少。

b. 做了过多的假设

”当路面平坦,一路绿灯,风速5km/h,只有一名70kg的乘客,时速稳定在70km/h,良好驾驶习惯,… , 的情况下,油耗是7.1L/100km.“这样可能很严谨,但对于读你报告的读者,这样的数据没有多大的意义。

c. 做必要和合理的假设

生活中有些时候是需要一些妥协和折衷的,如果这些折衷是必要的和合理的。因为跳出来看,我们的测试需要提供有价值的信息,所以为了这样有价值的信息,做出必要的合理的假设是可以接受的。

  • 宏观与微观

这也是一个有趣的对立。在做性能测试,特别是整个产品的性能测试的时候,我们看到的是产品的核心功能和主要的大的功能模块,比如数据库、web服务器、核心的daemon等等。在脑海里,我们有一个架构图,哪怕你没有把它画出来。所以有时候,我们会想,性能测试对于产品的视角是宏观的,看大的组件,而不是具体的细节的东西。

果真是如此吗?看看下面的例子:

1. 把daemon的log级别改为debug (log_level从2改到5)之后,性能下降了差不多一半。

2. 关掉一个cache选项

3. 打开keepalive选项

4. 打开DNS反向查询

......

上面都是些细枝末节的设置,一个配置项而已,藏在DB的某张表或者某个ini里面。但是改变之后,得到的性能结果可能大不相同。

这时候,其实要不要考虑细枝末节,主要是看他到底是否Critical。至于怎样的才是至关重要的,这还需要在以后的工作中思考和总结。

  • 项目和任务

性能测试本身肯定是一个任务,无论对于被安排去做这个的人,或者安排的人。但是它有时候也像一个项目,对于去做这件事情的人。为什么呢?

首先你需要和很多的人打交道。

产品经理或者客户:获取需求,设定目标。

QA manager/lead:讨论resource和schedule。包括需要的机器,环境,软件,还有整个计划。

开发人员:查找问题和调优等。

功能测试的owner: 性能测试人员可能不是什么功能都很懂。

Admin:Lab,网络,DB等等

其次,它是一个周期很长,跨度很大的工作。特别是对于一个比较大的产品而言。你需要准备详细的测试设计,包括目标、范围、可能的方法,以及上面提到的资源和时间计划;然后邀请很多人来评审这个计划;接下来要准备工具、环境和测试数据。然后是执行,记录分析结果。如果有问题还要反复的调整和regression。最后要整理报告,回答疑问。

说它是一个项目一来是因为上面的原因导致工作的复杂性,还有一些原因是因为性能测试带有评测的性质,因为你是在试图去度量、衡量或者评价一个东西,而且带有比较绝对的结果。这样导致性能测试不可避免的要引入一些权威性的问题,尽管你并不一定期望这样。这使得很多的东西就像一个其他项目一样,有期望管理和良好的外部沟通和协调的需要。所以有时候,更愿意把它作为一个小的项目来看待,这样或许可以做得更全面。

本文参考:

http://blog.csdn.net/superqa/article/details/6067448

    http://www.cnblogs.com/fnng/archive/2012/12/09/2809974.html

转载于:https://www.cnblogs.com/MarsDing/p/9909724.html

性能测试、负载测试、压力测试的区别相关推荐

  1. 【常见面试题】性能测试里,压力测试、负载测试、并发测试、强度测试、容量测试,具体是什么意思

    性能测试又称多用户并发性能测试. 对于性能测试,我们必须要清晰地理解这些概念.执行性能测试,性能瓶颈分析路径:服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中 ...

  2. 负载测试压力测试强度测试稳定性测试

    你看,如标题所示,测试可以分为这么多种.实际上,这只是一种性能测试的分类.按照不同的标准,还可以有别的划分. 1.按开发阶段:单元测试.集成测试.系统测试.验收测试 2.按测试实施组织:α测试(开发方 ...

  3. Android App专项测试-压力测试篇

    小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过Android平台的一门工具Monkey.在学习本门课程之前,如果你具 ...

  4. EMQTT测试--压力测试

    之前写过一篇是关于emqtt安装和测试的,不过是在windows上 这次介绍一下压力测试 压力测试选择emqtt官方推荐的emqtt_benchmark emqtt官网推荐 emqtt_benchma ...

  5. 什么是性能测试,和压力测试、负载测试的区别是什么?

    性能测试(Performance Test):通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用. 压力测试stresstest:是在一定的负荷条件下,长时间连续运行系统给系统性能造成 ...

  6. QPS和TPS的区别、负载和压力测试的区别

    作为软件测试工程师,你应该要分清楚QPS和TPS的区别. QPS/TPS QPS(Queries Per Second):每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定 ...

  7. Jmeter负载和压力测试

    负载和压力的区别: 负载测试:在一定的工作负荷下,给系统造成du的负zhi荷及系统响应的时间. 压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响. TPS和QPS的区别: tps可 ...

  8. 开源的负载测试/压力测试工具 NBomber

    负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要.尽管它们的某些测试是相同的,但目标不同. 负载测试:测试应用是否可以在特定情况下处理指定的用户负载,同时仍满足响应目标.应用在正常状态 ...

  9. JMeter之负载阶梯压力测试

    适用场景:在实际的测试场景中,有时需要模拟阶梯型施压的场景,即:从某个点开始不断增加压力,直到达到某一值,然后持续运行一段时间,再继续加压,循环往复直到达到预期峰值,运行一段时间,然后再分批次退出.需 ...

  10. php项目通过不了压力测试,压力测试 – Apache ab测试和失败 – Apache或PHP配置问题?...

    我写了一个RESTful Web服务,成为使用PHP和Restler库的移动应用程序的支柱.它运行在运行Windows Server 2008 R2,PHP 5.3.5,Apache 2.2.17和M ...

最新文章

  1. 点击文字弹出一个DIV层窗口代码
  2. Spring MVC 学习笔记一 HelloWorld
  3. php启动 大量sess文件,关于PHP中Session文件过多的问题
  4. 【Elasticsearch】消除 Elasticsearch 中的重复文档
  5. Java 使用开源类库 Tesseract 实现图片文字识别
  6. 微信小程序获取windowHeight出现不同页面高度不一致问题及解决方案
  7. ARMv8-A architecture overview
  8. 删除数据库中的所有表
  9. Chorme浏览器中安装Axure插件的方法
  10. python爬虫编码彻底解决
  11. U盘不显示文件但有内存
  12. 头条文章没有阅读量,视频推荐量怎样增加
  13. php配置环境变量方法
  14. 原生TabLayout使用
  15. [渗透测试学习靶机03] vulnhub靶场 Empire LupinOne
  16. UnsupportedOperationException; ImmutableCollections.uoe
  17. BILSTM详细介绍及代码实现
  18. 对话机器人之LaMDA
  19. [JavaScript]多个表单中文件上传网址的获得的代码示例
  20. Jetson Xavier gpio编程 (8)

热门文章

  1. The Maximum Unreachable Node Set
  2. 监听android 上的完成按键
  3. 对象级别锁 vs 类级别锁 – Java
  4. 关于微信小程序的尺寸关系
  5. 设置Eclipse中的tab键为4个空格的完整方法
  6. 一步一图一代码之排序二叉树
  7. 快学Java NIO
  8. WinXP SSH连接不上虚拟机的解决方法
  9. 用javascript做删除时的提示信息
  10. hdu4885 有 限制的最短路