软件项目的持续集成方法和装置的制造方法

文档序号:10593860阅读:444来源:国知局
软件项目的持续集成方法和装置的制造方法
【专利摘要】本发明公开一种软件项目的持续集成方法和装置。所述方法包括:每隔预设时间检测版本管理系统内的软件项目代码的状态;若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件;将所述软件项目文件发送至设定服务器,启动所述软件项目文件;对所述软件项目文件进行自动化测试,生成测试日志。应用本发明提供的技术方案,能够很好的提升软件项目持续集成的集成效率。
【专利说明】
软件项目的持续集成方法和装置
技术领域
[0001 ]本发明涉及计算机技术领域,尤其涉及一种软件项目的持续集成方法和装置。
【背景技术】
[0002]持续集成是一种软件开发实践,即软件项目的团队开发成员需要经常集成他们的工作,通常每个成员每天至少集成一次,这就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。持续集成的目的是让团队在持续的基础上收到反馈并进行改进,而不必等到软件开发周期的后期才寻找和修复缺陷,从而降低项目风险和解决问题的代价。
[0003]目前已经存在一些持续集成的技术,但是,目前的技术往往需要人手动启动集成,效率较低,或者每次检测到开发人员提交代码便触发编译操作,而由于开发人员提交代码时可能并非一次提交完成,这种情况导致经常出现编译失败的情况,并且当开发人员再次进行代码提交的时候,构建任务就会在等待队列里面等待当前任务的执行结束,从而影响软件项目的集成效率。可见,目前的持续集成的技术,集成效率较低。

【发明内容】

