性能测试概述

一、什么是性能测试

性能测试是一种软件测试方法,旨在确定一个软件系统在不同负载条件下的运行效率、可扩展性、资源利用率和稳定性等方面的表现。它通常是在开发和测试阶段进行的,以确保软件系统能够满足预期的性能需求。
简单来说:测试人员借助性能测试工具,模拟系统在不同情况下性能指标是否正常。

性能测试和功能测试区别?
功能测试:只是验证软件的特性是否实现
性能测试:保证软件在一些及其恶虐的环境是否能够正常试使用
性能测试是在功能测试完成之后执行的

什么样的软件表现属于性能好,什么样的软件表现属于性能不好?
性能测试概述_第1张图片
一个软件的性能好坏取决于它的运行速度、响应时间、资源利用率等因素。以下是一些常见的性能好和性能不好的软件表现。
性能好的软件表现:

  1. 快速响应:软件能够迅速响应用户的操作,无明显卡顿或延迟。
  2. 高效利用资源:软件能够充分利用计算机的资源(如CPU、内存、存储等),并且不会过度占用资源。
  3. 稳定可靠:软件能够长时间稳定运行,不会出现崩溃、死机、数据丢失等问题。
  4. 安全性能好:软件能够保护用户的隐私和数据安全,不容易遭受黑客攻击或病毒感染。
  5. 易用性好:软件的界面设计合理,操作简单易懂,用户容易上手使用。

性能不好的软件表现:

  1. 缓慢响应:软件运行缓慢,响应时间长,用户体验差。
  2. 资源占用过高:软件占用过多的计算机资源,导致其他程序运行缓慢或崩溃。
  3. 经常崩溃:软件运行不稳定,经常出现崩溃、死机等问题,影响用户工作或娱乐体验。
  4. 数据丢失或泄露:软件安全性能差,容易遭受黑客攻击或病毒感染,导致用户数据丢失或泄露。
  5. 操作复杂或不直观:软件的界面设计不合理,操作不够直观或复杂,用户难以理解和使用。

常见的性能问题:
系统内部以及软件的代码实现
1,资源泄漏,包括内存泄漏。
2,CPU使用率达到100%,系统被锁定等。
3,线程死锁,阻塞等造成系统越来越慢。
4,查询速度慢,或者列表的效率低。
5,受外部系统影响越来越大

哪些因素会影响到软件的性能?
硬件:服务器CPU,服务器内核,内存,磁盘,网络
软件:编程语言、算法.
用户:用户数量,用户操作频率

二、为什么要进行性能测试

1、获取系统性能的指标,作为性能指标的基准
2、验证系统的性能指标是否达到要求(性能需求)

  • 应用程序是否能够满足系统要求的各中性能指标
  • 应用程序是否能处理预期的用户负载并有盈余能力
  • 应用程序是否能处理业务所需要的事务数量
  • 在预期和非预期的用户负载下,应用程序是否稳定
  • 是否能确保用户在真正使用软件时获得舒服的体验

3、发现系统的性能瓶颈,内存泄漏等问题。
4、系统正常工作的情况下的最大容量。
5、帮助系统运维部门能更好的规划硬件配置
性能测试概述_第2张图片

三、性能测试常见专业术语以及衡量指标

性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势。性能测试工作实质上是利用工具去模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题分析并解决;找出系统性能变化趋势,为后续的扩展做准备。
一般地,它主要是针对系统的性能指标制定性能测试方案,执行测试用例,得出测试结果来验证系统的性能指标是否满足既定值。性能指标里包括系统各个方面的能力,如系统并发处理能力,系统响应时间,批量业务处理能力等等。

1、并发
什么是并发:软件在运行过程中,有大量的用户同时访问。
业务层面的并发用户数(并发用户数):指的是同时向服务器发送请求的用户数量。
后端服务器层面的并发用户数(并发请求数):指的是同时向服务器发送请求的请求数量(服务请求被接受的数量)。

2、用户数
系统用户数:系统数据库中维护的用户数据对应的数量
在线用户数:登录系统用户数量
并发用户数:同时对系统发起请求对应的用户数量
系统用户数>在线用户数>并发用户数(系统限制用户登录成功才能访问系统)

3、响应时间/平均响应时间(RT/ART)
用户响应时间:用户从发起请求到用户接收到响应花费的时间
N1 +A1 +N2+ A2 + N3 + A3 + N4
请求响应时间:服务器接收到请求到服务器发出响应经历的时间段就是请求响应时间
A1 + N2 + A2 + N3 + A3
性能测试概述_第3张图片
对于软件服务器端的性能测试肯定要采用请求响应时间;对于前端性能评估,则应该采用用户响应时间。
影响响应时间的因素:

  1. 网络延迟时间:指数据从客户端发送到服务器或从服务器发送到客户端的时间。
  2. 服务器响应时间:指服务器接收到请求后处理请求所需要的时间,包括处理请求、查询数据库、计算等操作。
  3. 应用程序处理时间:指应用程序执行业务逻辑所需要的时间,包括读取或写入文件、发送电子邮件、执行复杂计算等操作。
  4. 数据库查询时间:指查询数据库所需要的时间,包括查询语句的执行时间、数据传输时间等。

