掌桥专利:专业的专利平台
掌桥专利
首页

一种测试用例的方法及装置

文献发布时间:2023-06-19 12:24:27


一种测试用例的方法及装置

技术领域

本发明涉及金融科技(Fintech)中的数据处理技术领域,尤其涉及一种测试用例的方法及装置。

背景技术

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Finteh)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。

为了对软件的质量进行检验,降低软件出现缺陷的可能性,在软件正式上线之前,一般都需要对软件的功能进行测试,软件自动化测试是通过代码实现一组测试用例,交给计算机在合适时间自动执行,完成对软件的测试。用例指对一项特定的软件产品进行测试任务的描述,是自动执行测试验证的脚本集合。用例执行结束后,对执行结果的分析为根据返回报文将执行失败的用例进行归类,之后进行人工分析。这种分析方式需要依靠人工,工作效率低,且问题定位准确性较低,无法保障测试质量。

发明内容

本申请提供一种测试用例的方法及装置,用以提高测试用例的效率,增加问题定位的准确性。

本发明实施例提供的一种测试用例的方法,所述方法包括:

依据目标执行次数执行目标用例,得到执行结果;

确定所述目标用例中执行结果包括失败执行结果的失败用例;

针对每个失败执行结果,基于不同的分析维度,确定所述失败执行结果对应的失败分析信息;

针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因;

基于聚类原因,确定聚类结果对应的失败用例的失败原因,并根据所述失败原因对所述失败用例进行处理。

可选的,所述分析维度包括日志分析;

所述基于不同的分析维度,确定所述失败执行结果对应的失败分析信息,包括:

根据失败用例对应的测试标识,获取所述失败执行结果的执行日志;

根据目标关键字,从执行日志中确定错误日志,将所述错误日志作为所述失败分析信息;

所述根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,得到聚类后的失败原因,包括:

确定不同错误日志之间的文本相似度;

将错误日志之间文本相似度大于相似度阈值的失败执行结果进行聚类;

针对每一个聚类结果,根据所述聚类结果对应的错误日志,确定所述聚类结果中失败用例的失败原因。

可选的,所述分析维度包括返回报文分析;

所述基于不同的分析维度,确定所述失败执行结果对应的失败分析信息,包括:

根据失败用例对应的测试标识,获取执行所述失败用例得到的返回报文,其中,执行一次目标用例对应得到N个返回报文,N为正整数;

从所有返回报文中确定目标返回报文,确定所述目标返回报文对应的返回标识,将所述返回标识作为所述失败分析信息;

所述根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,得到聚类后的失败原因,包括:

将返回标识相同的失败执行结果进行聚类;

针对每一个聚类结果,根据所述聚类结果对应的返回标识,确定所述聚类结果中失败用例的失败原因。

可选的,所述将返回标识相同的失败执行结果进行聚类之前,还包括:

根据目标返回报文,确定所述失败用例对应的用例类型标识、失败目标节点标识、返回码;

所述将返回标识相同的失败执行结果进行聚类,包括:

根据用例类型标识、失败目标节点标识以及返回码,将失败执行结果进行聚类。

可选的,所述根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因之后,所述基于聚类原因,确定聚类结果对应的失败用例的失败原因,并根据所述失败原因对所述失败用例进行处理之前,还包括:

将聚类原因相同,且属于同一个失败用例的失败执行结果进行合并。

可选的,所述基于聚类原因,确定聚类结果对应的失败用例的失败原因,包括:

确定每一个聚类结果中失败用例的数量;

将失败用例数量最多的聚类结果对应的聚类原因,作为所述聚类结果中失败用例的失败原因;

针对所述失败用例数量最多的聚类结果之外的失败执行结果,重新执行所述针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因的步骤,直至满足聚类结束条件。

可选的,所述根据所述失败原因对所述失败用例进行处理,包括:

根据所述失败原因,在数据库中进行查找,获取对应的第一处理方案;

根据所述第一处理方案对所述失败用例进行处理;

重新执行经过处理的失败用例。

可选的,所述获取执行目标用例的执行结果,包括:

针对每一个目标用例,依据预先设置的目标执行次数,执行所述目标用例,得到所述目标用例的执行结果。

本发明实施例还提供一种测试用例的装置,包括:

获取单元,用于获取执行目标用例的执行结果;

确定单元,用于确定所述目标用例中执行结果包括失败执行结果的失败用例;

分析单元,用于针对每个失败执行结果,基于不同的分析维度,确定所述失败执行结果对应的失败分析信息;

聚类单元,用于针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因;

处理单元,用于基于聚类原因,确定聚类结果对应的失败用例的失败原因,并根据所述失败原因对所述失败用例进行处理。

可选的,所述分析维度包括日志分析;

所述分析单元,具体用于:根据失败用例对应的测试标识,获取所述失败执行结果的执行日志;根据目标关键字,从执行日志中确定错误日志,将所述错误日志作为所述失败分析信息;

所述聚类单元,具体用于:确定不同错误日志之间的文本相似度;将错误日志之间文本相似度大于相似度阈值的失败执行结果进行聚类;针对每一个聚类结果,根据所述聚类结果对应的错误日志,确定所述聚类结果中失败用例的失败原因。

可选的,所述聚类单元,具体用于:

根据目标返回报文,确定所述失败用例对应的用例类型标识、失败目标节点标识、返回码;

所述将返回标识相同的失败执行结果进行聚类,包括:

根据用例类型标识、失败目标节点标识以及返回码,将失败执行结果进行聚类。

可选的,所述分析维度包括返回报文分析;

所述分析单元,具体用于:根据失败用例对应的测试标识,获取执行所述失败用例得到的返回报文,其中,执行一次目标用例对应得到N个返回报文,N为正整数;从所有返回报文中确定目标返回报文,确定所述目标返回报文对应的返回标识,将所述返回标识作为所述失败分析信息;

所述聚类单元,具体用于:将返回标识相同的失败执行结果进行聚类;针对每一个聚类结果,根据所述聚类结果对应的返回标识,确定所述聚类结果中失败用例的失败原因。

可选的,所述处理单元,还用于:

将聚类原因相同,且属于同一个失败用例的失败执行结果进行合并。

可选的,所述处理单元,具体用于:

确定每一个聚类结果中失败用例的数量;

将失败用例数量最多的聚类结果对应的聚类原因,作为所述聚类结果中失败用例的失败原因;

针对所述失败用例数量最多的聚类结果之外的失败执行结果,重新执行所述针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因的步骤,直至满足聚类结束条件。

可选的,所述处理单元,具体用于:

根据所述失败原因,在数据库中进行查找,获取对应的第一处理方案;

根据所述第一处理方案对所述失败用例进行处理;

重新执行经过处理的失败用例。

可选的,所述获取单元,用于:

针对每一个目标用例,依据预先设置的目标执行次数,执行所述目标用例,得到所述目标用例的执行结果。

本发明实施例还提供一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。

本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上所述的方法。

本发明实施例中,执行目标用例,得到对应的执行结果。根据执行结果,从目标用例中确定出失败用例,这里的失败用例为执行结果中包括失败执行结果的目标用例。针对每个失败执行结果,基于不同的分析维度,对该失败执行结果进行分析,确定失败执行结果对应的失败分析信息,并针对每一个分析维度,根据该分析维度对应的识别分析信息,将失败执行结果进行聚类,确定每个聚类结果对应的聚类原因。基于所有聚类愿意,确定聚类结果对应的失败用例的失败原因,并根据失败原因对失败用例进行处理。本发明实施例是基于不同的分析维度,对失败执行结果进行聚类和分析,进而定位出失败用例的失败原因,再根据失败原因进行处理,从而减少人为参与失败用例的问题定位和分析,有效提高了用例的测试效率,且由于分析维度不止一个,因此提高了问题定位分析的精细度和准确性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种可能的系统构架的结构示意图;

图2为本发明实施例提供的一种测试用例的方法的流程示意图;

图3A为本发明实施例提供的节点之间调用的示意图;

图3B为本发明具体实施例提供的测试用例的方法的流程示意图;

图4为本发明实施例提供的一种测试用例的装置的结构示意图;

图5为本发明实施例提供的电子设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

为了便于理解,下面对本发明实施例中可能涉及的名词进行定义和解释。

自动化测试(Auto Test):为了对软件的质量进行检验,降低软件出现缺陷的可能性,需要对软件进行测试。软件测试按照测试手段可以划分为手动测试和自动化测试,自动化测试是把以人为驱动的测试转化为机器执行的一种过程。相比于手动测试,自动化测试可以节省大量人力资源和时间资源,提高测试效率。

