性能测试/负载测试/压力测试之间的区别

 做测试一年多来,虽然平时的工作都能很好的完成,但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺,所以,在工作之余也做了一些测试方面的知识的补充。不足之处,还请大家多多交流,互相学习。软件测试实验报告性能测试,性能测试实训方案

现在看来,虽然平时工作中,所涉及虽然的是自动化测试,但更多的是功能测试,今天了解了一下性能测试。

同时,我也清楚的意识到,对于测试工具而言,会不会或者熟悉不熟悉是迟早的事,只要你经常用,但掌握测试的基础知识,了解一些测试思想和观念,更能让我们受益无穷。

下面总结一下我所学习到的性能测试:

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

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

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

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

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

(1) Apache Jmeter: 用户手册 Apache JMeter - User's Manual

(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://www.mzph.cn/news/18696.shtml

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

相关文章

python-网络爬虫.BS4

BS4 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库, 它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方 式。 Beautiful Soup 4 官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 帮助手册&…

Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)

简介 前边介绍的都是通过按钮点击启动按钮来启动appium服务,有的小伙伴或者童鞋们乍一听可能不信,或者会问如何通过命令行启动appium服务呢?且听一一道来。 一睹为快 其实相当的简单,不看不知道,一看吓一跳&#xf…

右键文件夹 ------- 打开 vscode的方法

1、右键vscode点击属性 2、这是地址栏,一会复制即可 3、新建一个txt文件,将这个复制进去 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode] "Open with Code" "Icon""D:\\Microsoft VS Code\\Code.exe"[HKE…

docker基本命令学习 | Docker网络、Docker镜像发布

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! docker安装、卸载 docker安装使用 卸载旧版本docker或者环境 [rootiZf8zdcobr3fw7vn0p3538Z /]# yum remove docker \ > docker-client \ >…

混合云:降本增效,云计算的未来趋势,企业数字化转型的王道!

随着云计算技术的不断发展,云计算已经成为了企业信息化的主流趋势,而混合云则是云计算领域发展的一个新方向。混合云指的是将公有云和私有云相结合,构建一种新的云计算模式。本文将从混合云的定义、特点、优势以及应用场景等方面进行阐述&…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 三)

Link装饰器:父子双向同步 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。 概述 Link装饰的变量与其父组件中的数据源共享相同的值。 装饰器使用规则说明 Link变量装饰器 说明 装饰器参数 无 同步类型 双向同步。 父组件中State, Stor…

语音合成是什么?如何进行语音合成TTS数据采集?

我们在上一篇讲到语音数据采集分为常见的两种语音数据采集类型,一个是语音识别数据(ASR),另一个是语音合成(TTS)。这一期中,我们将介绍语音合成技术是什么,如何采集语音合成数据和制…

亚马逊店铺的回款周期是多久?

现如今,开亚马逊店铺可是一个技术活,一旦有一个环节,或者是一件事情没有做好,对整个亚马逊店铺过程中影响都是十分巨大的,不少亚马逊卖家就吃过这方面的亏。 很多亚马逊卖家就是吃亏在这些方面,现在要想开…

OpenAI的提供的Model简要介绍

OpenAI提供的model 通过OpenAI的接口可以查看所有支持的模型(目前的账号无GPT4的权限,所以没有列举GPT4相关的模型)。 import os import openai import pandas as pd from IPython.display import displayopenai.api_key os.getenv("OPENAI_API_KEY")…

瀑布流布局columns

瀑布流布局其核心是基于一个网格的布局,而且每行包含的项目列表高度是随机的(随着自己内容动态变化高度),同时每个项目列表呈堆栈形式排列,最为关键的是,堆栈之间彼此之间没有多余的间距差存大。还是上张图…

【UI自动化测试】Jenkins配置

前一段时间帮助团队搭建了UI自动化环境,这里将Jenkins环境的一些配置分享给大家。 背景: 团队下半年的目标之一是实现自动化测试,这里要吐槽一下,之前开发的测试平台了,最初的目的是用来做接口自动化测试和性能测试&…

Django系列之DRF简单使用

基于ModelViewSets的简单使用 models.py from django.db import modelsclass AuthorDetail(models.Model):gender models.CharField(max_length8)birthday models.DateField()telephone models.BigIntegerField()addr models.CharField(max_length64)class Author(models…

FPGA项目设计:数字时钟

项目要求: 设计一个数字时钟,数码管前两位显示小时,数码管中间两位显示分钟,数码管后面两位显示秒。 项目设计: 系统框架图: 计数模块时序图: 代码实现: 计数模块: /…

AndroidStudio查看AOSP的两种方法

作者:利维亚的杰洛特 本篇文章主要分享一些自己平时工作中使用AndroidStudio查看aosp的方法,同时抛砖引玉,希望知道其它便利有效的查看调试方式技巧的大佬们能够不吝赐教,大家互相分享,共同进步。 如果直接用AndroidS…

解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起

新搭建的一个Hadoop环境,用Sqoop批量抽数的时候发现特别慢,我们正常情况下是一个表一分钟左右,批量抽十几个表,也就是10分钟的样子,结果发现用了2个小时: 查看yarn日志 发现有如下情况: 主要有两…

【iOS】GCD深入学习

关于GCD和队列的简单介绍请看:【iOS】GCD学习 本篇主要介绍GCD中的方法。 栅栏方法:dispatch_barrier_async 我们有时候需要异步执行两组操作,而且第一组操作执行完之后,才能开始执行第二组操作,当然操作组里也可以包含一个或者…

HTTP——一、了解Web及网络基础

HTTP 一、使用HTTP协议访问Web二、HTTP的诞生1、为知识共享而规划Web2、Web成长时代3、驻足不前的HTTP 三、网络基础TCP/IP1、TCP/IP协议族2、TCP/IP的分层管理3、TCP/IP 通信传输流 四、与HTTP关系密切的协议:IP、TCP和DNS1、负责传输的 IP 协议2、确保可靠性的TCP…

Gartner:2022年全球IaaS公有云服务市场增长30%,首次突破1000亿美元

根据Gartner的统计结果,2022年全球基础设施即服务(IaaS)市场从2021年的928亿美元增长到1203亿美元,同比增长29.7%。亚马逊在2022年继续排在IaaS市场的第一名,其次是微软、阿里巴巴、谷歌和华为。 最新消息,…

制砖机系统比例控制阀放大器

制砖机系统是一种生产砖块的机器设备系统。该系统由多个部分组成,包括压力系统、模具和振动系统、烘干和烧制系统等。压力系统是制砖机的主要组成部分之一,它通过压力将原料压缩成一定形状和尺寸的块状,然后经过烘干和烧制等步骤,…

解决单节点es索引yellow

现象 单节点的es,自动创建索引后,默认副本个数为1,索引状态为yellow 临时解决 修改副本个数为0 永久解决 方法1、修改elasticsearch.yml文件,添加配置并重启es number_of_replicas:副本分片数,默认…