返回
测试平台系列(46) 用例并发之我全都要
见解分享
2023-11-24 04:19:52
我猜当各位领导听到测试平台要建设并发用例功能时候,内心肯定是:这个功能很简单啊,甚至会想是不是开发偷懒了啊,都叫并发测试了,肯定要写一堆接口啊。没错,想的太简单了。
- 并发用例的复杂性体现在哪里?
- 并发用例的实际场景落地在那些方面?
- 并发用例的功能边界在哪里?
为了搞清楚以上三个核心问题,我们开始从并发用例的需求出发,思考如何让一个平台做到真正的并发用例全覆盖,并且做到极致。
一、并发用例的复杂性
- 接口并行性复杂度 :并发用例顾名思义就是并发的执行多个接口,执行接口数量的多少直接体现出平台的并发性能,比如一个平台同时并发执行50个接口和同时并发执行200个接口,难度系数可是成倍的。
- 数据依赖性复杂度 :并发用例执行的接口之间存在数据依赖关系,按照数据依赖关系的不同,可分为硬依赖和软依赖,硬依赖即当前接口执行的前提依赖于上一个接口的执行结果,软依赖即当前接口执行不依赖于上一个接口的执行结果。比如登录->获取用户列表->查询用户详情 三个接口,登录和获取用户列表是硬依赖关系,查询用户详情和登录、获取用户列表是软依赖关系。对平台来说,如果要保证并发用例执行的正确性,数据依赖性的复杂度极高。
- 执行顺序复杂度 :并发用例执行的接口既可以是并行执行,也可以是顺序执行,执行顺序的不同将导致最终结果的不同。比如下单->支付 ,下单成功后才可以支付,顺序不可颠倒;登录->获取用户列表->查询用户详情 ,获取用户列表和查询用户详情可以并行执行,执行顺序没有要求。因此,平台要根据用例的要求保证接口的执行顺序。
- 用例组合复杂度 :并发用例往往不是单一的接口,而是组合多个接口的用例,比如创建订单->支付订单->查询订单详情 ,这个用例组合了创建订单、支付订单、查询订单详情三个接口。平台要实现用例组合功能,需要考虑接口组合的灵活性和可扩展性。
二、并发用例的实际场景落地
并发用例在实际场景中主要应用于以下几个方面:
- 性能测试 :并发用例可以用来测试系统在高并发场景下的性能表现,找出系统的瓶颈和性能上限。
- 稳定性测试 :并发用例可以用来测试系统在高并发场景下的稳定性,发现系统在高并发场景下可能出现的故障和异常。
- 冒烟测试 :并发用例可以用来对系统进行冒烟测试,快速验证系统的基本功能是否正常。
- 回归测试 :并发用例可以用来对系统进行回归测试,验证系统在修改后是否仍然正常。
三、并发用例的功能边界
并发用例的功能边界主要包括以下几个方面:
- 并发执行的接口数量 :平台支持并发执行的接口数量上限。
- 数据依赖关系处理 :平台对并发用例中数据依赖关系的处理方式,比如支持硬依赖和软依赖的处理。
- 执行顺序控制 :平台对并发用例中接口执行顺序的控制方式,比如支持并行执行和顺序执行的控制。
- 用例组合功能 :平台支持并发用例组合的方式,比如支持灵活的接口组合和用例组合的可扩展性。
四、我全都要的并发用例平台
根据并发用例的复杂性、实际场景落地和功能边界,我们要建设的并发用例平台必须满足以下要求:
- 支持海量接口并发执行 :平台要支持同时并发执行数百甚至上千个接口。
- 完善的数据依赖关系处理机制 :平台要提供完善的数据依赖关系处理机制,支持硬依赖和软依赖的处理。
- 灵活的执行顺序控制机制 :平台要提供灵活的执行顺序控制机制,支持并行执行和顺序执行的控制。
- 强大的用例组合功能 :平台要提供强大的用例组合功能,支持灵活的接口组合和用例组合的可扩展性。
只有满足以上要求,才能称得上是一个真正的“我全都要”的并发用例平台。这样的平台不仅可以满足性能测试、稳定性测试、冒烟测试和回归测试等各种测试场景的需求,还能极大地提高测试效率和测试质量。
在这个平台建设的过程中,我们也遇到了很多挑战,比如:
- 如何高效地处理海量接口并发执行?
- 如何准确地处理数据依赖关系?
- 如何灵活地控制接口执行顺序?
- 如何实现用例组合功能的可扩展性?
针对这些挑战,我们进行了深入的研究和探索,并提出了创新性的解决方案,最终成功地打造了一个满足“我全都要”要求的并发用例平台。