本发明涉及软件测试领域,具体涉及测试用例失败原因分析方法、装置、电子设备及计算机可读存储介质。
背景技术:
在软件测试领域,大量自动化测试的用例脚本执行失败后,需要工作人员分析失败的原因,费时费力。
现有持续继承自动化测试用例的错误原因分析以人工处理,或简单的朴素贝叶斯分类居多,并单纯的认为是文本分类问题,存在分类速度慢,准确性不高。
技术实现要素:
有鉴于此,本发明提供测试用例失败原因分析方法、装置及电子设备,能够解自动分析测试用例失败原因,且能够发现和应用测试用例失败的规律,提高问题解决效率。
为解决上述技术问题,一方面,本发明提供一种测试用例失败原因分析方法,包括如下步骤:
获取待分类测试用例失败的日志文本;
对于所述待分类测试用例失败的日志文本通过失败原因分类模型进行分类,得到该测试用例的失败原因。
进一步地,所述失败原因分类模型的形成方法包括:
获取多个失败测试用例的日志文本样本;
对于多个所述日志文本样本,通过分类标签进行标注;
基于标注后的日志文本样本进行训练,生成所述失败原因分类模型。
进一步地,所述失败原因分类模型的形成方法还包括:
利用日志文本样本集对所生成的失败原因分类模型进行验证,当准确率超过预定值时,确定该失败原因分类模型有效。
进一步地,所述分类标签包括环境问题、用例问题、工具问题、产品问题、产品设计修改问题中的一种或多种。
进一步地,所述失败原因分类模型为k近邻模型与逻辑回归模型的融合模型。
进一步地,对于所述待分类测试用例失败的日志文本通过失败原因分类模型进行分类具体包括:
基于所述k近邻模型提取所述待分类测试用例失败的日志文本与日志文本样本的第一特征向量;
计算第一特征向量之间的距离;
取距离最近的k个日志文本中分类标签个数最多者,作为k近邻模型计算结果;
基于所述k近邻模型提取所述待分类测试用例失败的日志文本与日志文本样本中带有表示失败含义的关键词的语句的第二特征向量;
基于所述k近邻模型计算结果与所述第二特征向量,构造第三特征向量;
将所述第三特征向量,通过逻辑回归模型进行计算,获得每个分类的概率,其中,概率最大者为分类结果。
进一步地,所述k值为7。
进一步地,所述第一特征向量和所述第二特征向量分别通过tf-idf算法提取。
进一步地,还包括如下步骤:
基于得到的该测试用例的失败原因对所述失败原因分类模型进行迭代更新。
进一步地,当连续失败的测试用例的失败原因一致,则对于所述失败原因分类模型的参数进行调节,使得该失败原因的权重增加。
第二方面,本发明提供一种测试用例失败原因分析装置,包括:
获取模块,用于获取待分类测试用例失败的日志文本;
失败原因分类模块,用于对于所述待分类测试用例失败的日志文本进行分类,得到该测试用例的失败原因。
第三方面,本发明提供一种的用于对测试用例失败原因进行分析的电子设备,包括:
一个或多个处理器;
一个或多个存储器,其中存储了计算机可读代码,所述计算机可读代码当由所述一个或多个处理器运行时,使得所述处理器执行如下步骤:
获取待分类测试用例失败的日志文本;
对于所述待分类测试用例失败的日志文本进行分类,得到该测试用例的失败原因。
第四方面,本发明提供一种计算机可读存储介质,其中存储了计算机可读代码,所述计算机可读代码当由一个或多个处理器运行时,使得所述处理器执行如下步骤:
获取待分类测试用例失败的日志文本;
对于所述待分类测试用例失败的日志文本进行分类,得到该测试用例的失败原因。
本发明的上述技术方案至少具有如下有益效果之一:
根据本发明的测试用例失败原因分析方法,能够自动化进行测试用例失败原因分析,取代工作人员分析原因,省时省力;
进一步地,使用失败原因分类模型(融合模型)进行分类,能够准确分析快速定位测试用例失败原因,提高问题解决效率;
进一步地,基于得到的该测试用例的失败原因对失败原因分类模型进行迭代更新,能够发现和应用测试用例失败的规律,可以有效提高诊断与解决问题的效率。
附图说明
图1为根据本发明一实施例的测试用例失败原因分析方法的流程图;
图2为通过分类标签进行标注的示意图;
图3为失败原因分类模型的迭代更新的流程图;
图4为根据本发明一具体实施例的测试用例失败原因分析方法的流程示意图;
图5为根据本发明实施例的测试用例失败原因分析装置示意图;
图6为根据本发明实施例的用于对测试用例失败原因进行分析的电子设备示意图。
具体实施方式
下面将结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
首先,结合图1说明根据本发明实施例的测试用例失败原因分析方法。
如图1所示,本发明实施例的测试用例失败原因分析方法,包括:
步骤s1,获取待分类测试用例失败的日志文本。
也就是说,对软件进行测试,当软件测试失败的时候,收集测试用例失败的日志文本,便于后续的原因分析。
步骤s2,对于所述待分类测试用例失败的日志文本通过失败原因分类模型进行分类,得到该测试用例的失败原因。
也就是说,通过失败分析模型对待分类测试用例失败的日志文本进行失败原因分析。由此,能够准确分析快速定位测试用例失败原因,提高问题解决效率。
根据本发明一些实施例,失败原因分类模型的形成方法包括:
步骤s21,获取多个失败测试用例的日志文本样本。
例如,获取5000个失败测试用例的日志文本样本。
步骤s22,对于多个日志文本样本,通过分类标签进行标注。
也就是说,通过分类标签对多个日志文本样本进行标注。
样本标注历来是需要投入多人力的巨大工程,在界面以选项框的形式显示出用例的失败原因,有利于人工标注和更正机器分类的错误,更快校准模型。样本标注的根本动机决定了标注的类型,和标注的规则,日志错误原因分为产品问题,产品设计修改问题,工具问题,环境问题,脚本问题。本发明的核心原则是:保证不放过一个产品问题,脚本一定调试正常才能在线运行且最终目标自动化平台执行的自动化用例报错只有产品问题一种。这样能够更清晰的划分错误原因类别,可以使用python库(scikit-learn,numpy,pandas)进行标注。
进一步地,分类标签可以包括以下一种或多种:环境问题、用例问题、工具问题、产品问题、产品设计修改问题。
当然,以上只是可选地示例,任何可以对失败测试用例的日志文本样本进行分类的分类标签,均应该理解在本发明范围内。
例如,将上述5000个失败测试用例的日志文本样本通过环境问题、用例问题、工具问题、产品问题、产品设计修改问题这5个分类标签进行标注,并存放在数据库中。
例如,如图2所示,将失败用例日志文本通过人工标注4类标签,环境问题、产品问题、工具问题及用例问题,将文本的内容和标记存储在数据库中,以提供给融合模型(knn混合模型)。
步骤s23,基于标注后的日志文本样本进行训练,生成失败原因分类模型。
也就是说,通过对标注后的日志文本样本进行训练,从而生成失败原因分析模型。
例如,基于上述标注后的5000个日志文本样本进行训练,生成失败原因分析模型。
进一步地,失败原因分类模型的形成方法还可以包括:
步骤s24,在生成失败原因分析模型后,还可以验证失败原因分析模型是否符合预期。基于此,利用日志文本样本集对所生成的失败原因分类模型进行验证,当准确率超过预定值时,确定该失败原因分类模型有效。
例如,准确率达90%以上认可有效性,符合预期。实际应用中,会将每个日志文本作为输入向量,通过该模型输出分类结果来快速定位用例失败原因,在实际应用中不断完善模型,增强其泛化能力。
根据本发明一些实施例,失败原因分类模型为k近邻模型与逻辑回归模型的融合模型。
进一步地,对于待分类测试用例失败的日志文本通过上述失败原因分类模型进行分类可以具体包括:
首先,基于k近邻模型提取待分类测试用例失败的日志文本与日志文本样本的第一特征向量;
可选地,k近邻模型采用tf-idf算法提取。
接着,计算第一特征向量之间的距离;
取距离最近的k个日志文本中分类标签个数最多者,作为k近邻模型计算结果。
可选地,k近邻模型中k的值为7,即距离最近的7个分类标签个数最多者即为计算结果。
接着,基于k近邻模型提取待分类测试用例失败的日志文本与日志文本样本中带有表示失败含义(例如error或fail等)的关键词的语句的第二特征向量。
可选地,表示失败含义的关键词采用tf-idf算法提取。
接着,基于所述k近邻模型计算结果与所述第二特征向量,构造第三特征向量;
最后,将所述第三特征向量,通过逻辑回归模型进行计算,获得每个分类的概率,其中,概率最大者为分类结果。
更进一步地,根据本发明的测试用例失败原因分析方法还可以包括如下步骤:
步骤s3,基于得到的该测试用例的失败原因对失败原因分类模型进行迭代更新。
例如,当连续失败的测试用例的失败原因一致,则对于失败原因分类模型的参数进行调节,使得该失败原因的权重增加。由此,可以有效提高诊断与解决问题的效率。
作为示例,如图3所示,失败原因分类模型进行迭代更新的方法为:
利用以往测试用例日志进行全量训练日志分析系统(失败原因分类模型),过程监控测试用例的失败原因,当存在连续失败的测试用例的失败原因一致,且当前自动化测试失败用例日志是经过人工校验(人工校验通过zap平台更新自动化测试失败用例日志)的,则进行预测当前自动化测试用例的失败原因。
比如,人工标注某一次失败原因为5种原因中的一种,如环境问题,则系统在处理本次失败用例日志的分类任务时,会将环境问题的权重调高,使得分类结果更可能是环境问题。
下面,结合具体实施例进一步详细说明根据本发明的测试用例失败原因分析方法。
如图4所示,对于待分类测试用例失败的日志文本通过失败原因分类模型进行分类,得到该测试用例的失败原因的方法包括如下两种情形。
其中,第一种情形,如果检测到测试用例连续失败且某次存在人工校验(人工标注),则如图4中左侧的粗线部分所示,包括:
将待分类的日志文本直接放入knn模型;
knn(k近邻模型)采用tf-idf算法提取分词和去停用词后文本的文本向量,作为第一特征向量,然后计算第一特征向量之间的距离;
knn基于距离第一特征向量最近的k个分类标签和人工标注(人工标注上调连续测试失败用例的分类标签的权重),得到文本类别比例;
根据文本类别比例,确定文本类别(待分类测试用例失败的原因类型)。
优选地,knn可以基于第一特征向量最近的k个分类标签,把k个分类标签中人工标注的分类标签按照设置的权重上调,从而得到文本比例,文本比例最高的为待分类测试用例失败的日志文本的文本类别。
例如,knn模型k取7,待分类测试用例第一次失败为环境问题,第二次失败也为环境问题,通过人工标注使得环境问题权重上调3,第三次失败,则直接将待分类的日志文本直接放入knn模型,
当knn模型计算出环境问题为6(3加上人工标注设置的权重3为6),工具问题为4,其中环境问题比例最高,则文本类别为环境问题,
当knn模型计算出环境问题为4(1加上人工标注设置的权重3为4),工具问题为6,其中工具问题比例最高,则文本类别为工具问题。
其中,第二种情形,为除第一种情形(检测到测试用例连续失败且某次存在人工校验)以外的任何情形,则如图中细线部分所示,包括:
1)将待分类的日志文本放入融合模型;
2)knn(k近邻模型)采用tf-idf算法提取分词和去停用词后文本的文本向量,作为第一特征向量,然后计算第一向量的距离,可选地,k取7,则距离最近的7个分类标签个数最多者即为计算结果;
3)采用tf-idf算法提取errow字段的语句的errow向量,作为第二向量;
4)将knn输出的结果与errow向量组合为新向量,即第三特征向量;
5)将第三特征向量通过lr模型(逻辑回归模型)进行计算,获得每个分类的概率,取概率最大者为分类结果,从而得到文本类别(待分类测试用例失败的原因类型)。
下面,结合图5,说明根据本发明实施例的测试用例失败原因分析装置1000。
本发明实施例的测试用例失败原因分析装置1000,包括:
获取模块1001,用于获取待分类测试用例失败的日志文本;
失败原因分类模块1002,用于对于所述待分类测试用例失败的日志文本进行分类,得到该测试用例的失败原因。
进一步地,获取模块1001和失败原因分类模块1002还可以分别用于实现测试用例失败原因分析方法中的相应步骤,在此省略其详细说明。
此外,结合图6,说明根据本发明实施例的用于对测试用例失败原因进行分析的电子设备1400。
如图6所示,本发明实施例的用于对测试用例失败原因进行分析的电子设备1400包括:
处理器1401和存储器1402,在存储器1402中存储有计算机程序指令,其中,在计算机程序指令被处理器运行时,使得处理器1401执行以下步骤:
步骤s1,获取待分类测试用例失败的日志文本;
步骤s2,对于所述待分类测试用例失败的日志文本通过失败原因分类模型进行分类,得到该测试用例的失败原因。
进一步地,电子设备还包括网络接口1403、输入设备1404、硬盘1405、和显示设备1406。
上述各个接口和设备之间可以通过总线架构互连。总线架构可以是可以包括任意数量的互联的总线和桥。具体由处理器1401代表的一个或者多个中央处理器(cpu),以及由存储器1402代表的一个或者多个存储器的各种电路连接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其它电路连接在一起。可以理解,总线架构用于实现这些组件之间的连接通信。总线架构除包括数据总线之外,还包括电源总线、控制总线和状态信号总线,这些都是本领域所公知的,因此本文不再对其进行详细描述。
所述网络接口1403,可以连接至网络(如因特网、局域网等),从网络中获取相关数据,并可以保存在硬盘1405中。
所述输入设备1404,可以接收操作人员输入的各种指令,并发送给处理器1401以供执行。所述输入设备1404可以包括键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
所述显示设备1406,可以将处理器1401执行指令获得的结果进行显示。
所述存储器1402,用于存储操作系统运行所必须的程序和数据,以及处理器1401计算过程中的中间结果等数据。
可以理解,本发明实施例中的存储器1402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或闪存。易失性存储器可以是随机存取存储器(ram),其用作外部高速缓存。本文描述的装置和方法的存储器1402旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器1402存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统14021和应用程序14014。
其中,操作系统14021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序14014,包含各种应用程序,例如浏览器(browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序14014中。
上述处理器1401,当调用并执行所述存储器1402中所存储的应用程序和数据,具体的,可以是应用程序14014中存储的程序或指令时,首先,获取待分类测试用例失败的日志文本;接着,对于所述待分类测试用例失败的日志文本通过失败原因分类模型进行分类,得到该测试用例的失败原因。
本发明上述实施例揭示的方法可以应用于处理器1401中,或者由处理器1401实现。处理器1401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1401可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1402,处理器1401读取存储器1402中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(asic)、数字信号处理器dsp)、数字信号处理设备(dspd)、可编程逻辑设备(pld)、现场可编程门阵列(fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
另外,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器运行时,使得所述处理器执行以下步骤:
步骤s1,获取待分类测试用例失败的日志文本;
步骤s2,对于所述待分类测试用例失败的日志文本通过失败原因分类模型进行分类,得到该测试用例的失败原因。
更进一步地,本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。电子设备(例如可以是服务器、云服务器、或者服务器的一部分等)的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得测试用例失败原因分析装置1000实施上述各种实施方式提供的测试用例失败原因分析方法。
在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁盘或者光盘等各种可以存储程序代码的介质。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。