测试用例(case):指对一项特定的软件产品进行测试任务的描述,自动化测试用例一般是自动执行测试验证的脚本集合。目前自动化测试用例的设计与脚本编写仍然依赖于人工操作实现。

流量(flow):流量是指请求的调用,一条完整的流量包含一次完整的请求调用路径和相应的请求报文和返回报文。

沙盒(Sandbox,又译为沙箱):沙盒是指一种技术,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。

参阅图1所示,为本发明实施例中测试用例的方法的应用架构示意图,该系统架构包括终端设备100、服务器200和数据库300。

终端设备100可以是移动的,也可以是固定的电子设备。例如,手机、平板电脑、笔记本电脑、台式电脑、各类可穿戴设备、智能电视、车载设备或其它能够实现上述功能的电子设备等。终端设备100能够向服务器发送测试请求,并接收执行结果。

服务器200可以为终端设备100提供各种网络服务,服务器200可以采用云计算技术进行信息处理。其中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

数据库300可以是各种类型的数据库,优选的,为数据库集群,可以采用云计算技术进行信息处理。数据库300中存储有各个失败原因以及对应的处理方案。

终端设备100与服务器200之间可以通过互联网相连,实现相互之间的通信。可选地,上述的互联网使用标准通信技术和/或协议。互联网通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan AreaNetwork,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure SocketLayer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(VirtualPrivate Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。

具体地,服务器200可以包括处理器110(Center Processing Unit,CPU)、存储器120、输入设备130和输出设备140等,输入设备130可以包括键盘、鼠标、触摸屏等,输出设备140可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。

存储器120可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器110提供存储器120中存储的程序指令和数据。在本发明实施例中,存储器120可以用于存储本发明实施例中测试用例的方法的程序。

处理器110通过调用存储器120存储的程序指令,处理器110用于按照获得的程序指令执行本发明实施例中任一种测试用例的方法的步骤。

基于上述架构,本发明实施例提供了一种测试用例的方法,如图2所示,本发明实施例提供的测试用例的方法包括以下步骤:

步骤201、获取执行目标用例的执行结果。

对于目标用例仅执行一次的话,部分问题的发现率较低,测试效果不佳。本发明一种较佳的实施例中,按照设定的目标执行次数执行目标用例。则获取执行目标用例的执行结果,包括:

针对每一个目标用例,依据预先设置的目标执行次数,执行所述目标用例,得到所述目标用例的执行结果。

具体实施过程中,可以预先设置目标执行次数,例如N次,针对同一个目标用例,根据目标执行次数重复执行N次,得到N个执行结果。这是由于执行次数少于目标执行次数时,部分问题的发现率较低,测试效果较差;执行次数多于目标执行次数时,问题的发现率没有明显增加,因此会提高测试成本。具体地,本发明实施例中可以将目标执行次数设置为3次,即每个目标用例执行3次,得到3个执行结果,若目标用例的数量为1000个,则有3000个执行结果需要分析。

步骤202、确定所述目标用例中执行结果包括失败执行结果的失败用例。

具体实施过程中,一个目标用例的执行结果分为以下三种情况:

目标用例对应目标执行次数的执行结果全部为成功;

目标用例对应目标执行次数的执行结果为部分失败;

目标用例对应目标执行次数的执行结果为全部失败。

上述三种情况下,对于全部执行成功的目标用例,标记为成功案例,直接反馈执行结果。部分失败以及全部失败的目标用例,即为失败用例,需要针对其中的失败执行结果,分析问题所在,并进行相应的处理。

步骤203、针对每个失败执行结果,基于不同的分析维度,确定所述失败执行结果对应的失败分析信息。

具体实施过程中,基于2个或者多个分析维度,确定失败执行结果对应的失败分析信息,例如,可以基于错误(error)日志和返回报文,分别确定每个失败执行结果的失败分析信息。对于具体的分析维度,也可以包括其他信息,本发明实施例中仅为举例,不做限制。

步骤204、针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因。

具体实施过程中,针对不同的分析维度,利用不同的方式对失败分析信息进行处理,依据处理结果进行分类,则同一个分析维度下,失败执行结果将进行聚类,可以依据每一个聚类结果的失败分析信息,确定该聚类结果的聚类原因。

步骤205、基于聚类原因,确定聚类结果对应的失败用例的失败原因,并根据所述失败原因对所述失败用例进行处理。

具体的失败原因,还可以分为必现bug(计算机领域漏洞)、环境问题、随机bug等。对于不同的失败原因,可以依据预存的失败原因与处理方案的对应关系,查询出对应的处理方案进行处理。此外,还有一种情况为目标用例均执行失败,但该目标用例的日志和返回码没有任何异常,这种情况下,该失败用例的失败原因被划分至需求变更中。对于需求变更的失败原因,处理方式为人工修改案例。

本发明实施例中,执行目标用例,得到对应的执行结果。根据执行结果,从目标用例中确定出失败用例,这里的失败用例为执行结果中包括失败执行结果的目标用例。针对每个失败执行结果,基于不同的分析维度,对该失败执行结果进行分析,确定失败执行结果对应的失败分析信息,并针对每一个分析维度,根据该分析维度对应的识别分析信息,将失败执行结果进行聚类,确定每个聚类结果对应的聚类原因。基于所有聚类原因,确定聚类结果对应的失败用例的失败原因,并根据失败原因对失败用例进行处理。本发明实施例是基于不同的分析维度,对失败执行结果进行聚类和分析,进而定位出失败用例的失败原因,再根据失败原因进行处理,从而减少人为参与失败用例的问题定位和分析,有效提高了用例的测试效率,且由于分析维度不止一个,因此提高了问题定位分析的精细度和准确性。

本发明实施例中包括不同的分析维度,以下以分析维度包括日志分析和返回报文分析为例进行详细说明。

针对分析维度为日志分析,所述基于不同的分析维度,确定所述失败执行结果对应的失败分析信息,包括:

根据失败用例对应的测试标识,获取所述失败执行结果的执行日志;

根据目标关键字,从执行日志中确定错误日志,将所述错误日志作为所述失败分析信息;

所述根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,得到聚类后的失败原因,包括:

确定不同错误日志之间的文本相似度;

将错误日志之间文本相似度大于相似度阈值的失败执行结果进行聚类;

针对每一个聚类结果,根据所述聚类结果对应的错误日志,确定所述聚类结果中失败用例的失败原因。

自动化测试日志是指不同脚本语言编写的自动化测试脚本在自动化测试框架下运行,按照某种固定约定格式输出服务器、网络设备、操作系统、数据库和应用软件等各类数据。本发明实施例中日志分析的方法主要是,比较测试周期内的自动化测试日志,并通过日志中的关键字进行识别、判断和甄别。

具体实施过程中,利用失败用例的标识以及执行失败对应的测试标识作为输入,获取失败执行结果的执行日志。例如,将失败用例的ID和流水的对应关系,作为输入,获取执行该失败用例的执行日志。具体的输入可以为流水号,处理逻辑如下:

根据输入的流水,分析执行该失败用例经过的所有子系统的执行日志,是否存在error关键字;

针对存在error关键字的错误日志,进行去噪处理,并将去噪后的错误日志进行文本相似度的对比,根据文本相似度将错误日志进行聚类,例如将相似度超过80%的错误日志归为一类。

这样,得到的输出如下:

相似度大于80%的错误日志1:流水号1、……、流水号M;

相似度大于80%的错误日志2:流水号1’、……、流水号M’;

……

这样,针对每个输出的聚类结果,可以根据该聚类结果对应的错误日志,确定聚类结果对应的聚类原因,进而确定该聚类结果中的流水号对应的失败执行结果的失败原因。

需要说明的是,并不是所有的执行结果为失败的目标用例的日志都为错误日志,错误日志的出现,即日志中存在error关键字的情况只有在程序捕获到异常才会产生,因此,仅根据错误日志进行聚类的结果并不准确,还需基于其它分析维度进行聚类和分析。

另一方面,针对分析维度为返回报文分析;

所述基于不同的分析维度,确定所述失败执行结果对应的失败分析信息,包括:

根据失败用例对应的测试标识,获取执行所述失败用例得到的返回报文,其中,执行一次目标用例对应得到N个返回报文,N为正整数;

从所有返回报文中确定目标返回报文,确定所述目标返回报文对应的返回标识,将所述返回标识作为所述失败分析信息;

所述根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,得到聚类后的失败原因,包括:

将返回标识相同的失败执行结果进行聚类;

针对每一个聚类结果,根据所述聚类结果对应的返回标识,确定所述聚类结果中失败用例的失败原因。

具体实施过程中,根据失败用例的测试标识,即为流水号,可以获取N个返回报文,每个返回报文对应一个节点或子系统,遍历该多个返回报文找到出现异常的最深的节点,将该最深的节点对应的返回报文作为目标返回报文。例如,根据某个失败用例由4个节点执行,节点之间存在调用关系,其中,第一个节点调用第二个节点,第二个节点调用第三个节点,第三个节点调用第四个节点,这些节点中,第四个节点即为最深的节点。根据该失败用例的流水号,获取多个返回报文,每个返回报文对应一个节点。其中,只有第二个节点和第三个节点对应的返回报文为执行失败,又由于根据调用关系,第三个节点为更深的节点,因此,第三个节点对应的返回报文即为上述的目标返回报文。

进而可以根据获取的目标返回报文,确定其中的返回标识,这里的返回标识可以为返回码,也可以为其他标识,确定的返回标识数量不限。根据返回标识,将返回标识相同的失败执行结果进行聚类,确定聚类结果对应的聚类原因,进而得到聚类结果对应的失败用例的失败原因。

进一步地,所述将返回标识相同的失败执行结果进行聚类之前,还包括:

根据目标返回报文,确定所述失败用例对应的用例类型标识、失败目标节点标识、返回码;

所述将返回标识相同的失败执行结果进行聚类,包括:

根据用例类型标识、失败目标节点标识以及返回码,将失败执行结果进行聚类。

具体实施过程中,返回报文中包含有返回码,不同的返回码对应不同的处理结果,例如,若返回码为0001为返回超时,返回码为9006为下游问题,返回码为1234为系统异常,返回码为0000则为执行成功。因此,可以根据返回码确定执行结果是否为正常处理。

对应每个失败用例,根据该失败用例的返回报文,也可以确定出现问题的节点,从而使得测试更具有针对性。节点之间存在调用关系,如图3A所示,节点包括A系统、B系统和C系统,其中入口请求节点为A系统,节点之间的调用关系为A系统调用B系统,B系统调用C系统。在失败用例执行的过程中,未出现异常的节点对应的返回码为0000,即表明该节点执行成功,对于出现异常的子系统,则对应的返回码不为0000。

因此,可以遍历该多个返回报文找到最深的失败目标节点,将该最深的失败目标节点对应的返回报文作为目标返回报文。对于图3A中的三个子系统,若B系统和C系统都出现异常,由于C系统为出现问题的最深的节点,则将C系统作为失败目标节点,C系统对应的返回报文作为目标返回报文。

另一方面,各个目标用例还对应不同的用例类型,例如用例类型可以为请求交易类型,不同的用例类型利用用例类型标识进行区分。因此失败用例还可以根据用例类型进行聚类。

本发明实施例中,将用例类型、失败目标节点以及返回码进行结合起来,共同影响聚类结果。具体地,将用例类型标识、失败目标节点标识以及返回码均相同的失败执行结果分为同一个聚类结果。

具体的输入仍为流水号,处理逻辑如下:

根据输入的流水,分析执行该失败用例经过的所有子系统所获取的返回报文;

梳理子系统间的调用链路树,遍历找到最深的失败目标子系统,从获取的返回报文中确定执行该失败用例对应的返回标识,具体的返回标识可以包括失败目标子系统标识、请求交易码、错误返回码。这样,将每条流水的返回标识进行比较,将返回标识相同的流水聚为同一类。

这样,得到的输出如下:

失败目标子系统1+请求交易码1+返回码1:流水号1、……、流水号P;

失败目标子系统1+请求交易码1+返回码2:流水号1’、……、流水号P’;

……

这样,针对每个输出的聚类结果,可以根据该聚类结果对应的返回标识,确定聚类结果对应的聚类原因,进而确定该聚类结果中的流水号对应的失败执行结果的失败原因。

较佳地,所述根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因之后,所述基于聚类原因,确定聚类结果对应的失败用例的失败原因,并根据所述失败原因对所述失败用例进行处理之前,还包括:

将聚类原因相同,且属于同一个失败用例的失败执行结果进行合并。

具体实施过程中,需要对输入失败用例进行预处理,相同失败用例的失败原因一致,进行数据归一处理。相同用例的失败原因不一致,按照多结果处理,最终预处理的结果为失败用例ID+失败原因。这样,将相同用例不同失败原因,最终处理为多条失败执行结果。

较佳地,所述基于聚类原因,确定聚类结果对应的失败用例的失败原因,包括:

确定每一个聚类结果中失败用例的数量;

将失败用例数量最多的聚类结果对应的聚类原因,作为所述聚类结果中失败用例的失败原因;

针对所述失败用例数量最多的聚类结果之外的失败执行结果,重新执行所述针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因的步骤,直至满足聚类结束条件。

具体实施过程中,可以将聚类结束条件设置为最大聚类结果中失败用例的个数为1或所有聚类簇个数相等。依据不同的分析维度将失败执行结果进行聚类之后,计算每一个聚类结果中失败用例的数量,确定数量最多的聚类结果,即聚类簇对应的聚类原因,将该聚类原因作为该聚类簇中所有失败用例的失败原因。之后,排除确定了失败原因的失败用例,针对其余失败执行结果,重新执行上述针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因的步骤,即重新进行失败执行结果的聚类,重复上述过程直至满足聚类结束条件,则结束聚类。则此时,可以确定每个聚类结果中失败用例的失败原因。

需要说明的是,本发明实施例中,由于针对每个失败用例的聚类不止一次,即为基于不同的分析维度,将失败执行结果进行聚类,因此,分析维度的次数对应失败执行结果的聚类次数。例如,对于同一个失败执行结果,基于日志分析,该失败执行结果被分入一个聚类簇中,基于返回标识,该失败执行结果被分入另一聚类簇中。当确定了失败执行结果的数量最多的聚类簇之后,需要将该聚类簇中的失败执行结果均排除,因此通过将余下的失败执行结果重新进行聚类,排除已经确定了失败原因的失败执行结果。

进一步地,所述根据所述失败原因对所述失败用例进行处理,包括:

根据所述失败原因,在数据库中进行查找,获取对应的第一处理方案;

根据所述第一处理方案对所述失败用例进行处理;

重新执行经过处理的失败用例。

具体实施过程中,数据库中预先存储有失败原因与处理方案的对应关系。因此,可以依据确定的失败原因,从数据库中查找出对应的第一处理方案,并依据第一处理方案自动处理,之后重试失败用例。

另一方面,若依据失败原因,在数据库中未查找到对应的处理方案,则所述根据所述失败原因对所述失败用例进行处理,还包括:

若根据所述失败原因,在数据库中未确定对应的处理方案;

则确定所述失败原因对应的第二处理方案;

根据所述第二处理方案对所述失败用例进行处理,并重新执行经过处理的失败用例;

将所述第二处理方案与所述失败原因关联存储于所述数据库中。

也就是说,数据库中未存储有该失败原因对应的处理方案,则可以人工确定对应第二处理方案,或者由其它渠道确定第二处理方案。之后,根据第二处理方案对失败用例进行处理,并重新执行经过处理的失败用例。当该失败用例重新执行成功后,可以将第二处理方案与失败原因关联存储于数据库中,以便后续再出现该失败原因,可以查找出第二处理方案进行处理。

以下通过具体实例说明本发明实施例提供的测试用例的方法的实现过程。具体实施过程如图3B所示,包括以下过程:

自动化用例根据配置执行次数,执行完毕后,收集所有测试结果,包括用例ID,用例执行结果ID,用例运行结果,用例流水号,用例名称等用例画像信息。

根据收集到的用例画像,将用例分类为全部成功,部分失败和全部失败。其中部分失败和全部失败的用例进入自动分析模块。

自动分析模块,将输入的用例、流水号等信息通过日志和录制到的流量进行分类,最终聚类到error日志和报错子系统的返回码。

根据错误原因聚类后的用例个数排序,提取用例数最多的聚类簇对应的失败原因(对应error日志或者子系统的返回码),其余用例再次重复以上自动分析的步骤,直到最后聚类簇中失败用例的个数相等或者为1,进入分析终态。

用例聚类完毕,聚类失败原因,如命中失败经验库,根据经验库的解决方案自动处理,重试失败用例。如未命中经验库,人工处理完毕,将处理结果记录到失败经验库由人工确认失败原因,是属于bug,环境问题,还是随机bug。对相应的error日志或者返回码进行标注,同时将聚类的失败原因和解决方法录入到失败经验库。

本发明实施例还提供了一种测试用例的装置,所述装置如图4所示,包括:

获取单元401,用于获取执行目标用例的执行结果;

确定单元402,用于确定所述目标用例中执行结果包括失败执行结果的失败用例;

分析单元403,用于针对每个失败执行结果,基于不同的分析维度,确定所述失败执行结果对应的失败分析信息;

聚类单元404,用于针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因;

处理单元405,用于基于聚类原因,确定聚类结果对应的失败用例的失败原因,并根据所述失败原因对所述失败用例进行处理。

可选的,所述分析维度包括日志分析;

所述分析单元,具体用于:根据失败用例对应的测试标识,获取所述失败执行结果的执行日志;根据目标关键字,从执行日志中确定错误日志,将所述错误日志作为所述失败分析信息;

所述聚类单元,具体用于:确定不同错误日志之间的文本相似度;将错误日志之间文本相似度大于相似度阈值的失败执行结果进行聚类;针对每一个聚类结果,根据所述聚类结果对应的错误日志,确定所述聚类结果中失败用例的失败原因。

可选的,所述分析维度包括返回报文分析;

所述分析单元,具体用于:根据失败用例对应的测试标识,获取执行所述失败用例得到的返回报文,其中,执行一次目标用例对应得到N个返回报文,N为正整数;从所有返回报文中确定目标返回报文,确定所述目标返回报文对应的返回标识,将所述返回标识作为所述失败分析信息;

所述聚类单元,具体用于:将返回标识相同的失败执行结果进行聚类;针对每一个聚类结果,根据所述聚类结果对应的返回标识,确定所述聚类结果中失败用例的失败原因。

可选的,所述聚类单元,具体用于:

根据目标返回报文,确定所述失败用例对应的用例类型标识、失败目标节点标识、返回码;

所述将返回标识相同的失败执行结果进行聚类,包括:

根据用例类型标识、失败目标节点标识以及返回码,将失败执行结果进行聚类。

可选的,所述处理单元,还用于:

将聚类原因相同,且属于同一个失败用例的失败执行结果进行合并。

可选的,所述处理单元,具体用于:

确定每一个聚类结果中失败用例的数量;

将失败用例数量最多的聚类结果对应的聚类原因,作为所述聚类结果中失败用例的失败原因;

针对所述失败用例数量最多的聚类结果之外的失败执行结果,重新执行所述针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因的步骤,直至满足聚类结束条件。

可选的,所述处理单元,具体用于:

根据所述失败原因,在数据库中进行查找,获取对应的第一处理方案;

根据所述第一处理方案对所述失败用例进行处理;

重新执行经过处理的失败用例。

可选的,所述获取单元,用于:

针对每一个目标用例,依据预先设置的目标执行次数,执行所述目标用例,得到所述目标用例的执行结果。

基于相同的原理,本发明还提供一种电子设备,如图5所示,包括:

包括处理器501、存储器502、收发机503、总线接口504,其中处理器501、存储器502与收发机503之间通过总线接口504连接;

所述处理器501,用于读取所述存储器502中的程序,执行下列方法:

依据目标执行次数执行目标用例,得到执行结果;

确定所述目标用例中执行结果包括失败执行结果的失败用例;

针对每个失败执行结果,基于不同的分析维度,确定所述失败执行结果对应的失败分析信息;

针对每一个分析维度,根据所述分析维度对应的失败分析信息,将失败执行结果进行聚类,确定聚类结果对应的聚类原因;

基于聚类原因,确定聚类结果对应的失败用例的失败原因,并根据所述失败原因对所述失败用例进行处理。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程测试用例的设备的处理器以产生一个机器,使得通过计算机或其他可编程测试用例的设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程测试用例的设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程测试用例的设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

相关技术
  • 测试用例生成装置、测试用例生成方法和测试用例生成程序
  • 测试用例的查询方法及装置、测试用例的建立方法及装置
技术分类

06120113284194