联调测试总计
一个大型项目都会涉及多个部门的多个系统,系统之间通过接口或中间件等形式交互。在项目开发时各系统的工作都是并行的,每个系统开发完成后先由内部测试工程师进行内部的功能模块测试。在这整个项目的层面上讲,每个模块的内部测试属于集成测试,待全部模块测试完成后还应进行整个项目的系统联调测试。联调测试相当于在一个大的项目平台下进行系统间接口或中间件的UAT测试。
1 联调测试的意义
在各模块进行自己系统的测试过程中,测试到模块间的交互时,测试工程师都是按照事先的约定(接口文档,消息示例等)通过Mock方式进行的。由于各系统间开发并不是同步的,并没有真正的进行联调调用。接口文档或消息实例中的描述有时并不是十分详细,消费方系统和服务提供方系统的研发人员对于这些文档的理解难免会出现一些偏差,体现在系统上就会出现bug。在联调测试中,将能发现这些问题。另外,联调测试时将覆盖实际用到的所有业务场景和所有接口服务,为整个项目的上线提供充足的信心。
2 如何开展联调测试
联调测试时涉及多个系统多个部门测试工程师参加,是需要协调组织的工作。通常由项目经理和项目发起方系统的测试负责人共同组织,服务提供方和服务消费方的测试工程师参与执行,涉及其他依赖系统的测试工程师配合。下面是联调测试流程图:
测试工程师编写测试用例时最后要对联调的内容编写特定的联调测试用例。在模块内部测试用例评审时,对联调用例也会进行评审。每个模块的联调测试用例包括作为服务提供方的和作为服务消费方的两方面。例如A模块调用B模块某个接口,此时A模块就是服务消费方B模块就是服务提供方。如果A模块发消息给某中间件,B模块订阅A模块发的消息,此时A模块就是服务提供方B模块就是服务消费方。
项目测试负责人在联调测试前,组织各模块的联调测试用例评审。项目涉及的所有产品经理、开发工程师和测试工程师都会参加。评审有三点目的:第一、通过服务消费方的联调用例对应的服务提供方研发查看自身系统是否满足需要。第二、项目测试负责人评估各模块间交互场景,为后续汇总项目整体联调用例做准备。第三、各模块间研发人员相互沟通,为后续模块间单独联调做好准备。
两个交互的模块各自内部测试完成后就可以进行模块间的两两联调测试了,一般由服务消费方发起,按照之前评审过的联调测试用例进行。联调测试的大部分工作量在这个阶段完成,如果测试充分,后续进行项目整体联调时将会更为顺利。然而很多情况下,服务消费方在消费一条数据时还要对其它模块的服务进行消费才能满足联调的需要。例如:B模块处理A模块的消息时需要调用C模块验证消息中某个内容是否一致。这样B模块想要进行联调测试就需要A,C两个模块配合。如果C模块没有开发完成或没有对应数据,可以采用对C模块进行Mock完成两两联调。所以两两联调并不一定是真实的联调,需要所有模块完成后进行系统整体联调。
联调用例评审后,项目测试负责人就可以汇总项目整体联调用例了。项目的联调用例是一种流程性的用例,测试负责人根据项目PRD文档,首先将业务的所有分支流程一一列举汇总。这些流程能够覆盖系统的业务,但是不能确保对每个模块中的分支流程都被覆盖。在了解所有模块的联调用例后,对比汇总的系统分支流程,补充完善整体联调用例。
项目整体联调用例评审后,就可以进入执行联调测试的环节了。首先,各服务提供方和服务消费方模块的测试工程师搭建联调测试环境。需要依赖其它配合的系统时,项目经理协调配合方研发提供环境并通知调用方的测试工程师修改相关配置。
服务提供方测试工程师在准备完联调测试环境后,为了避免整体联调时出现服务不通导致的整体延迟,还需要对自身系统提供的服务进行连通性测试。按照接口测试用例中的主要分支流程执行验证即可。
所有项目涉及模块联调测试环境准备完成并且服务提供方系统连通性测试通过后,就可以执行项目整体联调用例了。一般情况下,如果前期各环节准备充足到了联调测试执行阶段很少出现问题。项目测试负责人按照评审过的联调用例,主导执行即可。执行不通过遇到问题时,涉及的研发定位问题,如果是系统bug或传参问题会及时修改,如果是依赖系统数据问题,双方协调处理。
最后,在进入项目联调执行阶段后,测试负责人每日要对项目的联调情况发送报告,通知所有涉及人员。如果特殊问题严重影响进度,每两小时通报问题解决状况。项目联调日报内容包括:联调用例执行情况、预期完成时间、是否存在风险、阻塞问题描述及解决状况、问题责任人等。
|