『软件测试5』测开岗只要求会黑白盒测试?NO!还要学会性能测试!

性能测试

浅谈软件测试中的性能测试

  • 一、🤪性能测试概念
    • 1、为什么要有性能测试?
    • 2、性能测试是什么?
    • 3、性能测试的目的
  • 二、🤐性能测试指标
    • 1、响应时间
    • 2、吞吐量
    • 3、并发用户数
    • 4、TPS(Transaction Per Second)
    • 5、点击率
    • 6、资源利用率
  • 三、😶性能测试种类
    • 1、负载测试
    • 2、压力测试
    • 3、并发测试
    • 4、配置测试
    • 5、可靠性测试
    • 6、容量测试
  • 四、😲性能测试流程
    • 1、性能测试流程
    • 2、性能测试流程分析
      • (1)分析性能测试需求
      • (2)制定性能测试计划
      • (3)设计测试用例
      • (4)编写性能测试脚本
      • (5)测试执行及监控
      • (6)运行结果分析
      • (7)性能测试报告
  • 五、🤪结束语

很多时候,我们都知道软件有黑白盒测试,但往往还遗漏掉了一个性能测试

在下面的这篇文章中,就带领大家来了解性能测试。一起来学习吧~🧐

一、🤪性能测试概念

1、为什么要有性能测试?

(1)2007年10月,北京奥组委实行2008年奥运会门票预售,一时间订票官网访问量激增导致系统瘫痪,最终奥运会门票暂停销售5天。

 门票预售

(2)2009年11月22日,由于圣诞临近, eBay 网站的商品交易量比去年同期增长 33% ,正是由于多出的这33%使得 eBay 网站不堪重负而崩溃,导致卖家蒙受当日销售额 80% 的损失,可谓损失惨重。

eBay

(3)12306订票网站,自2010年上线以来就饱受诟病,每年春运期间,总会因为抢票高峰而崩溃,用户在买票时出现无法登陆的现象。2014年,12306网站甚至出现了安全问题,用户可以轻易获取陌生人的身份证号码、手机号码等信息。

12306订票网站

通过以上例子我们可以清楚的认识到,不管是奥运会的门票预售系统,还是12306的订票系统崩塌,都是由于软件系统没有经过性能测试或者性能测试不充分而引发的问题。因此,作为一名测试人员,除了要对软件的基本功能测试之外,还需要对软件性能进行测试,软件性能测试也是非常重要且非常必要的一项测试。

2、性能测试是什么?

所谓性能测试,就是通过性能测试工具模拟正常、峰值及异常负载状态下对系统的各项性能指标进行测试的活动。性能测试能够验证软件系统是否达到了用户期望的性能需求,同时也可以发现系统中可能存在的性能瓶颈及缺陷,从而优化系统的性能。

3、性能测试的目的

性能测试的目的主要有以下四点:

  • 证系统性能是否满足预期的性能需求,包括系统的执行效率、稳定性、可靠性、安全性等。
  • 分析软件系统在各种负载水平下的运行状态,提高性能调整效率
  • 识别系统缺陷,寻找系统中可能存在的性能问题,定位系统瓶颈并解决问题。
  • 系统调优,探测系统设计与资源之间的最佳平衡,改善并优化系统的性能。

二、🤐性能测试指标

性能测试指标有以下6个指标:

  • 响应时间
  • 吞吐量
  • 并发用户数
  • TPS (Transaction per Second)
  • 点击率
  • 资源利用率

接下来将围绕着这6个指标进行一一讲解。

1、响应时间

响应时间 (Response Time) 系统对用户请求作出响应所需要的时间。

这个时间是指用户从软件客户端发出请求到用户接收到返回数据的整个过程所需要的时间,包括各种中间件(如服务器、数据库等)的处理时间。

如下图所示:

 响应时间

从上图中可以看到,从客户端发出请求到客户端接收到返回数据的整个过程即为系统的响应时间,为 t1+t2+t3+t4+t5+t6

