今天看一个性能测试的例子。
什么是性能测试?
性能测试是一种软件测试过程,用于测试软件应用程序在特定工作负载下的速度、响应时间、稳定性、可靠性、可伸缩性和资源使用情况。性能测试的主要目的是辨认和消除软件应用程序中的性能瓶颈。它是性能工程的一个子集,也被称为“性能测试”。
性能测试的重点是检查软件程序的性能
- 速度-确定应用程序是否快速响应
- 可伸缩性——决定软件应用程序可以处理的最大用户负载。
- 稳定性——确定应用程序在厘革的负载下是否稳定
为什么要进行性能测试?
软件系统所支持的特性和功能并不是唯一的关注点。软件应用程序的性能(如响应时间、可靠性、资源使用和可伸缩性)确实很紧张。性能测试的目标不是发现bug,而是消除性能瓶颈。
实行性能测试是为了向涉众提供有关其应用程序的速度、稳定性和可伸缩性的信息。更紧张的是,性能测试显现了在产物推向市场之前需要改进的地方。如果没有性能测试,软件可能会遇到如下问题:当多个用户同时使用它时运行缓慢,差别操纵系统之间的差别等,以及糟糕的可用性。
性能测试将确定他们的软件在预期工作负载下是否满足速度、可伸缩性和稳定性要求。由于不存在或糟糕的性能测试而发送到市场的应用程序的性能指标很可能会获得坏名声,并且无法到达预期的销售目标。
别的,像太空发射计划或救生医疗设备如许的关键使命应用程序应该进行性能测试,以确保它们能够长时间运行而不出现毛病。
根据Dunn & Bradstreet的数据,59%的财产500强公司每周估计会有1.6小时的停机时间。思量到拥有至少1万名员工的财产500强公司平均每小时付出56美元,对于如许的组织来说,停机成本的人工部分每周将到达896,000美元,换算成每年凌驾4,600万美元。
据估计,谷歌网站(8月19日至13日)宕机5分钟就会给这家搜索巨头造成高达54.5万美元的损失。
据估计,由于迩来亚马逊网络服务停止,公司每秒钟损失1100美元的销售额。
因此,性能测试非常紧张。
性能测试的类型
- 负载测试——检查应用程序在预期用户负载下实行的能力。目标是在软件应用程序上线之前确定性能瓶颈。
- 压力测试——包括在极端工作负载下测试应用程序,看它如那边理高流量或数据处理。目标是确定应用程序的断点。
- 耐久性测试——是为了确保软件能够在很长一段时间内处理预期的负载。
- 峰值测试——测试软件对用户产生的负载突然大幅峰值的反应。
- 批量测试-在批量测试下的大编号。的。数据被填充到数据库中,整个软件系统的行为被监督。目的是检查软件应用程序在差别数据库容量下的性能。
- 可扩展性测试——可伸缩性测试的目标是确定软件应用程序在“扩展”以支持用户负载增加方面的有效性。它有助于规划软件系统的容量增加。
常见性能问题
大多数性能问题都与速度、响应时间、加载时间和糟糕的可伸缩性有关。速度通常是应用程序最紧张的属性之一。运行缓慢的应用程序将失去潜在用户。性能测试可确保应用程序运行速度足够快,以保持用户的留意力和兴趣。看看下面列出的常见性能问题,并留意速度是如何成为此中很多问题的共同因素的:
- 加载时间长——加载时间通常是应用程序启动所需的初始时间。这通常应该保持在最低限度。虽然有些应用程序不可能在一分钟内完成加载,但如果可能的话,加载时间应该保持在几秒钟以内。
- 较差的响应时间——响应时间是从用户向应用程序输入数据到应用程序输出对该输入的响应所花费的时间。一样平常来说,这应该很快。如果用户需要等待太长时间,他们就会失去兴趣。
- 糟糕的可伸缩性——当软件产物不能处理预期的用户数量或不能容纳足够广泛的用户时,它就会遭受糟糕的可伸缩性。应该进行负载测试,以确保应用程序可以处理预期的用户数量。
- 瓶颈——瓶颈是系统中会降低团体系统性能的障碍。瓶颈是指在某些负载下,编码错误或硬件问题导致吞吐量降落。瓶颈通常是由一段错误的代码引起的。解决瓶颈问题的关键是找到导致速度变慢的代码段,并试图修复它。瓶颈通常可以通过修复运行不良的进程或添加额外的硬件来解决。一些常见的性能瓶颈是
- CPU利用率
- 内存利用率
- 网络利用率
- 操纵系统限制
- 磁盘使用情况
如何进行性能测试
用于性能测试的方法可以有很大的差别,但是性能测试的目标是相同的。它可以资助演示您的软件系统满足某些预定义的性能尺度。大概它可以资助比力两个软件系统的性能。它还可以资助辨认降低软件系统性能的部分。
下面是关于如何实行性能测试的一样平常流程
步调1)确定您的测试环境
相识您的物理测试环境、生产环境以及可用的测试工具。在开始测试过程之前,相识测试过程中使用的硬件、软件和网络配置的详细信息。它将资助测试职员创建更有效的测试。它还将资助辨认测试职员在性能测试过程中可能遇到的挑战。
步调2)确定性能验收尺度
这包括吞吐量、响应时间和资源分配的目标和约束。确定这些目标和约束之外的项目乐成尺度也是必要的。测试职员应该被授权设置性能尺度和目标,因为项目规范通常不包括足够广泛的性能基准。有时可能根本没有。如果可能的话,找到一个类似的应用程序进行比力是设置性能目标的好方法。
步调3)计划和设计性能测试
确定终极用户之间的使用情况可能如何厘革,并确定用于测试全部可能用例的关键场景。有必要模仿各种终端用户,计划性能测试数据并概述将网络哪些指标。
步调4)配置测试环境
在实行前预备好测试环境。别的,安排工具和其他资源。
步调5)实行测试设计
根据测试设计创建性能测试。
步调6)运行测试
实行和监督测试。
步调7)分析、调优和重新测试
整合、分析和共享测试效果。然后再进行微调和测试,看看性能是否有所改善或降落。由于每次重新测试的改进通常会越来越小,当CPU导致瓶颈时就制止。然后,您可以思量增加CPU功率。
性能测试指标:被监控的参数
性能测试期间监测的根本参数包括:
- 处理器使用率——处理器实行非空闲线程所花费的时间。
- 内存使用-计算机上进程可用的物理内存量。
- 磁盘时间-磁盘忙于实行读或写哀求的时间量。
- 带宽-表现网络接口每秒使用的比特数。
- 私有字节数——一个进程分配的不能在其他进程之间共享的字节数。它们用于丈量内存泄漏和使用情况。
- 提交内存量—使用的假造内存量。
- 内存页数/秒——为解决硬页错误而写入或从磁盘读取的页数。硬页错误是指从其他地方调用不是来自当前工作集的代码并从磁盘检索。
- 页面错误/秒——处理器处理错误页面的总速率。当进程需要来自其工作集之外的代码时,同样会发生这种情况。
- 每秒CPU停止数——是处理器每秒接收和处理的平均硬件停止数。
- 磁盘队列长度-为平均。在采样隔断内为选定磁盘排队的读和写哀求。
- 网络输出队列长度-数据包中输出数据包队列的长度。凌驾两个就意味着延迟,需要制止瓶颈。
- 每秒网络字节总数——在接口上发送和接收字节的速率,包括分帧字符。
- 响应时间——从用户输入哀求到接收到响应的第一个字符的时间。
- 吞吐量计算机或网络每秒接收哀求的速率。
- 毗连池的数量-毗连池满足的用户哀求的数量。池中的毗连满足的哀求越多,性能就越好。
- 最大运动会话-一次可以运动的最大会话数。
- 掷中率——这与缓存数据处理的SQL语句数量有关,而不是昂贵的I/O操纵。这是解决瓶颈问题的一个很好的开始。
- 每秒点击率是第一。负载测试中每秒钟web服务器上的点击率。
- 回滚段——在任何时间点可以回滚的数据量。
- 数据库锁——需要对表和数据库的锁进行监督和细致调优。
- 顶部等待——被监督,以确定在处理从内存中检索数据的速度时可以减少什么等待时间
- 线程数——应用程序运行状况可以通过线程数来衡量。正在运行和当前运动的线程。
- 垃圾网络——它与将未使用的内存返回给系统有关。为了提高效率,需要监控垃圾网络。
性能测试用例示例
- 测试用例01:验证当1000个用户同时访问网站时,响应时间不凌驾4秒。
- 测试用例02:在网络毗连较慢的情况下,验证应用程序负载下的响应时间在可接受的范围内
- 测试用例03:检查应用程序在崩溃前可以处理的最大用户数。
- 测试用例04:当同时读写500条记录时,检查数据库实行时间。
- 测试用例05:检查应用程序和数据库服务器在峰值负载条件下的CPU和内存使用情况
- 测试用例06:验证应用程序在低、正常、中等和重载负载条件下的响应时间。
在实际性能测试实行过程中,模糊的术语如可接受范围、重载等被详细的数字所取代。性能工程师根据业务需求和应用程序的技术远景来设置这些数字。
性能测试工具
市场上有各种各样的性能测试工具。您选择的测试工具取决于很多因素,如支持的协议类型、许可成本、硬件要求、平台支持等。下面是一些常用的测试工具。
- LoadNinja -是革命性的方式,我们加载测试。这个基于云的负载测试工具使团队能够记录和即时回放全面的负载测试,而无需复杂的动态关联,并在大规模的真实欣赏器中运行这些负载测试。团队能够增加测试覆盖率。将负载测试时间缩短60%以上。
- HeadSpin -为用户提供业界最好的性能测试能力。用户可以通过HeadSpin平台的性能测试功能,通过辨认息争决应用程序、设备和网络的性能问题,优化他们的数字体验。HeadSpin提供真实的、真实的数据,消除来自数千个设备、网络和位置的不确定性。用户可以利用先辈的人工智能功能,在性能问题影响用户之前自动辨认测试中的性能问题。
- BlazeMeter -由热衷于开源的工程师设计和建造。BlazeMeter可以让您直接从IDE进行大规模负载和性能测试。别的,通过结合UX和负载测试,看看用户在负载下看到了什么。最棒的是什么?一切都在这里:性能、功能、无脚本、API测试和监督、测试数据和模仿服务。
- HP LoadRunner -是当今市场上最盛行的性能测试工具。该工具能够模仿成千上万的用户,将应用程序置于实际负载下,以确定它们在预期负载下的行为。Loadrunner的特点是假造用户生成器,模仿真人用户的操纵。
- Jmeter -用于web和应用服务器负载测试的领先工具之一。
常见问题解答
我们应该测试哪些应用程序?
性能测试总是只针对基于客户端-服务器的系统进行。这意味着,任何不是基于客户机-服务器架构的应用程序都不需要性能测试。
比方,Microsoft Calculator既不是基于客户端-服务器的,也不运行多个用户;因此它不是性能测试的候选。
性能测试与性能工程的区别是什么?
相识性能测试与性能工程的区别具有紧张意义。现告竣如下共识:
性能测试是一门涉及在各种参数下测试和陈诉软件应用程序当前性能的学科。
性能工程是为了实现所需性能而对软件进行测试和调优的过程。这个过程旨在优化最紧张的应用程序性能特征,即用户体验。
从历史上看,测试和调优是截然差别的领域,而且通常是相互竞争的领域。然而,在过去的几年里,一些测试职员和开辟职员已经独立合作创建了调优团队。因为这些团队已经取得了巨大的乐成,以是将性能测试与性能调优耦合起来的概念已经盛行起来,现在我们称之为性能工程。
结论
在软件工程中,在销售任何软件产物之前,性能测试是必要的。它确保客户满足并保护投资者的投资免受产物失败的影响。性能测试的成本通常可以通过提高客户满足度、忠诚度和保留率来补充。
末了: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰巨的路程,希望也能资助到你!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |