没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2016-05-06 18:22:31.000|阅读 1831 次
概述:JMeter断言用于将实际测试结果与请求的预期结果进行对比。这篇文章将为大家阐述,即使您使用一些方法避免使用了断言,也强烈建议大家优化它们。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
JMeter断言用于将实际测试结果与请求的预期结果进行对比。这篇文章将为大家阐述,即使您使用一些方法避免使用了断言,也强烈建议大家优化它们。
当我们计划负载测试的工作量时,一般不使用断言。其中的主要原因是,当负载或性能测试时,代码的响应状态是作为结果分析的主要指标之一。验证每一个请求的响应数据是没有太大必要的,我们需要的只是响应时间、延迟和响应代码。从理论上讲,我们并不需要使用JMeter断言,但在实践中,忽略断言可能严重破坏最终结果。
为了说明在JMeter中断言的重要性,在此分享给大家一个发生在我自己身上的案例,是关于SaaS service的负载测试。
SaaS是一个旅游业服务公司,他们要求我在网站发布之前进行负载测试。测试场景并不复杂,它包括了登陆、一些链接和注销。这些看起来很简单,所以我万万没有想到还是出现了一些问题。
当我准备好JMeter脚本,并将JMX文件上传到BlazeMeter后,开始运行测试。所有的请求均通过了200 status code和平均响应时间(小于1000毫秒)。这些数据显示web应用程序的运行速度是很快的。接着,我增加了并发用户数再次执行负载测试。结果显示平均响应时间没有变化,并且应用程序的运行中没有出现任何错误。
对于以上的测试结果,我的想法是这样的。应用程序看起来很稳定,但是平均响应时间保持不变这一点很奇怪。
在给顾客发送负载测试报告之前,我决定现在本地仔细检查一下这个结果。因为所有的请求都是成功的,所以很难找到问题的根源。在进行了很长一段时间的调查后,我决定在每个请求中添加断言。在Assertion Results listener中看到的结果让我惊讶。在监听器中显示有近90%的请求是失败的,但在View Results Tree listener(显示所有样品的响应树,可以查看任何样本)中,一切响应都是正确的。
我发现这种差异的根源在于登陆的样本。曾经用于证书的CSV数据已经过时了,取而代之的是返回4xx status code(这表示它不成功)。它被重新指向2xx(成功)status code的维护页面。其余的请求也返回到维护页面,页面托管在CDN上。当我们加载该公司的web servers时,事实上所有的请求都被发送到了CDN。
根据这一经验的结果,我们可以得出结论,一个成功的响应状态消息并不总是表示成功。而JMeter断言可以帮助我们解决这一问题。
JMeter断言不仅仅在上述的案例中很重要,在很多的负载测试中都有着举足轻重的地位。例如,在性能测试中,JMeter断言在任何测试脚本中都是必须具备的。
针对何时使用JMeter断言,下面给出了一些建议:
在JMeter的官方文档中,写了这样一句话“使用尽可能少的断言越好”,主要的原因在于断言会消耗过多的资源。在高负载测试中使用断言很可能会引起性能问题,甚至是内存不足的问题。
下面是负载测试中,建议避免使用断言的情况:
为了找出断言在上述情况下的影响,我做了一个JMeter的基准测试。我使用了来自 "JMeter Performance evolution across versions"测试中的JMX文件。
测试计划参数:
1、基准测试没有断言
2、基准测试采用响应断言
3、基准测试使用XPath断言
如上图所示,在所有测试中RAM的行为是稳定的。如果我们分析CPU结果,我们可以看到响应断言在测试中并没有大的变化。但在使用XPath断言进行测试时,CPU的消耗增加了10%。测试计划只包括4 samplers和4 XPath assertions。增加更多的断言将大幅增加CPU的消耗,这将导致性能问题。
在负载和性能测试中,JMeter断言是必不可少的,特别是遇到服务器返回非标准的响应代码动态数据的情况时。当服务器返回静态纯文本数据是正确的时候,可以忽略Meter断言,但同样建议添加额外的验证。断言的缺点是消耗过多资源,因此不能在每一个负载测试中使用断言。
在写JMeter测试计划时,我建议考虑性能和功能之间的平衡。这在分布式负载测试中,可以节省大量的时间和成本。
原文翻译自:dzone
转载请注明:evget
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
Iron Software 为.NET开发者提供了难得的“即插即用”组件体验,无论是做内部工具,还是开发商业软件,都能大幅提升你的开发效率与产品质量。这款宝藏控件,不妨你也来试试!
TestComplete通过与Git、Jenkins和Zephyr的深度集成,构建了一个完整的持续测试生态系统:从代码变更的智能感知到批量测试的自动化执行,再到测试管理的智能化分析,实现了测试流程的全链路自动化。这种端到端的集成方案不仅显著提升了测试效率和质量,更通过实时反馈和可视化管理,为团队提供了精准的代码质量洞察。
微服务架构带来了灵活性,但也让测试变得复杂:不同协议适配费时费力、服务频繁变更导致测试用例维护困难、依赖环境搭建和稳定更是令人头疼。这些挑战常常成为敏捷交付和质量保障的瓶颈。Parasoft SOAtest正是为应对这些复杂分布式系统测试难题而设计的平台。它通过三大核心能力,帮助团队更从容地驾驭微服务测试:
HOOPS SDK为增材制造软件开发提供了从CAD数据读取、模型处理、可视化到文档生成的完整技术栈。无论是桌面端的工业级打印控制系统,还是基于云的在线制造平台,开发者都可通过HOOPS快速构建稳定可靠、用户体验优良的3D打印软件。
针对 C/C++ 软件开发提供统一、完全集成的测试解决方案。
Parasoft Jtest用于应用软件开发的集成Java测试工具
Parasoft dotTEST降低C#和VB.NET开发风险,有效地实现符合C#和.NET开发的测试工具的要求
Parasoft Insure++针对C和C++应用程序的运行时内存泄漏检测和内存调试
Parasoft SOAtest人工智能和机器学习赋能 API 和 Web 服务测试
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号