1.本技术实施例涉及软件测试技术领域,尤其涉及一种流程逃逸自动测试方法、设备、存储介质及程序产品。
背景技术:2.为了保证业务流程的安全,在进行安全测试时,需要对流程逃逸进行测试。
3.相关技术中,可以通过手工渗透技术进行测试,通过抓取要逃逸的接口,尝试修改参数值达到测试是否存在流程逃逸的目的。
4.然而,实现本技术过程中,发明人发现现有技术中至少存在如下问题:现有的测试方式效率较低。
技术实现要素:5.本技术实施例提供一种流程逃逸自动测试方法、设备、存储介质及程序产品,以提高流程逃逸测试的效率。
6.第一方面,本技术实施例提供一种流程逃逸自动测试方法,包括:
7.获取关联接口的报文;所述关联接口为与其他接口存在关联关系的接口;
8.修改所述报文的参数,并根据修改的参数设置所述关联接口对应的变量;
9.若所述关联接口设置有逃逸环节,则获取所述关联接口对应的待跳转的目标接口,并根据所述变量和所述目标接口设置条件控制器,以基于所述条件控制器跳转至所述目标接口;执行所述目标接口的测试用例,获得响应结果,以根据所述响应结果确定是否逃逸成功。
10.在一种可能的设计中,所述方法还包括:
11.获取关联文件;
12.根据所述关联文件确定关联接口。
13.在一种可能的设计中,所述修改所述报文的参数,包括:
14.若所述报文为可修改报文,则修改所述报文的参数。
15.在一种可能的设计中,所述若所述报文为可修改报文,则修改所述报文的参数,包括:
16.判断所述报文是否存在于预先梳理获得的可修改报文集合中;所述可修改报文集合是根据测试需求确定的;
17.若存在,则判定所述报文为可修改报文,并修改所述报文的参数。
18.在一种可能的设计中,所述方法还包括:
19.若所述关联接口未设置逃逸环节,则根据所述变量确定所述关联接口的上一级关联接口;根据所述上一级关联接口确定所述变量的变量值;根据所述变量值执行所述关联接口的测试用例,获得响应结果。
20.在一种可能的设计中,所述方法还包括:
21.判断所述关联接口的下一级关联接口是否为待逃逸接口;
22.若是,则判定所述关联接口设置有逃逸环节。
23.第二方面,本技术实施例提供一种流程逃逸自动测试设备,包括:
24.获取模块,用于获取关联接口的报文;所述关联接口为与其他接口存在关联关系的接口;
25.修改模块,用于修改所述报文的参数,并根据修改的参数设置所述关联接口对应的变量;
26.跳转模块,用于若所述关联接口设置有逃逸环节,则获取所述关联接口对应的待跳转的目标接口,并根据所述变量和所述目标接口设置条件控制器,基于所述条件控制器跳转至所述目标接口;执行所述目标接口的测试用例,获得响应结果,以根据所述响应结果确定是否逃逸成功。
27.第三方面,本技术实施例提供一种流程逃逸自动测试设备,包括:至少一个处理器和存储器;
28.所述存储器存储计算机执行指令;
29.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的方法。
30.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的方法。
31.第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的方法。
32.本实施例提供的流程逃逸自动测试方法、设备、存储介质及程序产品,该方法包括获取关联接口的报文,所述关联接口为与其他接口存在关联关系的接口,修改所述报文的参数,并根据修改的参数设置所述关联接口对应的变量,若所述关联接口设置有逃逸环节,则获取所述关联接口对应的待跳转的目标接口,并根据所述变量和所述目标接口设置条件控制器,以基于所述条件控制器跳转至所述目标接口,执行所述目标接口的测试用例,获得响应结果,以根据所述响应结果确定是否逃逸成功。本技术实施例提供的流程逃逸自动测试方法,通过采用变量传参的方式解决接口依赖的问题,进而通过设置条件控制器来实现接口的自由跳转,从而可以实现流程逃逸的自动测试,相对于手工渗透的方式,提高了测试效率。
附图说明
33.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
34.图1为本技术实施例提供的流程逃逸自动测试方法的原理示意图;
35.图2为本技术实施例提供的变量传参流程示意图;
36.图3为本技术实施例提供的流程逃逸自动测试方法的流程示意图一;
37.图4为本技术实施例提供的流程逃逸自动测试方法的流程示意图二;
38.图5为本技术实施例提供的流程逃逸自动测试设备的结构示意图;
39.图6为本技术实施例提供的流程逃逸自动测试设备的结构框图。
具体实施方式
40.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.相关术语解释:
42.组合:由几个部分或个体结合成的整体。
43.依赖:一种情况是依靠别人或事物而不能独立或者自给,另一种情况指各个事物或现象互为条件而不可分离。
44.传参:传递参数,可以包括传值、传址、传引用。
45.变量:是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言中,变量可能是不变的。
46.逃逸:在业务流程执行过程中,逃过部分流程。
47.软件系统要实现一定的功能,就会有一定的业务场景。业务场景在后台是通过一个个功能接口实现的。功能接口之间通过一定的依赖关系和约束条件组成软件系统的不同业务场景,不同的业务场景又通过接口组成软件系统的业务流程,从而保证软件功能的实现。为了保证业务流程的安全,在进行安全测试时,需要对流程逃逸进行测试。示例性的,在一查询业务流程中,包括登录、验证、查询等环节。每个环节对应不同的接口。正常工作时,每个环节都必须执行才能正常进行查询,若某一环节,例如验证环节跳过之后仍然可以进行查询(即验证为逃逸流程的话),则表明该业务流程存在安全漏洞。
48.相关技术中,可以通过手工渗透技术进行测试,通过抓取要逃逸的接口,尝试修改参数值达到测试是否存在流程逃逸的目的。示例性的,继续以登录、验证、查询等构成的查询业务流程为例,可以通过登录界面输入账号和密码,进入验证界面,在验证界面修改参数,看是否能够进入查询界面,若能够进入,则表明验证环节发生了逃逸,该查询业务流程存在漏洞。
49.然而,上述方式中,采用手工测试效率较低。
50.为了解决上述技术问题,本技术发明人研究发现,可以采用测试用例进行自动测试,发明人又考虑到,实现流程逃逸的自动测试的阻碍是对于一些关联比较密切的接口必须一步一步执行,无法跳过中间业务环节,因此,可以采用变量传参的方式解决接口依赖的问题,从而可以通过设置条件控制器来实现接口的自由跳转,跳过中间业务环节。基于此,本技术实施例提供的流程逃逸自动测试方法,通过采用变量传参的方式解决接口依赖的问题,进而通过设置条件控制器来实现接口的自由跳转,从而可以实现流程逃逸的自动测试,相对于手工渗透的方式,提高了测试效率。
51.图1为本技术实施例提供的流程逃逸自动测试方法的原理示意图。如图1所示,业务流程包括a接口、b接口和c接口。a接口、b接口和c接口顺序执行。a接口与b接口之间可以
通过变量传参进行参数传递,b接口与c接口之间也可以通过变量传参进行参数传递。基于此,可以根据b接口涉及的各变量设计条件控制器,通过在a接口和c接口之间设置条件控制器,实现b接口的逃逸测试,具体的,如果基于条件控制器,a接口可以顺序执行至c接口,那么表明b接口逃逸成功,软件存在安全漏洞,如果执行失败,则表明逃逸未成功,软件安全性较高。
52.为了清楚说明变量传参的原理,以下结合图2对变量传参的流程进行示例性说明。
53.对业务流程中涉及的业务场景中的接口进行测试前,可以预先进行梳理工作:
54.首先,可以根据测试需求梳理业务逻辑,画出业务流程图。
55.其次,可以根据业务流程图整理出每个业务流程的各种业务场景;
56.最后,根据关联文件(包括各接口的信息)分析每个接口的功能并整理出每个接口对应的依赖接口(下一级关联接口)、被依赖接口(上一级关联接口)、依赖条件。
57.在基于变量传参进行接口测试时:
58.接口测试用例通过提取被依赖接口参数,设置为变量,依赖接口引用变量的方法,实现参数传递,使得被依赖接口的出参变成依赖接口的入参。图2为本技术实施例提供的变量传参流程示意图。如图2所示,在对接口1进行测试时,可以判断接口1是否存在依赖接口,若接口1不存在依赖接口,则可以执行接口1的测试用例。若接口1存在依赖接口,则获取接口1的依赖接口,接口2,提取接口2的信息(例如报文),设置接口2对应的变量,进而可以引用变量2后执行接口1的测试用例。
59.针对接口2,进行测试时,可以判断接口2是否存在依赖接口,若接口2不存在依赖接口,则执行接口2的测试用例,若接口2存在依赖接口,则获取接口2的依赖接口,接口3,提取接口3的信息(例如报文),设置接口3对应的变量,进而可以引用变量3后执行接口2的测试用例。以此类推,可以进行业务流程中其他接口的接口测试。
60.本实施例中,通过变量传参的方法解决接口依赖问题,为自动测试提供的前提条件。
61.下面以具体地实施例对本技术的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
62.图3为本技术实施例提供的流程逃逸自动测试方法的流程示意图一。如图3所示,该方法包括:
63.301、获取关联接口的报文;所述关联接口为与其他接口存在关联关系的接口;。
64.本实施例中,关联接口是指与其它接口具有依赖和被依赖关系的接口。示例性的,接口1的输出为接口2的输入,那么接口1和接口2均为关联接口。接口3是独立的,与其他接口不存在关联关系,那么接口3为非关联接口。
65.其中,报文可以包括请求头(请求url、请求方法、状态代码等)、请求负载(各种参数,例如日期、查询条目等)等信息,
66.在一些实施例中,步骤301之前还可以包括:获取关联文件;根据所述关联文件确定关联接口。
67.具体的,业务流程具有对应的关联文件,该关联文件中包括业务流程涉及的多个接口,多个接口之间的依赖关系。对关联文件中各接口进行梳理后,可以确定各接口之间的依赖关系,并且可以确定哪些接口是独立接口,即非关联接口,哪些接口是关联接口。
68.302、修改所述报文的参数,并根据修改的参数设置所述关联接口对应的变量。
69.具体的,在获得关联接口的报文后,可以对报文中的参数进行修改,并且为参数设置变量。示例性的,以关联接口为购物订单接口,其报文包括购买的物品及对应的数量和金额等参数,以金额为例,可以修改参数金额,并为该参数设置变量。
70.在一些实施例中,所述修改所述报文的参数,可以包括:若所述报文为可修改报文,则修改所述报文的参数。
71.在一些实施例中,所述若所述报文为可修改报文,则修改所述报文的参数,包括:判断所述报文是否存在于预先梳理获得的可修改报文集合中;所述可修改报文集合是根据测试需求确定的;若存在,则判定所述报文为可修改报文,并修改所述报文的参数。
72.303、若所述关联接口设置有逃逸环节,则获取所述关联接口对应的待跳转的目标接口,并根据所述变量和所述目标接口设置条件控制器,以基于所述条件控制器跳转至所述目标接口;执行所述目标接口的测试用例,获得响应结果,以根据所述响应结果确定是否逃逸成功。
73.具体的,在进行接口梳理工作时,即可以确定哪些接口需要被测试是否为可逃逸接口,即设置逃逸环节。示例性的,针对业务流程中串行连接的接口1、接口2和接口3,接口2为待测试的是否可逃逸的接口,那么在对接口1进行报文修改后,可以判断接口1的下一接口,接口2是否为待测试逃逸的接口,若是,则判定接口1设置有逃逸环节。因此,可以进一步确定该逃逸环节的目标跳转接口,即接口3。当然逃逸环节也可以包括多个接口,以接口1至接口4为例,那么接口2和接口3均可以被设置为逃逸环节,那么此时,目标接口即为接口4。
74.在确定目标接口后,即可以根据目标接口和关联接口的变量设置条件控制器。以接口1至接口3的业务流程,接口2为逃逸环节为例,那么可以参考图1,基于接口1与接口2之间的变量传参,接口2与接口3之间的变量传参,进行接口1跳转至接口3的条件控制器。
75.在一些实施例中,所述方法还可以包括:若所述关联接口未设置逃逸环节,则根据所述变量确定所述关联接口的上一级关联接口;根据所述上一级关联接口确定所述变量的变量值;根据所述变量值执行所述关联接口的测试用例,获得响应结果。
76.在一些实施例中,所述方法还可以包括:判断所述关联接口的下一级关联接口是否为待逃逸接口;若是,则判定所述关联接口设置有逃逸环节。
77.本实施例提供的流程逃逸自动测试方法,通过采用变量传参的方式解决接口依赖的问题,进而通过设置条件控制器来实现接口的自由跳转,从而可以实现流程逃逸的自动测试,相对于手工渗透的方式,提高了测试效率。
78.图4为本技术实施例提供的流程逃逸自动测试方法的流程示意图二。如图4所示,该方法包括:
79.401、获取关联文件。
80.402、根据所述关联文件确定关联接口。
81.403、获取关联接口的报文;所述关联接口为与其他接口存在关联关系的接口。
82.404、判断所述报文是否为可修改报文,若是则执行步骤405,若否则执行步骤409。
83.405、修改所述报文的参数,并根据修改的参数设置所述关联接口对应的变量。
84.406、判断关联接口是否设置有逃逸环节。若是,则执行步骤407,若否则执行步骤408。
85.407、获取所述关联接口对应的待跳转的目标接口,并根据所述变量和所述目标接口设置条件控制器,以基于所述条件控制器跳转至所述目标接口;执行所述目标接口的测试用例,获得响应结果,以根据所述响应结果确定是否逃逸成功。
86.408、根据所述变量确定所述关联接口的上一级关联接口;根据所述上一级关联接口确定所述变量的变量值;根据所述变量值执行所述关联接口的测试用例,获得响应结果。
87.409、执行关联接口的测试用例,获得响应结果。
88.具体的,业务流程具有对应的关联文件,该关联文件中包括业务流程涉及的多个接口,多个接口之间的依赖关系。对关联文件中各接口进行梳理后,可以确定各接口之间的依赖关系,并且可以确定哪些接口是独立接口,即非关联接口,哪些接口是关联接口。在获得关联接口的报文后,可以首先判断报文是否为可修改报文,若是,则对报文中的参数进行修改,并且为参数设置变量。示例性的,以关联接口为购物订单接口,其报文包括购买的物品及对应的数量和金额等参数,以金额为例,可以修改参数金额,并为该参数设置变量。
89.在修改报文后,进一步判断关联接口是否为逃逸环节,若是,则可以设置条件控制器,并设置待跳转至的目标接口,执行下一级接口的关联接口的测试用例并处理相应给变量赋值。若不存在逃逸环节,则可以找到变量来自哪个上一级关联接口,并确定变量值的获取方式,执行上一级关联接口的测试用例并处理响应给变量赋值。最后执行关联接口的测试用例,获得响应结果。
90.本实施例提供的流程逃逸自动测试方法,通过采用变量传参的方式解决接口依赖的问题,进而通过设置条件控制器来实现接口的自由跳转,从而可以实现流程逃逸的自动测试,相对于手工渗透的方式,提高了测试效率。
91.图5为本技术实施例提供的流程逃逸自动测试设备的结构示意图。如图5所示,该流程逃逸自动测试设备50包括:获取模块501、修改模块502以及跳转模块503。
92.获取模块501,用于获取关联接口的报文;所述关联接口为与其他接口存在关联关系的接口;
93.修改模块502,用于修改所述报文的参数,并根据修改的参数设置所述关联接口对应的变量;
94.跳转模块503,用于若所述关联接口设置有逃逸环节,则获取所述关联接口对应的待跳转的目标接口,并根据所述变量和所述目标接口设置条件控制器,基于所述条件控制器跳转至所述目标接口;执行所述目标接口的测试用例,获得响应结果,以根据所述响应结果确定是否逃逸成功。
95.本技术实施例提供的流程逃逸自动测试设备,通过采用变量传参的方式解决接口依赖的问题,进而通过设置条件控制器来实现接口的自由跳转,从而可以实现流程逃逸的自动测试,相对于手工渗透的方式,提高了测试效率。
96.本技术实施例提供的流程逃逸自动测试设备,可用于执行上述的方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
97.图6为本技术实施例提供的流程逃逸自动测试设备的结构框图,该设备可以是计算机,服务器,平板设备等。
98.设备60可以包括以下一个或多个组件:处理组件601,存储器602,电源组件603,多媒体组件604,音频组件605,输入/输出(i/o)接口606,传感器组件607,以及通信组件608。
99.处理组件601通常控制装置60的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件601可以包括一个或多个处理器609来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件601可以包括一个或多个模块,便于处理组件601和其他组件之间的交互。例如,处理组件601可以包括多媒体模块,以方便多媒体组件604和处理组件601之间的交互。
100.存储器602被配置为存储各种类型的数据以支持在装置60的操作。这些数据的示例包括用于在装置60上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器602可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
101.电源组件603为装置60的各种组件提供电力。电源组件603可以包括电源管理系统,一个或多个电源,及其他与为装置60生成、管理和分配电力相关联的组件。
102.多媒体组件604包括在所述装置60和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件604包括一个前置摄像头和/或后置摄像头。当装置60处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
103.音频组件605被配置为输出和/或输入音频信号。例如,音频组件605包括一个麦克风(mic),当装置60处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器602或经由通信组件608发送。在一些实施例中,音频组件605还包括一个扬声器,用于输出音频信号。
104.i/o接口606为处理组件601和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
105.传感器组件607包括一个或多个传感器,用于为装置60提供各个方面的状态评估。例如,传感器组件607可以检测到装置60的打开/关闭状态,组件的相对定位,例如所述组件为装置60的显示器和小键盘,传感器组件607还可以检测装置60或装置60一个组件的位置改变,用户与装置60接触的存在或不存在,装置60方位或加速/减速和装置60的温度变化。传感器组件607可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件607还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件607还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
106.通信组件608被配置为便于装置60和其他设备之间有线或无线方式的通信。装置60可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件608经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。
在一个示例性实施例中,所述通信组件608还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
107.在示例性实施例中,装置60可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
108.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器602,上述指令可由装置60的处理器609执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
109.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
110.一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
111.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
112.本技术实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上流程逃逸自动测试设备执行的流程逃逸自动测试方法。
113.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。