一般来说,响应时间越短,表明软件的响应速度越快,性能越好。但是响应时间需要与用户的具体需求相结合,例如火车订票查询功能响应时间一般2s内就可以完成,而在网站下载电影时,如果一部电影能够在几分钟内完成下载,则说明该网站就已经很快了,所以需要依据实际情况而定。

2、吞吐量

吞吐量 (Throughput) 是指单位时间内系统能够完成的工作量,它衡量的是软件系统服务器的处理能力

吞吐量的度量单位可以是请求数/秒、页面数/秒、访问人数/天、处理业务数/小时等。

吞吐量是软件系统衡量自身负载能力的一个很重要的指标,吞吐量越大系统单位时间内处理的数据越多系统的负载能力越强

3、并发用户数

并发用户数是指同一时间请求和访问的用户数量。

并发用户数量越大,对系统的性能影响越大,并发用户数量较大可能会导致系统响应变慢系统不稳定等问题。软件系统在设计时必须要考虑并发访问的情况,测试工程师在进行性能测试时也必须进行并发访问的测试。

4、TPS(Transaction Per Second)

TPS 是指系统每秒钟能够处理的事务和交易的数量,它是衡量系统处理能力的重要指标。

5、点击率

点击率是指用户每秒向 Web 服务器提交的 HTTP 请求数,这个指标是 Web 应用特有的一个性能指标,通过点击率可以评估用户产生的负载量,并且可以判断系统是否稳定。点击率只是一个参考指标,帮助衡量 Web 服务器的性能。

6、资源利用率

资源利用率是指软件对系统资源的使用情况,包括CPU利用率内存利用率磁盘利用率等,资源利用率是分析软件性能瓶颈的重要参数。

三、😶性能测试种类

性能测试种类主要有以下六种:

  • 负载测试
  • 压力测试
  • 并发测试
  • 配置测试
  • 可靠性测试
  • 容量测试

接下来将围绕着以上这六种性能测试种类进行讲解。

1、负载测试

(1)定义

负载测试是指逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载量

(2)举个例子

负载测试类似于举重运动,通过不断给运动员增加重量,确定运动员身体状况保持正常的情况下所能举起的最大重量。

对于负载测试来说,前提是满足性能指标要求,例如一个软件系统的响应时间要求不超过 2s ,则在这个前提下,不断增加用户访问量,当访问量超过1万人时,系统的响应时间就会变慢,响应时间会超过 2s 。因此,可以确定系统响应时间不超过 2s 的前提下最大负载量是1万人。

2、压力测试

(1)定义

压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力。

(2)压力测试与负载测试的区别

负载测试是在保持性能指标要求的前提下系统能够承受的最大负载,而压力测试则是使系统性能达到极限的状态。

压力测试可以揭露那些只有在高负载条件下才会出现的 Bug ,如同步问题、内存泄露等。

(3)峰值测试

性能测试中还有一种压力测试叫做峰值测试,它是指瞬间(不是逐步加压)将系统压力加载到最大,使测试软件系统在极限压力下的运行情况。

3、并发测试

(1)定义

并发测试是指通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其他性能问题。

(2)举个例子

并发测试一般没有标准,只是测试并发时会不会出现意外情况,几乎所有的性能测试都会涉及到一些并发测试,例如多个用户同时访问某一条件数据,多个用户同时在更新数据,那么数据库可能就会出现访问错误写入错误等异常情况。

4、配置测试

(1)定义

配置测试是指调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到系统各项资源的最优分配原则

2)举个例子

配置测试不改变代码,只改变软硬件配置,例如安装版本更高的数据库、配置性能更好的CPU、内存等,通过更改外部配置来提高软件的性能。

5、可靠性测试

(1)定义

可靠性测试是指给系统加载一定的业务压力,使其持续运行一段时间(如 7*24h ),测试系统在这种条件下是否能够稳定运行。