[0004]有鉴于此,本发明提供了一种软件项目的持续集成方法和装置,能够很好的提升软件项目持续集成的集成效率。
[0005]为实现上述目的,本发明提供如下技术方案:
[0006]一种软件项目的持续集成方法,包括:
[0007]每隔预设时间检测版本管理系统内的软件项目代码的状态;
[0008]若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件;
[0009]将所述软件项目文件发送至设定服务器,启动所述软件项目文件;
[0010]对所述软件项目文件进行自动化测试,生成测试日志。
[0011]优选的,所述每隔预设时间检测版本管理系统内的软件项目代码的状态,包括:
[0012]每隔所述预设时间以Ant脚本执行所述软件项目代码的检出操作,生成检测日志;
[0013]监控所述检测日志,以确定所述软件项目代码的状态。
[0014]优选的,所述对所述软件项目文件进行自动化测试,生成测试日志包括:
[0015]获取测试数据文件,生成模块测试对象,所述模块测试对象包括至少一个单元操作数据对象;
[0016]确定所述模块测试对象的测试方式和执行顺序;
[0017]依照所述测试方式和所述执行顺序,调用所述模块测试对象对所述软件项目文件执行自动化测试,生成测试日志。
[0018]优选的,所述确定所述模块测试对象的测试方式和执行顺序包括:
[0019]确定各个所述模块测试对象的依赖关系,将存在依赖关系的每一组模块测试对象分别组合成模块测试对象链;
[0020]设定每一组所述模块测试对象链中的所述模块测试对象以串行方式执行,设定不存在依赖关系的所述模块测试对象以并行方式执行。
[0021]优选的,还包括:
[0022]依据所述测试日志统计测试结果,生成所述测试结果的统计报表。
[0023]—种软件项目的持续集成装置,所述装置包括:
[0024]检测模块,用于每隔预设时间检测版本管理系统内的软件项目代码的状态;
[0025]编译模块,用于若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件;
[0026]部署模块,用于将所述软件项目文件发送至设定服务器,启动所述软件项目文件;
[0027]测试模块,用于对所述软件项目文件进行自动化测试,生成测试日志。
[0028]优选的,所述检测模块包括:
[0029]代码检出单元,用于每隔所述预设时间以Ant脚本执行所述软件项目代码的检出操作,生成检测日志;
[0030]监控单元,用于监控所述检测日志,以确定所述软件项目代码的状态。
[0031]优选的,所述测试模块包括:
[0032]获取单元,用于获取测试数据文件,生成模块测试对象,所述模块测试对象包括至少一个单元操作数据对象;
[0033]确定单元,用于确定所述模块测试对象的测试方式和执行顺序;
[0034]测试单元,用于依照所述测试方式和所述执行顺序,调用所述模块测试对象对所述软件项目文件执行自动化测试,生成测试日志。
[0035]优选的,所述确定单元包括:
[0036]确定子单元,用于确定各个所述模块测试对象的依赖关系,将存在依赖关系的每一组模块测试对象分别组合成模块测试对象链;
[0037]设定子单元,用于设定每一组所述模块测试对象链中的所述模块测试对象以串行方式执行,设定不存在依赖关系的所述模块测试对象以并行方式执行。
[0038]优选的,还包括:
[0039]生成模块,用于依据所述测试日志统计测试结果,生成所述测试结果的统计报表。
[0040]经由上述的技术方案可知,与现有技术相比,本发明提供了一种软件项目的持续集成方法和装置。本发明提供的技术方案,每隔预设时间检测版本管理系统内的软件项目代码的状态,若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件,然后将所述软件项目文件发送至设定服务器,启动所述软件项目文件,最后对所述软件项目文件进行自动化测试,生成测试日志。本发明提供的技术方案,实现了软件项目持续集成的自动化,无需人手动启动集成,能够有效提成集成效率,同时,由于每隔预设时间检测版本管理系统内的软件项目代码的状态,预设时间是一个时间段,因此,能够给予开发人员提交代码操作的一个时间片,在这个时间内只要相关的开发人员提交完代码,即提交的是相对完整的代码,即可成功集成,而不是另外一种现有技术方案中只要检测到开发人员提交代码便立即触发编译操作,从而能够有效减少编译失败的几率,减少重复集成的次数,从而能够提升集成效率,另外,预设时间给予了开发人员多次顺利提交代码的机会,能够避免另外一种现有技术中当开发人员再次进行代码提交的时候,还需等待上一次提交代码后触发的编译任务执行结束的问题,也能够有效地提升集成效率。因此,本发明提供的技术方案,能够很好的提升软件项目持续集成的集成效率。
【附图说明】
[0041]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0042]图1为本发明实施例提供的一种软件项目的持续集成方法的流程图;
[0043]图2为本发明实施例提供的一种软件项目的持续集成装置的结构图。
【具体实施方式】
[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0046]实施例
[0047]请参阅图1,图1为本发明实施例提供的一种软件项目的持续集成方法的流程图。如图1所示,该方法包括:
[0048]步骤SlOl,每隔预设时间检测版本管理系统内的软件项目代码的状态;
[0049]具体的,本发明实施例提供的软件项目的持续集成方法,基于jenkins持续集成工具来实现。
[°°50] 可选的,通过在在Build per1dically栏内使用cron表达式来预先设置所述预设时间。
[0051 ] 可选的,所述步骤SlOl包括:
[0052]每隔所述预设时间以Ant脚本执行所述软件项目代码的检出操作,生成检测日志;
[0053]监控所述检测日志,以确定所述软件项目代码的状态。
[0054]步骤S102,若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件;
[0055]可选的,使用ant对所述软件项目代码进行编译时,在ant构建文件中使用target对应指定的模块,方便在编译出错时的问题定位。
[0056]步骤S103,将所述软件项目文件发送至设定服务器,启动所述软件项目文件;
[0057]步骤S104,对所述软件项目文件进行自动化测试,生成测试日志。
[0058]具体的,执行本发明实施例提供的技术方案之前,需要预先进行相关设置操作,可选的,包括:使用jenkins建立4个任务分别对应集成过程中的步骤SlOl?步骤S104这4个集成子任务;对步骤SlOl设置周期执行属性,通过在BuiId per1dicalIy栏内使用cron表达式配置自动执行周期;对步骤S102?步骤S104这三个步骤设置关联触发执行,通过启用构建触发器内的“在其他项目构建完成后才执行构建”选项,使得这三个步骤都会在前提步骤成功执行后自动执行,从而实现步骤SlOl?步骤S104的依次自动触发执行操作。
[0059]本发明实施例提供的技术方案,每隔预设时间检测版本管理系统内的软件项目代码的状态,若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件,然后将所述软件项目文件发送至设定服务器,启动所述软件项目文件,最后对所述软件项目文件进行自动化测试,生成测试日志。本发明实施例提供的技术方案,实现了软件项目持续集成的自动化,无需人手动启动集成,能够有效提成集成效率,同时,由于每隔预设时间检测版本管理系统内的软件项目代码的状态,预设时间是一个时间段,因此,能够给予开发人员提交代码操作的一个时间片,在这个时间内只要相关的开发人员提交完代码,即提交的是相对完整的代码,即可成功集成,而不是另外一种现有技术方案中只要检测到开发人员提交代码便立即触发编译操作,从而能够有效减少编译失败的几率,减少重复集成的次数,从而能够提升集成效率,另外,预设时间给予了开发人员多次顺利提交代码的机会,能够避免另外一种现有技术中当开发人员再次进行代码提交的时候,还需等待上一次提交代码后触发的编译任务执行结束的问题,也能够有效地提升集成效率。因此,本发明实施例提供的技术方案,能够很好的提升软件项目持续集成的集成效率。
[0060]另外,本发明实施例提供的技术方案,由于自动化程度高,并且能够有效减少编译失败的几率,减少重复集成的次数,因此集成成本相对于现有技术能够明显降低,同时可靠性更高。
[0061]可选的,本发明另外一个实施例提供的软件项目的持续集成方法,所述步骤S104包括:
[0062]获取测试数据文件,生成模块测试对象,所述模块测试对象包括至少一个单元操作数据对象;
[0063]具体的,所述单元操作数据对象包括以下属性:测试操作指令、待测目标关键字和测试驱动数据。可选的,以web项目为例,待测目标关键字是指待测试软件中html元素的定位方式;测试操作指令是指,对html元素的执行的操作,如点击,输入等;测试驱动数据是指,用来验证待测试软件中待测试对象正确性的测试数据。
[0064]确定所述模块测试对象的测试方式和执行顺序;
[0065]具体的,确定各个所述模块测试对象的依赖关系,将存在依赖关系的每一组模块测试对象分别组合成模块测试对象链;
[0066]设定每一组所述模块测试对象链中的所述模块测试对象以串行方式执行,设定不存在依赖关系的所述模块测试对象以并行方式执行。
[0067]也就是说,对于串行执行的模块测试对象,如果在先模块测试对象没有成功执行完毕,则停止后续的关联模块测试对象的执行;对于并行执行的模块测试对象,无论当前执行成功与否,都不会影响其他模块测试对象的执行。
[0068]依照所述测试方式和所述执行顺序,调用所述模块测试对象对所述软件项目文件执行自动化测试,生成测试日志;
[0069]具体的,依照所述测试方式和所述执行顺序,调用所述模块测试对象,并使用所述单元操作数据对象中的属性执行自动化测试,生成测试日志。
[0070]本发明实施例提供的实现软件自动化测试的方法,从加载测试数据到生成测试脚本,以及编译脚本并执行自动化测试都无需用户参与。另外,本发明实施例提供的技术方案支持测试数据的关联测试,即可以把一些测试操作和其他测试操作关联起来,根据相关测试案例的先决条件判断是否需要执行(例如一个发邮件的自动测试步骤:需要先进行邮箱登录操作,再进行发送邮件操作。当邮箱登录测试失败时不再进行发送邮件测试。),能够提高自动化测试的执行效率。并且本发明实施例提供的技术方案,能够实现自动化测试的模块化,实现了测试数据的重复使用,比如之前已经写好一个登录模块的测试数据,后续需要做的就是在需要的地方调用,不用重复写登录模块的测试数据,同时也方便模块测试对象的维护,假如登录模块发生了变化,改变登录模块的测试数据即可,那么所有依赖登录模块的测试数据不用做任何修改,因此能够降低人力和时间的投入,节省自动化测试的成本。
[0071]可选的,本发明另外一个实施例提供的软件项目的持续集成方法,所述步骤S104使用selenium测试工具执行自动化测试。
[0072]也就是说,本发明实施例提供的技术方案,完全能够用于web项目中UI(UserInterface,用户界面)层的自动化测试。即通过jenkins与selenium对接在集成过程中能够实现对web项目中Ui层的自动化测试,填补了持续集成平台里web项目Ui层测试方面的空白,大大减轻了web项目中UI层测试的工作量。
[0073]可选的,本发明另外一个实施例提供的软件项目的持续集成方法,还包括:
[0074]依据所述测试日志统计测试结果,生成所述测试结果的统计报表。
[0075]可选的,本发明另外一个实施例提供的软件项目的持续集成方法,还包括:
[0076]实时监测所述步骤S102?所述步骤S104任意一步骤的执行情况,若存在某步骤执行失败,停止当前操作,向预先绑定的电子邮箱发送包括所述某步骤执行失败信息的电子邮件。
[0077]具体的,若存在某步骤执行失败,停止当前操作,等待下一次集成。
[0078]为了更加全面地阐述本发明提供的技术方案,对应于本发明实施例提供的软件项目的持续集成方法,本发明公开一种软件项目的持续集成装置。
[0079]请参阅图2,图2为本发明实施例提供的一种软件项目的持续集成装置的结构图。如图2所示,该装置包括:
[0080]检测模块201,用于每隔预设时间检测版本管理系统内的软件项目代码的状态;[0081 ]可选的,所述检测模块201包括:
[0082]代码检出单元,用于每隔所述预设时间以Ant脚本执行所述软件项目代码的检出操作,生成检测日志;
[0083]监控单元,用于监控所述检测日志,以确定所述软件项目代码的状态。
[0084]编译模块202,用于若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件;
[0085]部署模块203,用于将所述软件项目文件发送至设定服务器,启动所述软件项目文件;
[0086]测试模块204,用于对所述软件项目文件进行自动化测试,生成测试日志。
[0087]应用本发明实施例提供的软件项目的持续集成装置,实现了软件项目持续集成的自动化,无需人手动启动集成,能够有效提成集成效率,同时,由于每隔预设时间检测版本管理系统内的软件项目代码的状态,预设时间是一个时间段,因此,能够给予开发人员提交代码操作的一个时间片,在这个时间内只要相关的开发人员提交完代码,即提交的是相对完整的代码,即可成功集成,而不是另外一种现有技术方案中只要检测到开发人员提交代码便立即触发编译操作,从而能够有效减少编译失败的几率,减少重复集成的次数,从而能够提升集成效率,另外,预设时间给予了开发人员多次顺利提交代码的机会,能够避免另外一种现有技术中当开发人员再次进行代码提交的时候,还需等待上一次提交代码后触发的编译任务执行结束的问题,也能够有效地提升集成效率。因此,本发明提供的技术方案,能够很好的提升软件项目持续集成的集成效率。
[0088]可选的,本发明另外一个实施例提供的软件项目的持续集成装置,所述测试模块204包括:
[0089]获取单元,用于获取测试数据文件,生成模块测试对象,所述模块测试对象包括至少一个单元操作数据对象;
[0090]确定单元,用于确定所述模块测试对象的测试方式和执行顺序;
[0091]测试单元,用于依照所述测试方式和所述执行顺序,调用所述模块测试对象对所述软件项目文件执行自动化测试,生成测试日志。
[0092]可选的,所述确定单元包括:
[0093]确定子单元,用于确定各个所述模块测试对象的依赖关系,将存在依赖关系的每一组模块测试对象分别组合成模块测试对象链;
[0094]设定子单元,用于设定每一组所述模块测试对象链中的所述模块测试对象以串行方式执行,设定不存在依赖关系的所述模块测试对象以并行方式执行。
[0095]可选的,本发明另外一个实施例提供的软件项目的持续集成装置,还包括:
[0096]生成模块,用于依据所述测试日志统计测试结果,生成所述测试结果的统计报表。
[0097]经由上述的技术方案可知,与现有技术相比,本发明提供了一种软件项目的持续集成方法和装置。本发明提供的技术方案,每隔预设时间检测版本管理系统内的软件项目代码的状态,若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件,然后将所述软件项目文件发送至设定服务器,启动所述软件项目文件,最后对所述软件项目文件进行自动化测试,生成测试日志。本发明提供的技术方案,实现了软件项目持续集成的自动化,无需人手动启动集成,能够有效提成集成效率,同时,由于每隔预设时间检测版本管理系统内的软件项目代码的状态,预设时间是一个时间段,因此,能够给予开发人员提交代码操作的一个时间片,在这个时间内只要相关的开发人员提交完代码,即提交的是相对完整的代码,即可成功集成,而不是另外一种现有技术方案中只要检测到开发人员提交代码便立即触发编译操作,从而能够有效减少编译失败的几率,减少重复集成的次数,从而能够提升集成效率,另外,预设时间给予了开发人员多次顺利提交代码的机会,能够避免另外一种现有技术中当开发人员再次进行代码提交的时候,还需等待上一次提交代码后触发的编译任务执行结束的问题,也能够有效地提升集成效率。因此,本发明提供的技术方案,能够很好的提升软件项目持续集成的集成效率。
[0098]另外,本发明提供的技术方案,由于自动化程度高,并且能够有效减少编译失败的几率,减少重复集成的次数,因此集成成本相对于现有技术能够明显降低,同时可靠性更尚O
[0099]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0100]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0101]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种软件项目的持续集成方法,其特征在于,包括: 每隔预设时间检测版本管理系统内的软件项目代码的状态; 若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件; 将所述软件项目文件发送至设定服务器,启动所述软件项目文件; 对所述软件项目文件进行自动化测试,生成测试日志。2.根据权利要求1所述的方法,其特征在于,所述每隔预设时间检测版本管理系统内的软件项目代码的状态,包括: 每隔所述预设时间以Ant脚本执行所述软件项目代码的检出操作,生成检测日志; 监控所述检测日志,以确定所述软件项目代码的状态。3.根据权利要求1所述的方法,其特征在于,所述对所述软件项目文件进行自动化测试,生成测试日志包括: 获取测试数据文件,生成模块测试对象,所述模块测试对象包括至少一个单元操作数据对象; 确定所述模块测试对象的测试方式和执行顺序; 依照所述测试方式和所述执行顺序,调用所述模块测试对象对所述软件项目文件执行自动化测试,生成测试日志。4.根据权利要求3所述的方法,其特征在于,所述确定所述模块测试对象的测试方式和执行顺序包括: 确定各个所述模块测试对象的依赖关系,将存在依赖关系的每一组模块测试对象分别组合成模块测试对象链; 设定每一组所述模块测试对象链中的所述模块测试对象以串行方式执行,设定不存在依赖关系的所述模块测试对象以并行方式执行。5.根据权利要求1?4任一项所述的方法,其特征在于,还包括: 依据所述测试日志统计测试结果,生成所述测试结果的统计报表。6.一种软件项目的持续集成装置,其特征在于,所述装置包括: 检测模块,用于每隔预设时间检测版本管理系统内的软件项目代码的状态; 编译模块,用于若所述软件项目代码发生更新,对更新后的所述软件项目代码进行编译,生成软件项目文件; 部署模块,用于将所述软件项目文件发送至设定服务器,启动所述软件项目文件; 测试模块,用于对所述软件项目文件进行自动化测试,生成测试日志。7.根据权利要求6所述的装置,其特征在于,所述检测模块包括: 代码检出单元,用于每隔所述预设时间以Ant脚本执行所述软件项目代码的检出操作,生成检测日志; 监控单元,用于监控所述检测日志,以确定所述软件项目代码的状态。8.根据权利要求6所述的装置,其特征在于,所述测试模块包括: 获取单元,用于获取测试数据文件,生成模块测试对象,所述模块测试对象包括至少一个单元操作数据对象; 确定单元,用于确定所述模块测试对象的测试方式和执行顺序; 测试单元,用于依照所述测试方式和所述执行顺序,调用所述模块测试对象对所述软件项目文件执行自动化测试,生成测试日志。9.根据权利要求6所述的装置,其特征在于,所述确定单元包括: 确定子单元,用于确定各个所述模块测试对象的依赖关系,将存在依赖关系的每一组模块测试对象分别组合成模块测试对象链; 设定子单元,用于设定每一组所述模块测试对象链中的所述模块测试对象以串行方式执行,设定不存在依赖关系的所述模块测试对象以并行方式执行。10.根据权利要求6?9任一项所述的装置,其特征在于,还包括: 生成模块,用于依据所述测试日志统计测试结果,生成所述测试结果的统计报表。
【文档编号】G06F11/36GK105955749SQ201610304929
【公开日】2016年9月21日
【申请日】2016年5月10日
【发明人】徐天豪, 赵秋鹏, 李敬召
【申请人】北京启明星辰信息安全技术有限公司, 启明星辰信息技术集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1