我已经制作了一些有关有效企业测试的视频。 我仍然在现实世界项目中看到这个主题的巨大重要性。 这是我在测试Enterprise Java项目中的经验以及一些示例。
1.介绍和有效的Maven使用
在此视频中,我将介绍测试过程,并演示如何使用Maven在标准企业项目中构建测试。 我们将分别看到使用surefire和failsafe进行的Maven单元测试和集成测试之间的区别,以及如何有效使用Maven约定。 我们的目标是通过简单的设置来实现快速的Maven构建。
2.单元测试
在此视频中,我将展示如何使用JUnit,Mockito和AssertJ建立快速执行的简单单元测试。 我们将看到单元测试的优缺点,尤其是在重构生产代码时。 我们将看看这种简单的单元测试在哪些情况下有意义。
3.用例测试
在此视频中,我将介绍所谓的用例测试的方法。 用例测试旨在验证业务用例的执行情况,包括所有涉及的组件,但不包括所有外部问题,例如HTTP网关或数据库访问。 为了确保用例测试快速运行,而又不启动应用程序的各个部分,我们在这里也使用普通的JUnit。 为了使我们的测试可维护,我们提出了可重复使用的测试双打,它扩展了生产范围中涉及的类。 在视频中,我们将看到该方法如何与示例代码一起使用。
4.系统测试-第1部分
在本视频中,我将展示代码级集成测试,该测试可模拟应用程序的某些部分及其缺点。 我们将看到,就整体测试和反馈时间而言,专注于端到端集成测试更为有效。 在视频中,我展示了如何通过手动连接到示例应用程序来在以后的系统测试中验证我们的应用程序的手动方法。
5.系统测试-第2部分
在此视频中,我将展示如何建立集成测试,该集成测试以与客户端相同的方式连接到被测应用程序。 我们将看到如何通过引入抽象并将关注点分离为委托来使有时复杂的场景更易于维护。 我们将比较一个简单的方法与一个使用代码质量的测试,我们发现可维护性有所不同。 我们来看看将测试生命周期与测试环境生命周期分开的好处。 我还展示了一种方法,该方法如何通过使用一些热重载技术来真正快速地缩短周转周期,这些技术允许开发人员在本地更改生产代码并在一秒钟内获得非常快速的反馈。
6.系统测试-第3部分
在此视频中,我将展示一个带有单独项目的系统测试项目结构,并说明其动机。 我们将看到驻留在系统测试项目中的更复杂的系统测试的示例,以及如何连接和控制模拟服务器的示例,在本示例中将使用WireMock。 涉及模拟服务器的系统测试示例将验证被测应用程序与外部微服务之间的通信。 我们将再次利用抽象和委托使我们的验收测试易于阅读和维护。 我们通过将测试生命周期与测试环境生命周期分开来确保可重用性,一旦我们有了更复杂的示例,这尤其对我们有利。
7.高效的开发工作流程
在此视频中,我将展示如何构建有效的开发工作流程。 我们将看到使用简单技术构建本地开发工作流程的好处。 我们将研究本地开发和测试环境的动机以及它如何连接到正确的CI / CD工作流程。 我将展示如何使用Kubernetes在类似生产的环境中运行系统测试环境,以及如何重用我们之前编写的相同系统测试。
8.测试代码质量
在本视频中,我将展示如何通过分离关注点来通过抽象层和委托来提高测试代码的质量,可读性和可维护性。 我们将看到委托如何外包低级逻辑,例如处理单个执行,验证或模拟。 我们将看到,无论我们是在处理代码级测试还是在集成的应用程序级方案中,这些原则都应适用于所有测试范围。
9.测试技术和框架
在本视频中,我将介绍我通常建议在企业项目中使用的测试技术。 我们将看看JUnit,Mockito,AssertJ,测试快速运行的重要性,技术速度和测试生命周期。 作为其他示例技术,我将提到Testcontainers,AssertJ,Cucumber Tests,以及测试代码质量的重要性。 我还将总结这些视频系列中提出的观点。
更多资源
- 咖啡厅测试项目
- 高效企业测试文章系列
- 书籍:架构现代Java EE应用程序
希望该内容对您有所帮助。 测试愉快!
翻译自: https://www.javacodegeeks.com/2020/01/video-course-on-efficient-enterprise-testing.html