具体实施方式
本申请实施例提供一种针对业务系统的测试完整度的检测方法和装置。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请一实施例中测试完整度的检测装置与所适用的业务系统的连接图。
在实际应用中,业务系统可以是业内常见的社交系统、在线视频系统、即时通讯系统、游戏系统、在线购物系统以及在线支付系统等,这些业务系统在上线供用户使用前,均需要通过大量测试用例进行测试,以确保业务系统各业务场景均能可靠运行。基于确定测试是否覆盖了业务系统所有业务场景的需求,提出了测试完整度的概念,即测试覆盖了越多业务场景,测试完整度也越高。测试完整度可以采用百分比形式来体现,在测试覆盖了所有业务场景后,测试完整度则为百分之百。
检测装置100作为测试完整度的检测方法的执行主体,能够通过网络200与用于承载前述业务系统的业务服务器300建立连接。在利用测试用例对这些业务系统进行测试后,检测装置100可以通过网络200从业务服务器300获取其业务系统的各业务场景的测试数据,进而根据这些测试数据确定业务系统的测试完整度。
当然,业务系统还可以是分布式系统,该分布式系统包括多台业务服务器300,检测装置100与该系统内所有业务服务器300均通过网络200建立连接,在此不作赘述。
检测装置100还通过网络400与终端设备500建立连接,能够通过网络400将所检测到的业务系统的测试完整度发送至终端设备500,从而便于用户通过终端设备500查看业务系统的测试完整度。
检测装置100与业务服务器300均可以是计算机设备,例如可以是台式计算机、膝上型计算机、平板计算机、智能手机、手持式计算机、个人数字助理(“PDA”)等设备。
网络200和网络400君可以包括有线或无线电信装置,例如可以包括局域网(“LAN”)、广域网(“WAN”)、内部网、互联网、移动电话网络、虚拟专用网(VPN)、蜂窝式或其它移动通信网络、蓝牙、NFC或其任何组合。
终端设备500是包括能够经由网络400发出并接收数据的通信模块的装置。终端设备500同样可以是台式计算机、膝上型计算机、平板计算机、智能手机、手持式计算机、个人数字助理(“PDA”)等设备。
图2为本申请一实施例中测试完整度的检测方法的过程,该检测方法的执行主体可以是前述检测装置100,其针对业务服务器300上的业务系统的测试完整度进行检测,该检测方法包括如下步骤。
S10、接收针对业务系统的检测请求,检测请求包括:用于描述待检业务场景的待检字段。
在实际应用中,检测请求可以是用户利用终端设备500经由网络400发送至检测装置100的,也可以是检测装置100依照预设检测逻辑来自动生成的,这个预设检测逻辑可以是定期自动检测逻辑或空闲自动检测逻辑等,在此不作赘述。
检测请求包括:用于描述待检业务场景的待检字段。待检业务场景用于描述用户计划检测的业务系统内的至少一个业务场景,针对业务系统类型的不同,待检业务场景也有所不同。在实际应用中,待检业务场景可以默认为对应业务系统的所有业务场景,也可以根据用户操作来选择其中部分业务场景。
待检字段的数量与待检业务场景的数量相同,也可设置成多于待检业务场景的数量,仅需保证每个待检字段均具有唯一确定的待检业务场景即可,实现每个待检字段均能描述唯一的待检业务场景。在实际应用中,待检字段可以根据业务系统对各待检业务场景的命名规则来生成,以提高待检字段和待检业务场景的匹配效率。
为便于针对业务系统快速生成检测请求,可以将业务系统内业务场景和相应的字段关联后填入预设映射表内。后续无论针对哪个业务系统,仅需找到相应的预设映射表即可根据需求选定待检字段,并基于待检字段形成检测请求,实现快速生成所需的检测请求。
以业务系统为在线支付系统,检测请求是用户利用终端设备500经由网络400发送至检测装置100为例;业务服务器300即为在线支付服务器,在线支付系统包括有较多业务场景,例如“使用余额支付”、“使用红包支付”等,基于这些业务场景和相应的字段所生成的预设映射表可参表1所示。
序号 |
业务场景 |
字段 |
1 |
使用余额支付 |
pay_channel=balance |
2 |
使用红包支付 |
pay_channel=conpon |
3 |
使用预付卡支付 |
pay_channel=prepaidcard |
4 |
使用优惠券支付 |
pay_channel=discount |
表1
本申请实施例中,终端设备500内设置有字段选择页面,该字段选择页面展示了业务系统内可供选择的字段以及这些字段所对应的业务场景。用户选择的字段则作为待检字段和相应的业务场景(即待检业务场景)一并形成检测请求发送至检测装置100内。
延续上例,终端设备500内可以依照表1形成字段选择页面,则可以选出针对在线支付页面的待检字段。例如待检字段选为所有4个字段,则待检业务场景选定为表1所示的4个业务场景,在此不作赘述。
S20、获取发送至业务系统的测试用例,测试用例包括:用于描述该测试用例所对应的业务场景的场景字段。
在实际应用中,检测装置100可通过多种方式获取发送至业务系统的测试用例,例如由于业务系统在执行测试用例时,一般会将测试用例及针对这些测试用例的执行结果记入系统日志文件内,检测装置100可以通过查阅系统日志文件来获取所需的测试用例;或者检测装置100还可以通过在生成测试用例并发送至业务系统时,预先存储这些测试用例,检测装置可以通过调用这些预设存储的测试用例来实现获取发送至业务系统的测试用例,在此不作赘述。
测试用例内具有用于描述该测试用例所对应的业务场景的场景字段,场景字段同样是业务系统对于各业务场景的命名规则来形成的。
延续上例,仍以业务系统为在线支付系统为前提,发送至在线支付系统的测试用例如表2所示。
序号 |
测试用例 |
1 |
User=李磊,pay_channel=balance,amount=99,from=tao… |
2 |
User=韩梅梅,pay_channel=balance,amount=10,from=tao… |
3 |
User=Lili,pay_channel=balance,amount=24,from=tma… |
4 |
User=Lucy,pay_channel=coupon,amount=22,from=tao… |
5 |
User=Jim,pay_channel=prepaidcard,amount=18,from=tao… |
6 |
User=Kate,pay_channel=prepaidcard,amount=15,from=tma… |
7 |
User=Green,pay_channel=prepaidcard,amount=24,from=tao… |
8 |
User=Tom,pay_channel=prepaidcard,amount=13,from=tma… |
表2
由表2所知,由于场景字段也是按照业务系统针对业务场景的语法规则来生成的,各场景字段与待检字段的写法相同,二者均可以参照表1内字段写法,在此不作赘述。
本申请实施例中,检测装置100可以通过截取业务系统的业务流量,并以业务流量作为测试用例,从而快速获取大量的测试用例以对业务系统的可靠性进行测试。
值得注意的是:这里的业务流量用于描述业务系统在运行过程中所执行的任务数据,任务数据内包括有该任务的发起者、任务额度、业务场景等多种因素,由于测试用例正是用于模拟这些业务流量,因此通过业务流量作为测试用例,能够有效保证测试用例格式的正确性。
在实际应用中,检测装置100可以通过对业务系统内记录业务流量执行过程的系统日志文件进行查阅,来得到业务流量。并且,检测装置100也可以在业务流量进入业务系统时,直接对业务流量进行截留,以得到作为测试用例的业务流量。
当然,在业务系统为分布式系统时,检测装置100需要获取分布式系统内各业务服务器300内业务流量,以得到完整业务流量来作为测试用例。
S30、根据待检字段,在各测试用例中筛选出场景字段为待检字段的目标用例,并将目标用例的场景字段作为已检字段。
由于场景字段和待检字段均是按照业务系统针对业务场景的语法规则来生成的,针对在线支付系统的测试用例(也可以理解为业务流量)内的场景字段,同样可以是待检字段。
在本申请实施例中,通过待检字段来筛选测试用例,则可以得到场景字段为待检字段的目标用例,后续将目标用例的场景字段作为已检字段。
延续上例,仍以业务系统为在线支付系统为前提,若是待检字段涵盖表1所界定出的4个字段,利用这4个待检字段来筛选表2中测试用例,则得到如下结论:
表2中序号1、2和3的测试用例内均包括有表1中序号1的字段“pay_channel=balance”,这三个测试用例均为目标测试用例;
表2中序号4的测试用例内均包括有表2中序号2的字段“pay_channel=conpon”,这三个测试用例均为目标测试用例;
表2中序号5、6、7和8的测试用例内均包括有表2中序号3的字段“pay_channel=prepaidcard”,这三个测试用例均为目标测试用例。
综合上述结论,则表2中序号1、2和3的字段将被确定为已检字段。
S40、对相同的已检字段进行去重处理。
由于测试用例的量级较大,则会有较多属于同一个业务场景的测试用例出现,同一个业务场景只需要检测一次,则可以判定该业务场景被检测过。因此,需要对已检测过的、相同的业务场景去重复,仅保留一个即可。对应的,仅需对相同的已检字段进行去重即可,实现前述对已检测过的业务场景进行去重。
延续上例,仍以业务系统为在线支付系统为前提,待检字段涵盖表1所界定出的4个字段,利用这4个待检字段来筛选表2中测试用例,得到表2中序号1、2和3的字段将被确定为已检字段。其中,序号1、2和3的已检字段的数量分别为3、1、4,则仅需对序号1和3的已检字段进行去重即可。
通过去重处理后,已检字段的数量被调整为3个,即序号1、2和3的已检字段各一个。
S50、根据去重后的已检字段和待检字段的数量,确定针对业务系统的测试完整度。
本申请实施例中,可以根据去重后的已检字段和待检字段的数量之比,确定针对业务系统的测试完整度。
延续上例,经过去重处理后已检字段的数量为3个,而待检字段的数量为4个,则业务系统的测试完整度为75%。
后续,检测装置100可以通过网络400将测试完整度发送至终端设备500内,便于后续查看。当然,检测装置100还可以将已检字段传送至终端设备500,便于用户根据已检字段来重新生成测试用例,以完善对业务系统的测试。
本申请实施例所提供的针对业务系统的测试完整度的检测方法,利用所接收到的用于描述待检测的业务场景的待检字段对测试用例所对应的业务场景的场景字段进行筛选,得到已经测试过、去重后的业务场景的数量,再通过已测业务场景和待测业务场景的数量比来确定到业务系统的测试完整度。相对于现有技术中从代码覆盖法来确定业务系统的测试完整度,测试完整度直接与其所针对的业务场景的测试数量挂钩,使得所检测出的测试完成度更准确。
图3为本申请另一实施例中测试完整度的检测方法的过程,与前述实施例相比,区别在于包括步骤S50后的如下步骤:
S60、基于预设报表组件,将测试完整度转换为报表视图。
预设报表组件可以包括业内常见的饼图、柱状图及曲线图等,这些预设报表组件的输入数据栏位空置,在将测试完整度填入该输入数据栏位后,则能够生成对应的报表视图,以提高用户能够更直观确定测试完整度。
仍延续上例,得到测试完整度为75%,可以将该测试完整度形成报表视图。例如可以将各次检测所得测试完整度形成柱状图,以明确各次测试的优缺点,以备后续测试参考。还可以将每次测试完整度的检测所利用的业务场景形成饼图,其比例可以为去重前的数量,也可以是去重后的数量。
甚至说,报表视图内还可以包括各测试用例的执行结果,以使得报表视图可以兼有测试结果的比对共用,在此不做赘述。
图4为本申请一实施例中测试完整度的检测装置的结构。该检测装置100是基于前述实施例中的检测方法来对业务系统的测试完整度进行检测,其检测原理均可以参前述方法内容,在此不做赘述。
其中,检测装置100包括:
请求接收模块10,用于接收针对业务系统的检测请求,检测请求包括:用于描述待检业务场景的待检字段;
用例获取模块20,用于获取发送至业务系统的测试用例,测试用例包括:用于描述该测试用例所对应的业务场景的场景字段;
字段筛选模块30,用于根据待检字段,在各测试用例中筛选出场景字段为待检字段的目标用例,并将目标用例的场景字段作为已检字段;
字段去重模块40,用于对相同的已检字段进行去重处理;
结果生成模块50,根据去重后的已检字段和待检字段的数量,确定针对业务系统的测试完整度。
本申请实施例中,用例获取模块,具体用于:
截取业务系统的业务流量,并以业务流量作为测试用例。
本申请实施例中,业务系统为由若干台业务服务器组成的分布式系统;用例获取模块,具体用于:
获取发送至分布式系统内各业务服务器内测试用例。
本申请实施例中,结果生成模块,具体用于:
根据去重后的已检字段和待检字段的数量之比,确定针对业务系统的测试完整度。
本申请实施例中,装置还包括图表转换模块,用于:
基于预设报表组件,将测试完整度转换为报表视图。
本申请实施例所提供的针对业务系统的测试完整度的检测装置,利用所接收到的用于描述待检测的业务场景的待检字段对测试用例所对应的业务场景的场景字段进行筛选,得到已经测试过、去重后的业务场景的数量,再通过已测业务场景和待测业务场景的数量比来确定到业务系统的测试完整度。相对于现有技术中从代码覆盖法来确定业务系统的测试完整度,测试完整度直接与其所针对的业务场景的测试数量挂钩,使得所检测出的测试完成度更准确。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescription Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera HardwareDescription Language)、Confluence、CUPL(Cornell University ProgrammingLanguage)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit HardwareDescription Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、MicrochipPIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。