6、容量测试

(1)定义

容量测试是指在一定的软硬件及网络环境下,测试系统所能支持的最大用户数最大存储量等。

(2)举个例子

容量测试通常与数据库、系统资源(如 CPU 、内存、磁盘等)有关,用于规划将来需求增长(如用户增长、业务量增加等)时,对数据库和系统资源的优化。

四、😲性能测试流程

1、性能测试流程

先用一张图来查看性能测试的整个流程。如下图所示:

性能测试流程

2、性能测试流程分析

(1)分析性能测试需求

在性能测试需求分析阶段,测试人员需要收集有关项目的各种资料,并与开发人员进行沟通,对整个项目有一定的了解,针对需要进行性能测试的部分进行分析,确定测试目标。

例如客户要求软件产品的查询功能响应时间不超过 2s ,则需要明确多少用户量情况下,响应时间不超过 2s 。对于刚上线的产品,用户量不多,但几年之后可能用户量会巨增,那么在性能测试时是否要测试产品的高并发访问,以及高并发访问下的响应时间。

(2)制定性能测试计划

  • 确定测试环境: 包括物理环境生产环境、测试团队可利用的工具资源等。
  • 确定性能验收标准: 确定响应时间吞吐量系统资源(CPU、内存等)利用总目标和限制
  • 设计测试场景:产品业务用户使用场景进行分析,设计符合用户使用习惯的场景,整理出一个业务场景表,为编写测试脚本提供依据。
  • 准备测试数据: 性能测试是模拟现实的使用场景,例如模拟用户高并发,则需要准备用户数量、工作时间、测试时长等数据。

(3)设计测试用例

性能测试用例是根据测试场景为测试准备数据,例如模拟用户高并发,可以分别设计 100个 用户并发数量、 1000个 用户并发数量等,此外还要考虑用户活跃时间访问频率场景交互等各种情况。测试人员可以根据测试计划中的业务场景表设计出足够的测试用例以达到最大的测试覆盖

(4)编写性能测试脚本

  • 正确选择协议
  • 根据工具的支持情况和测试人员熟悉程度选取脚本语言。
  • 编写测试脚本时,要遵循代码编写规范,保证代码的质量。
  • 做好脚本的维护管理工作

(5)测试执行及监控

1)了解几个指标

性能指标: 本次性能测试要测试的性能指标的变化。

资源占用与释放情况: CPU 、内存、磁盘、网络等使用情况。性能测试停止后,各项资源是否能正常释放以供后续业务使用。

警告信息: 一般软件系统在出现问题时会发出警告信息,当有警告信息时,测试人员要及时查看。

日志检查: 经常分析系统日志,包括操作系统数据库等日志。

2)结果影响

性能测试监控对性能测试结果分析、对软件的缺陷分析都起着非常重要的作用。

在测试过程中,如果遇到与预期结果不符合的情况,测试人员要调整系统配置或修改程序代码来定位问题。

由于性能测试执行过程需要监控的数据复杂多变,它要求测试人员对监控的数据指标有非常清楚的认识,同时还要求测试人员对性能测试工具非常熟悉。作为性能测试人员,应该不断努力,深入学习,不断积累知识经验才能做的更好。

(6)运行结果分析

性能测试完成之后,测试人员需要收集整理测试数据对数据进行分析,将测试数据与客户要求的性能指标进行对比,若不满足客户的性能要求,需要进行性能调优然后重新测试,直到产品性能满足客户需求。

(7)性能测试报告

性能测试完成之后需要编写性能测试报告,阐述性能测试的目标、性能测试环境、性能测试用例与脚本使用情况、性能测试结果及性能测试过程中遇到的问题和解决办法等。软件产品不能只进行一次性能测试,因此性能测试报告需要备案保存作为下次性能测试的参考

五、🤪结束语

