[发明专利]一种自动mock外部依赖的方法及装置有效

专利信息
申请号: 201410370258.0 申请日: 2014-07-30
公开(公告)号: CN105335281B 公开(公告)日: 2018-03-20
发明(设计)人: 孙琛 申请(专利权)人: 阿里巴巴集团控股有限公司
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 北京弘权知识产权代理事务所(普通合伙)11363 代理人: 逯长明,许伟群
地址: 开曼群岛*** 国省代码: 暂无信息
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 自动 mock 外部 依赖 方法 装置
【说明书】:

技术领域

发明涉及软件测试技术领域,尤其涉及一种自动mock外部依赖的方法及装置。

背景技术

程序测试是程序开发的重要一环。单元测试是程序测试中最低级别的测试活动,所述单元为程序测试中最小的被测功能块或者代码单元。在单元测试中,对需要调用外部依赖的程序模块进行测试时,由于外部依赖往往难以构造或获取,会导致单元测试无法进行,或者外部依赖不稳定,导致测试失败率高、排查成本大。为解决此类问题,通常采用mock(模拟)测试。所述mock测试指创建一个虚拟的对象来替代外部依赖进行测试,创建的虚拟对象称为mock对象。现阶段,mock测试有两种方式:

1、在测试代码中编写mock对象,例如Jmockit(帮助开发人员编写测试程序的一组工具和应用程序编程接口)。在测试代码中编写单元测试用例的时候,申明要mock的外部依赖对象,及对象的方法,由此创建的mock对象根据传入的参数,返回固定的值,因此在真正执行测试时,不需要调用真的外部依赖,而是调用创建的mock对象,从而隔离程序模块和外部依赖,避免外部依赖不稳定影响测试效果。

2、建立远程mock平台,单元测试时并不直接连接真正的外部依赖环境,而是连接到远程mock平台上,由平台提供mock库,同时测试员可以在平台上创建和编辑数据。远程mock平台可以提供mock对象的集中管理,避免因为外部依赖环境变更或数据变更导致单元测试失败。

发明人在实现本申请的过程中发现上述第1种方式和第2种方式都存在缺陷和问题:

上述第1种方式,虽然可以通过在代码中编写mock对象避免对外部依赖的直接调用,但存在以下两个问题:一是代码量多,过多的mock测试代码导致工作量增加,测试效率低,且使代码疏忽、出错的几率增加;二是完全采用代码的方式来编写mock对象,由于返回值由自己定义,可能定义的格式或者含义并非外部依赖的真实情况,使得mock对象不能真实地反映外部依赖。

上述第2种方式,也存在以下三个问题:一是通用性不够,该方式只能支持有远程接口的程序模块,不能适用于本地调用;二是配置工作量大,创建一个mock对象,需要配置入口参数、调用方式、返回值等,当需要配置的参数比较复杂时构造工作量将会很大,测试效率会很低,而且出错几率增加;三是真实性仍然较低,因为mock对象仍然主要由编写和配置产生,而且难以实现真实外部依赖所具有的动态返回:由于是远程访问方式,mock远程平台不能记录程序单元对mock对象的调用次数,因此其上的mock对象对同一个入口参数只能返回一个固定值,无法创建需要根据调用次数来动态返回不同值的mock对象,例如注册,一个用户名第一次注册时返回true(成功),表示注册成功,再次使用相同的用户名注册时,返回false(失败),表示用户名已注册,不能使用相同的用户名注册,但远程mock平台无法实现真实的注册。

发明内容

为克服相关技术中创建mock对象的效率和真实性低的问题,本申请提供一种自动mock外部依赖的方法及装置。

根据本申请实施例的第一方面,提供一种自动mock外部依赖的方法,包括:

获取被测代码的名称,以及获取所述被测代码调用外部依赖的调用参数和调用次数;

获取外部依赖对所述调用产生的返回值或者返回对象;

根据所述被测代码的名称、调用参数和调用次数生成mock特征值;

将所述外部依赖的返回值或者返回对象序列化为返回文本;

将所述mock特征值与所述返回文本对应,所述mock特征值和对应的所述返回文本构成mock对象。

可选的,所述获取被测代码的名称,以及获取被测代码调用外部依赖的调用参数和调用次数,包括:

拦截所述被测代码对外部依赖的调用;

记录被测代码的名称、调用参数和调用次数。

可选的,所述获取外部依赖对所述调用的返回值或者返回对象,包括:

根据所述调用参数和调用次数调用外部依赖;

记录外部依赖的返回值或者返回对象。

其中,根据被测代码的名称、调用参数和调用次数使用哈希算法生成mock特征值。

根据本申请实施例的第二方面,提供一种自动mock外部依赖的装置,包括:

被测端数据获取模块,用于获取被测代码的名称,以及获取被测代码调用外部依赖的调用参数和调用次数;

外部端数据获取模块,用于获取外部依赖对所述调用产生的返回值或者返回对象;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410370258.0/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top