由于各种 Java 应用程序越来越多地采用微服务,因此对健壮测试的需求变得比以往任何时候都更加重要。部分原因是开发人员的责任越来越大,但更重要的原因是微服务应用程序可能会迅速变得复杂。这意味着单个容器和应用程序都需要持续测试,以确保在微服务部署期间成功。
测试微服务如此困难的原因之一是因为它的复杂性。每个服务都有自己构建的代码库、数据库模式和依赖管理。由于这些变化,你经常通过运行所有这些服务然后为你的代码运行你的测试选项来在本地测试应用程序。
在你能够测试你的应用程序之前,在你的机器上启动并运行所有服务可能需要相当长的时间。这通常被分解为微服务中使用的几个测试过程:单元测试、负载测试、端到端功能测试、性能测试等。
Java 中的单元测试微服务
当大多数人考虑测试任何类型的应用程序时,单元测试是所有软件测试的核心。 单元测试的实践已经经过多年的测试和尝试。 现在,当涉及到微服务时,单元测试对于进一步分解应用程序至关重要。 通过针对应用程序的小可测试部分,单元测试在识别应用程序正在进行的特定交互时被证明是至关重要的。
单元测试分为两大类:
单独的单元测试——单元测试不是针对存储在数据库中的真实信息进行的。 这通常用于运行不会导致整个应用程序测试失败的测试。
社交单元测试 - 单元测试是针对存储在你的环境中的真实信息进行的。 以这种方式运行单元测试通常会导致在测试过程中出现比在本地开发环境中理想的问题更多的问题。
Java中的负载测试微服务
负载测试是在尽可能与生产环境密切相关的环境中运行完整应用程序的过程。这是必须在稍后的测试过程中运行的东西。它通常专注于查看应用程序的服务如何协同工作。
负载测试是非功能测试,以最好地了解你的应用程序在正常和峰值条件下的工作方式。了解有多少用户可以同时使用该应用程序对于确定最大运行容量至关重要。
Java 微服务中的自动化测试
测试 Java 微服务的最大好处之一是,许多最新的自动化和测试技术都有专门为微服务开发的版本。在我们最近关于容器编排的 Kubernetes 与 Docker Swarm 的文章中,我们指出了一个免费技术三重奏(Kubernetes、Istio 和 Jenkins X),可用于创建复杂、自动化和一次性的测试程序,帮助应用程序稳定扩展或通过金丝雀发布发布新功能。
一旦部署,这些测试自动化技术对于想要生成稳定且可扩展的微服务应用程序的开发人员来说是名副其实的圣杯。通过将这种级别的自动化用于你的微服务,你将能够详细了解你的应用程序。与此设置一起出现的问题是设置本身。
当你在考虑微服务的情况下启动应用程序时,设置和维护这个自动化测试过程相对容易。但微服务社区的现实是,这些微服务应用程序中的大多数都是从大型单体应用程序转换而来的——这使得这种自动化测试过程难以完善。这导致这些应用程序中的大多数都提供了自动化测试的元素,但仍然需要在其中进行大量其他更手动的测试实践。
Java 中的端到端功能测试微服务
在微服务中,功能超越了单个容器执行的功能。测试应用程序的整体功能,并以使其在整个生命周期内可测试的方式开发应用程序,是开发人员的一个重要考虑因素。
端到端功能测试侧重于客户对应用程序的直接体验。团队在将代码提交到生产环境之前并不总是经历这个过程,但通常在这个过程中识别出没有通过更自动化的过程捕获的东西。
Java 中的性能测试微服务
随着 DevOps 改变了公司处理应用程序测试的方式,开发人员越来越多地对其代码的性能负责,因为它适用于整个应用程序。但是,随着微服务应用程序的出现,性能问题可能更难诊断和修复。随着微服务应用程序变得更加成熟并随之变得更加复杂,这一点尤其正确。
发表评论 取消回复