CN112597046B - 测试方法、装置、计算机设备及存储介质 - Google Patents

测试方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112597046B
CN112597046B CN202011593160.3A CN202011593160A CN112597046B CN 112597046 B CN112597046 B CN 112597046B CN 202011593160 A CN202011593160 A CN 202011593160A CN 112597046 B CN112597046 B CN 112597046B
Authority
CN
China
Prior art keywords
test
neural network
target
code
periodic
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.)
Active
Application number
CN202011593160.3A
Other languages
English (en)
Other versions
CN112597046A (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.)
Shanghai Sensetime Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Intelligent 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 Shanghai Sensetime Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Intelligent Technology Co Ltd
Priority to CN202011593160.3A priority Critical patent/CN112597046B/zh
Publication of CN112597046A publication Critical patent/CN112597046A/zh
Application granted granted Critical
Publication of CN112597046B publication Critical patent/CN112597046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种软件测试方法、装置计算机设备及存储介质,其中,该方法包括:响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象、以及目标测试方式;按照所述目标测试方式,对所述目标测试对象进行测试。本公开实施例通过在软件测试中设置不同的测试等级,并为不同的测试等级设置对应的目标测试对象和目标测试方式,进而可以在软件开发过程中的不同阶段,对软件中不同的测试对象进行更有针对性的测试,有利于深度学习框架中新功能的快速交付。

Description

