基于数据回放的测试方法和测试装置与流程

文档序号:12719319阅读:256来源:国知局
基于数据回放的测试方法和测试装置与流程
本发明涉及软件测试领域,具体而言,涉及一种基于数据回放的测试方法和测试装置。
背景技术
:回归测试是指在对旧代码进行修改后,重新对代码进行测试以确认该修改没有引入新的错误或导致其他代码产生错误。自动回归测试可以有效地降低系统测试、维护升级等阶段的成本。目前,随着测试系统中的各个模块的快速更新迭代以及繁多的业务场景,增大了回归测试的工作量,因此,如何提高自动化测试的工作效率成为了测试人员亟待解决的问题。但是,现有技术中的自动化测试工具无法满足业务场景复杂和代码处理逻辑复杂的系统,例如接口的请求参数复杂以及接口处理过程中需要具有基础数据的多个模块并且要求可以请求多个第三方模块,上述现有技术中的问题导致了自动化测试用例编写复杂并且维护困难,无法在测试系统中得到广泛的应用。针对上述现有的软件测试方法工作量大、工作效率低的问题,目前尚未提出有效的解决方案。技术实现要素:本发明实施例提供了一种基于数据回放的测试方法和测试装置,以至少解决现有的软件测试方法工作量大、工作效率低的技术问题。根据本发明实施例的一个方面,提供了一种基于数据回放的测试方法,包括:从在线运营的服务上复制数据,其中,数据包括以下至少之一:请求、该请求对应的参数、该请求对应的返回结果以及该请求被执行时所产生以及使用的数据;保存复制的数据;获取被测请求;获取被测请求在待测试的环境中被执行时所产生以及使用的数据;根据被测请求被执行时所产生的数据和复制的数据确定测试结果。根据本发明实施例的另一方面,还提供了一种基于数据回放的测试装置,包括:复制模块,用于从在线运营的服务上复制数据,其中,数据包括以下至少之一:请求、该请求对应的参数、该请求对应的返回结果以及该请求被执行时所产生以及使用的数据;保存模块,用于保存复制的数据;请求获取模块,用于获取被测请求;结果获取模块,用于获取被测请求在待测试的环境中以及该请求被执行时所产生以及使用的数据;对比模块,用于根据被测请求被执行时所产生的数据和复制的数据确定测试结果。在本发明实施例中,采用对数据进行回放的方式,通过从在线运营的服务上复制数据,并保存复制的数据,从复制的数据中获取被测请求以及被测请求在待测试的环境中被执行时所产生以及使用的数据,根据被测请求被执行时所产生的数据和复制的数据确定测试结果,达到了对测试接口无依赖的目的,从而实现了减少了软件测试的工作量,并提高工作效率的技术效果,进而解决了现有的软件测试方法工作量大、工作效率低的技术问题。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据本发明实施例的一种基于数据回放的测试方法的流程图;图2是根据本发明实施例的一种可选的基于数据回放的测试方法的流程图;图3是根据本发明实施例的一种可选的基于数据回放的测试方法的流程图;图4是根据本发明实施例的一种可选的基于数据回放的测试方法的流程图;图5是根据本发明实施例的一种可选的基于数据回放的测试方法的流程图;图6是根据本发明实施例的一种可选的基于数据回放的测试方法的流程图;以及图7是根据本发明实施例的一种基于数据回放的测试装置的结构示意图。其中,上述附图包括以下附图标记:701、复制模块;703、保存模块;705、请求获取模块;707、结果获取模块;709、对比模块;711、返回模块。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例1根据本发明实施例,提供了一种基于数据回放的测试方法的实施例。图1是根据本发明实施例的基于数据回放的测试方法流程图,如图1所示,该方法包括如下步骤:步骤S102,从在线运营的服务上复制数据,其中,数据包括以下至少之一:请求、该请求对应的参数、该请求对应的返回结果以及该请求被执行时所产生以及使用的数据。上述步骤S102可以在自动化测试平台上执行,自动化测试平台可以拦截发送至服务的数据,即在执行请求的过程中所产生以及使用的数据,并对该数据进行复制。作为一种可选的实施例,在自动化测试平台的测试环境中,发送上述请求给在线运营的服务,并输出测试结果,该测试结果即为该请求对应的返回结果。通过上述步骤S102可以得到在线运营的服务的输入参数和输出结果,即请求的参数以及请求对应的返回结果。步骤S104,保存复制的数据。在上述步骤S104中,可以将上述复制的数据保存到文件服务器中,方便之后获取以及使用。在一种可选的实施例中,可以将保存在文件服务器中的数据复制到待测试的环境中,并将该数据中的请求的返回结果作为基准结果对待测试的环境进行评估。步骤S106,获取被测请求。在上述步骤S106中,自动化测试平台通过检测当前的环境是否为待测试环境,如果当前环境为待测试环境,则将被测请求的相应的数据用在线运营的服务上复制的数据替代。在一种可选的实施例中,自动化测试平台可以通过调用jar包的形式来获取被测请求,测试人员在待测试的环境中引入上述jar包,并在配置文件中进行配置,即可在该待测试的环境中获取被测请求。需要说明的是,仅将在线运营的服务上的数据中的请求以及该请求对应的参数替换被测请求。通过上述步骤S106,可以获知上述被测请求的相关数据为在线运营的服务上的请求的相关数据,由于两个请求以及请求的参数相同,因此,当得到两个测试环境下的返回结果后,两个返回结果具有可比性,可以对测试结果进行比对,判断该测试是否成功。步骤S108,获取被测请求在待测试的环境中被执行时所产生以及使用的数据。在上述步骤S108限定的方案中,上述被测请求在待测试的环境中被执行时所产生以及使用的数据包括:该被测请求、该被测请求对应的参数、该被测请求对应的返回结果以及该被测请求在执行的过程中所产生以及使用的中间数据。其中,该被测请求对应的返回结果可以以图表或数据的形式向测试人员展示,在一种可选的实施例中,被测请求返回的结果以图片的形式向测试人员展示,在线运营的服务上的返回结果也以图片的形式向测试人员展示,此时,自动化测试平台通过图片比较服务对两张图片进行比对,得到比对结果,该比对结果作为测试结果的一部分,在测试报告中向测试人员展示。步骤S110,根据被测请求被执行时所产生的数据和复制到的数据确定测试结果。在一种可选的实施例中,在线运营的服务上的返回结果为第一结果,被测请求被执行时所产生的结果为第二结果,如果第一结果和第二结果存在差值,说明测试失败,此时自动化测试平台根据测试结果生成测试报告,其中,测试报告的内容包括两次返回结果的结果差异,以及该被测请求在执行的过程中所产生以及使用的中间数据与在线运营的服务上执行请求时所产生的数据的差异。测试人员通过上述生成的测试报告可直观地看到测试结果,并快速地对该测试结果作出分析,提高了测试工作的效率。在另一种可选的实施例中,如果上述第一结果与第二结果相同,此时,自动化测试平台会再次检测该被测请求在执行的过程中所产生的中间数据与在线运营的服务上执行请求时所产生的数据是否存在差异,如果存在差异,说明测试失败,并在测试报告的内容中显示出现差异的数据,测试人员可根据上述数据的差异对本次测试失败的原因进行分析,进而提高了测试人员的工作效率。需要说明的是,由于测试用例需要定期更新,但在更新时,自动化测试平台会删除原始数据,并在在线运行的服务上重新复制数据,从而使得需要保存的测试用例被删除,因此,在进行自动化测试时需要测试人员手动收藏测试用例,以用于后期的回归测试中。基于上述实施例步骤S102至步骤S110所公开的方案中,可以获知通过从在线运营的服务上复制数据,并保存复制的数据,从复制的数据中获取被测请求以及被测请求在待测试的环境中被执行时所产生以及使用的数据,根据被测请求被执行时所产生的数据和复制的数据确定测试结果,容易注意到的是,由于自动化测试平台采用调用jar包的形式来对测试环境进行配置,进而对被测请求进行测试,从而得到测试结果,因此,测试人员不需要再编写大量的测试用例,节省了测试人员的工作时间,提高了测试效率,进一步达到了对测试接口无依赖的目的,实现了减少了软件测试的工作量,并提高工作效率的技术效果,进而解决了现有的软件测试方法工作量大、工作效率低的技术问题。在请求需要调用第三方接口的情况下,从在线运营的服务上复制数据的方法包括:复制第三方接口返回的参数和/或返回的结果,并作为数据进行保存,其中,第三方接口返回的参数和/或返回的结果用于在测试环境中提供给被测请求。作为一种可选的实施例,上述第三方接口可以为但不限于第三方的支付接口以及第三方的应用接口,上述第三方接口返回的参数和/或返回的结果可以保存到文件服务器上,其中,第三方接口返回的参数可以用于替换或覆盖待测试环境中的被测请求,第三方接口返回的结果作为基准结果对待测试环境下的返回结果进行评估。在被测请求需要调用第三方接口的情况下,获取被测请求的方法包括:根据复制到的第三方接口返回的参数和/或返回的结果向被测请求返回。在一种可选的实施例中,上述第三方接口返回的参数替换掉待测试环境中的所有请求,并将第三方接口返回的参数中的请求作为待测试环境中的被测请求。然后根据被测请求得到在待测试环境中的返回结果,并通过对比第三方接口返回的结果与待测试环境中的返回结果得到测试结果。图2示出了一种可选的基于数据回放的测试方法的流程图,如图2所示,从在线运营的服务上复制数据的方法具体包括如下步骤:步骤S202,获取不同协议对应的数据,其中,协议包括以下至少之一:HTTP、DUBBO、QMQ;步骤S204,将不同协议对应的数据进行复制。在上述步骤S202至步骤S204所限定的方案中,根据协议的不同,自动化测试平台所引用的jar包也是不同的,并且在不同的协议中可以对jar包进行不同的扩展。在一种可选的实施例中,根据协议请求(例如HTTP协议的请求)在自动化测试平台上选择该协议请求对应的jar包,并将该jar包引入到待测试环境中,对待测试环境中的配置文件进行配置,进而完成对被测请求的测试。需要说明的是,HTTP、DUBBO以及QMQ协议仅为请求的协议,在测试过程中所用到的协议不限于提高的上述三种协议。图3示出了一种可选的基于数据回放的测试方法的流程图,如图3所示,该方法包括如下步骤:步骤S302,获取多个请求中的每个请求覆盖的代码量;步骤S304,将覆盖代码量满足预定条件的请求作为被测请求。在上述步骤S302至步骤S304所限定的方案中,上述每个请求覆盖的代码量可以用代码覆盖率来表征,具体的,可以通过选取代码覆盖率最大的请求作为基准请求,然后以该基准请求覆盖的代码量为基准,通过判断其他请求覆盖的代码与基准请求覆盖的代码是否能够覆盖全部的代码来得到被测请求。其中,如表1所示的多个请求与其对应的代码覆盖率。表1请求BACED代码覆盖率78%80%86%86%90%在一种可选的实施例中,在线运营的服务上的返回结果为第一结果,被测请求被执行时所产生的结果为第二结果。在根据第一结果和第二结果得到测试结果之后,如果第一结果和第二结果存在差异,自动化测试平台可以收集使第一结果与第二结果出现差异的字段,并对该字段进行保存。当进行下一次的测试任务时,可以在测试结果中排除已保存的差异字段对测试结果的影响。其中,上述差异字段可以为但不限于时间戳、随机数。图4示出了一种可选的基于数据回放的测试方法的流程图,如图4所示,在获取多个请求中的每个请求覆盖的代码量之后,从多个请求中筛选出被测请求还需要执行如下步骤:步骤S402,获取当前请求覆盖的代码量;步骤S404,判断当前请求覆盖的代码量是否大于上一请求覆盖的代码量;步骤S406,在当前请求覆盖的代码量大于上一请求覆盖的代码量的情况下,保存当前请求。在上述步骤S402至步骤S406中,所有请求位于请求队列中,通过步骤S302得到每个请求的代码覆盖率之后,所有请求的代码覆盖率以递增的形式在队列中排列,其中,位于队头的请求为当前请求(例如,在表1中,请求B为当前请求)。在一种可选的实施例中,待测试程序的代码覆盖率初始化为0,当前请求B作为请求队列中的未发送请求,位于请求队列的队头。当检测到请求队列中存在未发送请求时,发送该请求,并获取当前请求的代码覆盖率78%。由于78%>0%,因此请求B被筛选出,并保存;当发送完请求B之后,请求A作为当前请求,其代码覆盖率为80%,大于78%,因此,请求A也将被筛选出,并保存。同样,请求C的代码覆盖率86%>80%,请求D的代码覆盖率90%>86%,因此,请求C和请求D被筛选出,并保存;而请求E的代码覆盖率86%不大于请求C的代码覆盖率86%,因此,请求E不会被筛选出。图5示出了一种可选的基于数据回放的测试方法的流程图,如图5所示,在获取多个请求中的每个请求覆盖的代码量之后,从多个请求中筛选出被测请求还需要执行如下步骤:步骤S502,从多个请求中筛选出第一请求,并获取第一请求覆盖的代码量;步骤S504,根据第一请求未覆盖到的代码,从多个请求中筛选出能够覆盖第一请求未覆盖到的代码的请求作为被测请求。在一种可选的实施例中,通过步骤S302得到每个请求的代码覆盖率之后,选取代码覆盖率最大的请求作为第一请求,在表1中,选取请求D作为第一请求。如果请求A所覆盖的代码中覆盖了请求D剩余的10%的代码,而其他请求所覆盖的代码覆盖请求D剩余代码的百分比均小于10%,则从上述5个请求中筛选出请求A和请求D。如果请求A所覆盖的代码中只覆盖了请求D剩余的2%的代码,而请求B所覆盖的代码中覆盖了请求D和请求A剩余的8%的代码,而请求C和请求E均只覆盖了请求D剩余的1%的代码,则请求A、请求B和请求E作为被测请求被筛选出。需要说明的是,如果至少两个请求的代码覆盖率相同,并且该代码覆盖率是最大的,此时,从这些请求中任意选择一个请求作为被测请求。图6示出了一种可选的基于数据回放的测试方法的流程图,如图6所示,在获取多个请求中的每个请求覆盖的代码量之后,从多个请求中筛选出被测请求还需要执行如下步骤:步骤S602,根据多个请求中的每个请求覆盖的代码判断多个请求中的一组请求覆盖的代码是否覆盖程序的全部代码;步骤S604,在一组请求覆盖的代码覆盖程序的全部代码的情况下,至少两个请求被筛选出,其中,被筛选出的至少两个请求为被测请求。在一种可选的实施例中,对所有的请求进行组合,如果组合后的请求能够覆盖程序的所有代码,则组合后的请求作为被测请求被筛选出。需要说明的是,如果存在多种组合均能覆盖程序的所有代码,则选择组合中包含请求数量最少的请求被筛选出。例如,表1中的请求A和请求B可以覆盖程序中的所有代码,而请求A、请求C和请求D也可以覆盖程序中的所有代码,则请求A和请求B作为被测请求被筛选出。通过上述方法,可以选择请求数量最少的请求组合,可以有效的节省测试时间,提高测试效率。实施例2根据本发明实施例,提供了一种基于数据回放的测试装置的实施例,其中,上述实施例1中的方法可以在本实施例中所提供的装置中运行。图7是根据本发明实施例的基于数据回放的测试装置的结构示意图,如图7所示,该装置包括:复制模块701、保存模块703、请求获取模块705、结果获取模块707和对比模块709。复制模块701,用于从在线运营的服务上复制数据,其中,数据包括以下至少之一:请求、该请求对应的参数、该请求对应的返回结果以及该请求被执行时所产生以及使用的数据。上述复制模块701可以执行上述实施例1中步骤S102的方法,上述复制模块701存在于自动化测试平台上,自动化测试平台可以拦截发送至服务的数据,即在执行请求的过程中所产生以及使用的数据,并对该数据进行复制。作为一种可选的实施例,在自动化测试平台的测试环境中,发送上述请求给在线运营的服务,并输出测试结果,该测试结果即为该请求对应的返回结果。通过上述复制模块701可以得到在线运营的服务的输入参数和输出结果,即请求的参数以及请求对应的返回结果。保存模块703,用于保存复制的数据。上述保存模块703可以执行上述实施例1中步骤S104的方法,可以将上述复制的数据保存到文件服务器中,方便之后获取以及使用。在一种可选的实施例中,可以将保存在文件服务器中的数据复制到待测试的环境中,并将该数据中的请求的返回结果作为基准结果对待测试的环境进行评估。请求获取模块705,用于获取被测请求。请求获取模块705可以执行上述实施例1中上述步骤S106的方法,自动化测试平台通过检测当前的环境是否为待测试环境,如果当前环境为待测试环境,则将被测请求的相应的数据用在线运营的服务上复制的数据替代。在一种可选的实施例中,自动化测试平台可以通过调用jar包的形式来获取被测请求,测试人员在待测试的环境中引入上述jar包,并在配置文件中进行配置,即可在该待测试的环境中获取被测请求。需要说明的是,仅将在线运营的服务上的数据中的请求以及该请求对应的参数替换被测请求。通过上述请求获取模块705,可以获知上述被测请求的相关数据为在线运营的服务上的请求的相关数据,由于两个请求以及请求的参数相同,因此,当得到两个测试环境下的返回结果后,两个返回结果具有可比性,可以对测试结果进行比对,判断该测试是否成功。结果获取模块707,用于获取被测请求在待测试的环境中被执行时所产生以及使用的数据。上述结果获取模块707可以执行上述实施例1中步骤S108的方法,在结果获取模块707中,上述被测请求在待测试的环境中被执行时所产生以及使用的数据包括:该被测请求、该被测请求对应的参数、该被测请求对应的返回结果以及该被测请求在执行的过程中所产生以及使用的中间数据。其中,该被测请求对应的返回结果可以以图表或数据的形式向测试人员展示,在一种可选的实施例中,被测请求返回的结果以图片的形式向测试人员展示,在线运营的服务上的返回结果也以图片的形式向测试人员展示,此时,自动化测试平台通过图片比较服务对两张图片进行比对,得到比对结果,该比对结果作为测试结果的一部分,在测试报告中向测试人员展示。。对比模块709,用于被测请求被执行时所产生的数据和复制到的数据确定测试结果。上述对比模块709可以执行上述实施例1中步骤S110的方法,在一种可选的实施例中,在线运营的服务上的返回结果为第一结果,被测请求被执行时所产生的结果为第二结果,如果第一结果和第二结果存在差值,说明测试失败,此时自动化测试平台根据测试结果生成测试报告,其中,测试报告的内容包括两次返回结果的结果差异,以及该被测请求在执行的过程中所产生以及使用的中间数据与在线运营的服务上执行请求时所产生以及使用的数据的差异。测试人员通过上述生成的测试报告可直观地看到测试结果,并快速地对该测试结果作出分析,提高了测试工作的效率。在另一种可选的实施例中,如果上述第一结果与第二结果相同,此时,自动化测试平台会再次检测该被测请求在执行的过程中所产生以及使用的中间数据与在线运营的服务上执行请求时所产生以及使用的数据是否存在差异,如果存在差异,说明测试失败,并在测试报告的内容中显示出现差异的数据,测试人员可根据上述数据的差异对本次测试失败的原因进行分析,进而提高了测试人员的工作效率。需要说明的是,由于测试用例需要定期更新,但在更新时,自动化测试平台会删除原始数据,并在在线运行的服务上重新复制数据,从而使得需要保存的测试用例被删除,因此,在进行自动化测试时需要测试人员手动收藏测试用例,以用于后期的回归测试中。由上可知,通过从在线运营的服务上复制数据,并保存复制的数据,从复制的数据中获取被测请求以及被测请求在待测试的环境中被执行时所产生以及使用的数据,根据被测请求被执行时所产生的数据和复制的数据确定测试结果,容易注意到的是,由于自动化测试平台采用调用jar包的形式来对测试环境进行配置,进而对被测请求进行测试,从而得到测试结果,因此,测试人员不需要再编写大量的测试用例,节省了测试人员的工作时间,提高了测试效率,进一步达到了对测试接口无依赖的目的,实现了减少了软件测试的工作量,并提高工作效率的技术效果,进而解决了现有的软件测试方法工作量大、工作效率低的技术问题。此处需要说明的是,上述复制模块701、保存模块703、请求获取模块705、结果获取模块707和对比模块709对应于实施例1中的步骤S102至步骤S110,五个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。可选的,在请求需要调用第三方接口的情况下,复制模块701包括:保存模块,用于复制第三方接口返回的参数和/或返回的结果,并作为数据进行保存,其中,第三方接口返回的参数和/或返回的结果用于在测试环境中提供给被测请求。作为一种可选的实施例,上述第三方接口可以为但不限于第三方的支付接口以及第三方的应用接口,上述第三方接口返回的参数和/或返回的结果可以保存到文件服务器上,其中,第三方接口返回的参数可以用于替换或覆盖待测试环境中的被测请求,第三方接口返回的结果作为基准结果对待测试环境下的返回结果进行评估。可选的,如图7所示,上述装置还包括:返回模块711。其中,返回模块711,用于在被测请求需要调用第三方接口的情况下,根据复制到的第三方接口返回的参数和/或返回的结果向被测请求返回。在一种可选的实施例中,上述第三方接口返回的参数替换掉待测试环境中的所有请求,并将第三方接口返回的参数中的请求作为待测试环境中的被测请求。然后根据被测请求得到在待测试环境中的返回结果,并通过对比第三方接口返回的结果与待测试环境中的返回结果得到测试结果。可选的,上述复制模块701包括:第一获取模块和第一复制模块。其中,第一获取模块,用于获取不同协议对应的数据,其中,协议包括以下至少之一:HTTP、DUBBO、QMA;第一复制模块,用于将不同协议对应的数据进行复制。在上述第一获取模块和第一复制模块组成的复制模块701中,根据协议的不同,自动化测试平台所引用的jar包也是不同的,并且在不同的协议中可以对jar包进行不同的扩展。在一种可选的实施例中,根据协议请求(例如HTTP协议的请求)在自动化测试平台上选择该协议请求对应的jar包,并将该jar包引入到待测试环境中,对待测试环境中的配置文件进行配置,进而完成对被测请求的测试。需要说明的是,HTTP、DUBBO以及QMQ协议仅为请求的协议,在测试过程中所用到的协议不限于提高的上述三种协议。此处需要说明的是,上述第一获取模块和第一复制模块对应于实施例1中的步骤S202至步骤S204,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。可选的,请求获取模块705包括:代码量获取模块和请求确定模块。其中,代码量获取模块,用于获取多个请求中的每个请求覆盖的代码量;请求确定模块,用于将覆盖代码量满足预定条件的请求作为被测请求。在一种可选的实施例中,上述每个请求覆盖的代码量可以用代码覆盖率来表征,具体的,可以通过选取代码覆盖率最大的请求作为基准请求,然后以该基准请求覆盖的代码量为基准,通过判断其他请求覆盖的代码与基准请求覆盖的代码是否能够覆盖全部的代码来得到被测请求。其中,如表2所示的多个请求与其对应的代码覆盖率。表2请求BACED代码覆盖率78%80%86%86%90%在另一种可选的实施例中,在线运营的服务上的返回结果为第一结果,被测请求被执行时所产生的结果为第二结果。在根据第一结果和第二结果得到测试结果之后,如果第一结果和第二结果存在差异,自动化测试平台可以收集使第一结果与第二结果出现差异的字段,并对该字段进行保存。当进行下一次的测试任务时,可以在测试结果中排除已保存的差异字段对测试结果的影响。其中,上述差异字段可以为但不限于时间戳、随机数。此处需要说明的是,上述代码量获取模块和请求确定模块对应于实施例1中的步骤S302至步骤S304,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。可选的,上述请求确定模块包括:代码量获取模块、判断子模块以及存储模块。其中,代码量获取模块,用于获取当前请求覆盖的代码量;判断子模块,用于判断当前请求覆盖的代码量是否大于上一请求覆盖的代码量;存储模块,用于在当前请求覆盖的代码量大于上一请求覆盖的代码量的情况下,保存当前请求。具体的,所有请求位于请求队列中,在得到每个请求的代码覆盖率之后,所有请求的代码覆盖率以递增的形式在队列中排列,其中,位于队头的请求为当前请求(例如,在表1中,请求B为当前请求)。在一种可选的实施例中,待测试程序的代码覆盖率初始化为0,当前请求B作为请求队列中的未发送请求,位于请求队列的队头。当检测到请求队列中存在未发送请求时,发送该请求,并获取当前请求的代码覆盖率78%。由于78%>0%,因此请求B被筛选出,并保存;当发送完请求B之后,请求A作为当前请求,其代码覆盖率为80%,大于78%,因此,请求A也将被筛选出,并保存。同样,请求C的代码覆盖率86%>80%,请求D的代码覆盖率90%>86%,因此,请求C和请求D被筛选出,并保存;而请求E的代码覆盖率86%不大于请求C的代码覆盖率86%,因此,请求E不会被筛选出。需要说明的是,上述代码量获取模块、判断子模块以及存储模块对应于实施例1中的步骤S402至步骤S406,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。可选的,上述请求确定模块包括:代码量获取模块以及第一筛选模块。其中,代码量获取模块,用于从多个请求中筛选出第一请求,并获取第一请求覆盖的代码量;第一筛选模块,用于根据第一请求未覆盖到的代码,从多个请求中筛选出能够覆盖第一请求未覆盖到的代码的请求作为被测请求。在一种可选的实施例中,通过请求确定模块得到每个请求的代码覆盖率之后,选取代码覆盖率最大的请求作为第一请求,在表2中,选取请求D作为第一请求。如果请求A所覆盖的代码中覆盖了请求D剩余的10%的代码,而其他请求所覆盖的代码覆盖请求D剩余代码的百分比均小于10%,则从上述5个请求中筛选出请求A和请求D。如果请求A所覆盖的代码中只覆盖了请求D剩余的2%的代码,而请求B所覆盖的代码中覆盖了请求D和请求A剩余的8%的代码,而请求C和请求E均只覆盖了请求D剩余的1%的代码,则请求A、请求B和请求E作为被测请求被筛选出。需要说明的是,如果至少两个请求的代码覆盖率相同,并且该代码覆盖率是最大的,此时,从这些请求中任意选择一个请求作为被测请求。此处还需要说明的是,上述代码量获取模块以及第一筛选模块对应于实施例1中的步骤S502至步骤S504,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。可选的,上述请求确定模块还包括:判断模块以及第二筛选模块。其中,判断模块,用于根据多个请求中的每个请求覆盖的代码判断多个请求中的一组请求覆盖的代码是否覆盖程序的全部代码;第二筛选模块,用于在一组请求覆盖的代码覆盖程序的全部代码的情况下,至少两个请求被筛选出,其中,被筛选出的至少两个请求为被测请求。在一种可选的实施例中,对所有的请求进行组合,如果组合后的请求能够覆盖程序的所有代码,则组合后的请求作为被测请求被筛选出。需要说明的是,如果存在多种组合均能覆盖程序的所有代码,则选择组合中包含请求数量最少的请求被筛选出。例如,表2中的请求A和请求B可以覆盖程序中的所有代码,而请求A、请求C和请求D也可以覆盖程序中的所有代码,则请求A和请求B作为被测请求被筛选出。通过上述方法,可以选择请求数量最少的请求组合,可以有效的节省测试时间,提高测试效率。此处还需要说明的是,上述判断模块以及第二筛选模块对应于实施例1中的步骤S602至步骤S604,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1