对于测开人员来说,不能只会黑白盒测试,还要会性能测试。性能测试对于软件来说也是至关重要的一部分,没有经过性能测试的软件一般都会出现bug满天飞的问题。相信通过上文的了解,大家对性能测试有一个基础的认识。

性能测试的内容就讲到这里啦!如有需要了解软件测试相关的其他内容,可到『软件测试』栏目进行查看学习~

同时,有不理解或有误的地方也欢迎评论区留言或私信我交流~

  • 关注公众号 星期一研究室 ,不定期分享学习干货,更多有趣的专栏等你解锁~
  • 如果这篇文章对你有用,记得点个赞加个关注再走哦~

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

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

相关文章

CLR的简单理解

CLR加载程序生成进程,一个进程中可以存在多个线程,当创建一个线程时,会分配1Mb的空间,也就是线程的栈空间,对应jvm的虚拟机堆栈,是线程执行过程中用到的工作内存。这片内存用于方法传递实参,并存…

『软件测试6』bug一两是小事,但安全漏洞是大事!

详解软件测试中的安全测试一、💿安全测试概念1、安全测试概述2、安全测试与软件生命周期的关系3、常规测试与安全测试的不同(1)测试目标不同(2)假设条件不同(3)思考域不同(4&#xf…

我们真的需要JWT吗?

JWT(JSON Web Token)是目前最流行的认证方案之一。博客园、各种技术公众号隔三差五就会推一篇JWT相关的文章,真的多如牛毛。但我对JWT有点困惑,今天写出来跟大家探讨探讨,不要喷哈。JWT原理本文默认读者已经对JWT有所了…

leetcode面试题 02.07. 链表相交

一:题目 二:思路 1.这道题我们是需要找到一个结点,并且从这个结点往后的结点都相等 2.我们需要将两个链表 右对齐 3.然后将长链表的指针移动到和短链表头结点相同的位置 4.接下来就是比较指针,当一个指针相同也就意味着往后的结点的数值也相等 三:上码…

详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务

队列在前端中的应用一、队列是什么二、应用场景三、前端与队列:事件循环与任务队列1、event loop2、JS如何执行3、event loop过程4、 DOM 事件和 event loop5、event loop 总结四、宏任务和微任务1、引例2、宏任务和微任务(1)常用的宏任务和微…

终于弄明白了 Singleton,Transient,Scoped 的作用域是如何实现的

一:背景1. 讲故事前几天有位朋友让我有时间分析一下 aspnetcore 中为什么向 ServiceCollection 中注入的 Class 可以做到 Singleton,Transient,Scoped,挺有意思,这篇就来聊一聊这一话题,自从 core 中有了 S…

leetcode142. 环形链表 II(暴力+双链表)

一:题目 二:思路 1.双指针 快慢指针(快指针一次一个结点,慢指针一次两个结点) 2.如果有环的话,那么快慢指针肯定会相遇 3.那么相遇的地点一定在环中 因为如果没有环的话慢指针是永远追不到快指针的 4.接下来就是判断出口在那里,我们定义一个…

动态 Restful API 生成

介绍通常在DDD开发架构中,我们写完服务层需要在控制器中写API,今天介绍一个组件 Plus.AutoApi 可以用它来动态生成 Restful 风格的 WebApi,不用写 Controller。快速使用在你的应用服务层中添加组件Install-Package Plus.AutoApi在 Startup 中…

卷死了!再不学vue3就没有人要你了!速来围观vue3新特性

一文全面了解vue3新特性一、😶vue3比vue2有什么优势?二、🧐Vue3升级了哪些重要的功能1、createApp2、emits(父子组件间的通信)(1)通信方式(2)举个例子🌰3、多事件处理4、Fragment5、…

idea报错Class not found (在target中没有生成对应的class文件)

一:问题描述 二:解决 既然他不自动生成,那么我们就手动导入; 点击后应用 然后再次运行我们的测试用例;如果不行 再取消勾选 然后再运行我们的测试用例

敲黑板!vue3重点!一文了解Composition API新特性:ref、toRef、toRefs

一文了解Composition API新特性:ref、toRef、toRefs一、🙎如何理解ref、toRef和toRefs1、ref、toRef和toRefs是什么(1)ref1)ref是什么2)举个例子🌰(2)toRef是什么1&#…