测试方法、装置、计算机设备及存储介质
技术领域
本公开涉及软件工程技术领域,具体而言,涉及一种测试方法、装置、计算机设备及存储介质。
背景技术
在软件的开发过程中,在开发进程进行到一定阶段时,通常需要对已经实现的程序功能进行测试,以排除与程序功能对应的代码中所存在的各种问题。为了加快软件新版本的交付,可以对新功能对应的代码进行单独测试,测试通过后即可发布。
深度学习框架是一类较为复杂的软件,其中涉及到多项功能,如计算设备调度、多线程管理、内存管理、通信等,同时还要保证数值计算的高精度,因而不能对其中某个功能对应的代码进行单独测试后交付,而是需要使用真实场景下的对深度神经网络的训练作为测试用例,基于对深度神经网络的训练过程,实现对深度学习框架的测试;对深度神经网络的训练过程会占用大量的计算资源,且耗时较久,不利于新功能的快速交付。
发明内容
本公开实施例至少提供一种测试方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种用于训练神经网络的软件的测试方法,包括:响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象、以及目标测试方式;按照所述目标测试方式,对所述目标测试对象进行测试。
这样,在软件测试中设置不同的测试等级,并为不同的测试等级设置对应的目标测试对象和目标测试方式,进而可以在软件开发过程中的不同阶段,对软件中不同的测试对象进行更有针对性的测试,有利于深度学习框架中新功能的快速交付。
一种可能的实施方式中,所述测试等级包括下述至少一项:功能单元测试、分支代码测试、周期性测试、以及系统测试。
一种可能的实施方式中,针对所述测试等级包括功能单元测试的情况,触发所述功能单元测试,包括:检测代码提交事件是否被触发;在所述代码提交事件被触发的情况下,触发所述功能单元测试;其中,所述功能单元测试对应的目标测试对象包括:待提交的新增代码、和/或修改代码;所述功能单元测试对应的目标测试方式包括:对所述目标测试对象进行代码语法检查、和/或代码逻辑检查。
这样,通过在提交新增代码和/或修改代码时,对新增代码和/或修改代码进行语法检查和/或代码逻辑检查,实现了对新增代码和/或修改代码进行针对性的测试。
一种可能的实施方式中,所述代码提交事件被触发,包括下述至少一种:接收到代码提交指令;检测到原有的代码文件被更改;检测到增加了新的代码文件。
这样,能够在有新增代码、或者修改代码行为发生时,进行即时的测试,避免代码语法问题和逻辑问题的问题堆积。
一种可能的实施方式中,针对所述测试等级包括分支代码测试的情况,触发所述分支代码测试,包括:检测代码合并事件是否被触发;其中,所述代码合并事件包括:开发分支代码被合并到所述软件的主分支代码中;在所述代码合并事件被触发的情况下,触发所述分支代码测试;所述分支代码测试对应的目标测试对象包括:将开发分支代码合并至所述主分支代码时,生成的待测试代码。
这样,能够在开发分支代码合并至主分支代码时,对生成的待测试代码进行及时的测试,及时发现待测试代码中的问题。
一种可能的实施方式中,所述分支代码测试对应目标测试方式包括:从神经网络库中的多个神经网络中,确定第一目标神经网络;以及从所述第一目标神经网络的训练数据中,确定目标训练数据;利用所述待测试代码、以及所述目标训练数据,对所述第一目标神经网络进行预设轮数的第一训练,并基于所述第一训练过程中报错信息、和/或所述第一训练得到的第一目标神经网络的网络性能参数,得到所述待测试代码的性能测试结果。
这样,采用少量的训练数据,利用待测试代码对第一目标神经网络进行有限轮数的迭代训练,可以在较短时间内完成分支代码测试的过程,验证在将开发分支代码合并至所述主分支代码时,所得到的待测试代码功能是否正常,测试效率较高。
一种可能的实施方式中,所述从神经网络库中的多个神经网络中,确定第一目标神经网络,包括:按照所述多个神经网络分别相对于所述分支代码测试的测试等级,从所述多个神经网络中,确定所述第一目标神经网络;其中,所述多个神经网络中每个神经网络相对于所述分支代码测试的测试等级,是基于利用所述每个神经网络进行分支代码测试得到的测试结果确定的。
这样,在利用神经网络进行分支代码测试得到的测试结果确定神经网络的测试等级时,测试结果中存在问题越多,或者问题越严重的神经网络,有更高的概率被选作分支代码测试的第一目标神经网络,这样能够更多的选择能够在分支代码测试过程中暴露出待测试代码的神经网络对其进行测试,能够更好的、更充分的发现待测试代码中存在的问题。
一种可能的实施方式中,针对所述测试等级包括周期性测试的情况,触发所述周期性测试,包括:响应于距离上一次周期性测试的测试时间的时间间隔达到所述周期性测试的测试周期,触发所述周期性测试;所述周期性测试对应的目标测试对象包括:触发所述周期性测试时,所述软件的主分支代码。
一种可能的实施方式中,所述周期性测试对应的目标测试方式,包括:从神经网络库中的多个神经网络中,确定第二目标神经网络;利用所述主分支代码、以及所述第二目标神经网络对应的全量训练数据,对所述第二目标神经网络进行第二训练;所述主分支代码在对所述第二目标神经网络进行第二训练过程中生成的提示信息,和/或,所述第二训练得到的第二目标神经网络的网络性能参数,得到所述主分支代码的性能测试结果。
这样,从神经网络库中的多个神经网络中,确定第二目标神经网络,并利用主分支代码、以及第二目标神经网络对应的全量数据,对第二目标神经网络进行第二训练,从而可以在全量训练数据的基础上,周期性的对主分支代码进行较为全面的测试,并通过周期性测试及时发现问题,防止软件的问题积压或者被掩盖。
一种可能的实施方式中,所述从神经网络库中的多个神经网络中,确定第二目标神经网络,包括:按照所述多个神经网络分别相对于所述周期性测试的测试等级,从所述多个神经网络中,确定所述第二目标神经网络;其中,所述多个神经网络中每个神经网络相对于所述周期性测试的测试等级,是基于利用所述每个神经网络进行周期性测试得到的测试结果确定的。
一种可能的实施方式中,所述网络性能参数,包括下述至少一种:神经网络的处理精度、神经网络在对数据进行处理时所需的处理时长、以及神经网络在对数据进行处理时对计算资源的占用信息。
一种可能的实施方式中,所述周期性测试对应的目标测试方式,还包括:获取所述主分支代码提供的多种功能中至少一种功能对应的测试用例;针对所述至少一种功能中的每种功能,利用所述每种功能对应的测试用例,对所述每种功能进行功能测试,得到所述每种功能的功能测试结果。
这样,可以实现对主分支代码提供的功能的测试。
一种可能的实施方式中,所述周期性测试,包括:第一周期性测试、以及第二周期性测试;其中,所述第一周期性测试的测试周期,小于所述第二周期性测试的测试周期;所述的第一周期性测试的测试截止条件包括:训练回合数小于或者等于预设回合数阈值;所述第二周期性测试的测试截止条件包括:神经网络收敛。
这样,通过设置多个周期性测试,并且不同周期性测试的测试周期不同,截止条件也有所差异,能够在周期测试过程中及时的发现主分支代码存在的问题,防止问题积压,或者由于采用的第二目标神经网络未能发现软件问题而导致的问题被掩盖。
一种可能的实施方式中,针对所述测试等级包括所述系统测试的情况,所述系统测试对应的目标测试对象包括:所述系统测试被触发时所述软件的主分支代码。
一种可能的实施方式中,还包括:基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中并未存在异常的第一神经网络;对所述第一神经网络进行更新。
这样,对于在分支代码测试、周期性测试、系统测试的测试结果中,未存在异常的第一神经网络,由于其并不能很好的发现软件中存在的异常,因此可以对第一神经网络进行更新,以期更新后的神经网络能够更好的发现软件中存在的异常。
一种可能的实施方式中,还包括:基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中出现异常的第二神经网络;基于所述第二神经网络对应的异常类型,确定与所述第二神经网络对应的测试等级。
一种可能的实施方式中,还包括:存储至少一个通过测试的历史版本;在目标测试对象的当前版本存在异常的情况下,响应用户的指令,将最近一个历史版本作为待发布版本。
第二方面,本公开实施例还提供一种软件测试装置,包括:响应模块,用于响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象;测试模块,用于按照与所述目标测试对象对应的目标测试方式,对所述目标测试对象进行测试。
一种可能的实施方式中,所述测试等级包括下述至少一项:功能单元测试、分支代码测试、周期性测试、以及系统测试。
一种可能的实施方式中,针对所述测试等级包括功能单元测试的情况,还包括:第一触发模块,用于采用下述方式触发所述功能单元测试:检测代码提交事件是否被触发;在所述代码提交事件被触发的情况下,触发所述功能单元测试;其中,所述功能单元测试对应的目标测试对象包括:待提交的新增代码、和/或修改代码;所述功能单元测试对应的目标测试方式包括:对所述目标测试对象进行代码语法检查、和/或代码逻辑检查。
一种可能的实施方式中,所述代码提交事件被触发,包括下述至少一种:接收到代码提交指令;检测到原有的代码文件被更改;检测到增加了新的代码文件。
一种可能的实施方式中,针对所述测试等级包括分支代码测试的情况,还包括:第二触发模块,用于采用下述方式触发所述分支代码测试:检测代码合并事件是否被触发;其中,所述代码合并事件包括:开发分支代码被合并到所述软件的主分支代码中;在所述代码合并事件被触发的情况下,触发所述分支代码测试;所述分支代码测试对应的目标测试对象包括:将开发分支代码合并至所述主分支代码时,生成的待测试代码。
一种可能的实施方式中,所述分支代码测试对应的目标测试方式包括:从神经网络库中的多个神经网络中,确定第一目标神经网络;以及从所述第一目标神经网络的训练数据中,确定目标训练数据;利用所述待测试代码、以及所述目标训练数据,对所述第一目标神经网络进行预设轮数的第一训练,并基于所述第一训练过程中报错信息、和/或所述第一训练得到的第一目标神经网络的网络性能参数,得到所述待测试代码的性能测试结果。
一种可能的实施方式中,测试模块用于采用下述方式从神经网络库中的多个神经网络中,确定第一目标神经网络:按照所述多个神经网络分别相对于所述分支代码测试的测试等级,从所述多个神经网络中,确定所述第一目标神经网络;其中,所述多个神经网络中每个神经网络相对于所述分支代码测试的测试等级,是基于利用所述每个神经网络进行分支代码测试得到的测试结果确定的。
一种可能的实施方式中,针对所述测试等级包括周期性测试的情况,还包括:第三触发模块,用于采用下述方式:响应于距离上一次周期性测试的测试时间的时间间隔达到所述周期性测试的测试周期,触发所述周期性测试;述周期性测试对应的目标测试对象包括:触发所述周期性测试时,所述软件的主分支代码。
一种可能的实施方式中,所述周期性测试对应的目标测试方式,包括:从神经网络库中的多个神经网络中,确定第二目标神经网络;利用所述主分支代码、以及所述第二目标神经网络对应的全量训练数据,对所述第二目标神经网络进行第二训练;所述主分支代码在对所述第二目标神经网络进行第二训练过程中生成的提示信息,和/或,所述第二训练得到的第二目标神经网络的网络性能参数,得到所述主分支代码的性能测试结果。
一种可能的实施方式中,测试模块,用于采用下述方式从神经网络库中的多个神经网络中,确定第二目标神经网络:按照所述多个神经网络分别相对于所述周期性测试的测试等级,从所述多个神经网络中,确定所述第二目标神经网络;其中,所述多个神经网络中每个神经网络相对于所述周期性测试的测试等级,是基于利用所述每个神经网络进行周期性测试得到的测试结果确定的。
一种可能的实施方式中,所述网络性能参数,包括下述至少一种:神经网络的处理精度、神经网络在对数据进行处理时所需的处理时长、以及神经网络在对数据进行处理时对计算资源的占用信息。
一种可能的实施方式中,所述周期性测试对应的目标测试方式,还包括:获取所述主分支代码提供的多种功能中至少一种功能对应的测试用例;针对所述至少一种功能中的每种功能,利用所述每种功能对应的测试用例,对所述每种功能进行功能测试,得到所述每种功能的功能测试结果。
一种可能的实施方式中,所述周期性测试,包括:第一周期性测试、以及第二周期性测试;其中,所述第一周期性测试的测试周期,小于所述第二周期性测试的测试周期;所述的第一周期性测试的测试截止条件包括:训练回合数小于或者等于预设回合数阈值;所述第二周期性测试的测试截止条件包括:神经网络收敛。
一种可能的实施方式中,针对所述测试等级包括所述系统测试的情况,所述系统测试对应的目标测试对象包括:所述系统测试被触发时所述软件的主分支代码。
一种可能的实施方式中,还包括:更新模块,用于基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中并未存在异常的第一神经网络;对所述第一神经网络进行更新。
一种可能的实施方式中,还包括:确定模块,用于基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中出现异常的第二神经网络;基于所述第二神经网络对应的异常类型,确定与所述第二神经网络对应的测试等级。
一种可能的实施方式中,还包括:发布模块,用于存储至少一个通过测试的历史版本;在目标测试对象的当前版本存在异常的情况下,响应用户的指令,将最近一个历史版本作为待发布版本。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述软件测试装置、计算机设备、及计算机可读存储介质的效果描述参见上述软件测试方法的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种软件测试方法的流程图;
图2示出了本公开实施例所提供的一种软件测试装置的示意图;
图3示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,由于深度学习框架的功能的复杂性,当前在对深度学习框架进行软件测试的时候,在每次需要交付新功能的时候,通常既要利用不同功能分别对应的测试用例针对深度学习框架支持的各种功能进行功能性测试,又需要利用待测试的学习框架对多个神经网络模型进行充分的训练,以实现对深度学习框架的充分测试;而神经网络训练过程需要花费大量的时间,当前对深度学习框架的测试方式会占用大量的计算资源,且花费较大的时间成本,不利于新功能的快速交付。
基于上述研究,本公开提供了一种用于训练神经网络的软件的测试方法,通过对软件进行测试等级的分级,并在响应不同的测试等级被触发后,按照与触发的测试等级对应的目标测试方式,对与触发的测试等级对应的目标测试对象进行测试,从而通过对软件的不同目标测试对象进行针对性的测试,更有利于深度学习框架中新功能的快速交付。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种用于训练神经网络的软件的测试方法进行详细介绍,本公开实施例所提供的测试方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该测试方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面对本公开实施例提供的测试方法加以说明。
参见图1所示,为本公开实施例提供的测试方法的流程图,所述方法包括步骤S101~S102,其中:
S101:响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象、以及目标测试方式;
S102:按照所述目标测试方式,对所述目标测试对象进行测试。
本公开实施例响应针对软件的多种测试等级中任一测试等级的触发,确定与该任一测试等级对应的目标测试对象以及目标测试方式;后按照目标测试方式,对目标测试对象进行测试;而不同的测试等级,对应的测试对象和/或测试方式可以有所不同,从而通过对软件中不同的测试对象进行更有针对性的测试,有利于深度学习框架中新功能的快速交付。其中,任一测试等级可以包括随机确定的测试等级,或是基于需求指定的某一或是某些测试等级,在此不予限定。
下面对上述S101~S102加以详细描述。
本公开实施例中,测试等级例如包括下述a1~a4中一种或者多种:
a1:功能单元测试。
此处,功能单元测试,例如包括对软件的某个功能单元进行测试。
针对测试等级包括功能单元测试的情况,触发功能的单元测试,例如包括:
检测代码提交事件是否被触发;
在所述代码提交事件被触发的情况下,触发所述功能单元测试;
其中,所述功能单元测试对应的目标测试对象包括:待提交的新增代码、和/或修改代码;
所述功能单元测试对应的目标测试方式包括:对所述目标测试对象进行代码语法检查、和/或代码逻辑检查。
此处,代码提交事件包括下述至少一种:
①:接收到代码提交指令;
②:检测到原有的代码文件被更改;
③:检测到增加了新的代码文件。
在具体实施中,软件的代码通常以多个代码文件的形式被组织在一起;且软件的一个功能,可以由被组织在一起的多个代码文件中的至少一个代码文件实现。软件开发过程通常是基于某个软件开发框架实现的,软件开发框架能够向开发者提供代码管理平台,该管理平台能够集中管理在软件开发过程中所产出的代码文件,用户可以通过终端设备问该管理平台,对管理平台上的代码文件进行修改、新增、删除等操作。
功能单元测试例如可以集成在软件开发框架中;用户通过终端设备向管理平台提交新增的代码文件,和/或提交修改的代码文件时,可以通过触发终端设备中为用户提供的代码提交控件,此时,触发代码提交指令。当该代码提交控件被触发后,确定代码提交事件被触发。在这种情况下,将终端设备向代码管理平台提交的新增代码、或者修改代码,作为目标检测对象,并对提交的诸如新增代码和/或修改代码,进行代码语法检查和代码逻辑检查中的至少一项。
此处,例如可以在终端设备中对新增代码和/或修改代码进行代码语法检查和/或代码逻辑检查;也可以在将新增代码和/或修改代码提交至代码管理平台后,由代码管理平台对新增代码和/或修改代码进行代码语法检查和/或代码逻辑检查。
在另一种可能的实施方式中,管理平台在接收到通过终端设备提交的新增代码和/或修改代码后,确定代码提交事件被触发。比如,用户可以通过终端设备提交的新增代码和/或修改代码,管理平台在接收到提交的新增代码和/或修改代码后,确定代码提交事件被触发。在这种情况下,由代码管理平台对新增代码和/或修改代码进行代码语法检查和/或代码逻辑检查。
另一种可能的实施方式中,管理平台或者终端设备也可以对所保存的代码文件进行监测。在监测过程中,检测到新增了代码文件,或者原有的代码文件被修改,则确定代码提交事件被触发。此时,由进行监测的管理平台或者终端设备对新增代码和/或修改代码进行代码语法检查和/或代码逻辑检查。
此处,管理平台或者终端设备对所保存的代码进行监测的过程可以是周期性的,也可以是实时。
在周期性监测时,管理平台或者终端设备例如可以在周期到达时生成各个代码文件的消息摘要,并将消息摘要和最近一个周期生成的各个代码文件的消息摘要进行比对;若任一代码文件在当前周期和上一周期的消息摘要不一致,则确定代码提交事件被触发;另外,管理平台或者终端设备还可以周期性检测代码文件的数量,若当前周期与上衣周期的代码文件数量不一致,则确定代码提交事件被触发。
在实时监测时,在终端设备提交了新增代码和/或修改代码后,管理平台可以接收到对应的指令;管理平台在接收到对应的指令后,触发代码提交事件。
a2:分支代码测试。
在具体实施行中,在软件开发过程中,所产生的代码包括主分支代码和开发分支代码。其中,主分支代码是所有开发活动的核心分支,所有的开发活动产生的输出最终都会反映到主分支代码中;在主分支上存放的是随时可供在生产环境中部署的代码。当开发活动到达一定阶段,产生了新的可供部署的代码时,主分支上的主分支代码将会被更新。
开发分支代码上存放的是当前最新的开发成果,或者历史开发成果,这些开发成果并未合并至主分支代码中。开发分支可以有多个,每个开发分支可以实现软件的至少一个功能。当某个开发分支的分支代码实现了软件的某个功能,并且通过了功能单元测试后,其可以被合并至主分支代码中。若检测到代码合并事件被触发,则触发分支代码测试。
示例性的,代码合并事件包括:开发分支代码被合并到所述软件的主分支代码中。
此处,开发分支代码例如包括:修改代码和/或新增代码。
在测试等级包括分支代码测试的情况下,分支代码测试对应的目标测试对象包括:将开发分支代码合并至所述主分支代码时,生成的待测试代码
分支代码测试对应的目标测试方式例如包括:
从神经网络库中的多个神经网络中,确定第一目标神经网络;以及从所述第一目标神经网络的训练数据中,确定目标训练数据;
利用所述待测试代码、以及所述第一目标训练数据,对所述第一目标神经网络进行预设轮数的第一训练,并基于所述第一训练过程中报错信息、和/或所述第一训练得到的第一目标神经网络的网络性能参数,得到所述待测试代码的性能测试结果。
此处,在一种可能的实施例中,在从神经网络库中的多个神经网络中,确定第一目标神经网络时,例如可以从神经网络库中随机选择N个神经网络作为第一目标神经网络。
在确定了第一目标神经网络后,按照预设的训练数据量阈值,从第一目标神经网络对应的训练数据中,确定目标训练数据。
在另一种可能的实施例中,在从神经网络库中的多个神经网络中,确定第一目标神经网络时,例如还可以按照神经网络库中多个神经网络分别相对于所述分支代码测试的测试等级,从所述多个神经网络中,确定所述第一目标神经网络;
其中,所述多个神经网络中每个神经网络相对于所述分支代码测试的测试等级,是基于利用所述每个神经网络进行分支代码测试得到的测试结果确定的。
示例性的,在利用神经网络进行分支代码测试得到的测试结果确定神经网络的测试等级时,测试结果中存在问题越多,或者问题越严重的神经网络,对应的测试等级越高(此时,测试等级越高,则有更高的概率被选作分支代码测试的第一目标神经网络);测试结果中存在问题越少,或者问题越轻微的神经网络,对应的测试等级越低;此处,可以将不同严重程度的问题进行分类,通过不同异常类型,表征测试结果中存在问题的严重程度。
示例性的,可以通过为多种测试等级分别设置门限或者阈值区间的方式,来确定各个神经网络的测试等级。以设置阈值区间为例,若某个神经网络对应的测试结果中存在的问题数量落入某个阈值区间,则将该阈值区间对应的测试等级确定为该神经网络的测试等级。
另外,可以为不同类型的异常预先确定对应的严重程度;在得到某个神经网络的测试结果后,基于测试结果存在的异常对应的严重程度,确定神经网络的测试等级。此处,在某神经网络对应的多个异常,且多个异常存在不同的严重程度时,可以将等级最高的严重程度,确定为该神经网络对应的严重程度。
此处,测试等级例如与异常的严重程度和/或异常的数量成正相关。具体的确定方式可以根据实际的需要进行确定。
例如,假设神经网络库中包括20个神经网络,分别为A1~A20;在构建神经网络库的时候,可以为所有的神经网络A1~A20设置相同的测试等级0(在该示例中,测试等级的数值越大,则表征等级越高);表征在进行分支代码测试的过程中A1~A20被选择的概率相同。在每次进行分支代码测试的时候,从神经网络库中确定3个作为第一目标神经网络。
在进行第一次分支代码测试的时候,随机从A1~A20确定3个神经网络A2,A13,A17作为第一目标神经网络,并利用确定的3个第一目标神经网络进行分支代码测试;在第一次分支代码测试过程中,在采用A2进行分支代码测试的测试结果中,问题数量为0;采用A13进行分支代码测试的测试结果中,问题数量为7,但问题均较为轻微;采用A17进行分支代码测试时,问题数量为3,但问题较为严重,此时,可以保持A2的测试等级依然为0;将A13的测试等级更新为1;将A17的测试等级更新为2。
在进行第二次分支代码测试的时候,由于A17、A13的测试等级均高于其他的神经网络,因此将A17、A13作为第二次分支代码测试时的第一目标神经网络,同时从A1~A12、A14~A16、A18~A20中随机确定一个第一目标神经网络为A6,然后采用A6、A17、A13进行分支代码测试;在第二次分支代码测试过程中,采用A6进行分支代码测试时的问题数量为9,且问题较为严重;采用A13进行分支代码测试时的问题为2,且均较为轻微;采用A17进行分支代码测试时的问题数量为5,但较为轻微,此时,可以将A6的测试等级更新为3,将A13的测试等级更新为0,将A17的测试等级更新为1。
在以后的分支代码测试时,可以依然采用上述方式更新不同神经网络的在进行分支代码测试时的测试等级。
在另一示例中,也可以针对每个神经网络,基于利用每个神经网络在历史分支代码测试时的测试结果,确定每个神经网络的测试等级。例如为不同的问题严重程度(或者异常类型)确定权值;神经网络的测试等级M满足下述公式(1):
M=α1×m12×m2+…+αn×mn (1)
其中,mi表示n种严重程度中第i种严重程度的问题的数量;αi表示第i种严重程度的问题对应的权值。
通过上述过程,即可从神经网络库中的多个神经网络中,确定第一目标神经网络。
在确定了第一目标神经网络、以及从第一目标神经网络的训练数据中没确定了目标训练数据后,针对每个第一目标神经网络,利用待测试代码、以及第一目标训练数据,对第一目标神经网络进行预设轮数的第一训练。在对第一目标神经网络进行第一训练的过程中,可能会存在各种报错信息;在对第一目标神经网络进行第一训练之后,第一目标神经网络的性能可能无法满足预期。因此,这些都会反映出待测试代码所存在的一些问题。因此,可以基于第一训练过程中的报错信息和/或第一训练得到的第一目标神经网络的网络性能参数,得到待测试代码的性能测试结果。
此处,网络性能参数例如包括:示例性的,所述网络性能参数,例如包括:神经网络的处理精度、神经网络在对数据进行处理时所需的处理时长、以及神经网络在对数据进行处理时对计算资源的占用信息。
在进行分支代码测试的时候,由于会从神经网络库中的多个神经网络中,确定第一目标神经网络,并从第一目标神经网络的训练数据中,确定第一目标训练数据,并利用待测试代码和目标训练数据对第一目标神经网路进行有限轮数的第一训练,该过程采用的训练数据少,且迭代的轮数有限,可以在较短时间内完成分支代码测试的过程,验证在将开发分支代码合并至所述主分支代码时,所得到的待测试代码功能是否正常。
a3:周期性测试。
此处,周期性测试,即为按照预设的时间周期触发的测试。周期性测试对应的目标测试对象包括:触发周期性测试时软件的主分支代码。
针对测试等级包括周期性测试的情况,例如可以采用下述方式触发周期性测试:
响应于距离上一次周期性测试的测试时间的时间间隔达到所述周期性测试的测试周期,触发所述周期性测试。
示例性的,例如可以记录周期性测试的时间,在最近一次周期性测试的测试时间与当前时间之间的时间差,大于或者等于所述周期性测试的测试周期时,触发所述周期性测试。
周期性测试对应的目标测试方式例如包括:从神经网络库中的多个神经网络中,确定第二目标神经网络;
利用所述主分支代码、以及所述第二目标神经网络对应的全量训练数据,对所述第二目标神经网络进行第二训练;所述主分支代码在对所述第二目标神经网络进行第二训练过程中生成的提示信息,和/或,所述第二训练得到的第二目标神经网络的网络性能参数,得到所述主分支代码的性能测试结果。
示例性的,所述网络性能参数,例如包括:神经网络的处理精度、神经网络在对数据进行处理时所需的处理时长、以及神经网络在对数据进行处理时对计算资源的占用信息。
在具体实施中,在周期性测试中,由于会从神经网络库中的多个神经网络中,确定第二目标神经网络,并利用主分支代码、以及第二目标神经网络对应的全量数据,对第二目标神经网络进行第二训练,从而可以在全量训练数据的基础上,周期性的对主分支代码进行较为全面的测试,并通过周期性测试及时发现问题,防止软件的问题积压或者被掩盖。
此处,在从神经网络库中确定神经网络时,可以随机从神经网络库中确定预设数量的神经网络作为第二目标神经网络。
另一实施例中,还可以按照所述多个神经网络分别相对于所述周期性测试的测试等级,从所述多个神经网络中,确定所述第二目标神经网络;
其中,所述多个神经网络中每个神经网络相对于所述周期性测试的测试等级,是基于利用所述每个神经网络进行周期性测试得到的测试结果确定的。
此处,每个神经网络相对于周期性测试的测试等级,与每个神经网络相对于分支代码测试的测试等级的具体获取方式类似,在此不再赘述。
在本公开另一实施例中,周期性测试对应的目标测试方式还包括:获取所述主分支代码提供的多种功能中至少一种功能对应的测试用例;
针对所述至少一种功能中的每种功能,利用所述每种功能对应的测试用例,对所述每种功能进行功能测试,得到所述每种功能的功能测试结果。
此处,主分支代码提供的多种功能例如包括:内存分析功能、模型结构格式化功能、负载均衡功能等,训练数据预处理功能等,具体根据软件能够提供的功能来进行确定。
针对不同的功能,可以预先为不同功能设置对应的测试用例;在对每种功能进行功能性测试时,从测试用例库中读取对应的测试用例,并基于测试用例对软件的相应功能进行功能性测试。
在本公开一实施例中,周期性测试包括:第一周期性测试和第二周期性测试;其中,所述第一周期性测试的测试周期,小于所述第二周期性测试的测试周期;
所述的第一周期性测试的测试截止条件包括:训练回合数小于或者等于预设回合数阈值;
所述第二周期性测试的测试截止条件包括:神经网络收敛。
此处,针对第一周期性测试,该第一周期性测试的测试周期例如可以为:24小时、36小时、48小时等,具体根据实际的测试需求进行确定。在第一周期性测试过程中,由于深度学习模型在训练开始后就可以很快达到比较高的准确率并稳定,之后的训练中准确率上升会很缓慢。因而可以设定精度阈值,在对软件进行第一周期性测试时,在第一周期性测试的测试截止条件满足后,能够得到经过第二训练的第二目标神经网络,若经过第二训练的第二目标神经网络的精度,能够到达设定的精度阈值,则认为第二目标神经网络的网络性能参数达到了预期。
以第一周期性测试的测试周期为24小时为例,第一周期性测试可以隔24小时即进行一次;每次第一周期性测试所采用的第二目标神经网络可以至少部分不同,进而能够基于不同的第二目标神经网络,对触发第一周期性测试时的主分支代码进行及时的测试,从而防止问题积压,或者由于采用的第二目标神经网络未能发现软件问题而导致的问题被掩盖。
针对第二周期性测试,该第二周期性测试的测试周期例如可以为:1周、10天、15天、20天等,具体也可以根据实际的测试需求进行确定。在第二周期性测试的过程中,由于第二周期性测试的测试截止条件包括神经网络收敛,第二周期性测试需要耗费的测试时间,较之第一周期性测试需要耗费的测试时间更久;但也是由于需要测试用的第二目标神经网络收敛后,才会停止该次第二周期性测试,因而能够在第二周期性测试的过程中,全面的对软件的功能性、训练得到的神经网络的性能和数值计算精度进行测试。
a4:系统测试。
系统测试是在软件的某个版本发布之前,触发的对软件的全面测试。
此时,系统测试对应的目标测试对象包括:要发布的软件版本对应的主分支代码。
在系统测试对应的测试方式例如可以包括:响应用户对系统测试事件的触发,利用要发布的版本对应的主分支代码、以及神经网络库中的多个神经网络分别对应的全量训练数据,神经网络库中的多个神经网络分别进行第三训练;
基于所述要发布的版本对应的主分支代码在对所述多个神经网络进行第三训练过程中生成的提示信息,和/或,所述第三训练得到的神经网络的网络性能参数,得到所述要发布的版本对应的主分支代码的性能测试结果。
此处,版本测试的训练截止条件例如包括:多个神经网络均收敛。
通过该系统测试,对将要发布的软件版本对应的主分支代码进行全面测试,进而在软件版本发布之前,保证发布版本的质量。
通过将上述几种对软件的测试方式相结合,即能够实现对软件的全面测试。
在系统测试通过,也即在系统测试过程中未存在某些类型的异常,或者出现的异常被解决,可以将待发布的软件版本对外进行发布。
本公开另一实施例中,若系统测试并未通过,则不会将待发布版本对外进行发布。
本公开另一实施例中,例如还包括:存储至少一个通过测试的历史版本;
在目标测试对象的当前版本存在异常的情况下,响应用户的指令,将最近一个历史版本作为待发布版本。
这样,在不延误预先确定的软件发布时间的情况下,保证了向外界发布的软件能够正常为用户提供进行神经网络训练的服务。
在本公开另一实施例中,还包括:基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中并未存在异常的第一神经网络;
对所述第一神经网络进行更新。
此处,对于在分支代码测试、周期性测试、系统测试的测试结果中,未存在异常的第一神经网络,由于其并不能很好的发现软件中存在的异常,因此可以对第一神经网络进行更新,以期更新后的神经网络能够更好的发现软件中存在的异常。
此处,对第一神经网络进行更新,例如包括:将第一神经网络从神经网络库中删除,将第一神经网络替换为新的神经网络,更改第一神经网络的网络参数等中至少一种。
此处,第一神经网络的网络参数例如包括:如神经网络的网络层层数,采用算子的算子类型等。具体根据实际的需要进行确定。
在本公开另一实施中,还可以基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中出现异常的第二神经网络;
基于所述第二神经网络对应的异常类型,确定与所述第二神经网络对应的测试等级。
其中,由于第二神经网络是测试结果(分支代码测试、周期性测试、以及系统测试中至少一种测试的测试结果)中存在异常的神经网络,因此基于第二神经网络能够很好的发现软件中存在的异常,此时,可以通过确定第二神经网络的测试等级,使得在进行分支代码测试、周期性测试或者系统测试过程中,具有更高的概率能够选择能够更好的测试出软件存在异常的第二神经网络,以期能够更全面的确定软件中出现的问题。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与软件测试方法对应的软件测试装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述软件测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图2所示,为本公开实施例提供的一种软件测试装置的示意图,所述装置包括:
响应模块21,用于响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象;
测试模块22,用于按照与所述目标测试对象对应的目标测试方式,对所述目标测试对象进行测试。
一种可能的实施方式中,所述测试等级包括下述至少一项:
功能单元测试、分支代码测试、周期性测试、以及系统测试。
一种可能的实施方式中,针对所述测试等级包括功能单元测试的情况,还包括:第一触发模块23,用于采用下述方式触发所述功能单元测试:
检测代码提交事件是否被触发;
在所述代码提交事件被触发的情况下,触发所述功能单元测试;
其中,所述功能单元测试对应的目标测试对象包括:待提交的新增代码、和/或修改代码;
所述功能单元测试对应的目标测试方式包括:对所述目标测试对象进行代码语法检查、和/或代码逻辑检查。
一种可能的实施方式中,所述代码提交事件被触发,包括下述至少一种:
接收到代码提交指令;
检测到原有的代码文件被更改;
检测到增加了新的代码文件。
一种可能的实施方式中,针对所述测试等级包括分支代码测试的情况,还包括:第二触发模块24,用于采用下述方式触发所述分支代码测试:
检测代码合并事件是否被触发;其中,所述代码合并事件包括:开发分支代码被合并到所述软件的主分支代码中;
在所述代码合并事件被触发的情况下,触发所述分支代码测试;
所述分支代码测试对应的目标测试对象包括:将开发分支代码合并至所述主分支代码时,生成的待测试代码。
一种可能的实施方式中,所述分支代码测试对应目标测试方式包括:
从神经网络库中的多个神经网络中,确定第一目标神经网络;以及从所述第一目标神经网络的训练数据中,确定目标训练数据;
利用所述待测试代码、以及所述目标训练数据,对所述第一目标神经网络进行预设轮数的第一训练,并基于所述第一训练过程中报错信息、和/或所述第一训练得到的第一目标神经网络的网络性能参数,得到所述待测试代码的性能测试结果。
一种可能的实施方式中,测试模块22用于采用下述方式从神经网络库中的多个神经网络中,确定第一目标神经网络:
按照所述多个神经网络分别相对于所述分支代码测试的测试等级,从所述多个神经网络中,确定所述第一目标神经网络;
其中,所述多个神经网络中每个神经网络相对于所述分支代码测试的测试等级,是基于利用所述每个神经网络进行分支代码测试得到的测试结果确定的。
一种可能的实施方式中,针对所述测试等级包括周期性测试的情况,还包括:第三触发模块28,用于采用下述方式触发所述周期性测试:
响应于距离上一次周期性测试的测试时间的时间间隔达到所述周期性测试的测试周期,触发所述周期性测试;
述周期性测试对应的目标测试对象包括:触发所述周期性测试时,所述软件的主分支代码。
一种可能的实施方式中,所述周期性测试对应的目标测试方式,包括:
从神经网络库中的多个神经网络中,确定第二目标神经网络;
利用所述主分支代码、以及所述第二目标神经网络对应的全量训练数据,对所述第二目标神经网络进行第二训练;
所述主分支代码在对所述第二目标神经网络进行第二训练过程中生成的提示信息,和/或,所述第二训练得到的第二目标神经网络的网络性能参数,得到所述主分支代码的性能测试结果。
一种可能的实施方式中,测试模块22,用于采用下述方式从神经网络库中的多个神经网络中,确定第二目标神经网络:
按照所述多个神经网络分别相对于所述周期性测试的测试等级,从所述多个神经网络中,确定所述第二目标神经网络;
其中,所述多个神经网络中每个神经网络相对于所述周期性测试的测试等级,是基于利用所述每个神经网络进行周期性测试得到的测试结果确定的。
一种可能的实施方式中,所述网络性能参数,包括下述至少一种:
神经网络的处理精度、神经网络在对数据进行处理时所需的处理时长、以及神经网络在对数据进行处理时对计算资源的占用信息。
一种可能的实施方式中,所述周期性测试对应的目标测试方式,还包括:
获取所述主分支代码提供的多种功能中至少一种功能对应的测试用例;
针对所述至少一种功能中的每种功能,利用所述每种功能对应的测试用例,对所述每种功能进行功能测试,得到所述每种功能的功能测试结果。
一种可能的实施方式中,所述周期性测试,包括:第一周期性测试、以及第二周期性测试;
其中,所述第一周期性测试的测试周期,小于所述第二周期性测试的测试周期;
所述的第一周期性测试的测试截止条件包括:训练回合数小于或者等于预设回合数阈值;
所述第二周期性测试的测试截止条件包括:神经网络收敛。
一种可能的实施方式中,针对所述测试等级包括所述系统测试的情况,所述系统测试对应的目标测试对象包括:所述系统测试被触发时所述软件的主分支代码。
一种可能的实施方式中,还包括:更新模块25,用于基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中并未存在异常的第一神经网络;
对所述第一神经网络进行更新。
一种可能的实施方式中,还包括:确定模块26,用于基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中出现异常的第二神经网络;
基于所述第二神经网络对应的异常类型,确定与所述第二神经网络对应的测试等级。
一种可能的实施方式中,还包括:发布模块27,用于存储至少一个通过测试的历史版本;
在目标测试对象的当前版本存在异常的情况下,响应用户的指令,将最近一个历史版本作为待发布版本。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供了一种计算机设备,如图3所示,为本公开实施例提供的计算机设备结构示意图,包括:
处理器31和存储器32;所述存储器32存储有处理器31可执行的机器可读指令,处理器31用于执行存储器32中存储的机器可读指令,所述机器可读指令被处理器31执行时,处理器31执行下述步骤:
响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象、以及目标测试方式;
按照所述目标测试方式,对所述目标测试对象进行测试。
上述存储器32包括内存321和外部存储器322;这里的内存321也称内存储器,用于暂时存放处理器31中的运算数据,以及与硬盘等外部存储器322交换的数据,处理器31通过内存321与外部存储器322进行数据交换。
上述指令的具体执行过程可以参考本公开实施例中所述的用于训练神经网络的软件的测试方法的步骤,此处不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的用于训练神经网络的软件的测试方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品中的计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (17)

