接口类测试耗时耗人工,面对更多需求的时候优先级往往被往后排,但是接口出现问题会对整体业务产生很大影响。在第六届TOP100全球软件案例研究峰会的榜单中,京东“无人测试”案例得到广泛关注。
京东B2B产品质量团队负责人杨瑾以“无人测试如何助力京东提升产品测试效率与质量”为主题分享京东无人测试的案例。作为测试创新的典型,没有花费过多的精力以及改变原有的技术方式,通过优化流程就能够提升60%的测试效率。
随着业务的发展,系统通常会经历单体式,服务化,平台化的过程,在系统持续演进的漫漫长途中,不管是小需求,还是大改动,每一次的上线都伴随着大量的回归工作,即使是经验老道的测试老司机也没有100%不出问题的信心。
在迭代周期短,发版频率高的互联网行业,测试的职责早已发生了巨大的变化。除了如何在频繁的上线中保证产品质量以外如何提升用户满意度体验、团队上线的信心也愈发变得重要。
当我们开始进入平台化阶段,由于业务的快速增长,我们很快发现按常规的测试流程和方法,团队的资源无法支撑平台化测试的需求,但是平台化作为基础平台,对质量的要求又是重中之中。
基本上在所有的公司组织的测试团队都有个不可言说的痛,那就是查询类接口的测试,这类接口数量多,优先级又普遍比较低,分布范围广,对于重构的项目要确保每一个查询接口的正确性,回归一次需要的成本非常高,很少有为了更好的用户体验在功能测试以后投入大量时间去测试查询接口的。
但是平台查询接口稳定与否,直接关系到业务系统可用性,怎么测试平台的所有对外接口包括查询接口而不是一部分重要接口?是摆在团队面前的一个现实的问题。
常规查询接口测试流程应该是这样的
1.梳理待测接口
2.整理接口入参
3.在待测系统中输入参数查看返回,确保接口可用
4.同时在线上系统中输入参数并查看返回是否与待测系统一致
5.一致说明接口可靠,不一致说明接口返回错误
这个方法是可行的,但是无法满足我们对于效率的需求,因为这种方法测试效率低,测试成本高,仍然还有漏测的可能性。
平台类接口测试效率的整体提升解决了这类回归成本高的查询接口测试,就会得到立竿见影的效果。那还有没有更好的思路呢?如果能摆脱这种对人重度依赖的设计漏测困境,是我们思考的,结合优化前的步骤,我们发现在这个流程有2个关键点,那就是第1步和第4步。
第1步,接口调用场景的设计与测试质量直接相关,第4步则最费时。第1步看似大海捞针,实则是有章法可寻的,决定整个测试结果的第1步取决于我们设计的场景是否是百分百匹配用户真实使用场景。第4步的费时则可以通过同时对比新老系统的返回来实现。
场景梳理的过程有三步
1.梳理接口范围
2.对接口日志方法打标
3.待线上系统运行一段时间采集足够多的日志,日志采集的时间越长,还原真实的用户使用场景数据越多,匹配度就越高。
场景有了,什么时候用?
当研发重构系统时,改动接口名不发生变化后,上线前的测试随时都可以使用。
优化后的方法的核心是:打破了传统的测试方式,用一个全新的思路去思考如何更有效的去保证系统的质量,在本方法中通过思路的转换,通过更全面的测试数据,使测试设计脱离了对人的依赖后,无限逼近与还原业务在线上的最真实业务数据。
通过对比新老系统的查询接口返回定位到问题接口后,再通过自动化精准定位到有问题接口返回的问题字段,大大的提升了测试的效率、问题定位速度以及产品质量,因为直接省略测试环境的接口测试成本,通过自动化在预发环境完成测试,保守估计提升测试效率60%以上。
优化后的测试流程分为这7个步骤
1.梳理系统的查询接口
2.为接口入参打标,用来从日志中筛选出指定规格的入参数据
3.让系统运行一段时间,产生海量数据(理论上时长越长,数据越真实)
4.导出入参数据,存入数据库自动生成入参样本数据
5.自动或手动在使用入参样本数据同时在新老系统中调用访问,并记录查询结果
6.系统自动对比结果并标注失败结果
7.人工复核失败原因
这个只是我们团队在无人测试领域的初步探索,在平台化过程中的使用能在产品上线前,发现出入参小数位不一致,JSON串字段丢失,数据丢失等很多人工发现耗时甚至难以发现的问题。
优化后的测试流程有效的提升了产品质量与提振团队信心,证明方法是可行且有效的,后效可以进一步优化流程和算法,精准定位失败原因,释放人工复核的投放,实现真正的全流程无人测试。
以上内容来自杨瑾分享的无人测试探索心得,将于11月9日-12日在北京国家会议中心举办的TOP100全球软件案例研究峰会上分享无人测试操作细节。大会开幕式单天体验票免费入口。