如何为使用 RDS 作为存储的 Spring 应用组织端到端测试
How to organize e2e tests for Spring app with RDS as a storage
我们有一个 Spring 启动应用程序,它使用 RDS 服务存储数据(特别是 PostgreSQL、VPC + 私有子网)和 Cognito 进行用户身份验证。所有这些爵士乐都以自动化方式部署(Jenkins + CloudFormation)。现在,我们进行了一些端到端测试,检查应用程序是否处于活动状态。问题是,我们是否应该进一步尝试测试功能,要求一些测试用户获得授权。就个人而言,我更希望它被测试,但有一些障碍我不知道如何处理。
通常在 e2e 测试中,您希望在每个测试(或一组测试)开始时有一个清晰的数据库,具有相似的前提条件。为此,您应用具有所需数据库状态的快照或简单地删除所有表。
是否可以在 AWS 上进行(数据库不可公开访问)?我应该为此使用 RestoreDBInstanceFromDBSnapshot command 还是有其他方法可以做到这一点?如何防止 DB schema 已更改但我们仍从旧快照恢复的情况?
我们可以为测试环境设置特殊的端点,但这有点不受欢迎,因为它会弄乱代码
不确定如何同时发布应用程序和数据库补丁,或者根据是否有数据库更改发布不同的版本。很多都取决于这个
我更喜欢端到端测试在他们之后清理数据库数据。我的意思是这个测试将数据插入数据库并且可能在拆卸方法中或者可能是一个全新的测试删除所有创建的记录 by/for 测试并且在这 2 个过程之间你可以执行你的正常测试。
这里我假设您正在遵循测试金字塔,与系统集成和单元测试相比,e2e 测试最慢且数量更少。
这可能有点棘手,具体取决于您要测试的场景,当 运行ning simultaneous/concurrent 测试时,这里有一个解决方法,可以为每个场景使用不同的数据测试。
我希望您应用具有所需状态的快照(这里我的意思是不是使用预填充的测试数据,而是只使用具有所需主数据的 table 模式)。
如果有架构更改,您仍然会备份现有架构,应用架构的新脚本更改,然后 运行 测试。
我们有一个 Spring 启动应用程序,它使用 RDS 服务存储数据(特别是 PostgreSQL、VPC + 私有子网)和 Cognito 进行用户身份验证。所有这些爵士乐都以自动化方式部署(Jenkins + CloudFormation)。现在,我们进行了一些端到端测试,检查应用程序是否处于活动状态。问题是,我们是否应该进一步尝试测试功能,要求一些测试用户获得授权。就个人而言,我更希望它被测试,但有一些障碍我不知道如何处理。
通常在 e2e 测试中,您希望在每个测试(或一组测试)开始时有一个清晰的数据库,具有相似的前提条件。为此,您应用具有所需数据库状态的快照或简单地删除所有表。
是否可以在 AWS 上进行(数据库不可公开访问)?我应该为此使用 RestoreDBInstanceFromDBSnapshot command 还是有其他方法可以做到这一点?如何防止 DB schema 已更改但我们仍从旧快照恢复的情况?
我们可以为测试环境设置特殊的端点,但这有点不受欢迎,因为它会弄乱代码
不确定如何同时发布应用程序和数据库补丁,或者根据是否有数据库更改发布不同的版本。很多都取决于这个
我更喜欢端到端测试在他们之后清理数据库数据。我的意思是这个测试将数据插入数据库并且可能在拆卸方法中或者可能是一个全新的测试删除所有创建的记录 by/for 测试并且在这 2 个过程之间你可以执行你的正常测试。
这里我假设您正在遵循测试金字塔,与系统集成和单元测试相比,e2e 测试最慢且数量更少。
这可能有点棘手,具体取决于您要测试的场景,当 运行ning simultaneous/concurrent 测试时,这里有一个解决方法,可以为每个场景使用不同的数据测试。
我希望您应用具有所需状态的快照(这里我的意思是不是使用预填充的测试数据,而是只使用具有所需主数据的 table 模式)。
如果有架构更改,您仍然会备份现有架构,应用架构的新脚本更改,然后 运行 测试。