java微服务测试

随着Java开发中微服务的广泛普及以及DevOps运动的影响力日益增强,测试Java应用程序从未如此复杂。 用于单片应用程序的测试策略开发人员需要进行调整,以适应微服务的现实。 此外,基于微服务的应用程序有望提高性能和功能,同时也带来一系列新的开发挑战,因此测试从未如此重要。

过去,测试是孤立的工作或个人工作,负责测试的人员不一定参与应用程序的编码。 同样,对应用程序进行编码是由开发人员完成的,而性能测试则留给了专用的测试团队。

当时的测试很重要,但是对于微服务而言,它就显得尤为重要,因为微服务会影响单个服务以及其他服务以及组合应用程序的性能。 由于各个开发人员经常致力于单个微服务,因此在应用程序到达传统测试阶段之前,服务间性能可能成为一个问题。 因此,单个容器和应用程序都需要进行持续测试以支持成功的微服务部署。

该测试本身就是复杂的。 每个服务都有其自己的代码库(可能以不同的语言编写),数据库架构和依赖关系管理,这意味着将整个应用程序分解可能会花费一些时间和精力。 一旦完成,就可以对它进行整体测试。

还请参见: Java开发人员将微服务满意度评为10颗星中的6颗

表现领先

尽管传统的测试方法(如单元测试,负载测试和端到端功能测试)仍在应用程序测试中发挥重要作用,但性能已成为许多开发团队的关注点。 应用程序必须具有良好的大规模性能,因此在开发过程中测试性能可以帮助团队发现并避免潜在的瓶颈,从而避免在生产中造成问题。

但是,由于基于微服务的Java应用程序的复杂性,这些性能问题可能更难以诊断和修复。 为了克服这些挑战,开发团队需要采用新思想和新技术。

为什么测试自动化至关重要-但很难

自动化测试市场正在快速增长,有望帮助开发人员克服复杂性和可扩展性的挑战(不仅在微服务中,而且在各种软件中)。 许多最新的自动化和测试技术都包含专门为微服务开发的功能。 Kubernetes,Istio和Jenkins X是三者,可用于自动创建复杂但可抛弃的环境,从而带来更好的应用程序可扩展性以及通过Canary发布更安全地部署新生产功能。

从理论上讲,这种自动化水平一旦部署,就可以使Java开发团队更好地控制其应用程序,从而帮助他们产生稳定且可扩展的微服务,使它们能够很好地协同工作。 现实可能更具挑战性:尽管使用全新的应用程序来设置和维护此自动化测试过程相对容易,但当今正在使用的大多数微服务都已从大型单片应用程序中脱颖而出。

由于所有传统元素都被拖延,因此很难创建一个完美的测试环境。 因此,尽管可以引入大量的自动化测试,但仍然需要一些手动测试。 这可能意味着测试环境变得支离破碎,难以控制,并且充斥着破坏成功的微服务的瓶颈。

为微服务开发团队灌输DevOps文化

转向微服务通常需要改变开发团队的结构和理念。 由于没有单一的部署重点(正在不断开发和部署单个微服务),因此需要有一致的方法和一套完整的最佳实践来开发和测试应用程序。

在初始计划中需要考虑团队结构-团队负责人应考虑个性和技能,以实现最佳的开发效率和功效。 此外,需要在开发团队早期灌输协作和跨服务测试(以及支持最佳实践)的文化。

还请参见:微服务:“服务格局对业务敏捷性非常有益,但需要非常快速的补救周期”

提高微服务开发人员的知名度

孤立的开发结构是微服务开发人员面临的最大障碍之一。 开发一种微服务的开发人员可能无法深入了解另一种微服务,而对一种微服务的后期更改可能需要对其他已完成的微服务进行更改。

为开发人员提供可视化跨微服务代码影响所需的工具,可以帮助防止端到端测试或生产期间的性能问题,并防止后期的昂贵的更改。

尽管测试从未如此重要,但与此同时,开发团队可以使用的技术和工具却从未如此丰富。 在每种情况下都找到合适的解决方案,并在技术和流程上同时进行文化变革,并将这些想法用作创建可靠的Java微服务测试策略的基础。

翻译自: https://jaxenter.com/java-microservices-testing-167793.html

java微服务测试