C# 枚举转列表

C# 枚举转列表独立观察员 2020 年 9 月 1 日今天有朋友问我,ComboBox 怎么绑定一个 Enum,其实他的意思是枚举如何转换为列表。想想这确实是一个挺正常的需求,但我一时也只想到遍历,他觉得麻烦,于是我在网上帮忙查了一下…

leetcode242. 有效的字母异位词(两种方法map或数组)

一:题目 二:上码 1:方法一&#xff08;map解法&#xff09; class Solution { public:bool isAnagram(string s, string t) {/**思路:1.分析题意&#xff0c;这个是要判断t中的字符出现次数和s中字符出现的次数相同2.可以用map<char,int>来做*/map<char,int>m1,m…

活久见!月薪30k的小程序全栈开发到底有多难?

10年前&#xff0c;公司的标配是门户网站&#xff0c;造就了一批网站工作室。随着移动互联网大潮兴起&#xff0c;App又成了企业标配&#xff0c;IOS和Android开发赚的盆满钵满。然而App导致的手机内存告急&#xff0c;无止尽的信息推送&#xff0c;让微信小程序应运而生。然而…

卷不动也得继续学!紧跟vue3的步伐,再来get一波进阶新特性!

vue3进阶新特性一、&#x1f4d7;watch和watchEffect1、watch和watchEffect的区别2、举个例子&#xff08;1&#xff09;wtach监听&#xff08;2&#xff09;watchEffect监听二、&#x1f4d8;setup如何获取组件实例&#xff08;1&#xff09;为什么需要获取组件实例&#xff0…

leetcode349. 两个数组的交集(思路+详解)

一:题目 二:上码 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {/**思路:本题我们采用的哈希表数据结构是unordered_set,没有用数组因为我们不确定给出的数组中数值的范围如果 强上会出现空间的大量…

高效掌握新技能的「树型思维」

大家好&#xff0c;我是Z哥。不知道你有没有过这样的困惑&#xff0c;想学习某项新技能&#xff0c;但是很容失败。比如&#xff0c;出于职业发展的考虑&#xff0c;想学习一门新的编程语言&#xff0c;或者想了解一个新的技术框架&#xff1b;又或者看了某些综艺节目后想玩一玩…

vue2的响应式原理学“废”了吗?继续观摩vue3响应式原理Proxy

一文了解Vue3的响应式原理一、&#x1f7e9;回顾Object.defineProperty二、&#x1f7e8;Proxy基本使用三、&#x1f7e6;学习Proxy语法&#xff1a;Reflect四、&#x1f7e7;Vue3如何用Proxy实现响应式1、实现响应式2、Proxy总结&#xff08;1&#xff09;深度监听&#xff0c…

一名“企业定制化人才”的自诉:“我不愿意,但却无可奈何”

这是头哥侃码的第214篇原创几个月前&#xff0c;我曾在大智慧时期的一位同事跟我聊微信&#xff0c;说自己所在的公司这两年业务一直不温不火&#xff0c;而且从19年底就逐渐缩减技术人员。今年上半年又因为疫情的关系&#xff0c;公司干脆直接砍掉了剩余的三个技术部门&#x…

一文了解分而治之和动态规则算法在前端中的应用

一文了解分而治之和动态规则算法一、分而治之1、分而治之是什么&#xff1f;2、应用场景3、场景剖析&#xff1a;归并排序和快速排序二、动态规则1、动态规则是什么&#xff1f;2、应用场景3、场景剖析&#xff1a;斐波那契数列4、动态规则VS分而治之三、分而治之算法常见应用1…