Threat Stack 现在是F5 分布式云应用基础设施保护(AIP)。 立即开始与您的团队一起使用分布式云 AIP。
所有软件开发项目,无论规模大小,都可以从精心策划和执行的测试中受益。 这是确保您开发的软件按预期运行并为客户提供价值的方法。 更重要的是——考虑到我们当前网络环境的性质——执行良好的测试是确保您的软件不会出现可能损害其完整性的错误或漏洞的方法。 总之,良好的测试可以让您将性能价值传递给客户,同时还为他们提供底层的安全性。
在 Threat Stack,我们拥有复杂的全栈开发环境,需要测试工程团队进行大量的规划和决策,以确保我们平台的所有功能区域都得到有效、高效的测试。 这包括决定使用什么测试工具,因为正确的工具可以让我们引入自动化以及速度、可重复性、一致性和结果的准确性。
在这篇文章中,我们将讨论我们使用的十种自动化测试工具——目的是分享一些见解,希望这些见解能够帮助您进行测试活动。
不过,在查看这些工具之前,让我们先通过检查我们的测试工程师在测试我们的平台及其基础设施时考虑的关键领域来创建一些背景信息。
正如您所见,我们的软件涵盖了很多领域,而且必须快速、安全、准确且大规模地完成。 考虑到这一点,让我们来看看我们使用的一些测试工具。
测试软件工程师隶属于自己的功能团队,不仅负责测试不断开发的新特性和功能,还负责添加自动化功能以确保产品的其余部分仍能按预期运行。
为了证明我们的组织对这些人员的重视,每个测试工程师还负责推荐他们认为合适的自动化方法、工具和语言。 以下是我们用来帮助我们进行自动化测试工作的一些工具的列表。 请注意,我们总体上使用更广泛的工具集;我们的目标是讨论工具的选择,并提醒您选择最适合您正在进行的特定项目的工具。
免责声明: 本篇文章中提到的资源并未按照感知价值进行排名。 我们的评论也不代表任何形式的认可。 我们的目的只是向您提供我们认为可以帮助您增加对测试工具的了解的信息。
网址: https://teamcapybara.github.io/capybara/
类型: 免费、开源
最新版本: 3.29.0(2019 年 9 月 2 日)
Capybara 是我们与 Selenium 一起使用的 Ruby 宝石,用于在执行端到端用户界面测试时与基于浏览器的 UI 自动化测试进行交互。 Capybara 包含内置方法,可模拟用户如何访问页面、填写文本框、单击按钮或选择下拉列表。
软件测试人员最担心的就是网页元素加载到页面上需要花费大量的时间,从而导致无法解释的测试失败。 Capybara 提供的每种方法都自动内置了等待。
Capybara 测试用户体验问题,以客户的方式操作我们的产品,登录我们的应用,浏览网站,查看由我们的测试系统触发的事件,创建新规则来控制哪些事件应该触发警报,深入研究仪表板上的警报信息,并更新各种设置。
网站: http://gauge.org
类型: 免费、开源
支持: GetGauge Google 群组、 Gitter 聊天
最新版本: 1.0.7(2019 年 8 月 29 日)
Gauge 是由 ThoughtWorks Studio India 创建的测试自动化框架,我们使用它来设置 UI 和 API 验收测试。 虽然我们将 Gauge 与 Ruby 配对,但它也兼容 Java、C#、JavaScript 和 Python。 Gauge 与 BDD 框架 Cucumber 非常相似,但有细微的差别:
作为一种行为驱动开发(BDD)工具,随着测试的复杂度增加,Cucumber 可能会变得有点冗长。 有了 Gauge,每个步骤都是一个清晰、简洁、易读的要点。 此外,Gauge 还具有多种格式(XML、JSON、HTML)的内置报告。 它既可以在命令行上使用,也可以在 IDE(如Visual Studio Code)中使用。 最后,提供了充足的文档,涵盖了一系列主题,包括安装、规范编写、示例教程等。
类型: 企业版和开源版
最新版本: 3.2.1(2019 年 8 月 27 日)
Gatling 在 Threat Stack 提供持续的负载测试。 它是用 Scala 编写的,可以作为独立工具使用,也可以作为Maven产品的依赖项使用。
为了证明其速度和功能,我们在十分钟内能够在测试环境中生成三百万个请求,并且能够确定所有请求都在 800 毫秒内返回结果。
正如 BlazeMeter 在其博客《您应该使用 Gatling 进行负载测试的八个理由》中所述,“Gatling 创建了详细的指标仪表板,您可以在测试执行后看到它,而无需添加任何其他插件。 该报告存储为 HTML 文件,可以轻松保存以供将来进行分析和指标比较。 除此之外,该报告还具有交互式功能,允许您执行更详细的分析,并除了整体情况之外还集中特定的请求。”
类型: 开源
支持: Chef.io 社区
最新版本: 2.2.0(2019 年 4 月 26 日)
Test Kitchen 是Chef.io 的产品,我们在测试过程中用它来自动启动和拆除不同的 Amazon Web Services 环境。 Test Kitchen 是一个测试工具,您可以用它在一个或多个平台上单独执行您配置的代码。 Kitchen 支持许多现成的测试框架,包括Chef InSpec 。 Kitchen 被所有Chef 管理的社区食谱所使用,并且是食谱的首选集成测试工具。
Learn.Chef.io 有一系列经过深思熟虑的培训模块和演示,其中包括一个名为“测试厨房入门”的优秀模块。
类型: 免费、开源
最新版本: 3.0.8(2019 年 6 月 10 日)
Threat Stack 的测试工程师已经开始与我们的软件开发人员合作,以便使用 ScalaTest 为他们的 Scala 代码编写服务测试。
我们的集成测试使用 ScalaTest 风格特征 FeatureSpec,以 Given/When/Then 格式描述测试驱动开发 (TDD) 风格单元测试。 正如ScalaTest Doc所提到的,FeatureSpec 是“一套测试,其中每个测试代表一个功能的一个场景”。 FeatureSpec 旨在编写比单元测试“更高级别”的测试——例如集成测试、功能测试和验收测试。”
ScalaTest 在其网站上提供了大量有用的文档,包括详细的快速入门、安装程序和用户指南。
网址: https://kitchen.ci/docs/verifiers/inspec/
类型: 免费、开源
支持: Chef.io 社区
最新版本: (2019 年 8 月 11 日)
在 Threat Stack,我们使用 Chef InSpec 创建基于 Ruby 的测试,以验证在动态创建测试环境后一切是否按预期运行。 InSpec 测试旨在易于人类阅读。 如果您熟悉RSpec等测试框架,那么应该熟悉 InSpec 代码。 InSpec 检测差异并以报告的形式记录差异。 然后我们可以进入并进行必要的 Chef 更改,以使系统达到所需状态。
为了帮助您入门, Learn Chef Rally有一个实用的部分,可引导您设置 Docker 和 Docker Compose 环境、下载示例环境以及使用 InSpec 探索环境。
类型: 免费、开源
支持: Mocha Gitter 群组、 Mocha Google 群组
最新版本: 3.2.1(2019 年 8 月 27 日)
Mocha 是一个在 Node.js 和浏览器上运行的 JavaScript 测试框架,使我们能够进行异步测试。 由于 Mocha 测试是串行运行的,因此我们可以提供更灵活、更准确的报告,并且能够将未捕获的异常映射到正确的测试用例。
在 Node.js 环境中使用 Mocha,您可以使用内置的 assert 模块作为您的断言库。 在 Threat Stack,我们将 Mocha 与Chai配对,为Threat Stackapplication安全监控功能创建测试框架。
Mocha 网站提供了一系列主题相关的文档,涵盖从详细的功能概述、安装和入门到特定功能和任务的信息等所有内容。
类型:
支持: Gitter 聊天;为付费用户提供电子邮件支持
最新版本: 3.4.1(2019 年 7 月 29 日)
Cypress.io 专为只需要在 Chrome 中测试其工作的 JavaScript 前端开发人员构建。 Cypress 与我们的应用在同一个运行循环中执行,这意味着 Threat Stack应用可以访问的所有功能、窗口、Web 元素、计时器和服务,我们的测试代码也可以访问。 我们还可以动态读取和改变网络流量,这使我们能够添加一些有趣的负面测试用例,例如测试当后端服务器无法访问时会发生什么。
Cypress.io 提供了组织良好的文档,提供了详细的概述、入门信息和核心概念,其中包括有关编写和组织测试的信息。 想看看 Cypress 能做什么? TestAutomationU 刚刚发布了一门新课程《Cypress 简介》 。
类型: 免费、开源
支持: React Discord 聊天, JestJs Google 群组
最新版本: 24.9(2019 年 8 月)
我们的全栈软件开发人员已将基于 Threat Stack 云安全平台 ReactJS 的前端的测试从 Mocha / Chai 切换到 Jest,后者对测试我们使用的 ReactJS 组件具有更好的内置支持。 通过这个 JavaScript 测试框架,我们能够创建更好的单元和集成测试。 这两套工具集 ReactJs 和 Jest 均由 Facebook 提供。
与本文中的大多数其他工具一样,Jest 网站提供了示例丰富的文档,涵盖如何开始、配置以及全面的用例场景。
网址: https://jmeter.apache.org/
类型: 免费、开源
支持: JMeter Google 群组
最新版本: 5.1.1(2019 年 3 月 13 日)
Apache JMeter 是开源软件,旨在加载测试功能行为和衡量性能。 根据其网站,JMeter“可用于测试静态和动态资源、Web 动态应用的性能”。 它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。”
我们使用 JMeter 来分析和衡量我们的应用和服务的性能。 这使我们能够在重负载、多个并发用户流量的情况下测试我们的应用,以了解如何提高我们的扩展能力。
JMeter 提供了一系列有用的文档(包括入门、用户手册和最佳实践)以及许多分步教程。
尽管我们的测试工程师在 Threat Stack 非常优秀,但如果没有强大工具支持的系统流程,他们也不会取得很大进步。 随着我们平台的发展,我们的团队继续磨练其专业知识,不断升级其技能和知识,采用和整合新工具,并开发新方法,以确保它们继续为威胁堆栈 SDLC 增加价值。希望这篇文章能让您深入了解我们的测试团队如何使用一系列自动化测试工具来解决我们云安全平台内的多种功能。
Threat Stack 现在是F5 分布式云应用基础设施保护(AIP)。 立即开始与您的团队一起使用分布式云 AIP。