一、什么是性能测试?
性能测试是用来评估计算机,网络,软件程序或者设备在负载下的速度,响应时间和稳定性的测试方法。一般运行性能测试是为了识别性能相关的瓶颈。
如果没有正式的性能测试,慢的响应时间,用户体验和实际系统表现的差距,会让用户对整个系统的整体体验变差。通过性能测试让系统在负载下达到速度,响应时间和稳定性的要求会让用户对系统更满意。
性能测试可以在实验室做定量测试,也可以在生产环境下的某些场景做量化测试。识别性能需求并且完成测试。
典型的因素有处理时间,数据传输比率,网络带宽和吞吐量,工作负载的效率和可靠性。
举个例子:当用户做了一个操作,我们可以度量它的响应时间。同样在大规模数据模式下也需要度量。如果响应时间太慢,会对客户造成困扰。如果响应时间太慢,就需要找到瓶颈在哪里。
二、为什么需要做性能测试?
一个组织可以使用性能测试作为诊断的辅助手段来定位系统中的计算或通信瓶颈。
瓶颈是系统整体功能中阻碍整体性能的一个点或组件。例如,如果带宽低于每秒1兆比特(Mbps),即使是最快的计算机在网络上的功能也会很差。
数据传输率慢可能是硬件固有的问题,但也可能是与软件有关的问题造成的--例如,有太多的应用程序同时运行,或网络浏览器中的文件损坏。
性能测试可以作为软件测试的一种形式,通过突出一个应用程序可能失败或滞后的地方,帮助确定与软件有关的性能问题的性质或位置。
这种形式的测试也可以用来确保一个组织为一个可预测的重大事件做好准备,对于网上商店来说。性能测试也可以验证一个系统是否符合其制造商或供应商声称的规格。这个过程可以用来比较两个或更多的设备或程序。
三、性能测试指标有哪些?
性能测试指标一些性能指标,或关键性能指标(KPI),可以帮助一个组织评估当前的性能。
性能指标通常包括:
吞吐量: 一个系统在指定时间内处理多少单位的信息。
内存: 一个处理器或工作负载可用的工作存储空间
响应时间: 从用户输入请求到系统开始响应该请求之间所经过的时间量带宽。
带宽:每秒可以在工作负载之间移动的数据量。
CPU每秒中断次数:通常是通过网络CPU每秒中断次数。 一个进程每秒收到的硬件中断的数量这些指标和其他指标帮助一个组织进行多种类型的性能测试。
这些指标和其他指标可以帮助一个组织进行多种类型的性能测试。
四,如何进行性能测试?
由于性能测试可以用不同类型的指标进行,实际过程可能有很大的不同。然而,一个通用的过程有如下步骤:
1. 确定测试环境。这包括测试和生产环境以及测试工具。
2. 确定和定义可接受的性能标准。 这应该包括性能目标和指标约束。
3. 规划性能测试。
4. 测试所有可能的用例。围绕性能指标建立测试案例。
5. 配置和实施测试设计环境。 安排资源来准备测试环境,然后开始实施它。
6. 监控 测试结果。
7. 分析和重新测试。 查看结果。在任何微调之后,重新测试,看看在性能上是否有增加或减少。
组织应该找到能够最好地自动化性能测试过程的测试工具。此外,在测试之间不应改变测试环境。
五,性能测试的类型有哪些?
性能测试的类型有两种主要的性能测试方法:负载测试和压力测试。然而,还有其他类型的测试方法可以用来确定性能。
负载测试帮助开发人员了解系统在特定负载值下的行为。在负载测试过程中,一个组织在一段时间内模拟预期的并发用户和交易数量,以验证预期的响应时间和定位瓶颈。这种类型的测试有助于开发人员在应用程序或系统上线之前确定该应用程序或系统可以处理多少用户。
此外,开发人员可以对应用程序的特定功能进行负载测试,如网页上的结帐车。一个团队可以将负载测试作为持续集成(CI)过程的一部分,通过使用自动化工具,如Jenkins,立即测试代码库的变化。
压力测试将系统置于高于预期的流量负载下,因此开发人员可以看到系统在其预期容量限制之上的工作情况。
压力测试有两个子类别:长时间测试和峰值测试。压力测试使软件团队能够了解工作负载的可扩展性。压力测试对硬件资源施加压力,以确定基于资源使用的应用程序的潜在突破点。资源可以包括CPU、内存和硬盘,以及固态硬盘。系统压力还可能导致数据交换缓慢、内存短缺、数据损坏和安全问题。
压力测试还可以显示在事件发生后,关键绩效指标需要多长时间才能恢复到正常运行水平。压力测试可以在系统上线之前或之后进行。一种生产环境的压力测试被称为混乱工程,并有专门的工具用于此。一个组织也可以在一个可预测的重大事件之前进行压力测试,如电子商务应用的黑色星期五,使用与负载测试相同的工具接近预期负载。
长时间测试,也叫耐力测试,模拟终端用户随时间稳定增加,以测试系统的长期可持续性。在测试过程中,测试工程师监控关键绩效指标,如内存使用,并检查故障,如内存短缺。长时间测试还分析了持续使用后的吞吐量和响应时间,以显示这些指标是否与测试开始时的状态一致。
峰值测试,压力测试的另一个子集,评估系统在模拟终端用户突然大幅增加时的性能。峰值测试有助于确定一个系统是否能在短时间内重复处理突然的、急剧的工作量增加。与压力测试类似,IT团队通常在一个大型活动之前进行峰值测试,在这个活动中,系统可能会经历比正常流量更高的流量。
可扩展性测试根据软件的能力来衡量性能,以扩大或缩小性能测量属性。例如,可扩展性测试可以根据用户请求的数量来进行。
容量测试与压力测试类似,它根据用户的数量来测试流量负载,但在数量上有所不同。容量测试着眼于软件应用程序或环境是否能够处理其专门设计的流量。
云性能测试性能测试也可以在云中进行。云性能测试的好处是能够在更大的范围内测试应用程序,同时还能保持在云中的成本优势。
起初,企业认为将性能测试转移到云端会缓解性能测试过程,同时使其更具可扩展性。这个想法的过程是,一个组织可以将这个过程卸载到云端,这将解决他们所有的问题。
然而,当企业开始这样做的时候,他们开始发现在云中进行性能测试仍然存在问题,因为企业不会有深入的,云供应商方面的白盒知识。将应用程序从企业内部环境转移到云中的挑战之一是自满情绪。
开发人员和IT人员可能会认为,一旦到达云端,应用程序将同样工作。他们会尽量减少测试和QA,并快速推出。因为应用程序是在另一个供应商的硬件上进行测试的,如果是在企业内部托管,测试可能就不那么准确了。
开发和运营团队应该进行协调,检查安全漏洞,进行负载测试,评估可扩展性,并考虑用户体验和映射服务器、端口和路径。与企业内部环境相比,云环境通常会对内部通信有更多的安全限制。在迁移到云端之前,一个组织应该构建一个完整的地图,说明应用程序使用哪些服务器、端口和通信路径。
六、性能测试工具有哪些?
性能测试的挑战性能测试的一些挑战如下:一些工具可能只支持Web应用程序。性能测试工具一个IT团队可以使用各种性能测试工具,这取决于其需求和偏好。
性能测试工具有:
JMeter,一个Apache性能测试工具,可以对网络和应用服务产生负载测试。JMeter的插件为负载测试提供了灵活性,涵盖了图形、线程组、定时器、函数和逻辑控制器等领域。JMeter支持集成开发环境(IDE),用于浏览器或Web应用程序的测试记录,以及用于基于Java的操作系统的负载测试的命令行模式。
LoadRunner由Micro Focus开发,测试和测量负载下的应用程序的性能。LoadRunner可以模拟成千上万的终端用户,以及记录和分析负载测试。作为模拟的一部分,该软件在应用程序组件和终端用户操作之间生成信息,类似于按键或鼠标移动。LoadRunner还包括面向云计算使用的版本。
NeoLoad由Neotys开发,为网络和移动应用提供负载和压力测试,专门用于在发布前测试应用,以实现DevOps和持续交付,IT团队可以使用该程序监控网络、数据库和应用服务器。NeoLoad可以模拟数百万的用户。它可以测试云端或者本地服务器。