4、事务响应时间(Transaction Reponse Time)
处理一个事务所花的时间。
这里的一个事务是一个业务度量单位,是指一组密切相关的子操作的组合。比如,一笔电子支付操作,后台处理的时候可能需要经过会员系统,账务系统,支付系统,银行系统等,这就是是一个关于支付事务里面包含的操作。而对于用户,往往也只关注整个支付花费了多长时间。

5、每秒事务通过数(Transaction Per Second)
TPS 是指每秒系统能够处理的事务数。它是衡量系统处理能力的重要指标。
当压力加大时,TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈了。如果环境没有发生大的变化,对于同一系统会存在一个最大处理事务能力,它并不随着并发用户的增减而改变。

YB地铁检票机:只有10台进站检票的机器,1台机器1秒能进1个人

  • 并发用户数为5,则TPS为5
  • 并发用户数为10,则TPS为10
  • 并发用户数为100,则TPS仍为10

6、点击率(Hit Per Second)
每秒点击数代表用户每秒向Web 服务器提交的HTTP请求数。点击率越大,服务器压力越大。
这里的点击并不是鼠标的一次点击,一次点击可能有多次HTTP请求。
7、吞吐量(Throughput)
这里的吞吐量以单位时间为度量衡量;单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力,一般来说用 Requests/second,Pages/Second,Bytes/Second,从业务的角度,也可以用访问人数/天或是处理的业务数/小时来衡量,从网络设置的的角度来说,也可以用字节数/天来衡量。
性能测试概述_第4张图片

8、吞吐率
吞吐量/时间
吞吐率越小证明软件性能越好
吞吐率越大证明软件性能越不好

9、思考时间(Think Time)
指模拟正式用户在实际操作时的停顿间隔时间,从业务的角度来讲,思考时间指的是用户在进行操作时,每个请求之间的间隔时间。

10、资源利用率
不同系统资源的使用情况。包含CPU,内存,硬盘,网络等。
CPU使用率
内存使用率
带宽使用率
idea编写代码->测试->部署到服务器上->运行
性能测试概述_第5张图片

四、性能测试分类

性能测试可以根据不同的测试目的和测试方法进行分类,主要包括以下几种:

  1. 基准测试:让系统在正常情况下运行,观察系统的性能指标是否正常
  2. 负载测试(Load Testing):模拟实际用户的负载条件,通过一定的并发用户数、用户请求频率等参数,来测试系统在不同负载下的性能表现。
  3. 压力测试(Stress Testing):通过模拟系统在高负载下的性能表现,测试系统在极端负载下的稳定性和性能。
  4. 并发测试(Concurrency Testing):模拟多个用户同时访问系统,测试系统在多个并发用户的情况下的性能表现。
  5. 容量测试(Capacity Testing):测试系统处理大量数据或用户的能力,以及系统在达到最大容量时的性能表现。
  6. 性能分析(Performance Profiling):通过对系统或应用程序的性能指标进行分析,找出性能瓶颈,并进行优化以提高系统的性能。
  7. 配置测试(Configuration Testing):测试不同的软件和硬件配置对系统性能的影响,以找到最佳配置方案。 包括操作系统的配置、应用服务器的配置、数据库配置、JVM配置、网络环境的配置…
  8. 安全测试(Security Testing):测试系统的安全性能,包括对系统的漏洞、隐私泄露等进行测试,以保护系统的安全性。
  9. 可靠性测试(Reliability Testing):验证系统在常规负载模式下长期运行的稳定性。在一定的软硬件环境下,长时间运行一定的负载,确定系统在满足性能指标的前提下是否运行稳定。与压力测试不同的是系统的负载并不是处于极限的状态下。重点是满足性能要求的情况下,系统的稳定性,比如响应时间,TPS是否稳定。

以上性能测试分类可以相互结合,常常在一个性能测试计划中综合运用,以全面评估系统或应用程序的性能表现。

五、性能测试如何展开

生命周期:
软件测试:需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估。
性能测试:需求分析->测试计划->测试开发->测试执行->测试评估
区别:
需求分析的是性能,测试计划确定性能测试工具,测试开发编写性能测试脚本
性能测试的时候,发现的问题不叫bug,叫性能瓶颈
性能测试的时候,开发进行修复不叫修复,叫优化。

软件测试和性能测试的区别?
软件测试和性能测试是软件开发生命周期中的两个重要的测试阶段,它们的目的和测试方法有所不同。
软件测试是指在软件开发过程中对软件系统进行全面的测试,以验证软件是否符合需求和规格说明,是否能够满足用户的期望,包括功能测试、兼容性测试、安全测试、易用性测试等。软件测试的目的是发现软件中存在的缺陷,以便在软件发布前修复这些缺陷。
性能测试是指对软件系统在不同负载条件下的性能进行测试,以验证系统的可扩展性、资源利用率、响应时间等性能指标是否符合预期,包括负载测试、压力测试、并发测试、容量测试、性能分析等。性能测试的目的是为了评估系统在实际使用中的性能表现,以便优化系统的性能,提高用户体验。
因此,软件测试和性能测试的主要区别在于它们的测试目的和测试方法。软件测试主要是针对软件系统的功能、安全、兼容性、易用性等方面进行测试,以验证系统是否符合需求和规格说明;而性能测试主要是针对系统在不同负载条件下的性能进行测试,以评估系统的性能表现,并优化系统以提高性能和用户体验。

你可能感兴趣的:(软件测试,测试工具,性能·测试)