什么是持续负载测试?
当我们规划负载测试时,不应该考虑“左移”或“右移”负载测试,而是应该把这种测试活动集成在软件开发生命周期的所有阶段。负载测试可以定义为对系统提出一个需求并对性能进行度量。“continue”这个词的意思是持续进行或者中断后继续。作为整个交付管道的一部分,持续测试是执行自动化测试的过程。持续负载测试是一项风险管理活动。软件应用的风险通常会转化为更重要的商业风险,无论是财务风险还是公司的市值风险。与性能相关的风险尤其如此,影响范围往往很大。
持续负载测试的核心思想很简单——随着开发人员不断开发新功能并对应用程序进行更改,如果能立即准确地知道每个更改会对性能产生什么样的影响,难道不是很令人惊叹吗?
必须在压力下测试新应用程序的性能——在构建过程完成之后,但发布到生产环境之前。由于大多数开发团队都引入了有效的持续集成(CI),性能测试就变成了CI流水线中的一个阶段——主要是在回归测试之后,但在生产部署之前执行。
持续负载测试的目标
持续负载测试的目标包括以下几点:
真正的挑战在于上述思想的实际应用。开发一个完全自动化的性能回归和压力测试系统非常重要,然而,对于一些开发团队来说这属于“火箭科学”的难度级别。
为什么要进行持续负载测试?
何时进行持续负载测试?
应用程序中的性能问题被视为是一个“系统问题”。把负载测试留到生产阶段就和把功能测试留到创建阶段一样危险。通过预先进行负载测试,我们可以了解组件级别的性能,这是一种更轻松、高度可重复的测试方法。这与单元测试和API测试的概念类似。越早发现问题,越容易调试。
在产品的DevOps周期中进行产品发布后的线上负载测试也同样重要,适合解决可用性、可伸缩性和可靠性方面和生产规模相关的问题,提供了对生产行为的关键洞察,并有助于验证在开发期间针对风险缓解方案进行的负载测试。
持续负载试验的特点
如何提高连续负载测试
选择合适的工具
选择一个支持CI的工具,可以快速比较版本并检测与Git repository manager的差异。我是Apache JMeter的支持者,它很适合做负载测试,但测试是以XML的形式被保存的。对于CI来说,使用依赖于代码或简单文本的东西是更明智的,会让对比结果和发现差异变得更简单。因此,开源工具Gatling和Taurus非常适合这种测试。
考虑测试级别
加载模拟是端到端的,影响浏览器执行的操作(用户交互)。这些测试并不容易维护,因为它们对这些HTTP合作(针对Web系统时)中的更改很敏感。对于CI来说,更好的策略是进行API层的自动化测试,从而影响REST接口调用。
这些测试在计划和维护上更简单、成本更低,但与进行负载模拟相比,可以更快地获得有价值的信息。
构建正确的测试基础架构
在任何类型的负载测试中,都应该充分利用测试基础设施,否则,结果将无法重现,发现误报将更具挑战性。测试基础架构越接近生产环境,测试结果就越准确。
但是,如果您没有这样一个用于连续负载测试的测试基础设施,也不要担心。在规模缩小的基础设施上运行测试可能会更好。通过这样做,将不需要那么多机器来生成接近崩溃点的负载,并且更容易了解在极限状态下运行的系统。
把频率和时间调下来
首先更频繁地测试最重要的东西。压力测试不能穷尽所有场景,因为创建和维护成本很高。关键是组织和保持较少的测试数量。在所有的测试中选择最重要的,将它们放在不同的阶段,即持续交付管道中的早期阶段,并为每次构建都运行这些测试。然后每天运行一次完整的回归测试套件。
创建负载场景和断言
哪些性能测试需要持续运行?在谈论负载模拟时,必须考虑到用户会如何使用系统并试图进行匹配。在这种情况下,通过考虑如何根据用户交互来利用API来做类似的事情。在开发人员的帮助下,测试人员可以通过检测日志来获取相关数据。
另一种方法是尝试触及接近基础设施临界点的固定负载。然后根据从底层执行中获得的结果定义断言。使用这种方法,可以确保在持续集成中立即发现哪些代码变更导致了性能降级。
持续负载测试技术
首先,应该建立基本的DevOps标准。如果QA和性能团队是独立的,他们应该被重新安排。运营团队成员应该与开发团队进行协调。这些运维工程师在隔离、复制和描述导致问题的环境变量方面成为自动化专家,并确保测试工具不断改进。持续交付流水线更加高效,让开发人员、QA工程师和经理直接了解应用程序上线前的每个阶段发生了什么。
第二,如果测试范围很广,就需要分解它们。我们的目标是将测试组件化,并在半小时到一小时内运行尽可能多的测试。测试是在API层完成的,这样其他服务就可以同时测试,但彼此独立。每个测试都有一个基础目标,并且应该为一个特定的假设场景提供答案。
第三,尽可能用模拟服务来替换下游服务,可以更快地测试相关服务的假设场景,而不需要等到下游服务稳定之后才能进行测试。
持续负载测试的工具或平台
有很多工具/平台可以用于持续负载测试,例如:
英文原版链接:https://www.xenonstack.com/blog/continuous-load-testing/
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved