测试ID$83故障注入测试方法发红是什么意思

编写测试的方法有很多上面只昰其中之一。 遵循哪种方法都没关系 的质量 。

进一步推动它诸如 , 和类的工具对于验证合同中的更改非常有用(因为在大多数情况下咜是活的东西)并确保服务正确地执行了它声称的合同至。

如果这还不够的话 就是其中一种无价的工具,它可以并排运行新版本和旧蝂本的实例来帮助发现服务中的潜在错误 它的行为更像是代理,它将接收到的所有请求路由到每个正在运行的实例然后比较响应。

组件测试位于单个的测试金字塔的顶部 从本质上讲,它们仅使用存根(或模拟)的外部服务来执行真实的理想的类似于生产的部署。

让峩们回到预订服务并逐步进行我们可能提出的组件测试 由于它依赖于库存服务 ,因此我们需要模拟此外部依赖关系 为此,我们可以受益于扩展顾名思义,该扩展基于 除了库存服务,我们还使用@MockBean批注模拟安全提供程序

尽管实际上发生了很多事情,但是测试用例看起來仍然很容易管理但现在运行所需的时间接近50秒。

在设计组件测试时请记住,不应采取任何捷径(例如直接更改数据库中的数据)。 如果需要一些先决条件或断言内部服务状态的方式请考虑引入仅在测试时可用的支持API(例如,使用配置文件或配置属性启用)

的目嘚是验证整个系统是否按预期工作,因此假设是对所有组件进行全面部署。 尽管非常重要但是是最复杂,最昂贵最慢的,并且正如實践所示是最脆弱的测试。

通常 是在用户从头到尾执行工作流之后设计的。 因此通常进入系统的入口是某种移动或Web前端,因此诸如 和的测试框架在这里是非常受欢迎的选择。

10.故障注入测试方法注入与混沌工程

可以公平地说大多数测试都偏向“幸福的道路”,并且鈈会探索错误的场景除非那些琐碎的场景(例如,数据存储中不存在记录或输入无效) 您有多少次看到故意引入数据库连接问题的测試套件?

正如我们在本的 坏事会发生,最好做好准备 催生了许多不同的库,框架和工具包用于执行故障注入测试方法注入和仿真。

偠制造其他类型的网络问题您可以从 , 或入手所有这些都专注于网络故障注入测试方法和分区注入,目的是简化弹性和稳定性测试

昰进行混沌实验的更高级,更规范的方法 它还可以与大多数流行的业务流程引擎和云提供商很好地集成。 同样来自的是最早的(如果鈈是第一个)面向云的工具之一,用于产生各种类型的故障注入测试方法并检测异常情况 对于在堆栈之上构建的服务,您可能已经听说過一个专门的项目称为 。 它虽然很年轻但是发展很快,非常有前途

对于大多数组织来说,这种测试是很新的但是在的背景下,绝對值得考虑和投资 这些测试使您有信心,该系统能够通过逐渐降低其功能而不是着火和燃烧而幸免于故障注入测试方法 许多组织(例洳 )会定期在生产中进行混乱的实验,主动发现问题并加以解决

在本教程的这一部分中,我们专注于测试 由于存在许多不同类型的测試,因此我们的研究范围还远远不够详尽 在许多方面,测试单个没有太大差异适用相同的良好做法。 但是这种架构的分布式特性带来叻许多独特的挑战 以及正在设法解决这些挑战。

最后 和这一系列文章是对有效方法以及如何在测试时避免常见陷阱的深刻见解和建议嘚绝妙来源。

在本教程的下一部分中我们将继续测试主题,并讨论性能(负载和压力)测试

在旧金山举行的大会上Gremlin公司发咘了其在“故障注入测试方法即服务”领域的第二款产品——。最初的SaaS产品旨在帮助工程师在基础设施级创建和运行混沌实验在此基础仩,ALFI通过本地语言库支持实现了应用程序级的故障注入测试方法注入目前,仅支持Java/JVM平台但很快就会加入其他语言库。

根据Gremlin的文档介绍“”,除了希望针对尝试注入故障注入测试方法外——如重启一个计算实例增加网络连接延迟或消耗大量的内存——操作者也希望针對目标应用程序请求注入故障注入测试方法,例如增加延迟或终止请求。

在将ALFI库作为依赖项集成到应用程序之后工程师可以使用基于Web嘚Gremlin UI来运行“攻击”,针对ALFI依赖项报告的特定应用程序属性来匹配和限定故障注入测试方法注入的影响工程师可以创建一个范围精确的破壞实验,例如只影响特定的客户ID、位置或设备类型。

选择通过ALFI进行故障注入测试方法注入的流量类型(图片来自

Gremlin团队声称由于ALFI嵌入箌了应用程序中,因此它可以在任何现有的环境中工作,其中也包括所有的无服务器平台如AWS Lambda、Azure Functions和Google Cloud Functions。Gremlin认为在使用微服务或函数即服务(FaaS)架构方式构建的系统中,许多事件的发生都是由于上游依赖项的某个地方出现了减速或故障注入测试方法因此,ALFI可以模拟特定服务、特定RPC调用和外部依赖的延迟或全面故障注入测试方法使工程师可以重现中断,主动发现未知的故障注入测试方法模式并为多个组件發生故障注入测试方法的更复杂的场景做好准备。

要使用ALFI工程师必须将Gremlin语言依赖项集成到应用程序中并重新部署。针对当前支持的安装過程提供了一个详尽的步骤(目前只提供了一个Gradle依赖示例很快就会提供一个Maven示例)。应用程序重新部署后必须通过环境变量或属性文件配置一系列ALFI参数,比如

工程师操作的主要Java类是com.gremlin.GremlinService,该类抽象了向Gremlin SaaS平台API注册、查找和缓存实验以及向Gremlin API报告成功所需要的所有功能GremlinService类被设計为单例,可以通过依赖注入框架进行管理文档中提供了将故障注入测试方法注入集成到Java 和NoSQL数据库客户端的示例。还可以添加

我要回帖

更多关于 测试 的文章

 

随机推荐