本发明专利技术公开了一种应用于软件测试的mock测试方法,包括以下步骤:识别满足接口契约的对象,使用定义的调用签名来标识接口或委托,将满足接口契约的对象作为参数输入到参数化单元测试;生成能满足接口契约的符号对象,需调用签名或授权输入;通过符号执行来探索对参数化单元测试的调用;修剪模拟行为的级别,对于表示为友好的模拟,或者对于具有约束为友好的属性的模拟行为进行修剪路径;对于每个终止路径,获得路径条件的解,所述解为符号值指定的具体值;创建具体模拟类的源代码,对于剩余的每个路径,用于运行返回具体值以响应模拟调用的测试。本发明专利技术可通过新符号执行来对测试组件分别进行测试;兼容性,拓展性强,适应不同的驱动程序。驱动程序。驱动程序。
【技术实现步骤摘要】
一种应用于软件测试的mock测试方法
[0001]本专利技术涉及计算机程序测试领域,特别涉及一种应用于软件测试的mock测试方法。
技术介绍
[0002]计算机系统的组件通常彼此依赖。在这种情况下,一个组件只能在提供它所依赖的另一个组件时运行。但是,在测试计算机系统时,希望一次测试一个组件。例如,考虑系统组件是在单独开发的常见场景:应该可以在开发过程中单独测试每个组件,因为其他组件尚未可用。或者针对考虑被测试的小组件资源需求较低但依赖于资源消耗较高的组件的情况,小组件的测试也会消耗资源,很快整个测试工作都无法扩展。此外,以前编写的测试通常在修改组件时重新运行,重新运行所测试的组件,导致所依赖的其他组件也必须跟着重新启动,会耗费大量时间。针对考虑组件允许用户编写的“插件”组件的场景,例如允许用户提供的设备驱动程序的操作系统,在这种情况下,当开发和测试设计用使用它们时,用户提供的设备驱动程序可能不可用或出错。
技术实现思路
[0003]为了克服现有技术存在的不足,本专利技术提供了一种应用于软件测试的mock测试方法,所述技术方案如下:
[0004]本专利技术提供了一种应用于软件测试的mock测试方法,包括以下步骤:
[0005]S1、识别满足接口契约的对象,使用定义的调用签名来标识接口或委托,将满足接口契约的对象作为参数输入到参数化单元测试;
[0006]S2、生成能满足接口契约的符号对象,需调用签名或授权输入;
[0007]S3、通过符号执行来探索对参数化单元测试的调用;
[0008]S4、修剪模拟行为的级别,对于表示为友好的模拟,或者对于具有约束为友好的属性的模拟行为进行修剪路径;
[0009]S5、对于每个终止路径,获得路径条件的解,所述解为符号值指定的具体值;
[0010]S6、创建具体模拟类的源代码,对于剩余的每个路径,用于运行返回具体值以响应模拟调用的测试。
[0011]进一步地,所述符号执行标识的在给定执行路径之前必须满足的路径约束。
[0012]进一步地,在测试阶段期间,修改模拟行为的源代码以返回具体值而不是新符号。
[0013]进一步地,可调用外部资源的来进行模拟行为。
[0014]进一步地,每次在创建的模拟对象上调用方法,都会将新的符号值返回给调用者作为方法的输出。
[0015]进一步地,默认的模拟行为会跟踪分发的符号值和时间,所述符号值定义为额外的输入。
[0016]进一步地,通过符号执行来调用的对象包括模拟对象和接口的输入参数。
[0017]本专利技术提供的技术方案带来的有益效果如下:
[0018](1)可通过新符号执行来对测试组件分别进行测试;
[0019](2)兼容性,拓展性强,适应不同的驱动程序;
[0020](3)通过模拟对象的执行,软件测试速度快。
附图说明
[0021]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022]图1是本专利技术实施例提供的用于生成模拟行为的流程图。
具体实施方式
[0023]为了使本
的人员更好地理解本专利技术方案,更清楚地了解本专利技术的目的、技术方案及其优点,以下结合具体实施例并参照附图对本专利技术实施例中的技术方案进行清楚、完整地描述。需要说明的是,附图中未绘示或描述的实现方式,为所属
中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。除此,本专利技术的说明书和权利要求书中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0024]在本专利技术的一个实施例中,提供了一种应用于软件测试的mock测试方法,参见图1,包括以下步骤:
[0025]S1、识别满足接口契约的对象,使用定义的调用签名来标识接口或委托,将满足接口契约的对象作为参数输入到参数化单元测试;
[0026]S2、生成能满足接口契约的符号对象,需调用签名或授权输入;
[0027]S3、通过符号执行来探索对参数化单元测试的调用;
[0028]S4、修剪模拟行为的级别,对于表示为友好的模拟,或者对于具有约束为友好的属性的模拟行为进行修剪路径;
[0029]S5、对于每个终止路径,获得路径条件的解,所述解为符号值指定的具体值;
[0030]S6、创建具体模拟类的源代码,对于剩余的每个路径,用于运行返回具体值以响应模拟调用的测试。
[0031]进一步地,所述符号执行标识的在给定执行路径之前必须满足的路径约束。
[0032]进一步地,在测试阶段期间,修改模拟行为的源代码以返回具体值而不是新符号。
[0033]进一步地,可调用外部资源的来进行模拟行为。
[0034]进一步地,每次在创建的模拟对象上调用方法,都会将新的符号值返回给调用者
作为方法的输出。
[0035]进一步地,默认的模拟行为会跟踪分发的符号值和时间,所述符号值定义为额外的输入。
[0036]进一步地,通过符号执行来调用的对象包括模拟对象和接口的输入参数。
[0037]本专利技术可通过新符号执行来对测试组件分别进行测试;兼容性,拓展性强,适应不同的驱动程序;通过模拟对象的执行,软件测试速度快。
[0038]以上所述仅为本专利技术的较佳实施例,并不用以限制本专利技术,凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内。
本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种应用于软件测试的mock测试方法,其特征在于,包括以下步骤:S1、识别满足接口契约的对象,使用定义的调用签名来标识接口或委托,将满足接口契约的对象作为参数输入到参数化单元测试;S2、生成能满足接口契约的符号对象,需调用签名或授权输入;S3、通过符号执行来探索对参数化单元测试的调用;S4、修剪模拟行为的级别,对于表示为友好的模拟,或者对于具有约束为友好的属性的模拟行为进行修剪路径;S5、对于每个终止路径,获得路径条件的解,所述解为符号值指定的具体值;S6、创建具体模拟类的源代码,对于剩余的每个路径,用于运行返回具体值以响应模拟调用的测试。2.根据权利要求1所述的应用于软件测试的mock测试方法,其特征在于,所述符号执行标识的在给定执行路径之前必须满足的...
【专利技术属性】
技术研发人员:师江帆,
申请(专利权)人:苏州市龙测智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。