性能基准自动化测试

简介:

性能基准测试是一项系统性能测量工作,根据目前的项目实际,在这里做了一些新的定义。基准测试在项目中与一般性能测试工作的主要区别在于其更短的回归周期与直观的趋势分析,并同时为混合业务性能场景的脚本线程配比计算提供依据。一般的性能测试往往只在版本计划中或遭遇系统性能问题时进行,而基准测试在日常中进行,特别是在发生重大变更事件(例如:系统配置、环境发生变更)之前与之后的测试,让测试结果数据与一般的性能测试结果数据更有实质上的参考意义。因为,当为系统创建性能基准后,基准数据作为性能指标的参照物,可用于判断任意一项变更为系统带来的具体影响。例如:某项配置优化后能够为系统带来的性能提升是多少、系统某项操作历史数据的增长与性能响应的关系、系统环境的变更对系统性能产生的影响。而且实施该项工作并不复杂。

基准测试数据的实际用途

1)         了解系统性能基准作为参照物(性能问题发生后的测试很难了解系统性能基准)

2)         识别系统或环境的配置变更对性能响应带来的影响

3)         为系统优化前后的性能提升/下降提供参考指标

4)         观察系统的整体性能趋势与拐点发生,及早识别系统性能风险

性能基准自动化测试与一般性能测试的主要区别

1)         测试周期:基准测试每天定时自动化执行,性能测试需要事件驱动执行。

2)         测试脚本:基准测试的性能测试脚本仅仅包含所关注业务的必须的HTTP请求,不进行用户行为模拟;性能测试的测试脚本包含关键业务的所有上下文请求,并进行用户行为的模拟。

3)         测试策略:基准测试策略固定,几乎不允许修改(否则将与过去所有历史数据发生断层);性能测试需要根据不断变化的性能需求进行修改。

4)         脚本维护:基准测试的测试脚本仅在访问链接发生变更时维护,或者POST请求参数发生变更时维护,GET请求几乎不需要维护;性能测试脚本在每轮测试中一般都需要重新开发。

5)         结果用途:基准测试结果数据仅用于作为系统性能下降/提升的衡量指标,性能测试结果脚本可用于预测用户性能体验、系统性能风险。

性能基准测试自动化测试的实施

1)         性能基准数据的获取

利用Apache的开源项目Jmeter测试工具,使用Jmeter针对关注的系统性能点进行脚本开发,如下图,线程在事务控制器“用户登录”内进行系统登录,循环控制器内装载了各个性能关注点的HTTP请求:

在测试计划中维护性能基准测试环境信息与测试策略,包括:主机、端口、线程数、加载速度、迭代次数等。并采用50线程执行性能测试脚本,每条线程执行10次迭代,每个性能关注点取得500个响应样本,从而性能响应数据,包括:平均值、标准差、事务通过情况、错误内容。

2)         计划任务的定时执行

利用Apache开源项目Ant每日中午定时执行基准测试,自动保存性能测试结果,生成当日的性能基准测试结果数据,每日基准测试报告如下图:

假定性能关注点为5个,采用以上测试策略,在系统性能响应理想的情况下,整个测试过程时间可在3分钟内完成,最后生成一定数量的结果文件,最好有30天以上

3)         数据的整合与趋势分析

当取得足够量的基准测试结果以后(例如:30天、60天、90天),即可对第二节中所提到的每天的测试结果数据进行整合,生成报表的形式,直观的了解过去时间内,系统的性能拐点发生日期,对拐点发生当日的变更事件进行跟踪。报表所体现的内容在使用summary中的平均响应时间、事务通过率作为系统整体性能响应考量指标。不把每个事务都展现到报表中,除非:

  a)       系统整体事务通过率无法达到95%;

  b)       系统整体响应时间平均值大于2秒,最高值大于10秒;

下面是用perl写了个程序对html文件进行分析的输出,每个基准测试时间后对应了系统整体性能状况(事务的通过率,以及响应时间的平均、最快、最大值),最后根据预定义的阈值给出结果,为了更好的说明问题,这里把“平均响应时间大于5秒”判断为性能下降,最后一列的“↘”表示了3月31日出现了性能拐点。










本文转自 小强测试帮 51CTO博客,原文链接:http://blog.51cto.com/xqtesting/2068578,如需转载请自行联系原作者
目录
相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
482 4
|
8月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
524 2
|
监控 测试技术 PHP
性能和压力测试
【10月更文挑战第10天】性能和压力测试
376 60
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
432 13
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
278 11
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
285 10
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1025 13