CN111984545A - 检测单元测试稳定性的方法、装置、电子设备及存储介质 - Google Patents

检测单元测试稳定性的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111984545A
CN111984545A CN202011017816.7A CN202011017816A CN111984545A CN 111984545 A CN111984545 A CN 111984545A CN 202011017816 A CN202011017816 A CN 202011017816A CN 111984545 A CN111984545 A CN 111984545A
Authority
CN
China
Prior art keywords
test
module
current
task
test module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011017816.7A
Other languages
English (en)
Other versions
CN111984545B (zh
Inventor
张春乐
骆涛
蓝翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202011017816.7A priority Critical patent/CN111984545B/zh
Publication of CN111984545A publication Critical patent/CN111984545A/zh
Application granted granted Critical
Publication of CN111984545B publication Critical patent/CN111984545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种检测单元测试稳定性的方法、装置、电子设备及存储介质,涉及人工智能领域中的深度学习技术领域。具体方案为:接收用户提交的各个测试任务;将各个测试任务提交至预先设置的测试单元中,通过所述测试单元得到各个测试模块针对于各个测试任务的测试结果;按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出所述测试单元的稳定性。本申请实施例可以有效地检测出单元测试的稳定性,从而可以提高单元测试的效率。

Description

检测单元测试稳定性的方法、装置、电子设备及存储介质
技术领域
本申请涉及人工智能领域,进一步涉及人工智能领域中的深度学习技术领域,尤其是一种检测单元测试稳定性的方法、装置、电子设备及存储介质。
背景技术
深度学习框架的开源生态模式,快速推动了人工智能在工业界的落地应用,也吸引各界为其贡献代码。常见的深度学习框架都拥有大量的应用程序编程接口与网络侧操作接口,这些应用程序编程接口与网络侧操作接口对应的单元测试的种类繁多,数量巨大。以深度学习开源框架为例:用户提交的任务的数量很多,因此单元测试的数量很多;而且单元测试的种类也很多:包括但不限于深度学习框架本身的网络侧操作接口的单元测试、应用程序编程接口的单元测试、预测库的单元测试等;并且单元测试的执行还可以划分为单卡执行、多卡执行以及独占执行等。
在单元测试的过程中,用户向深度学习框架的社区提交测试请求后,需要保证其每个测试任务执行完成所有的单元测试用例。而由于网络、机器以及代码本身等原因,单元测试总是会出现随机故障的情况,即随机出现执行不通过,而随机故障是影响单元测试稳定性的一个重要因素;当测试请求被检测到单元测试随机故障之后,最常用的方式就是重新执行该请求对应的测试任务,这样就会严重影响测试效率。因此,单元测试的稳定性是深度学习框架维持良好的开源生态需要考虑的重要问题。但是现阶段还没有一种完整的方法来检测单元测试的稳定性。
发明内容
本申请提供了一种检测单元测试稳定性的方法、装置、电子设备及存储介质,可以有效地检测出单元测试的稳定性,从而可以提高单元测试的效率。
第一方面,本申请提供了一种检测单元测试稳定性的方法,所述方法包括:
接收用户提交的各个测试任务;
将各个测试任务提交至预先设置的测试单元中,通过所述测试单元得到各个测试模块针对于各个测试任务的测试结果;
按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;
基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出所述测试单元的稳定性。
第二方面,本申请提供了一种检测单元测试稳定性的装置,所述装置包括:接收模块、测试模块、保存模块和检测模块;其中,
所述接收模块,用于接收用户提交的各个测试任务;
所述测试模块,用于将各个测试任务提交至预先设置的测试单元中,通过所述测试单元得到各个测试模块针对于各个测试任务的测试结果;
所述保存模块,用于按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;
所述检测模块,用于基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出所述测试单元的稳定性。
第三方面,本申请实施例提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请任意实施例所述的检测单元测试稳定性的方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请任意实施例所述的检测单元测试稳定性的方法。
根据本申请的技术解决了现有技术中无法对单元测试的稳定性进行检测的技术问题,本申请提供的技术方案,可以有效地检测出单元测试的稳定性,从而可以提高单元测试的效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例提供的检测单元测试稳定性的方法的第一流程示意图;
图2是本申请实施例提供的检测单元测试稳定性的方法的第二流程示意图;
图3是本申请实施例提供的检测单元测试稳定性的装置的结构示意图;
图4是本申请实施例提供的保存模块的结构示意图;
图5是用来实现本申请实施例的检测单元测试稳定性的方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
实施例一
图1是本申请实施例提供的检测单元测试稳定性的方法的第一流程示意图,该方法可以由检测单元测试稳定性的装置或者电子设备来执行,该装置或者电子设备可以由软件和/或硬件的方式实现,该装置或者电子设备可以集成在任何具有网络通信功能的智能设备中。如图1所示,检测单元测试稳定性的方法可以包括以下步骤:
S101、接收用户提交的各个测试任务。
在本步骤中,电子设备可以接收用户提交的各个测试任务。每一个测试任务用于请求测试单元对某一个特定功能的程序或者代码进行测试。
S102、将各个测试任务提交至预先设置的测试单元中,得到测试单元返回的各个测试模块针对于各个测试任务的测试结果。
在本步骤中,电子设备可以各个测试任务提交至预先设置的测试单元中,得到测试单元返回的各个测试模块针对于各个测试任务的测试结果;其中,测试结果包括:编译成功且单元测试成功、编译失败、编译成功且单元测试失败、非编译失败且非单元测试失败。具体地,每一个测试模块可以包括编译和单元测试两个功能;针对于每一个测试模块,如果编译和单元测试均成功,则当前测试任务的测试结果为:编译成功且单元测试成功;如果编译不成功,那么则无法执行单元测试,则当前测试任务的测试结果为:编译失败;如果编译成功,那么接下来可以执行单元测试,如果单元测试不成功,则当前测试任务的测试结果为:编译成功且单元测试失败;如果某一个测试模块针对于某一个测试任务最终的测试结果为失败,但是在编译和单元测试两个环节均成功,那么该测试任务的测试结果为:非编译失败且非单元测试失败。
S103、按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中。
在本步骤中,电子设备可以按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中。具体地,电子设备可以先在全部的测试模块中提取出一个测试模块作为当前测试模块;然后根据当前测试模块针对于各个测试任务的测试结果,将表示当前测试模块针对于各个测试任务的测试结果的条目保存到当前测试模块对应的数据库中;将下一个测试模块作为所述当前测试模块,直到将表示各个测试模块针对于当前测试任务的条目保存至各个测试模块对应的数据库中。
S104、基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出测试单元的稳定性。
在本步骤中,电子设备可以基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出测试单元的稳定性。具体地,电子设备可以先在全部的测试模块中提取出一个测试模块作为当前测试模块;然后基于当前测试模块对应的数据库中保存的当前测试模块针对于各个测试任务的测试结果,计算当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;将下一个测试模块作为当前测试模块,直到计算出各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;再根据各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,检测出测试单元的稳定性。
本申请实施例提出的检测单元测试稳定性的方法,先接收用户提交的各个测试任务;然后将各个测试任务提交至预先设置的测试单元中,得到测试单元返回的各个测试模块针对于各个测试任务的测试结果;接着按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;再基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出测试单元的稳定性。也就是说,本申请可以按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存在各个测试模块对应的数据库中。而现阶段还没有一种完整的方法来检测单元测试的稳定性。因为本申请采用了按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存在各个测试模块对应的数据库中的技术手段,解决了现有技术中无法检测单元测试稳定性的技术问题,本申请提供的技术方案,可以有效地检测出单元测试的稳定性,从而可以提高单元测试的效率;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
实施例二
图2是本申请实施例提供的检测单元测试稳定性的方法的第二流程示意图。基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图2所示,检测单元测试稳定性的方法可以包括以下步骤:
S201、接收用户提交的各个测试任务。
S202、将各个测试任务提交至预先设置的测试单元中,通过测试单元得到各个测试模块针对于各个测试任务的测试结果。
S203、按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中。
在本步骤中,电子设备可以按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中。具体地,电子设备可以先在全部的测试模块中提取出一个测试模块作为当前测试模块;然后根据当前测试模块针对于各个测试任务的测试结果,将表示当前测试模块针对于各个测试任务的测试结果的条目保存到当前测试模块对应的数据库中;将下一个测试模块作为当前测试模块,直到将表示各个测试模块针对于各个测试任务的条目保存至各个测试模块对应的数据库中。具体地,若当前测试模块针对于各个测试任务的测试结果为第i类型的测试结果,则在当前测试模块对应的数据库中添加一个该测试任务对应的第i类型的条目;第i类型的条目表示当前测试模块对该测试任务的第i类型的测试结果;其中,i大于等于1且小于等于测试结果的类型的总数。进一步的,第i类型的条目的任务标识为各个测试任务的标识;第i类型的条目的状态标识为第i类型测结果对应的状态标识;第i类型的条目的退出码标识为第i退出码。具体地,若当前测试模块针对于各个测试任务的测试结果为第一类型的测试结果,则在当前测试模块对应的数据库中添加一个该测试任务对应的第一类型的条目;若当前测试模块针对于各个测试任务的测试结果为第二类型的测试结果,则在当前测试模块对应的数据库中添加一个该测试任务对应的第二类型的条目;若当前测试模块针对于各个测试任务的测试结果为第三类型的测试结果,则在当前测试模块对应的数据库中添加一个该测试任务对应的第三类型的条目;若当前测试模块针对于各个测试任务的测试结果为第四类型的测试结果,则在当前测试模块对应的数据库中添加一个该测试任务对应的第四类型的条目。具体地,第一类型的测试结果为编译成功且单元测试成功;第一类型的条目表示当前测试模块对该测试任务编译成功且单元测试成功;第二类型的测试结果为编译失败,第二类型的条目表示当前测试模块对该测试任务编译失败;第三类型的测试结果为编译成功且单元测试失败;第三类型的条目表示当前测试模块对该测试任务编译成功且单元测试失败;第四类型的测试结果为非编译失败且非单元测试失败;第四类型的条目表示当前测试模块对该测试任务非编译失败且非单元测试失败。例如,若当前测试模块针对于当前测试任务的测试结果为编译成功且单元测试成功,则电子设备可以在当前测试模块对应的数据库中添加一个当前测试任务对应的第一类型的条目;若当前测试模块针对于当前测试任务的测试结果为编译失败,则电子设备可以在当前测试模块对应的数据库中添加一个当前测试任务对应的第二类型的条目;若当前测试模块针对于当前测试任务的测试结果为编译成功且单元测试失败,则电子设备可以在当前测试模块对应的数据库中添加一个当前测试任务对应的第三类型的条目;若当前测试模块针对于当前测试任务的测试结果为非编译失败且非单元测试失败,则电子设备可以在当前测试模块对应的数据库中添加一个当前测试任务对应的第四类型的条目。具体地,第一类型的条目的任务标识为当前测试任务的标识;第一类型的条目的状态标识别为成功;第一类型的条目的退出码标识为第一退出码;第二类型的条目的任务标识为当前测试任务的标识;第二类型的条目的状态标识别为失败;第二类型的条目的退出码标识为第二退出码;第三类型的条目的任务标识为当前测试任务的标识;第三类型的条目的状态标识别为失败;第三类型的条目的退出码标识为第三退出码;第四类型的条目的任务标识为当前测试任务的标识;第四类型的条目的状态标识别为失败;第四类型的条目的退出码标识为第四退出码。
具体地,预先设定的数据结构如下述表1所示:
Figure BDA0002699670310000071
表1
S204、在全部的测试模块中提取出一个测试模块作为当前测试模块。
在本步骤中,电子设备可以在全部的测试模块中提取出一个测试模块作为当前测试模块。具体地,测试模块可以包括但不限于:PR-CI-Coverage、PR-CI-Py35;这些测试模块用来判断每一个测试任务是否“编译+单测”成功;每一个测试模块分别对应“编译+单测”。
S205、基于当前测试模块对应的数据库中保存的当前测试模块针对于各个测试任务的测试结果,计算当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;将下一个测试模块作为当前测试模块,直到计算出各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例。
在本步骤中,电子设备可以基于当前测试模块对应的数据库中保存的当前测试模块针对于各个测试任务的测试结果,计算当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;将下一个测试模块作为当前测试模块,直到计算出各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例。具体地,电子设备可以先在全部的测试模块中提取出一个测试模块作为当前测试模块;然后基于当前测试模块对应的数据库中保存的当前测试模块针对于各个测试任务的测试结果,计算当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;将下一个测试模块作为当前测试模块,直到计算出各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;再根据各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,检测出测试单元的稳定性。具体地,电子设备可以先将当前测试模块对应的表示单元测试失败重复的计数值的初始值设置为0;若当前测试模块对应的数据库中的条目不为空,则电子设备可以在当前测试模块对应的数据库中提取出一个条目作为当前条目;若当前条目的状态标识为失败状态且当前条目的退出码为第三退出码,则电子设备可以继续判断当前条目在已提取出的条目中是否出现过;若当前条目在已提取出的条目中出现过,则电子设备可以将当前测试模块对应的表示单元测试失败重复的计数值加1;将下一个条目作为当前条目,直到当前测试模块对应的数据库中的条目为空;得到当前测试模块对应的表示单元测试失败重复的计数值。
S206、根据各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,检测出测试单元的稳定性。
在本步骤中,电子设备可以根据各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,检测出测试单元的稳定性。具体地,电子设备可以将各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例相加,得到测试单元出现随机故障的测试任务在全部的测试任务中所占的比例,基于该比例可以检测出测试单元的稳定性。例如,PR-CI-Coverage出现随机故障的测试任务在全部的测试任务中所占的比例为1.2%;PR-CI-Py35出现随机故障的测试任务在全部的测试任务中所占的比例为5.59%,则测试单元出现随机故障的测试任务在全部的测试任务中所占的比例为6.79%。
本申请实施例提出的检测单元测试稳定性的方法,先接收用户提交的各个测试任务;然后将各个测试任务提交至预先设置的测试单元中,得到测试单元返回的各个测试模块针对于各个测试任务的测试结果;接着按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;再基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出测试单元的稳定性。也就是说,本申请可以按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存在各个测试模块对应的数据库中。而现阶段还没有一种完整的方法来检测单元测试的稳定性。因为本申请采用了按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存在各个测试模块对应的数据库中的技术手段,解决了现有技术中无法检测单元测试稳定性的技术问题,本申请提供的技术方案,可以有效地检测出单元测试的稳定性,从而可以提高单元测试的效率;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
实施例三
图3是本申请实施例提供的检测单元测试稳定性的装置的结构示意图。如图3所示,所述装置300包括:接收模块301、测试模块302、保存模块303和检测模块304;其中,
所述接收模块301,用于接收用户提交的各个测试任务;
所述测试模块302,用于将各个测试任务提交至预先设置的测试单元中,通过所述测试单元得到各个测试模块针对于各个测试任务的测试结果;
所述保存模块303,用于按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;
所述检测模块304,用于基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出所述测试单元的稳定性。
进一步的,所述测试结果包括:编译成功且单元测试成功、编译失败、编译成功且单元测试失败、非编译失败且非单元测试失败。
图4是本申请实施例提供的保存模块的结构示意图。如图4所示,所述保存模块303包括:提取子模块3031和保存子模块3032;其中,
所述提取子模块3031,用于在全部的测试模块中提取出一个测试模块作为当前测试模块;
所述保存子模块3032,用于根据所述当前测试模块针对于各个测试任务的测试结果,将表示所述当前测试模块针对于各个测试任务的测试结果的条目保存到所述当前测试模块对应的数据库中;将下一个测试模块作为所述当前测试模块,直到将表示各个测试模块针对于各个测试任务的条目保存至各个测试模块对应的数据库中。
进一步的,所述保存子模块3032,具体用于若所述当前测试模块针对于各个测试任务的测试结果为第i类型的测试结果,则在所述当前测试模块对应的数据库中添加一个该测试任务对应的第i类型的条目;所述第i类型的条目表示所述当前测试模块对该测试任务的第i类型的测试结果;其中,i大于等于1且小于等于所述测试结果的类型的总数。
进一步的,所述第i类型的条目的任务标识为各个测试任务的标识;所述第i类型的条目的状态标识为第i类型测结果对应的状态标识;所述第i类型的条目的退出码标识为第i退出码。
进一步的,所述检测模块304,具体用于在全部的测试模块中提取出一个测试模块作为当前测试模块;基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;将下一个测试模块作为所述当前测试模块,直到计算出各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;根据各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,检测出所述测试单元的稳定性。
进一步的,所述检测模块304,具体用于基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的表示单元测试失败重复的计数值;根据所述当前测试模块对应的表示单元测试失败重复的计数值,以及所述当前测试模块对应的数据库中全部条目的数量,计算所述当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例。
进一步的,所述检测模块304,具体用于将所述当前测试模块对应的表示单元测试失败重复的计数值的初始值设置为0;若当前测试模块对应的数据库中的条目不为空,则在所述当前测试模块对应的数据库中提取出一个条目作为当前条目;若所述当前条目的状态标识为失败状态且所述当前条目的退出码为第三退出码,则判断所述当前条目在已提取出的条目中是否出现过;若所述当前条目在已提取出的条目中出现过,则将所述当前测试模块对应的表示单元测试失败重复的计数值加1;将下一个条目作为所述当前条目,直到所述当前测试模块对应的数据库中的条目为空;得到所述当前测试模块对应的表示单元测试失败重复的计数值。
上述检测单元测试稳定性的装置可执行本申请任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请任意实施例提供的检测单元测试稳定性的方法。
实施例四
根据本申请的实施例,本申请实施例还提供了一种电子设备和一种可读存储介质。
如图5所示,是根据本申请实施例的检测单元测试稳定性的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的检测单元测试稳定性的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的检测单元测试稳定性的方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的检测单元测试稳定性的方法对应的程序指令/模块(例如,附图3所示的接收模块301、测试模块302、保存模块303和检测模块304)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的检测单元测试稳定性的方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据检测单元测试稳定性的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至检测单元测试稳定性的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
检测单元测试稳定性的方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与检测单元测试稳定性的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
根据本申请实施例的技术方案,先接收用户提交的各个测试任务;然后将各个测试任务提交至预先设置的测试单元中,得到测试单元返回的各个测试模块针对于各个测试任务的测试结果;接着按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;再基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出测试单元的稳定性。也就是说,本申请可以按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存在各个测试模块对应的数据库中。而现阶段还没有一种完整的方法来检测单元测试的稳定性。因为本申请采用了按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存在各个测试模块对应的数据库中的技术手段,解决了现有技术中无法检测单元测试稳定性的技术问题,本申请提供的技术方案,可以有效地检测出单元测试的稳定性,从而可以提高单元测试的效率;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (18)

1.一种检测单元测试稳定性的方法,所述方法包括:
接收用户提交的各个测试任务;
将各个测试任务提交至预先设置的测试单元中,通过所述测试单元得到各个测试模块针对于各个测试任务的测试结果;
按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;
基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出所述测试单元的稳定性。
2.根据权利要求1所述的方法,所述测试结果的类型包括以下其中之一:编译成功且单元测试成功、编译失败、编译成功且单元测试失败、非编译失败且非单元测试失败。
3.根据权利要求2所述的方法,所述按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中,包括:
在全部的测试模块中提取出一个测试模块作为当前测试模块;
根据所述当前测试模块针对于各个测试任务的测试结果,将表示所述当前测试模块针对于各个测试任务的测试结果的条目保存到所述当前测试模块对应的数据库中;将下一个测试模块作为所述当前测试模块,直到将表示各个测试模块针对于各个测试任务的条目保存至各个测试模块对应的数据库中。
4.根据权利要求3所述的方法,所述将表示所述当前测试模块针对于各个测试任务的测试结果的条目保存到所述当前测试模块对应的数据库中,包括:
若所述当前测试模块针对于各个测试任务的测试结果为第i类型的测试结果,则在所述当前测试模块对应的数据库中添加一个该测试任务对应的第i类型的条目;所述第i类型的条目表示所述当前测试模块对该测试任务的第i类型的测试结果;其中,i大于等于1且小于等于所述测试结果的类型的总数。
5.根据权利要求4所述的方法,所述第i类型的条目的任务标识为各个测试任务的标识;所述第i类型的条目的状态标识为第i类型测结果对应的状态标识;所述第i类型的条目的退出码标识为第i退出码。
6.根据权利要求1所述的方法,所述基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出所述测试单元的稳定性,包括:
在全部的测试模块中提取出一个测试模块作为当前测试模块;
基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;将下一个测试模块作为所述当前测试模块,直到计算出各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;
根据各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,检测出所述测试单元的稳定性。
7.根据权利要求6所述的方法,所述基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,包括:
基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的表示单元测试失败重复的计数值;
根据所述当前测试模块对应的表示单元测试失败重复的计数值,以及所述当前测试模块对应的数据库中全部条目的数量,计算所述当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例。
8.根据权利要求7所述的方法,所述基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的表示单元测试失败重复的计数值,包括:
将所述当前测试模块对应的表示单元测试失败重复的计数值的初始值设置为0;
若当前测试模块对应的数据库中的条目不为空,则在所述当前测试模块对应的数据库中提取出一个条目作为当前条目;若所述当前条目的状态标识为失败状态且所述当前条目的退出码为第三退出码,则判断所述当前条目在已提取出的条目中是否出现过;若所述当前条目在已提取出的条目中出现过,则将所述当前测试模块对应的表示单元测试失败重复的计数值加1;将下一个条目作为所述当前条目,直到所述当前测试模块对应的数据库中的条目为空;得到所述当前测试模块对应的表示单元测试失败重复的计数值。
9.一种检测单元测试稳定性的装置,所述装置包括:接收模块、测试模块、保存模块和检测模块;其中,
所述接收模块,用于接收用户提交的各个测试任务;
所述测试模块,用于将各个测试任务提交至预先设置的测试单元中,通过所述测试单元得到各个测试模块针对于各个测试任务的测试结果;
所述保存模块,用于按照预先设定的数据结构将各个测试模块针对于各个测试任务的测试结果保存至各个测试模块对应的数据库中;
所述检测模块,用于基于各个数据库中保存的各个测试模块针对于各个测试任务的测试结果,检测出所述测试单元的稳定性。
10.根据权利要求9所述的装置,所述测试结果的类型包括以下其中之一:编译成功且单元测试成功、编译失败、编译成功且单元测试失败、非编译失败且非单元测试失败。
11.根据权利要求10所述的装置,所述保存模块包括:提取子模块和保存子模块;其中,
所述提取子模块,用于在全部的测试模块中提取出一个测试模块作为当前测试模块;
所述保存子模块,用于根据所述当前测试模块针对于各个测试任务的测试结果,将表示所述当前测试模块针对于各个测试任务的测试结果的条目保存到所述当前测试模块对应的数据库中;将下一个测试模块作为所述当前测试模块,直到将表示各个测试模块针对于各个测试任务的条目保存至各个测试模块对应的数据库中。
12.根据权利要求11所述的装置,所述保存子模块,具体用于若所述当前测试模块针对于各个测试任务的测试结果为第i类型的测试结果,则在所述当前测试模块对应的数据库中添加一个该测试任务对应的第i类型的条目;所述第i类型的条目表示所述当前测试模块对该测试任务的第i类型的测试结果;其中,i大于等于1且小于等于所述测试结果的类型的总数。
13.根据权利要求12所述的装置,所述第i类型的条目的任务标识为各个测试任务的标识;所述第i类型的条目的状态标识为第i类型测结果对应的状态标识;所述第i类型的条目的退出码标识为第i退出码。
14.根据权利要求9所述的装置,所述检测模块,具体用于在全部的测试模块中提取出一个测试模块作为当前测试模块;基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;将下一个测试模块作为所述当前测试模块,直到计算出各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例;根据各个测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例,检测出所述测试单元的稳定性。
15.根据权利要求14所述的装置,所述检测模块,具体用于基于所述当前测试模块对应的数据库中保存的所述当前测试模块针对于各个测试任务的测试结果,计算所述当前测试模块对应的表示单元测试失败重复的计数值;根据所述当前测试模块对应的表示单元测试失败重复的计数值,以及所述当前测试模块对应的数据库中全部条目的数量,计算所述当前测试模块对应的出现随机故障的测试任务在全部的测试任务中所占的比例。
16.根据权利要求15所述的装置,所述检测模块,具体用于将所述当前测试模块对应的表示单元测试失败重复的计数值的初始值设置为0;若当前测试模块对应的数据库中的条目不为空,则在所述当前测试模块对应的数据库中提取出一个条目作为当前条目;若所述当前条目的状态标识为失败状态且所述当前条目的退出码为第三退出码,则判断所述当前条目在已提取出的条目中是否出现过;若所述当前条目在已提取出的条目中出现过,则将所述当前测试模块对应的表示单元测试失败重复的计数值加1;将下一个条目作为所述当前条目,直到所述当前测试模块对应的数据库中的条目为空;得到所述当前测试模块对应的表示单元测试失败重复的计数值。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-8中任一项所述的方法。
CN202011017816.7A 2020-09-24 2020-09-24 检测单元测试稳定性的方法、装置、电子设备及存储介质 Active CN111984545B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011017816.7A CN111984545B (zh) 2020-09-24 2020-09-24 检测单元测试稳定性的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011017816.7A CN111984545B (zh) 2020-09-24 2020-09-24 检测单元测试稳定性的方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111984545A true CN111984545A (zh) 2020-11-24
CN111984545B CN111984545B (zh) 2023-07-28

Family

ID=73450284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011017816.7A Active CN111984545B (zh) 2020-09-24 2020-09-24 检测单元测试稳定性的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111984545B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112597046A (zh) * 2020-12-29 2021-04-02 上海商汤智能科技有限公司 测试方法、装置、计算机设备及存储介质
CN113204478A (zh) * 2021-04-06 2021-08-03 北京百度网讯科技有限公司 测试单元的运行方法、装置、设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010271269A (ja) * 2009-05-25 2010-12-02 Hitachi Kokusai Electric Inc 試験装置
CN103164335A (zh) * 2011-12-19 2013-06-19 阿里巴巴集团控股有限公司 检查单元测试质量的方法和系统
US9058424B1 (en) * 2012-10-29 2015-06-16 The Mathworks, Inc. Automatic unit test generation and execution
CN105405221A (zh) * 2015-10-28 2016-03-16 深圳怡化电脑股份有限公司 一种自动化测试的方法及装置
CN109753428A (zh) * 2018-12-13 2019-05-14 浙江数链科技有限公司 业务测试方法、装置、计算机设备和可读存储介质
CN109889587A (zh) * 2019-02-12 2019-06-14 青岛海尔科技有限公司 物联网系统自动化构建方法、装置、设备及存储介质
CN111459813A (zh) * 2020-03-30 2020-07-28 北京百度网讯科技有限公司 测试处理方法及装置
CN111554344A (zh) * 2020-04-28 2020-08-18 深圳佰维存储科技股份有限公司 存储单元测试方法、装置、存储介质及电子设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010271269A (ja) * 2009-05-25 2010-12-02 Hitachi Kokusai Electric Inc 試験装置
CN103164335A (zh) * 2011-12-19 2013-06-19 阿里巴巴集团控股有限公司 检查单元测试质量的方法和系统
US9058424B1 (en) * 2012-10-29 2015-06-16 The Mathworks, Inc. Automatic unit test generation and execution
CN105405221A (zh) * 2015-10-28 2016-03-16 深圳怡化电脑股份有限公司 一种自动化测试的方法及装置
CN109753428A (zh) * 2018-12-13 2019-05-14 浙江数链科技有限公司 业务测试方法、装置、计算机设备和可读存储介质
CN109889587A (zh) * 2019-02-12 2019-06-14 青岛海尔科技有限公司 物联网系统自动化构建方法、装置、设备及存储介质
CN111459813A (zh) * 2020-03-30 2020-07-28 北京百度网讯科技有限公司 测试处理方法及装置
CN111554344A (zh) * 2020-04-28 2020-08-18 深圳佰维存储科技股份有限公司 存储单元测试方法、装置、存储介质及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
任俊;: "软件单元测试及测试用例设计", 科技与企业, no. 04, pages 305 *
高远;杨欣;李凯;: "基于JTest的自动化单元测试技术", 指挥信息系统与技术, no. 04, pages 95 - 99 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112597046A (zh) * 2020-12-29 2021-04-02 上海商汤智能科技有限公司 测试方法、装置、计算机设备及存储介质
CN113204478A (zh) * 2021-04-06 2021-08-03 北京百度网讯科技有限公司 测试单元的运行方法、装置、设备和存储介质
CN113204478B (zh) * 2021-04-06 2022-05-03 北京百度网讯科技有限公司 测试单元的运行方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN111984545B (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN111507104B (zh) 建立标签标注模型的方法、装置、电子设备和可读存储介质
US20220114218A1 (en) Session Recommendation Method, Device and Electronic Equipment
CN111488740B (zh) 一种因果关系的判别方法、装置、电子设备及存储介质
CN113342345A (zh) 深度学习框架的算子融合方法、装置
CN112270399B (zh) 基于深度学习的算子注册处理方法、装置及电子设备
JP7289334B2 (ja) コードをテストするための方法及び装置、電子機器、記憶媒体並びにコンピュータプログラム
CN110706147B (zh) 图像处理的环境确定方法、装置、电子设备和存储介质
US12105750B2 (en) Method and apparatus for mining entity relationship, electronic device, and storage medium
CN111984545B (zh) 检测单元测试稳定性的方法、装置、电子设备及存储介质
CN111475164A (zh) 组件依赖关系检测方法、装置以及电子设备
CN110647937A (zh) 标注模型训练方法及装置
CN112269706A (zh) 接口参数校验方法、装置、电子设备以及计算机可读介质
CN112084150A (zh) 模型训练、数据检索方法,装置,设备以及存储介质
CN110472034A (zh) 问答系统的检测方法、装置、设备及计算机可读存储介质
CN112381167A (zh) 训练任务分类模型的方法、任务分类方法和装置
CN112149828A (zh) 基于深度学习框架的算子精度检测方法和装置
CN112069155A (zh) 数据多维分析模型生成方法和装置
CN115481594B (zh) 计分板实现方法、计分板、电子设备及存储介质
CN111694686B (zh) 一种异常服务的处理方法、装置、电子设备及存储介质
CN110865934B (zh) 代码验证方法、装置、电子设备及可读存储介质
CN112101447A (zh) 数据集的质量评估方法、装置、设备以及存储介质
CN111292223A (zh) 图计算的处理方法、装置、电子设备及存储介质
CN111523000A (zh) 用于导入数据的方法、装置、设备以及存储介质
CN111737118B (zh) 一种流水线测试方法、装置、电子设备及存储介质
CN111985221B (zh) 一种文本事理关系的识别方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant