CN107145438A - 代码测试方法、代码测试装置及代码测试*** - Google Patents

代码测试方法、代码测试装置及代码测试*** Download PDF

Info

Publication number
CN107145438A
CN107145438A CN201610116186.6A CN201610116186A CN107145438A CN 107145438 A CN107145438 A CN 107145438A CN 201610116186 A CN201610116186 A CN 201610116186A CN 107145438 A CN107145438 A CN 107145438A
Authority
CN
China
Prior art keywords
code
test
order
working machine
submitted
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.)
Pending
Application number
CN201610116186.6A
Other languages
English (en)
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610116186.6A priority Critical patent/CN107145438A/zh
Publication of CN107145438A publication Critical patent/CN107145438A/zh
Pending legal-status Critical Current

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/368Test management for test version control, e.g. updating test cases to a new software version
    • 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/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

代码测试方法、代码测试装置及代码测试***
技术领域
本申请涉及软件测试技术,特别涉及一种代码测试方法、代码测试装置及代码测试***。
背景技术
持续集成(Continuous integration,CI)作为一种软件开发实践,通过自动化的构建(包括编译,发布,自动化测试)来验证代码,从而尽早地发现代码问题。通常,持续集成通过版本库服务器及持续集成服务器(CI服务器)来实现。
现有技术中,在软件项目开发的过程中,通常将CI服务器对代码进行测试的周期设定成固定的。这样,随着开发人员不断地向版本库服务器提交代码,CI服务器每隔一定的时间间隔(对应于上述固定的周期),便从版本库服务器获取在最近一个周期内提交的代码,并对这些代码执行测试动作。
现有技术中,由于在上述固定的周期内,可能存在多个开发人员提交的多个代码版本,并且每个开发人员还可能在一个周期内提交多次代码的情况,代码更迭速度较快。举例而言,在一个周期内,某个分支的代码被开发人员提交了n次,每个提交动作对应一次代码版本的更新,假设该周期的起始时刻的代码版本为Vm,则该分支的代码版本从Vm变更成Vm+n。在该周期结束时,便触发对该分支的代码版本Vm+n的测试动作,如果在测试过程中发现代码版本Vm+n存在问题,则必须回溯该问题是在哪一个代码版本出现的。然而,由于在上述周期内,该分支的代码版本已经经历了多个版本的变化,这样便增加在发现代码问题时回溯问题所在的困难性。
发明内容
本申请实施例的目的是提供一种代码测试方法、代码测试装置及代码测试***,以解决现有技术中存在的上述问题。
为解决上述技术问题,本申请各实施例提供的代码测试方法、代码测试装置及代码测试***是这样实现的:
一种代码测试方法,包括:
版本库服务器监测工作机提交代码的命令;
版本库服务器在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的携带测试参数的值的测试任务命令;
版本库服务器向持续集成服务器发送所述测试任务命令以触发对所述代码的测试任务。
一种代码测试方法,包括:
持续集成服务器接收版本库服务器发送的与当前提交到版本库服务器上的代码对应的并携带测试参数的值的测试任务命令;其中,所述测试任务命令是所述版本库服务器在监测到工作机提交代码的命令时生成的;
持续集成服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
一种代码测试方法,包括:
服务器监测工作机提交代码的命令;
服务器在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的并携带测试参数的值的测试任务命令;
服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
一种代码测试装置,包括:
监测单元,用于监测工作机提交代码的命令;
命令生成单元,用于在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的携带测试参数的值的测试任务命令;
命令发送单元,用于向持续集成服务器发送所述测试任务命令以触发对所述代码的测试任务。
一种代码测试装置,包括:
命令接收单元,用于接收版本库服务器发送的与当前提交到版本库服务器上的代码对应的并携带测试参数的值的测试任务命令;其中,所述测试任务命令是所述版本库服务器在监测到工作机提交代码的命令时生成的;
测试任务触发单元,用于从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
测试结果发送单元,用于向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
一种代码测试***,包括:
监测单元,用于监测工作机提交代码的命令;
命令生成单元,用于在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的并携带测试参数的值的测试任务命令;
测试任务触发单元,用于从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
测试结果发送单元,用于向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
由以上本申请各实施例提供的技术方案可见,在本申请实施例中,在监测到工作机提交代码的命令并且工作机提交的代码为业务代码时,生成与当前提交的业务代码对应的测试任务命令,从而通过该测试任务命令触发对提交的业务代码的测试动作。相较于现有技术中以固定周期为粒度,本申请实施例通过以提交为粒度,这样,只要监测到一次业务代码的提交动作,便触发一次对当前提交的业务代码的测试动作,从而通过测试及时发现每次提交的代码版本中存在的问题,从而可以避免现有技术中因业务代码更迭速度较快,而导致代码出现问题时无法快速回溯问题所在的情况,进而提升代码开发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请示例性的***架构图;
图2为本申请一实施例提供的代码测试方法的流程图;
图3为本申请一实施例提供的以版本库服务器为主体的代码测试方法的流程图;
图4为本申请一实施例提供的以持续集成服务器为主体的代码测试方法的流程图;
图5为本申请另一实施例提供的代码测试方法的流程图;
图6为本申请一实施例提供的代码测试装置(与版本库服务器对应)的模块示意图;
图7为本申请一实施例提供的代码测试装置(与持续集成服务器对应)的模块示意图;
图8为本申请另一实施例提供的代码测试***的模块示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请实施例提供的示例性的***架构图,该架构包括版本库服务器10、持续集成服务器20(CI服务器)及若干工作机30。其中,版本库服务器10用以存储各个工作机30提交的代码并对这些代码进行管理,工作机30可以定期将代码提交到上述版本库服务器10进行存储,并且也可以随时从该版本库服务器10上获取任意代码。该版本库服务器10可例如是SVN(Subversion)、CVS(Concurrent Version System)等代码版本控制***。上述工作机20是软件开发人员所使用的终端(如PC)。上述CI服务器20用以自动完成软件代码的编译和测试过程,该测试过程包括但不限于单元测试、集成测试、确认测试、***测试、验收测试、回归测试、Alpha测试、Beta测试、PMD检查测试等。其中,PMD为一种用以分析Java代码错误的工具,PMD扫描的问题包括:可能的BUG、无效代码、非最佳的代码、过于复杂的表达式、重复代码等。上述CI服务器20的测试过程需要一套自动化构建脚本及一系列围绕构建的可执行测试用例,CI服务器20可例如是Travis CI、Jenkins、Hudson等。在需要对代码测试时,CI服务器20从版本库服务器10上获取所需进行测试的代码,并且利用该CI服务器20预先设定的测试任务及相关测试用例对上述代码进行测试,以得到测试结果数据。其中,所述测试结果数据包括但不限于代码覆盖率、PMD扫描的问题、测试用例通过率、错误个数信息等。
为解决现有技术中存在的在代码检测过程中较难回溯代码问题的情况,本申请实施例中以提交粒度来触发代码测试任务。
图2为本申请一实施例提供的代码测试方法的流程,包括:
S101:工作机向版本库服务器发送提交代码的命令,并向版本库服务器上传所需提交的代码。在软件开发过程中,代码开发人员可以定期或不定期地通过上述工作机将当前最新版本的代码提交到版本库服务器上。上述工作机提交的可以是业务代码、或测试代码、或配置变更、POM(Project Object Model)修改等。
S102:版本库服务器在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的携带测试参数的值的测试任务命令。
本申请实施例中,版本库服务器可以时刻监测工作机提交代码的命令,这样,一旦工作机提交代码的动作发生,版本库服务器就可以监测到工作机提交代码的命令。在监测到由代码被提交时,就需要触发对该提交的代码的测试任务(与上述测试任务命令对应)。其中,所述测试参数的值用以定义测试任务的范围,不同的测试参数的值表示测试任务的范围不同,所述测试任务的范围包括所采用的测试用例是哪些等。其中,所述测试参数的值可以是固定的(如:JDK(Java Development Kit)版本、JAVA执行参数等)或不固定的(如测试用例名)。
本申请实施例中,在生成与当前提交的代码对应的携带测试参数的值的测试任务命令之前,所述方法还包括如下步骤:
版本库服务器在监测到工作机提交代码的命令时,判断所述工作机提交的代码是否为业务代码;若所述工作机提交的代码为业务代码,进行上述步骤S102。这样,可以确保只对业务代码触发相应的测试任务,而对于其他提交(如测试代码、配置变更、POM修改),则不触发测试任务,从而可以避免较大频率的测试任务给服务器造成较大负担。当然,本申请其他实施例中也可以设定对其他类型的代码启动该测试任务。
本申请实施例中,在生成与当前提交的代码对应的携带测试参数的值的测试任务命令之前,所述方法还包括如下步骤:
a)版本库服务器获取与所述工作机当前提交的代码对应的上一次提交的代码。
例如,假设当前提交的代码版本是V100,并且可以确定该代码对应的分支。通过查找上述版本库服务器,可以得到与当前提交的代码属于同一个分支的上一次提交的代码版本V99
b)版本库服务器根据当前提交的代码及上一次提交的代码,确定所述工作机当前提交的代码中发生变更的代码部分。
通过比对上述代码版本V100、V99,可以确定本次提交的代码中较上一个版本发生变更的代码部分。所述变更的代码部分可以是以指定的代码行、或预先划分的与实现某个子功能对应的单元。
c)版本库服务器根据预先设定的代码部分与测试参数的值的映射关系,确定与当前提交的业务代码对应的测试参数的值。
本申请实施例中,为了缓解服务器的资源消耗,可以设定每次测试任务只对变更代码部分进行测试,可以通过预先设定代码部分与测试参数的值的映射关系来实现。举例而言,对于某个分支的代码,与之对应的测试用例集中包含测试用例1、测试用例2和测试用例3,假设某个分支的代码可以划分的代码部分为:x、y、z,其中,可以预先设定的测试用例和代码部分的映射关系是:
x→测试用例1;y→测试用例2;z→测试用例3;
假设上述测试参数包括与测试任务对应的测试用例的ID,则通过确定当前提交的代码中变更的代码部分,则可以确定上述用以定义测试任务所用的测试用例的测试参数的值。当然,在本申请其他实施例中,也可以为每个分支的代码设定固定的测试任务的范围(测试参数的值固定),这样,在监测到提交的代码后,通过确定当前提交的代码的分支,即可以确定与之对应的测试任务的范围。
S103:版本库服务器向CI服务器发送所述测试任务命令。通过向CI服务器发送测试任务命令,可以使得CI服务器当前需要进行测试的代码及对应的测试任务。
S104:持续集成服务器从版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据。
持续集成服务器上预先配置好一些测试任务(如回归测试任务),并且确定了每个测试任务对应的***及代码分支等。通过接收上述测试任务命令,并解析其中携带的测试参数既可触发相应的对当前提交的代码进行的测试任务。
本申请实施例中,代码开发人员每提交一次代码时,***便可以生成一个与当前提交动作对应的ID(用以与之后得到的测试结果数据进行关联),上述与当前提交动作对应的ID可以与开发人员的信息、工作机的ID、提交的代码分支、提交的批次、提交的时间等信息进行对应。
S106:CI服务器向工作机发送携带与当前提交动作对应的ID的所述测试结果数据,以供代码开发人员进行查看。其中,所述测试结果数据可以发送给相关的开发人员(提交人)、测试负责人。测试结果数据(如代码覆盖率、PMD扫描的问题、测试用例通过率、错误个数信息等)可以是以邮件等方式进行发送,测试结果的呈现形式可以是表单的形式,本申请并不对测试结果的发送方式及测试结果的呈现形式进行限制。
本申请实施例中,在上述步骤S104之后,且在上述步骤S106之前,所述方法还可以包括如下步骤:
S105:持续集成服务器将测试结果数据进行序列化,得到json字符串并存储;持续集成服务器对json字符串进行反序列化,得到至少一个预设指标的测试结果数据。
一般地,CI服务器测试得到的结果可以在任务结果查看页面上进行查看,然而,如果代码提交频率的较高,则会导致测试结果数据的信息量较大,并且每次测试任务所得到的测试结果数据可以包括若干个指标的结果,这样,会导致开发人员难以直观地查看到关键信息。鉴于此,本申请实施例需要对测试结果数据进行分析并提取其中的一个或多个关键的预设指标的测试结果数据,并发送给指定人员进行查看。
本申请实施例中,可以将原始的与各测试任务对应的测试结果数据以json字符串的形式进行存储并记录存储地址,通过对json字符串进行反序列化,则可以对测试结果数据中的某些关键的预设指标(如代码覆盖率)进行提取。
相应地,所述步骤S106具体包括如下步骤:持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述至少一个预设指标(如代码覆盖率)的测试结果数据。
本申请实施例中,在所述步骤S104之后,在所述步骤S106之前,所述方法还包括如下步骤:
持续集成服务器获取与当前提交之前的上一次提交对应的测试结果数据。
持续集成服务器将当前测试任务得到的测试结果数据与上一次提交对应的测试结果数据进行比对,得到与当前提交的代码中发生变更的代码部分对应的测试结果数据。
举例而言,针对某个分支的代码,本次提交的代码版本是V100,上一次提交的代码版本是V99,其中,V100对应的测试结果数据(如代码覆盖率)为90%,V99对应的测试结果数据(如代码覆盖率)为85%,则可以确定V100较V99发生变更的代码部分对应的代码覆盖率为5%。其他类型的测试结果数据可以参照上述原理。
另外,与上述PMD扫描对应的原始的测试结果数据可以是xml文件的形式进行存储,通过解析xml文件,可以得到每次测试任务发现的各种PMD问题的数量,并将该数量作为一个关键指标发送给相关人员进行查看。此外,如果后续有新的测试结果分析需求,则可以通过从CI服务器获取原始数据,便可增加任意数量的结果分析模块实现功能扩展。
在本申请实施例中,在监测到工作机提交代码的命令并且工作机提交的代码为业务代码时,生成与当前提交的业务代码对应的测试任务命令,从而通过该测试任务命令触发对提交的业务代码的测试动作。相较于现有技术中以固定周期为粒度,本申请实施例通过以提交为粒度,这样,只要监测到一次业务代码的提交动作,便触发一次对当前提交的业务代码的测试动作,从而通过测试及时发现每次提交的代码版本中存在的问题,从而可以避免现有技术中因业务代码更迭速度较快,而导致代码出现问题时无法快速回溯问题所在的情况,进而提升代码开发效率。此外,测试结果数据中明确提交人信息、以及原始结果数据(以json字符串的形式存储)的存储地址,这样,可以在发现问题时及时通过上述测试结果数据来回溯代码问题所在。
参照图3所示,与上述图2对应的,以版本库服务器为主体,上述代码测试方法包括如下步骤:
S201:版本库服务器监测工作机提交代码的命令;
S202:版本库服务器在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的携带测试参数的值的测试任务命令;
S203:版本库服务器向持续集成服务器发送所述测试任务命令以触发对所述代码的测试任务。
参照图4所示,与上述图2对应的,以持续集成服务器为主体,上述代码测试方法包括如下步骤:
S301:持续集成服务器接收版本库服务器发送的与当前提交到版本库服务器上的代码对应的并携带测试参数的值的测试任务命令;其中,所述测试任务命令是所述版本库服务器在监测到工作机提交代码的命令时生成的;
S302:持续集成服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
S303:持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
图5为本申请另一实施例提供的代码测试方法的流程图。在本申请另一种可行的实施例中,可以通过一个服务器来实现上述版本库服务器和CI服务器的功能。例如,通过在上述版本库服务器部署可以实现代码测试任务的功能的插件,或通过在上述CI服务器上部署可以实现代码版本管理、代码变更检测的功能的插件。则,所述代码测试方法包括:
S401:服务器监测工作机提交代码的命令。
S402:服务器在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的并携带测试参数的值的测试任务命令;
S403:服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
S404:服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
上述步骤S401~S404可以参照上述步骤S101~S106的具体内容。
与上述方法流程对应的,本申请的实施例还提供了一种代码测试装置及代码测试***。该代码测试装置可以通过计算机软件程序、或计算机硬件、或软硬件的结合来实现。以下将结合图6-图8对该装置或***进行叙述,该装置或***中各个单元的功能与上述方法中各个步骤的功能均类似,故可以参照上述方法实施例中的内容。
图6为本申请一实施例提供的代码测试装置(与版本库服务器对应)的模块示意图。本实施例中,一种代码测试装置包括:
监测单元101,用于监测工作机提交代码的命令;
命令生成单元102,用于在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的携带测试参数的值的测试任务命令;
命令发送单元103,用于向持续集成服务器发送所述测试任务命令以触发对所述代码的测试任务。
本申请实施例的装置通过以提交为粒度,只要监测到一次业务代码的提交动作,便触发一次对当前提交的业务代码的测试动作,从而通过测试及时发现每次提交的代码版本中存在的问题,从而可以避免现有技术中因业务代码更迭速度较快,而导致代码出现问题时无法快速回溯问题所在的情况,进而提升代码开发效率。
本申请实施例中,所述装置还包括:
判断单元,用于在监测到工作机提交代码的命令时,判断所述工作机提交的代码是否为业务代码;
相应地,所述命令生成单元具体用于:若所述工作机提交的代码为业务代码,生成与当前提交的业务代码对应的携带测试参数的值的测试任务命令。
图7为本申请一实施例提供的代码测试装置(与持续集成服务器对应)的模块示意图。本实施例中,一种代码测试装置,包括:
命令接收单元201,用于接收版本库服务器发送的与当前提交到版本库服务器上的代码对应的并携带测试参数的值的测试任务命令;其中,所述测试任务命令是所述版本库服务器在监测到工作机提交代码的命令时生成的;
测试任务触发单元202,用于从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
测试结果发送单元203,用于向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
本申请实施例的装置通过以提交为粒度,只要监测到一次业务代码的提交动作,便触发一次对当前提交的业务代码的测试动作,从而通过测试及时发现每次提交的代码版本中存在的问题,从而可以避免现有技术中因业务代码更迭速度较快,而导致代码出现问题时无法快速回溯问题所在的情况,进而提升代码开发效率。
本申请实施例中,所述装置还包括:
测试结果整理单元,用于将所述测试结果数据进行序列化,得到json字符串并存储;对所述json字符串进行反序列化,得到至少一个预设指标的测试结果数据;
相应地,所述测试结果发送单元具体用于:向所述工作机发送携带与当前提交动作对应的ID的所述至少一个预设指标的测试结果数据。
图8为本申请另一实施例提供的代码测试***的模块示意图。本实施例中,一种代码测试***,包括:
监测单元301,用于监测工作机提交代码的命令;
命令生成单元302,用于在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的并携带测试参数的值的测试任务命令;
测试任务触发单元303,用于从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
测试结果发送单元304,用于向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
本申请实施例的装置通过以提交为粒度,只要监测到一次业务代码的提交动作,便触发一次对当前提交的业务代码的测试动作,从而通过测试及时发现每次提交的代码版本中存在的问题,从而可以避免现有技术中因业务代码更迭速度较快,而导致代码出现问题时无法快速回溯问题所在的情况,进而提升代码开发效率。
值得一提的是,本申请可以通过上述方法、装置及***,获取与每个软件开发人员对应的代码质量数据(即每次提交代码对应的测试结果数据),并利用这些代码质量数据对开发人员进行评估,完善代码开发周期的管理。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (17)

1.一种代码测试方法,其特征在于,包括:
版本库服务器监测工作机提交代码的命令;
版本库服务器在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的携带测试参数的值的测试任务命令;
版本库服务器向持续集成服务器发送所述测试任务命令以触发对所述代码的测试任务。
2.如权利要求1所述的方法,其特征在于,在生成与当前提交的代码对应的携带测试参数的值的测试任务命令之前,所述方法还包括:
版本库服务器在监测到工作机提交代码的命令时,判断所述工作机提交的代码是否为业务代码;
则,生成与当前提交的代码对应的携带测试参数的值的测试任务命令,具体包括:
若所述工作机提交的代码为业务代码,生成与当前提交的业务代码对应的携带测试参数的值的测试任务命令。
3.如权利要求1所述的方法,其特征在于,在生成与当前提交的代码对应的携带测试参数的值的测试任务命令之前,所述方法还包括:
版本库服务器获取与所述工作机当前提交的代码对应的上一次提交的代码;
版本库服务器根据当前提交的代码及上一次提交的代码,确定所述工作机当前提交的代码中发生变更的代码部分;
版本库服务器根据预先设定的代码部分与测试参数的值的映射关系,确定与当前提交的业务代码对应的测试参数的值。
4.一种代码测试方法,其特征在于,包括:
持续集成服务器接收版本库服务器发送的与当前提交到版本库服务器上的代码对应的并携带测试参数的值的测试任务命令;其中,所述测试任务命令是所述版本库服务器在监测到工作机提交代码的命令时生成的;
持续集成服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
5.如权利要求4所述的方法,其特征在于,所述持续集成服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据之后,所述方法还包括:
持续集成服务器将所述测试结果数据进行序列化,得到json字符串并存储;
持续集成服务器对所述json字符串进行反序列化,得到至少一个预设指标的测试结果数据;
则,持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据,具体包括:
持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述至少一个预设指标的测试结果数据。
6.如权利要求5所述的方法,其特征在于,持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据,具体包括:
持续集成服务器向所述工作机和/或测试负责人的终端发送携带与当前提交动作对应的ID的所述至少一个预设指标的测试结果数据和所述json字符串的存储地址。
7.如权利要求4所述的方法,其特征在于,在所述持续集成服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据之后,在所述持续集成服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据之前,所述方法还包括:
持续集成服务器获取与当前提交之前的上一次提交对应的测试结果数据;
持续集成服务器将当前测试任务得到的测试结果数据与上一次提交对应的测试结果数据进行比对,得到与当前提交的代码中发生变更的代码部分对应的测试结果数据。
8.如权利要求4-7中任意一项所述的方法,其特征在于,所述测试结果数据包括测试用例通过率、代码覆盖率、与开源分析Java代码错误的工具相关的结果中的一个或多个。
9.一种代码测试方法,其特征在于,包括:
服务器监测工作机提交代码的命令;
服务器在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的并携带测试参数的值的测试任务命令;
服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
10.如权利要求9所述的方法,其特征在于,在生成与当前提交的代码对应的携带测试参数的值的测试任务命令之前,所述方法还包括:
服务器在监测到工作机提交代码的命令时,判断所述工作机提交的代码是否为业务代码;
则,生成与当前提交的代码对应的携带测试参数的值的测试任务命令,具体包括:
若所述工作机提交的代码为业务代码,服务器生成与当前提交的业务代码对应的携带测试参数的值的测试任务命令。
11.如权利要求9所述的方法,其特征在于,服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据,具体包括:
服务器向所述工作机和/或测试负责人的终端发送携带与当前提交动作对应的ID的所述至少一个预设指标的测试结果数据和所述json字符串的存储地址。
12.如权利要求9所述的方法,其特征在于,在所述服务器从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据之后,在所述服务器向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据之前,所述方法还包括:
服务器获取与当前提交之前的上一次提交对应的测试结果数据;
服务器将当前测试任务得到的测试结果数据与上一次提交对应的测试结果数据进行比对,得到与当前提交的代码中发生变更的代码部分对应的测试结果数据。
13.一种代码测试装置,其特征在于,包括:
监测单元,用于监测工作机提交代码的命令;
命令生成单元,用于在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的携带测试参数的值的测试任务命令;
命令发送单元,用于向持续集成服务器发送所述测试任务命令以触发对所述代码的测试任务。
14.如权利要求13所述的装置,其特征在于,所述装置还包括:
判断单元,用于在监测到工作机提交代码的命令时,判断所述工作机提交的代码是否为业务代码;
则,所述命令生成单元具体用于:
若所述工作机提交的代码为业务代码,生成与当前提交的业务代码对应的携带测试参数的值的测试任务命令。
15.一种代码测试装置,其特征在于,包括:
命令接收单元,用于接收版本库服务器发送的与当前提交到版本库服务器上的代码对应的并携带测试参数的值的测试任务命令;其中,所述测试任务命令是所述版本库服务器在监测到工作机提交代码的命令时生成的;
测试任务触发单元,用于从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
测试结果发送单元,用于向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
16.如权利要求15所述的装置,其特征在于,所述装置还包括:
测试结果整理单元,用于将所述测试结果数据进行序列化,得到json字符串并存储;对所述json字符串进行反序列化,得到至少一个预设指标的测试结果数据;
则,所述测试结果发送单元具体用于:
向所述工作机发送携带与当前提交动作对应的ID的所述至少一个预设指标的测试结果数据。
17.一种代码测试***,其特征在于,包括:
监测单元,用于监测工作机提交代码的命令;
命令生成单元,用于在监测到工作机提交代码的命令时,接收所述工作机提交的代码并生成与当前提交的代码对应的并携带测试参数的值的测试任务命令;
测试任务触发单元,用于从所述版本库服务器获取当前提交的代码,并触发对当前提交的代码执行与所述测试任务命令对应的测试任务,得到测试结果数据;
测试结果发送单元,用于向所述工作机发送携带与当前提交动作对应的ID的所述测试结果数据。
CN201610116186.6A 2016-03-01 2016-03-01 代码测试方法、代码测试装置及代码测试*** Pending CN107145438A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610116186.6A CN107145438A (zh) 2016-03-01 2016-03-01 代码测试方法、代码测试装置及代码测试***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610116186.6A CN107145438A (zh) 2016-03-01 2016-03-01 代码测试方法、代码测试装置及代码测试***

Publications (1)

Publication Number Publication Date
CN107145438A true CN107145438A (zh) 2017-09-08

Family

ID=59783089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610116186.6A Pending CN107145438A (zh) 2016-03-01 2016-03-01 代码测试方法、代码测试装置及代码测试***

Country Status (1)

Country Link
CN (1) CN107145438A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108009093A (zh) * 2017-12-22 2018-05-08 北京远特科技股份有限公司 一种软件测试方法、装置及***
CN108400902A (zh) * 2018-01-15 2018-08-14 阿里巴巴集团控股有限公司 一种灰度测试的方法、装置及设备
CN108415825A (zh) * 2017-10-27 2018-08-17 平安科技(深圳)有限公司 电子装置、测试方法及存储介质
CN108572912A (zh) * 2017-09-22 2018-09-25 北京金山云网络技术有限公司 一种持续集成方法、装置、电子设备及存储介质
CN108984414A (zh) * 2018-07-25 2018-12-11 郑州云海信息技术有限公司 一种服务器测试方法及装置
CN109144861A (zh) * 2018-08-09 2019-01-04 京信通信***(中国)有限公司 多功能自动化测试方法和***
CN109408391A (zh) * 2018-11-06 2019-03-01 北京京航计算通讯研究所 基于持续集成技术的软件集成测试***
WO2019085061A1 (zh) * 2017-10-31 2019-05-09 平安科技(深圳)有限公司 基金***自动化测试管理方法、装置、设备及存储介质
CN109976994A (zh) * 2017-12-27 2019-07-05 航天信息股份有限公司 Java项目的白盒测试方法、装置、计算机设备
CN110764991A (zh) * 2018-07-27 2020-02-07 北京国双科技有限公司 代码测试方法及装置
CN111159030A (zh) * 2019-12-24 2020-05-15 联想(北京)有限公司 一种程序测试的方法、装置、设备和存储介质
CN111309609A (zh) * 2020-02-13 2020-06-19 北京字节跳动网络技术有限公司 软件处理***
CN111831266A (zh) * 2019-04-22 2020-10-27 上海汽车集团股份有限公司 智能驾驶软件的集成与追溯***及方法
CN113535533A (zh) * 2020-04-15 2021-10-22 百度在线网络技术(北京)有限公司 用于测试代码的方法、装置、设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006037A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Automated test case result analyzer
CN103377125A (zh) * 2012-04-25 2013-10-30 杭州勒卡斯广告策划有限公司 一种代码测试方法、装置及***
CN105302716A (zh) * 2014-07-30 2016-02-03 腾讯科技(深圳)有限公司 合流开发模式下的测试方法、装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006037A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Automated test case result analyzer
CN103377125A (zh) * 2012-04-25 2013-10-30 杭州勒卡斯广告策划有限公司 一种代码测试方法、装置及***
CN105302716A (zh) * 2014-07-30 2016-02-03 腾讯科技(深圳)有限公司 合流开发模式下的测试方法、装置

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572912A (zh) * 2017-09-22 2018-09-25 北京金山云网络技术有限公司 一种持续集成方法、装置、电子设备及存储介质
CN108415825A (zh) * 2017-10-27 2018-08-17 平安科技(深圳)有限公司 电子装置、测试方法及存储介质
CN108415825B (zh) * 2017-10-27 2021-01-19 平安科技(深圳)有限公司 电子装置、测试方法及存储介质
WO2019085061A1 (zh) * 2017-10-31 2019-05-09 平安科技(深圳)有限公司 基金***自动化测试管理方法、装置、设备及存储介质
CN108009093A (zh) * 2017-12-22 2018-05-08 北京远特科技股份有限公司 一种软件测试方法、装置及***
CN109976994A (zh) * 2017-12-27 2019-07-05 航天信息股份有限公司 Java项目的白盒测试方法、装置、计算机设备
CN108400902A (zh) * 2018-01-15 2018-08-14 阿里巴巴集团控股有限公司 一种灰度测试的方法、装置及设备
CN108400902B (zh) * 2018-01-15 2021-08-24 创新先进技术有限公司 一种灰度测试的方法、装置及设备
CN108984414A (zh) * 2018-07-25 2018-12-11 郑州云海信息技术有限公司 一种服务器测试方法及装置
CN110764991A (zh) * 2018-07-27 2020-02-07 北京国双科技有限公司 代码测试方法及装置
CN109144861A (zh) * 2018-08-09 2019-01-04 京信通信***(中国)有限公司 多功能自动化测试方法和***
CN109408391A (zh) * 2018-11-06 2019-03-01 北京京航计算通讯研究所 基于持续集成技术的软件集成测试***
CN111831266A (zh) * 2019-04-22 2020-10-27 上海汽车集团股份有限公司 智能驾驶软件的集成与追溯***及方法
CN111159030A (zh) * 2019-12-24 2020-05-15 联想(北京)有限公司 一种程序测试的方法、装置、设备和存储介质
CN111309609A (zh) * 2020-02-13 2020-06-19 北京字节跳动网络技术有限公司 软件处理***
CN111309609B (zh) * 2020-02-13 2023-10-03 抖音视界有限公司 软件处理***
CN113535533A (zh) * 2020-04-15 2021-10-22 百度在线网络技术(北京)有限公司 用于测试代码的方法、装置、设备以及存储介质
CN113535533B (zh) * 2020-04-15 2024-04-05 百度在线网络技术(北京)有限公司 用于测试代码的方法、装置、设备以及存储介质

Similar Documents

Publication Publication Date Title
CN107145438A (zh) 代码测试方法、代码测试装置及代码测试***
US10990516B1 (en) Method, apparatus, and computer program product for predictive API test suite selection
CN100507870C (zh) 关于自动测试用例执行的松散耦合的自动测试用例验证
US8984489B2 (en) Quality on submit process
CN103631720B (zh) 测试用例的生成方法和装置
CN108647141B (zh) 自动测试方法、装置、计算机可读介质及电子设备
US9870207B2 (en) Software development using re-usable software components
CN108959059B (zh) 一种测试方法以及测试平台
CN105830037A (zh) 用于在代码审查期间显示测试覆盖数据的过程
CN112241360B (zh) 一种测试用例生成方法、装置、设备及存储介质
Torres et al. Real-time feedback in node-red for iot development: An empirical study
US20170177308A1 (en) Software development using multi-domain decision management
CN113590454A (zh) 测试方法、装置、计算机设备和存储介质
Marchetto et al. Crawlability metrics for automated web testing
CN110147327A (zh) 一种基于多粒度的web自动化测试管理方法
Giamattei et al. Automated functional and robustness testing of microservice architectures
CN115599683A (zh) 自动化测试方法、装置、设备及存储介质
CN115827476A (zh) 一种接口在线可视化调试方法、装置、电子设备及介质
Lima et al. An approach for automated scenario-based testing of distributed and heterogeneous systems
Bureš et al. Towards performance-aware engineering of autonomic component ensembles
Díaz-Pace et al. Assisting conformance checks between architectural scenarios and implementation
Costa et al. Taxonomy of performance testing tools: a systematic literature review
Abdullah Evaluating Impact of Design Patterns on Software Maintainability and Performance
Tripathi et al. Optimizing testing efforts based on change proneness through machine learning techniques
Nicolaescu et al. On Adequate Behavior-based Architecture Conformance Checks

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170908