1.一种用于训练神经网络的软件的测试方法,其特征在于,包括:
响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象、以及目标测试方式;
按照所述目标测试方式,对所述目标测试对象进行测试;
所述测试等级包括分支代码测试,触发所述分支代码测试,包括:
检测代码合并事件是否被触发;其中,所述代码合并事件包括:开发分支代码被合并到所述软件的主分支代码中;
在所述代码合并事件被触发的情况下,触发所述分支代码测试;
所述分支代码测试对应的目标测试对象包括:将开发分支代码合并至所述主分支代码时,生成的待测试代码;
所述分支代码测试对应的目标测试方式包括:
从神经网络库中的多个神经网络中,确定第一目标神经网络;以及从所述第一目标神经网络的训练数据中,确定目标训练数据;
利用所述待测试代码、以及所述目标训练数据,对所述第一目标神经网络进行预设轮数的第一训练,并基于所述第一训练过程中报错信息、和/或所述第一训练得到的第一目标神经网络的网络性能参数,得到所述待测试代码的性能测试结果;
所述从神经网络库中的多个神经网络中,确定第一目标神经网络,包括:
按照所述多个神经网络分别相对于所述分支代码测试的测试等级,从所述多个神经网络中,确定所述第一目标神经网络;
其中,所述多个神经网络中每个神经网络相对于所述分支代码测试的测试等级,是基于利用所述每个神经网络进行分支代码测试得到的测试结果确定的。
2.根据权利要求1所述的测试方法,其特征在于,所述测试等级还包括下述至少一项:
功能单元测试、周期性测试、以及系统测试。
3.根据权利要求2所述的测试方法,其特征在于,针对所述测试等级包括所述功能单元测试的情况,触发所述功能单元测试,包括:
检测代码提交事件是否被触发;
在所述代码提交事件被触发的情况下,触发所述功能单元测试;
其中,所述功能单元测试对应的目标测试对象包括:待提交的新增代码、和/或修改代码;
所述功能单元测试对应的目标测试方式包括:对所述目标测试对象进行代码语法检查、和/或代码逻辑检查。
4.根据权利要求3所述的测试方法,其特征在于,所述代码提交事件被触发,包括下述至少一种:
接收到代码提交指令;
检测到原有的代码文件被更改;
检测到增加了新的代码文件。
5.根据权利要求2-4任一项所述的测试方法,其特征在于,针对所述测试等级包括周期性测试的情况,触发所述周期性测试,包括:
响应于距离上一次周期性测试的测试时间的时间间隔达到所述周期性测试的测试周期,触发所述周期性测试;
所述周期性测试对应的目标测试对象包括:触发所述周期性测试时,所述软件的主分支代码。
6.根据权利要求5所述的测试方法,其特征在于,所述周期性测试对应的目标测试方式,包括:
从神经网络库中的多个神经网络中,确定第二目标神经网络;
利用所述主分支代码、以及所述第二目标神经网络对应的全量训练数据,对所述第二目标神经网络进行第二训练;
所述主分支代码在对所述第二目标神经网络进行第二训练过程中生成的提示信息,和/或,所述第二训练得到的第二目标神经网络的网络性能参数,得到所述主分支代码的性能测试结果。
7.根据权利要求6所述的测试方法,其特征在于,所述从神经网络库中的多个神经网络中,确定第二目标神经网络,包括:
按照所述多个神经网络分别相对于所述周期性测试的测试等级,从所述多个神经网络中,确定所述第二目标神经网络;
其中,所述多个神经网络中每个神经网络相对于所述周期性测试的测试等级,是基于利用所述每个神经网络进行周期性测试得到的测试结果确定的。
8.根据权利要求1-4、6-7任一项所述的测试方法,其特征在于,所述网络性能参数,包括下述至少一种:
神经网络的处理精度、神经网络在对数据进行处理时所需的处理时长、以及神经网络在对数据进行处理时对计算资源的占用信息。
9.根据权利要求5所述的测试方法,其特征在于,所述周期性测试对应的目标测试方式,还包括:
获取所述主分支代码提供的多种功能中至少一种功能对应的测试用例;
针对所述至少一种功能中的每种功能,利用所述每种功能对应的测试用例,对所述每种功能进行功能测试,得到所述每种功能的功能测试结果。
10.根据权利要求5所述的测试方法,其特征在于,所述周期性测试,包括:第一周期性测试、以及第二周期性测试;
其中,所述第一周期性测试的测试周期,小于所述第二周期性测试的测试周期;
所述的第一周期性测试的测试截止条件包括:训练回合数小于或者等于预设回合数阈值;
所述第二周期性测试的测试截止条件包括:神经网络收敛。
11.根据权利要求2所述的测试方法,其特征在于,
针对所述测试等级包括系统测试的情况,所述系统测试对应的目标测试对象包括:所述系统测试被触发时所述软件的主分支代码。
12.根据权利要求2所述的测试方法,其特征在于,还包括:基于所述分支代码测试、周期性测试、以及系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中并未存在异常的第一神经网络;
对所述第一神经网络进行更新。
13.根据权利要求12所述的测试方法,其特征在于,还包括:基于所述分支代码测试、所述周期性测试、以及所述系统测试中至少一种测试的测试结果,从所述多个神经网络中,确定测试结果中出现异常的第二神经网络;
基于所述第二神经网络对应的异常类型,确定与所述第二神经网络对应的测试等级。
14.根据权利要求1所述的测试方法,其特征在于,还包括:
存储至少一个通过测试的历史版本;
在目标测试对象的当前版本存在异常的情况下,响应用户的指令,将最近一个历史版本作为待发布版本。
15.一种软件测试装置,其特征在于,包括:响应模块,用于响应针对软件的多种测试等级中任一测试等级的触发,确定与所述任一测试等级对应的目标测试对象;
测试模块,用于按照与所述目标测试对象对应的目标测试方式,对所述目标测试对象进行测试;
所述测试等级包括分支代码测试,还包括:第二触发模块,用于采用下述方式触发所述分支代码测试:检测代码合并事件是否被触发;其中,所述代码合并事件包括:开发分支代码被合并到所述软件的主分支代码中;在所述代码合并事件被触发的情况下,触发所述分支代码测试;所述分支代码测试对应的目标测试对象包括:将开发分支代码合并至所述主分支代码时,生成的待测试代码;
所述分支代码测试对应的目标测试方式包括:
从神经网络库中的多个神经网络中,确定第一目标神经网络;以及从所述第一目标神经网络的训练数据中,确定目标训练数据;
利用所述待测试代码、以及所述目标训练数据,对所述第一目标神经网络进行预设轮数的第一训练,并基于所述第一训练过程中报错信息、和/或所述第一训练得到的第一目标神经网络的网络性能参数,得到所述待测试代码的性能测试结果;
所述测试模块用于采用下述方式从神经网络库中的多个神经网络中,确定第一目标神经网络:按照所述多个神经网络分别相对于所述分支代码测试的测试等级,从所述多个神经网络中,确定所述第一目标神经网络;其中,所述多个神经网络中每个神经网络相对于所述分支代码测试的测试等级,是基于利用所述每个神经网络进行分支代码测试得到的测试结果确定的。
16.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至14任一项所述的软件测试方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至14任一项所述的软件测试方法的步骤。
CN202011593160.3A 2020-12-29 2020-12-29 测试方法、装置、计算机设备及存储介质 Active CN112597046B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011593160.3A CN112597046B (zh) 2020-12-29 2020-12-29 测试方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011593160.3A CN112597046B (zh) 2020-12-29 2020-12-29 测试方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112597046A CN112597046A (zh) 2021-04-02
CN112597046B true CN112597046B (zh) 2024-08-09

Family

ID=75204078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011593160.3A Active CN112597046B (zh) 2020-12-29 2020-12-29 测试方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112597046B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297088B (zh) * 2021-06-08 2023-11-07 北京百度网讯科技有限公司 测试方法、测试装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992404A (zh) * 2016-10-26 2018-05-04 中兴通讯股份有限公司 一种软件自动测试方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100369252B1 (ko) * 2000-05-09 2003-01-24 삼성에스디에스 주식회사 소프트웨어 테스트 시스템 및 그 방법
JP5225553B2 (ja) * 2006-04-17 2013-07-03 シャープ株式会社 テストケース抽出装置、テストケース抽出プログラム、テストケース抽出プログラムが格納された記憶媒体およびテストケース抽出方法
US11093826B2 (en) * 2016-02-05 2021-08-17 International Business Machines Corporation Efficient determination of optimized learning settings of neural networks
CN106649110B (zh) * 2016-12-15 2023-09-15 中标软件有限公司 软件测试方法及系统
CN109960643B (zh) * 2017-12-22 2022-07-22 网宿科技股份有限公司 一种代码测试方法和装置
CN108170594A (zh) * 2017-12-25 2018-06-15 郑州云海信息技术有限公司 一种神经网络模型的测试方法、装置及设备
CN108388509B (zh) * 2018-02-07 2020-07-03 平安科技(深圳)有限公司 一种软件测试方法、计算机可读存储介质及终端设备
CN108491331B (zh) * 2018-04-13 2023-03-21 平安普惠企业管理有限公司 软件测试方法、装置、设备和计算机存储介质
WO2020062262A1 (en) * 2018-09-30 2020-04-02 Shanghai United Imaging Healthcare Co., Ltd. Systems and methods for generating a neural network model for image processing
CN110489321B (zh) * 2019-07-08 2024-09-13 平安科技(深圳)有限公司 测试用例筛选方法、装置、计算机设备和存储介质
CN111078544B (zh) * 2019-12-04 2022-05-20 腾讯科技(深圳)有限公司 一种软件缺陷预测方法、装置、设备及存储介质
CN111045944B (zh) * 2019-12-11 2023-06-13 广州品唯软件有限公司 回归测试方法、装置、系统及计算机可读存储介质
CN111522734B (zh) * 2020-03-17 2023-02-28 上海云砺信息科技有限公司 软件功能测试方法、装置、电子设备及存储介质
CN111858371A (zh) * 2020-07-28 2020-10-30 北京达佳互联信息技术有限公司 软件测试方法、系统、存储介质及计算机设备
CN112069061B (zh) * 2020-08-19 2021-08-20 北京科技大学 深度学习梯度指导变异的软件安全漏洞检测方法及系统
CN111984545B (zh) * 2020-09-24 2023-07-28 北京百度网讯科技有限公司 检测单元测试稳定性的方法、装置、电子设备及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992404A (zh) * 2016-10-26 2018-05-04 中兴通讯股份有限公司 一种软件自动测试方法及装置

Also Published As

Publication number Publication date
CN112597046A (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
CN110460460B (zh) 业务链路故障定位方法、装置及设备
CN109271602B (zh) 深度学习模型发布方法及装置
US8850272B2 (en) Method and system to measure preventability of failures of an application
US20160026557A1 (en) System and method for testing software
US11455223B2 (en) Using system errors and manufacturer defects in system components causing the system errors to determine a quality assessment value for the components
US11669390B2 (en) Automated detection and classification of dynamic service outages
CN110569159A (zh) 挡板生成方法、装置、设备及计算机存储介质
CN112988594A (zh) 用于代码质量评估的集成检测方法及系统
WO2021188196A1 (en) Causality determination of upgrade regressions via comparisons of telemetry data
CN113238930A (zh) 软件系统的测试方法、装置、终端设备和存储介质
CN112597046B (zh) 测试方法、装置、计算机设备及存储介质
CN111897697B (zh) 服务器硬件故障修复方法和装置
CN113051180A (zh) 测试任务的监测方法、装置、设备及存储介质
CN117272193A (zh) 一种充电桩的故障识别处理方法、系统、设备及存储介质
CN116230067A (zh) 一种固态硬盘自动化测试方法、系统、设备及介质
CN116048589A (zh) 配置变更的校验方法、装置、计算机设备以及存储介质
CN115629949A (zh) 管理信息系统的优化方法、装置、电子设备及存储介质
CN114500249A (zh) 一种根因定位方法和装置
CN113157587A (zh) 基于区块链的产品测试方法及装置
CN112860509A (zh) 拨测告警方法及装置
CN110888651A (zh) 一种知识服务应用系统一键上线方法、系统、介质及设备
CN112596750A (zh) 应用测试方法、装置、电子设备及计算机可读存储介质
CN110597703A (zh) 一种回归测试方法及装置
CN116501611A (zh) 组件测试方法、装置、电子设备及存储介质
CN114968767A (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