一种众测方法、装置、终端及存储介质与流程

文档序号:23628732发布日期:2021-01-12 10:42阅读:140来源:国知局
本发明涉及众测
技术领域
:,更具体地说,涉及一种众测方法、装置、终端及存储介质。
背景技术
::众测技术是一种让用户参与产品测试的技术,旨在更好的提升产品品质。众侧技术不仅为测试需求者提供了一个发布任务的广阔空间,也为用户创造了能将知识、智慧、创意等转化商业价值和社会价值的机会。用户通过执行测试需求者发布的测试任务可以换取虚拟物品,甚至可以将虚拟物品兑换成实物奖励。现有的众测技术在用户领取测试任务后是通过人工审核用户最终在意见栏中反馈的测试结果的方式向用户发放虚拟物品。此种仅基于用户反馈的测试结果确定用户是否执行了测试任务的方式,无法分辨出用户反馈了测试任务的测试结果却未执行测试任务的情况,因此无法防止用户作弊情况的发生,导致测试结果不准确。技术实现要素:有鉴于此,为解决上述问题,本发明提供一种众测方法、装置、服务器及存储介质,以提高测试结果的准确性。技术方案如下:一种众测方法,包括:在待测应用存在用户界面ui事件时调用目标函数,所述目标函数用于在所述待测应用启动时替换所述待测应用中与所述ui事件所属的事件类型对应的系统函数;运行所述目标函数获取所述ui事件的操作数据;调用所述系统函数传递所述ui事件;基于响应测试任务执行过程获取到的各个操作数据,生成所述测试任务的测试结果。一种众测装置,包括:目标函数调用单元,用于在待测应用存在用户界面ui事件时调用目标函数,所述目标函数用于在所述待测应用启动时替换所述待测应用中与所述ui事件所属的事件类型对应的系统函数;操作数据获取单元,用于运行所述目标函数获取所述ui事件的操作数据;系统函数调用单元,用于调用所述系统函数传递所述ui事件;测试结果生成单元,用于基于响应测试任务执行过程获取到的各个操作数据,生成所述测试任务的测试结果。一种终端,包括:处理器以及存储器,所述处理器以及存储器通过通信总线相连;其中,所述处理器,用于调用并执行所述存储器中存储的程序;所述存储器,用于存储程序,所述程序用于实现所述众测方法。一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行所述众测方法。本申请提供一种众测方法、装置、终端及存储介质,在待测应用存在ui事件时调用目标函数,目标函数用于在待测应用启动时替换待测应用中与ui事件所属的事件类型对应的系统函数;运行目标函数获取ui事件的操作数据;调用系统函数传递ui事件;基于响应测试任务执行过程获取到的各个操作数据,生成测试任务的测试结果。本申请基于获取到的测试任务执行过程中产生的ui事件的操作数据生成测试任务的测试结果,可以避免用户在意见栏中反馈的原始测试结果不准确的问题。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例提供的一种在待测应用中接入众测技术的方法流程图;图2(a)-(b)为本申请实施例提供的一种在待测应用中接入众测技术的方法示意图;图3(a)-(b)为本申请实施例提供的另一种在待测应用中接入众测技术的方法示意图;图4为本申请实施例提供的又一种在待测应用中接入众测技术的方法示意图;图5为本申请实施例提供的一种众测方法流程图;图6为本申请实施例提供的一种众测方法示意图;图7为本申请实施例提供的一种在待测应用存在ui事件时调用目标函数的方法流程图;图8为本申请实施例提供的一种调用系统函数传递ui事件的方法流程图;图9为本申请实施例提供的一种基于响应测试任务执行过程获取到的各个操作数据,生成测试任务的测试结果的方法流程图;图10为本申请实施例提供的一种众测装置的结构示意图;图11为本申请实施例提供的一种适用于本申请实施例提供的一种众测方法的终端的硬件结构框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。现有的众测技术是由测试需求者发布测试任务,用户看到测试需求者发布的测试任务后,领取并执行其想要执行的测试任务最后在意见栏中输入测试结果,进而通过人工审核用户在意见栏中输入的测试结果的方式,确定是否为用户发放虚拟物品。其中,虚拟物品比如积分、q币、游戏装备等等。以上仅仅是本申请实施例提供的虚拟物品的优选方式,有关虚拟物品的具体内容发明人可根据自己的需求进行设置在此不做限定。比如,测试需求发布者发布的测试任务是体验/测试a游戏的a1功能时,测试任务可以提示用户体验/测试a游戏的a1功能需要依次执行的各个操作步骤;用户领取测试任务后,不论是否真的按照测试任务提示的各个操作步骤依次执行,均可以最后在意见栏中输入测试结果,进而由人工审查该测试结果确定是否向该用户发放虚拟物品。其中,测试结果可以为该用户的用户体验,比如,a游戏的a1功能是否卡顿、界面是否清晰、是否出现bug等等。因为用户在意见栏中输入的测试结果并不能真实体现用户是否真正的执行了测试任务,所以通过人工审核测试结果的方式并不能分辨出用户反馈了测试结果但未执行测试任务的情况,而此种情况下用户反馈的测试结果并不一定是准确的,这就导致了收集到的测试结果准确性低的问题。为了便于区分,本申请实施例中将用户在意见栏中输入的测试结果称为原始测试结果。本申请实施例提供一种众测方法、装置、服务器及存储介质,获取用户执行测试任务过程中的操作数据,基于操作数据来确定用户执行测试任务的操作步骤,由此生成该测试任务的测试结果,该测试结果反映用户在意见栏中输入的原始测试结果的准确性。本申请实施例提供的一种众测方法应用于待测应用,待测应用为第三方应用。待测应用可以发布测试任务,由用户领取并执行测试任务,并且在用户执行测试任务的过程中获取操作数据,进而基于操作数据生成该测试任务的测试结果。在本申请实施例中,可以提供封装有本申请实施例提供的一种众测技术的sdk(softwaredevelopmentkit,软件开发工具包),为待测应用提供sdk,待测应用启动时调用该sdk的接口,将本申请实施例提供的一种众测技术接入到待测应用。sdk在提供众测技术时,需要应用第三方库,为了避免待测应用使用同样的第三方库而引起程序冲突的问题,可以对第三方库进行改造,以得到目标第三方库,将目标第三方库作为sdk应用的第三方库。其中,对第三方库进行改造可以包括将第三方库的文件名、方法名、部分方法实现的改造,以使得目标第三方库可以被sdk使用提供众测技术的基础上,不与待测应用使用的第三方库引起程序冲突。为了便于理解,现先对本申请实施例提供的一种在待测应用中接入众测技术的方法进行详细说明。具体请参见图1。如图1所示,该方法包括:s101、在待测应用启动时,确定待测应用中与ui事件所属的事件类型对应的系统函数;在本申请实施例中,待测应用先编译,在启动,进而在运行。在待测应用运行时,若产生ui(userinterface,用户界面)事件,会调用待测应用中与该ui事件所属的事件类型对应的系统函数,来传递该ui事件。其中,事件类型可以为uiapplication事件类型、uicontrol事件类型、uinavigationcontroller事件类型、uitableview事件类型、uiviewcontroller事件类型、系统事件数据事件类型等等。以上仅仅是本申请实施例提供的事件类型的优选方式,有关事件类型的具体内容,发明人可根据自己的需求进行设置,在此不做限定。待测应用中不同事件类型对应不同的系统函数,属于不同事件类型的ui事件调用的系统函数不同,属于相同事件类型的ui事件调用相同的系统函数。相应的,步骤s101中,在待测应用启动时,需要确定待测应用中所有的系统函数,这里的系统函数指的是待测应用运行时用于被ui事件调用的系统函数。即,在待测应用启动时,确定待测应用中分别对应每个事件类型的系统函数。s102、获取系统函数的函数名的第一函数名地址和系统函数的函数体的第一函数体地址,第一函数名地址指示第一函数体地址;在本申请实施例中,待测应用在编译时,针对每个系统函数而言,会确定该系统函数的函数名的第一函数名地址和该系统函数的函数体的第一函数体地址。其中,系统函数的第一函数体地址中存储有系统函数的函数体,系统函数的第一函数名地址中存储有指针,系统函数的函数名的第一函数名地址中存储的指针用于指向第一函数体地址。s103、确定与ui事件所属的事件类型对应的目标函数;在本申请实施例中,sdk中包括多个目标函数,不同的目标函数对应的事件类型不同,在待测应用编译时,sdk也进行编译。相应的,在待测应用启动时,针对每个事件类型而言,除了获取该事件类型对应的系统函数的函数名的第一函数名地址和该系统函数的函数体的第一函数体地址,还会确定与该事件类型对应的目标函数,并获取该目标函数的函数名的第二函数名地址和该目标函数的函数体的第二函数体地址。其中,目标函数的第二函数体地址中存储有目标函数的函数体,目标函数的第二函数名地址中存储有指针,目标函数的第二函数名地址中存储的指针指向第二函数体地址。s104、获取目标函数的函数名的第二函数名地址和目标函数的函数体的第二函数体地址,第二函数名地址指示第二函数体地址;s105、将第一函数体地址存储的系统函数的函数体和第二函数体地址存储的目标函数的函数体互换。在本申请实施例中,针对每个事件类型,在确定与该事件类型对应的系统函数和目标函数,并获取到该系统函数的函数名的第一函数名地址、该系统函数的函数体的第一函数体地址、该目标函数的函数名的第二函数名地址和该目标函数的函数体的第二函数体地址后,可以将第一函数体地址中的函数体和第二函数体地址中的函数体互换。作为本申请实施例的一种优选实施方式,在待测应用启动时,针对待测应用中每个事件类型对应的系统函数而言,确定与该事件类型对应的目标函数,确定编译后的该系统函数的第一函数体地址和编译后的该目标函数的第二函数体地址,将该系统函数的第一函数体地址中的函数体与目标函数的第二函数体地址中的函数体互换。在本申请实施例中,在执行完成上述步骤s101-s105后,待测应用中系统函数的第一函数名地址中的指针仍然指向第一函数体地址,目标应用的第二函数名地址中的指针仍然指向第二函数体地址,只是第一函数体地址中存储的是目标函数的函数体,第二函数体地址中存储的是系统函数的函数体。图2、图3和图4为本申请实施例提供的一种在待测应用中接入众测技术的方法示意图。其中,图2(a)为待测应用中编译后的系统函数的示意图,系统函数编译后可以得到系统函数的函数名的第一函数名地址和系统函数的函数体的第一函数体地址,其中,第一函数名地址中存储有指针(为了便于区分,暂将第一函数名地址中存储的指针称为第一指针),第一函数体地址中存储有系统函数的函数体,第一函数名地址中存储的第一指针指向第一函数体地址。图2(b)为编译后的目标函数的示意图,目标函数编译后可以得到目标函数的函数名的第二函数名地址和目标函数的函数体的第二函数体地址,第二函数名地址中存储有指针(为了便于区分,暂将第二函数名地址中存储的指针称为第二指针),第二函数体地址中存储有目标函数的函数体,第二函数名地址中存储的第二指针指向第二函数体地址。对图2(a)的第一函数体地址中存储的函数体和图2(b)的第二函数体地址中存储的函数体互换,所得到的结果如图3所示,其中图3(a)对应图2(a),图3(b)对应图2(b)。参见图3(a)可知:系统函数的第一函数名地址中存储的第一指针仍然指向系统函数的第一函数体地址,只是第一函数体地址中存储的不在是系统函数的函数体,而是目标函数的函数体。参见图3(b)可知:目标函数的第二函数名地址中存储的第二指针仍然指向目标函数的第二函数体地址,只是第二函数体地址中存储的不在是目标函数的函数体,而是系统函数的函数体。待测应用在运行时,若产生ui事件,会调用待测应用中与ui事件所属的事件类型对应的系统函数,调用系统函数的方式为先确定系统函数的函数名的第一函数名地址,调用第一函数名地址中存储的函数体,因为此时函数体中存储的是目标函数的函数体,因此,真实调用的是目标函数的函数体。在本申请实施例中,目标函数的函数体的功能是获取ui事件的操作数据,因此,调用目标函数的函数体可以获取ui事件的操作数据。为了保证待测应用能够正常传递ui事件,仍然需要调用系统函数,因此,从执行功能上看,目标函数的函数体除了具有获取ui事件的操作数据的功能以外,还需具有调用系统函数的功能。即,运行目标函数的函数体,除了获取ui事件的操作数据,还会调用系统函数,传递ui事件,以保证待测应用的正常运行。然而,因为在将第一函数体地址中的函数体和第二函数体地址中的函数体互换后,系统函数的函数体位于目标函数的第二函数体地址中;因此,从执行方式上看,可以采用在目标函数体中调用目标函数的方式达到调用系统函数的功能。作为本申请实施例的一种优选实施方式,运行目标函数体,除了获取ui事件的操作数据以外,还会调用目标函数,其中,调用目标函数的过程是先确定目标函数的函数名的第二函数名地址,根据第二函数名地址中存储的指针确定第二函数体地址,进而调用存储于第二函数体地址中的系统函数的函数体,达到传递ui事件的目的,进而保证待测应用的正常运行。现结合图4对本申请实施例提供的一种众测方法中的函数调用过程进行详细说明。参见图4可知:本申请实施例提供的一种众测方法,在产生ui事件后,先确定系统函数的函数名的第一函数名地址,确定第一函数名地址指示的第一函数体地址,第一函数体地址中存储有目标函数的函数体,运行目标函数的函数体获取ui事件的操作数据以及调用目标函数,调用目标函数的方式为确定目标函数的函数名的第二函数名地址,确定第二函数名地址指示的第二函数体地址,运行第二函数体地址中存储的系统函数的函数体。本申请实施例通过在运行目标函数的函数体的过程中调用目标函数,可以达到调用系统函数的功能的目的,通过调用系统函数这一功能可以达到传递ui事件的目的。在本申请实施例中,待测应用可以为ios应用,可以基于ios开发语言oc(objective-c)的methodswizzling及category特性在待测应用启动时,实现上述实施例所述的在待测应用中接入众测技术的方法。结合上述对本申请实施例提供的上述在待测应用中接入众测技术的方法的介绍,现对本申请实施例提供的一种众测方法进行详细说明。图5为本申请实施例提供的一种众测方法流程图。如图5所示的众测方法应用于待测应用,此处的待测应用是指接入了sdk后的待测应用。如图5所示,该方法包括:s501、在待测应用存在ui事件时调用目标函数,目标函数用于在待测应用启动时替换待测应用中与ui事件所属的事件类型对应的系统函数;在本申请实施例中,在待测应用中存在ui事件时,调用ui事件所属的事件类型对应的目标函数,该目标函数在待测应用启动时用于替换待测应用中与ui事件所属的事件类型对应的系统函数。s502、运行目标函数获取ui事件的操作数据;在本申请实施例中,运行目标函数以从ui事件所属的事件类型所包括的至少一个子事件类型中,确定该ui事件所属的子事件类型(为了便于区分,暂时将所确定的该ui事件所属的子事件类型称为目标子事件类型),确定与目标子事件类型对应的至少一个参数信息,并从ui事件中获取至少一个参数信息中的每个参数信息的参数值,以生成该ui事件的操作数据。其中,可以将从ui事件中获取到的至少一个参数信息中的每个参数值拼接成该ui事件的操作数据。比如,uicontrol事件类型可以包括两个子事件类型,分别为uibutton子事件类型、uiswitch子事件类型;uitableview事件类型中不包括子事件类型等等。有关事件类型所包括的子事件类型发明人可根据自己的需求进行设置,在此不做限定。进一步的,本申请实施例提供的一种众测方法,在从ui事件中获取目标事件子类型对应的至少一个参数信息中的每个参数信息的参数值之前,还可以确定目标子事件类型是否为隐私事件类型,若目标子事件类型为隐私事件类型,拒绝获取该ui事件的操作数据,而是直接调用系统函数传递该ui事件。作为本申请实施例的另一种优选实施方式,当ui事件所属的事件类型中不包括子事件类型时,可以确定与事件类型对应的至少一个参数信息,并从ui事件中获取至少一个参数信息中每个参数信息的参数值,以生成该ui事件的操作数据。进一步的,本申请实施例提供的一种众测方法,在从ui事件中获取事件类型对应的至少一个参数信息中的每个参数信息的参数值之前,还可以确定事件类型是否为隐私事件类型,若事件类型为隐私事件类型,拒绝获取该ui事件的操作数据,而是直接调用系统函数传递该ui事件。在本申请实施例中,可以预先设置至少一个隐私事件类型,若目标子事件类型为至少一个隐私事件类型中的任意一个隐私事件类型,确定目标子事件类型为隐私事件类型;若事件类型为至少一个隐私事件类型中的任意一个隐私事件类型,确定事件类型为隐私事件类型。其中,隐私事件类型比如,与键盘事件相关的事件类型、与消息事件相关的事件类型等等涉及用户敏感隐私信息的事件类型,有关隐私事件类型的具体内容发明人可根据自己的需求进行设置,在此不做限定。在本申请实施例中,事件类型对应的至少一个参数信息可以为页面大小、后续事件、按钮等与事件类型相关的信息,不同的事件类型对应的参数信息可能相同也可能不同。相应的,目标子事件类型对应的至少一个参数信息也可以为页面大小、后续事件、按钮等与目标子事件类型相关的信息,不同的子事件类型对应的参数信息可能相同也可能不同。参数信息的参数值为ui事件中参数信息的数值。比如,参数信息为页面大小时,参数信息的参数值可以为8.5x11英寸。以上仅仅是本实施例提供的参数信息和参数值的优选内容,有关事件类型对应的参数信息的具体内容,发明人可根据自己的需求进行设置,在此不做限定。s503、调用系统函数传递ui事件;s504、基于响应测试任务执行过程获取到的各个操作数据,生成测试任务的测试结果。在本申请实施例中,用户领取测试任务后,可以执行测试任务,本申请实施例提供的一种众测方法可以响应测试任务的执行过程获取该测试任务执行过程中的各个操作数据,进而基于该测试任务执行过程中的各个操作数据,生成该测试任务的测试结果。用户领取测试任务后不论是否执行测试任务均可以最后在意见栏中反馈原始测试结果,本申请实施例提供的一种众测方法可以进一步基于获取到的用户在执行测试任务过程中的各个操作数据生成测试结果,该测试结果包括目标信息,目标信息用于表征原始测试结果的准确性。作为本申请实施例的另一种实施方式,本申请实施例中的基于操作数据生成的测试结果可以既包括原始测试结果又包括目标信息,目标信息用于表征原始测试结果的准确性。这样,可以及时发现准确性不高的原始测试结果,提高收到的原始测试结果的准确性。在实际应用过程中,待测应用由待测应用客户端和待测应用服务器构成,待测应用服务器为待测应用客户端提供技术支持。图6为本申请实施例提供的一种众测方法示意图,参见图6作为本申请实施例的一种优选实施方式为了提高本申请实施例提供的一种众测方法的执行效率、缓解待测应用客户端的压力,可以在待测应用客户端执行步骤s501-s503以在保证待测应用正常运行的基础上获取测试任务的操作数据,并且由待测应用客户端将操作数据上传到待测应用服务器,由待测应用服务器执行步骤s504得到测试任务的测试结果。在本申请实施例中,可以每当待测应用客户端获取到预设条数的操作数据后,统一将预设条数的操作数据上传到待测应用服务器并删除待测应用客户端中的该预设条数的操作数据。在本申请实施例中,预设条数可以为100条、200条等等。以上仅仅是本申请实施例提供的预设条数的优选数值,有关预设条数的具体数值发明人可根据自己的需求进行设置,在此不做限定。作为本申请实施例提供的另一种优选实施方式,也可以由待测应用客户端执行步骤s501-s504,以上仅仅是本申请实施例提供的众测方法的优选实现方式,有关众测方法的具体实现方式,发明人可根据自己的需求进行设置,在此不做限定。为了便于对本申请实施例提供的一种众测方法的理解,现对本申请实施例提供的一种众测方法中的在待测应用存在ui事件时调用目标函数的方法进行详细说明,具体请参见图7。如图7所示,该方法包括:s701、在待测应用存在ui事件时,获取第一函数名地址指示的第一函数体地址;在待测应用在运行时若存在ui事件,确定待测应用中用于被ui事件调用的系统函数的函数名的第一函数名地址,获取该第一函数名地址指示的第一函数体地址。s702、调用第一函数体地址中的目标函数的函数体。在本申请实施例中,因为在待测应用启动时,已经将第一函数体地址中存储的系统函数的函数体与第二函数体地址中存储的目标函数的函数体互换,因此,在调用第一函数体地址中的函数体时,实际上调用的是目标函数的函数体,由此实现了对目标函数的调用。为了便于对本申请实施例提供的一种众测方法的理解,现对本申请实施例提供的一种众测方法中的调用系统函数传递ui事件的方法进行详细说明,具体请参见图8。如图8所示,该方法包括:s801、运行目标函数的函数体,确定第二函数名地址指示的第二函数体地址;在本申请实施例中,在上述步骤s702调用目标函数的函数体后,可以运行该目标函数的函数体,目标函数的函数体在运行过程中,会获取ui事件的操作数据,并且在获取到ui事件的操作数据后会调用目标函数。其中,调用目标函数的过程中,会先确定目标函数的第二函数名地址,并获取该第二函数名地址指示的第二函数体地址。s802、调用第二函数体地址中的系统函数的函数体传递ui事件。在本申请实施例中,因为在待测应用启动时,已经将第一函数体地址中存储的系统函数的函数体与第二函数体地址中存储的目标函数的函数体互换,因此,在调用第二函数体地址中的函数体时,实际上调用的是系统函数的函数体,由此实现了对系统函数的调用这一功能。为了便于对本申请实施例提供的一种众测方法的理解,现对本申请实施例提供的一种众测方法中的基于响应测试任务执行过程获取到的各个操作数据,生成测试任务的测试结果的方法进行详细说明,具体请参见图9。如图9所示,该方法包括:s901、确定响应测试任务执行过程依次获取到的各个操作数据;在本申请实施例中,用户领取测试任务后,在执行测试任务时,本申请实施例提供的一种众测方法可以响应测试任务执行过程,获取测试任务执行过程中依次产生的每个ui事件的操作数据。s902、将依次获取到的各个操作数据映射成由依次排序的至少一个操作步骤构成的操作步骤序列;在本申请实施例中,将测试任务执行过程中依次获取到的各个操作数据看成一个操作数据序列,将该操作数据序列映射成一个操作步骤序列,操作步骤序列由依次排列的至少一个操作步骤构成;其中,操作数据序列中连续的一个或多个操作数据可以映射成一个操作步骤。比如,测试任务执行过程中获取到的各个操作数据依次为操作数据1、操作数据2、操作数据3、操作数据4和操作数据5;将为操作数据1、操作数据2、操作数据3、操作数据4和操作数据5看成一个操作数据序列,若是操作数据1和操作数据2可以映射成一个操作步骤(该操作步骤暂称为操作步骤1),操作数据3可以映射成一个操作步骤(该操作步骤暂称为操作步骤2),操作数据4和操作数据5可以映射成一个操作步骤(该操作步骤暂称为操作步骤3),则操作数据序列映射成的操作步骤序列由3个操作步骤构成,依次为操作步骤1、操作步骤2和操作步骤3。在本申请实施例中,操作步骤可以理解为用户对待测应用的操作步骤,一个操作步骤可能对应一个或多个ui事件,获取每个ui事件的操作数据,因此,一个操作步骤可能对应一个或多个操作数据。s903、确定预先设置的与测试任务匹配的标准操作步骤序列,标准操作步骤序列由依次排序的至少一个标准操作步骤构成;在本申请实施例中,预先设置有与测试任务匹配的标准操作步骤序列,该标准操作步骤序列由至少一个依次排序的至少一个标准操作步骤构成。s904、比较操作步骤序列和标准操作步骤序列生成测试结果,测试结果包括用户反馈的测试任务的原始测试结果以及用于表征原始测试结果的准确性的目标信息。在本申请实施例中,将测试任务的操作数据映射成的操作步骤序列和预先设置的与该测试任务匹配的标准操作步骤序列进行比较,得到操作步骤序列和标准操作步骤序列的相似度,并将操作步骤序列和标准操作步骤序列的相似度作为用户在意见栏中输入的测试任务的原始测试结果的准确度,准确度越高原始测试结果的准确性越高,将该准确度作为生成的测试结果中的目标信息。更进一步的,在生成的测试结果中的原始测试结果表征测试任务存在异常时,可以按照该测试任务生成的操作步骤序列中各个操作步骤的次序,依次自动执行操作步骤序列中的各个操作步骤,以复现测试任务执行过程,进而便于发现测试任务异常的原因。其中,测试任务异常可以为测试任务执行过程中出现bug、测试任务执行过程中出现卡顿、测试任务执行过程中界面不清晰等等。以上仅仅是本申请实施例提供的测试任务异常的几种优选实施方式,有关测试任务异常的具体内容,发明人可根据自己的需求进行设置,在此不做限定。图10为本申请实施例提供的一种众测装置的结构示意图。如图10所示,该装置包括:目标函数调用单元101,用于在待测应用存在用户界面ui事件时调用目标函数,目标函数用于在待测应用启动时替换待测应用中与ui事件所属的事件类型对应的系统函数;操作数据获取单元102,用于运行目标函数获取ui事件的操作数据;系统函数调用单元103,用于调用系统函数传递ui事件;测试结果生成单元104,用于基于响应测试任务执行过程获取到的各个操作数据,生成测试任务的测试结果。本申请实施例提供的一种众测装置还包括替换单元,该替换单元包括:系统函数确定单元,用于在待测应用启动时,确定待测应用中与ui事件所属的事件类型对应的系统函数;第一获取单元,用于获取系统函数的函数名的第一函数名地址和系统函数的函数体的第一函数体地址,第一函数名地址指示第一函数体地址;目标函数确定单元,用于确定与ui事件所属的事件类型对应的目标函数;第二获取单元,用于获取目标函数的函数名的第二函数名地址和目标函数的函数体的第二函数体地址,第二函数名地址指示第二函数体地址;互换单元,用于将第一函数体地址存储的系统函数的函数体和第二函数体地址存储的目标函数的函数体互换。在本申请实施例中,优选的,目标函数调用单元包括:第三获取单元,用于在待测应用存在ui事件时,获取第一函数名地址指示的第一函数体地址;第一调用单元,用于调用第一函数体地址中的目标函数的函数体。在本申请实施例中,系统函数调用单元包括:第一确定单元,用于运行目标函数的函数体,确定第二函数名地址指示的第二函数体地址;第二调用单元,用于调用第二函数体地址中的系统函数的函数体传递ui事件。在本申请实施例中,优选的,操作数据获取单元包括:第二确定单元,用于运行目标函数确定ui事件所属的目标子事件类型,目标子事件类型为事件类型中的至少一个子事件类型中的一个子事件类型;第三确定单元,用于确定与目标子事件类型对应的至少一个参数信息;第四获取单元,用于获取ui事件中每个参数信息的参数值,生成ui事件的操作数据。在本申请实施例中,优选的,测试结果生成单元包括:第四确定单元,用于确定响应测试任务执行过程依次获取到的各个操作数据;映射单元,用于将依次获取到的各个操作数据映射成由依次排序的至少一个操作步骤构成的操作步骤序列;第五确定单元,用于确定预先设置的与测试任务匹配的标准操作步骤序列,标准操作步骤序列由依次排序的至少一个标准操作步骤构成;比较单元,用于比较操作步骤序列和标准操作步骤序列生成测试结果,测试结果包括用户反馈的测试任务的原始测试结果以及用于表征原始测试结果的准确性的目标信息。进一步的,本申请实施例提供的一种众测装置还包括:复现单元,用于依次执行操作步骤序列中的各个操作步骤复现测试任务执行过程。在对本申请实施例提供的一种众测装置进行说明的基础上,现进一步用于执行本申请实施例提供的一种众测方法的终端进行详细介绍,具体请参见图11。如图11所示该终端可以包括:处理器111、存储器112、通信接口113、输入单元114和显示器115和通信总线116。存储器112中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以下功能的程序:在待测应用存在用户界面ui事件时调用目标函数,所述目标函数用于在所述待测应用启动时替换所述待测应用中与所述ui事件所属的事件类型对应的系统函数;运行所述目标函数获取所述ui事件的操作数据;调用所述系统函数传递所述ui事件;基于响应测试任务执行过程获取到的各个操作数据,生成所述测试任务的测试结果。可选的,程序的细化功能和扩展功能可参照下文描述。处理模块111、存储器112、通信接口113、输入单元114、显示器115、均通过通信总线116完成相互间的通信。在本申请实施例中,该处理器111,可以为中央处理器(centralprocessingunit,cpu),特定应用集成电路(application-specificintegratedcircuit,asic),数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件等。该处理器可以调用并执行存储器112中存储的程序。该通信接口113可以为通信模块的接口,如gsm模块的接口。本申请还可以包括输入单元114,该输入单元可以包括感应触摸显示面板上的触摸事件的触摸感应单元、键盘等等。该显示器115包括显示面板,如触摸显示面板等。在一种可能的情况中,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板。当然,图11所示的终端结构并不构成对本申请实施例中终端的限定,在实际应用中终端可以包括比图11所示的更多或更少的部件,或者组合某些部件。进一步的,本发明实施例还提供一种所述计算机可读存储介质,该计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行上述众测方法。有关本申请实施例提供的存储介质中存储的程序的详细描述可参照上述实施例,在此不做赘述。本申请提供一种众测方法、装置、终端及存储介质,在待测应用存在ui事件时调用目标函数,目标函数用于在待测应用启动时替换待测应用中与ui事件所属的事件类型对应的系统函数;运行目标函数获取ui事件的操作数据;调用系统函数传递ui事件;基于响应测试任务执行过程获取到的各个操作数据,生成测试任务的测试结果。本申请基于获取到的测试任务执行过程中产生的ui事件的操作数据生成测试任务的测试结果,可以避免用户在意见栏中反馈的原始测试结果不准确的问题。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域
:内所公知的任意其它形式的存储介质中。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的核心思想或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1