测试数据通常使用开发期间已使用的用户
Posted: Thu Jan 30, 2025 6:55 am
最大的好处不在于测量性能和吞吐量,而在于发现并发问题。从两个实际例子可以清楚地看出这一点:
首先,在使发现资源泄漏。在后端调用 Rest API 时,总会出现 HTTP 连接池耗尽的情况。增加池中的最大连接数可以解决测试运行的问题,但可能只会延迟错误的发生。在仅十个测试用户的负载测试的帮助下重现了该问题,该测试是专门针对涉及可疑后端的调用而定制的。通过 Spring Boot Actuator 端点同时监控连接池的此类测试现已成为开发的一部分。
负载测试发现的另一个案例是不完整的事务管理。在测试过程中,不断出现org.springframework.dao.OptimisticLockingFailureException类型的错误。然后,测试用例可以减少为两个测试用户,他们基本上同时调用相同的函数。使用记录的 SQL 语句,问题被追溯到缺少事务控制注释。在随后更多测试用户的测试中,该错误不再出现。
和数据。如果负载测试需要十个以上的测试用户,可以从测试中 商业房地产的潜在客户 心订购具有所需属性的用户。但是,特殊情况通常必须使用 SQL 脚本手动添加。现有数据可作为模板。
展望:持续负载测试
为确保反馈周期短,还应连续进行负载测试。然而,连续并不一定意味着作为构建过程的一部分,以免延长其执行时间或导致其失败。如果不仅测试脚本而且相关工具都在团队的控制之下,那么就没有理由以比计划的发布更改更短的间隔来执行负载测试。
目标不是将负载增加到正在测试的应用程序的容量限制。无论如何,登录进程或某些后端系统通常是吞吐量的限制因素。所需要的是基本负载以及智能监控和日志监控。智能监控是指监控HTTP、数据库、队列连接、内存、CPU等资源池的分配和释放。通过对负载生成器具有不同参数(测试用户数量和建立负载所需的时间)的多个测试系列,还可以推断出较大负载的值。对增长是否成比例或不成比例的评估通常就足够了。
如果应用程序无论如何都在云中运行并且很容易配置其他容器,那么它们也可以用于运行负载测试。这允许您构建自己的负载生成器,它不依赖于您自己的开发计算机的性能和网络连接。如果容器不被使用,它将被删除,并且不会产生任何额外费用。
结论
我个人最喜欢的自动化接口测试肯定是 SoapUI,因为它的灵活性。 GUI 提供了执行单个 API 请求和迭代创建测试脚本的良好选项,并且批处理模式支持在服务器上进行负载测试。然而,主要的应用领域仍然是从您自己的开发计算机开始。这不能完全取代 LoadRunner 的经典负载测试,后者用于测试具有定义负载或容量限制的完整版本。但我们不只是每年进行两到三次这样的负载测试,我们自己的灵活负载测试测试脚本已经在开发过程中证明了自己。这是敏捷开发流程方面的重大进步。
您想了解更多关于 adesso 世界中令人兴奋的话题吗?那么请看一下我们之前发布的博客文章。
首先,在使发现资源泄漏。在后端调用 Rest API 时,总会出现 HTTP 连接池耗尽的情况。增加池中的最大连接数可以解决测试运行的问题,但可能只会延迟错误的发生。在仅十个测试用户的负载测试的帮助下重现了该问题,该测试是专门针对涉及可疑后端的调用而定制的。通过 Spring Boot Actuator 端点同时监控连接池的此类测试现已成为开发的一部分。
负载测试发现的另一个案例是不完整的事务管理。在测试过程中,不断出现org.springframework.dao.OptimisticLockingFailureException类型的错误。然后,测试用例可以减少为两个测试用户,他们基本上同时调用相同的函数。使用记录的 SQL 语句,问题被追溯到缺少事务控制注释。在随后更多测试用户的测试中,该错误不再出现。
和数据。如果负载测试需要十个以上的测试用户,可以从测试中 商业房地产的潜在客户 心订购具有所需属性的用户。但是,特殊情况通常必须使用 SQL 脚本手动添加。现有数据可作为模板。
展望:持续负载测试
为确保反馈周期短,还应连续进行负载测试。然而,连续并不一定意味着作为构建过程的一部分,以免延长其执行时间或导致其失败。如果不仅测试脚本而且相关工具都在团队的控制之下,那么就没有理由以比计划的发布更改更短的间隔来执行负载测试。
目标不是将负载增加到正在测试的应用程序的容量限制。无论如何,登录进程或某些后端系统通常是吞吐量的限制因素。所需要的是基本负载以及智能监控和日志监控。智能监控是指监控HTTP、数据库、队列连接、内存、CPU等资源池的分配和释放。通过对负载生成器具有不同参数(测试用户数量和建立负载所需的时间)的多个测试系列,还可以推断出较大负载的值。对增长是否成比例或不成比例的评估通常就足够了。
如果应用程序无论如何都在云中运行并且很容易配置其他容器,那么它们也可以用于运行负载测试。这允许您构建自己的负载生成器,它不依赖于您自己的开发计算机的性能和网络连接。如果容器不被使用,它将被删除,并且不会产生任何额外费用。
结论
我个人最喜欢的自动化接口测试肯定是 SoapUI,因为它的灵活性。 GUI 提供了执行单个 API 请求和迭代创建测试脚本的良好选项,并且批处理模式支持在服务器上进行负载测试。然而,主要的应用领域仍然是从您自己的开发计算机开始。这不能完全取代 LoadRunner 的经典负载测试,后者用于测试具有定义负载或容量限制的完整版本。但我们不只是每年进行两到三次这样的负载测试,我们自己的灵活负载测试测试脚本已经在开发过程中证明了自己。这是敏捷开发流程方面的重大进步。
您想了解更多关于 adesso 世界中令人兴奋的话题吗?那么请看一下我们之前发布的博客文章。