Threat Stack 现在是F5 分布式云应用基础设施保护(AIP)。 立即开始与您的团队一起使用分布式云 AIP。
即使设计正确,微服务仍然很难测试。 但是,当系统架构发展到由数十或数百个连接服务组成不断变化的基础设施中的软件平台时,测试您和您的团队负责的产品就会成为一项极其复杂的任务。 为这些环境编写测试自动化非常困难,因此您需要确保从编写的测试中获得最大的价值。
在 Threat Stack,我们编写系统集成测试(一种灰盒功能测试),并且我们选择 Docker 来运行容器化测试环境。
一些组织仍然依赖传统的测试模型,其中白盒测试和黑盒测试被视为足够的补充测试策略。 虽然它们在认证软件方面仍然发挥着重要作用,但它们已不足以为您提供自信发布软件所需的反馈。
在这种环境中,黑盒用户验收测试的关注点过于广泛,依赖它可能会对上市时间策略产生严重影响:
另一方面,白盒单元测试的关注点过于狭窄,并且经常被错误地用于限定软件系统功能:
Threat Stack 测试工程师越来越依赖系统集成测试来测试所有这些服务,以最大化测试覆盖率,同时提供我们所需的速度和特异性,以确保应用在许多操作条件下正常运行。
集成测试是一种灰盒测试,重点关注被测软件或系统与外部组件交互时的行为。 例如:
换句话说,您可以与之交互以验证行为的软件。 在 Threat Stack,我们主要执行复制真实情况的功能测试,但测试中的行为将在容器化环境的边界处停止,从而避免不必要的外部交互。
由于这些测试与微服务紧密耦合,您可以在自动化测试中检查和集成被测服务的代码,从而一致地识别需要执行的代码区域。 此外,这些测试可以写为用户验收测试,以便非开发人员(例如产品经理和 QA 工程师)可以更轻松地理解测试中的行为。
换句话说:
给定一组条件
当服务收到此输入时(或此条件影响服务)
然后,服务将以预期的方式运行并产生预期的副作用
这些功能测试不仅易于理解和编写,而且还与微服务的代码紧密耦合,因此开发人员可以在整个开发过程中或之后由专门的测试工程师轻松运行和更新它们。
容器对于测试系统非常有用,因为它们允许您在测试期间以最少的资源快速重现测试环境,然后在测试完成后轻松清理。 与许多黑盒测试自动化不同,您不需要昂贵的、始终在线的测试环境来进行集成测试。 运行测试时,微服务的行为可以在测试环境中重现。
一旦您定义了一个镜像生产中的微服务环境的容器化环境,那么您的测试框架就会成为与被测试的组件或微服务交互的外部客户端或模拟服务。 这确保测试代码驱动测试的各个方面,从而使您能够控制测试的更多方面。
在开始时, Docker是一个快速启动容器化环境的良好平台。 使用Docker Compose ,您可以轻松定义和运行被测应用的各个部分,无论是在本地还是在 CI 中使用相同的代码。 如果您的组织支持使用其他容器基础设施工具和服务(例如Kubernetes 、 AWS EKS或AWS Fargate ),也可以用于部署测试环境。
最终,将测试工作重点放在集成测试上而不是其他类型的自动化上,会给您带来两大好处:
Threat Stack 现在是F5 分布式云应用基础设施保护(AIP)。 立即开始与您的团队一起使用分布式云 AIP。