一种自动化构建软件版本的方法与装置与流程

文档序号:11215974
一种自动化构建软件版本的方法与装置与流程

本发明涉及软件版本技术领域,特别是涉及一种自动化构建软件版本的方法与装置。



背景技术:

在软件开发中,对软件进行完整的版本构建很重要,而且这一过程也成为软件开发过程中每天都必不可少的一个环节。面对每天不断新增的软件代码,要保证每天新合入的代码不会出错,且运行效率高效,就必须对软件版本进行每日构建,来保证软件代码在快速更新后的可靠性,提高研发效率。

目前较为普遍的软件开发过程是,开发人员在提交代码前必须要进行详细的动态测试和静态测试后才能提交代码到版本机上,然后再进行每日构建版本。这里的动态测试是指开发人员编写测试用例,对代码的基本单元的功能、性能及业务逻辑进行测试;静态测试是指开发人员根据一定的编码规则,对代码的语法、结构、过程、接口进行测试。在这种方式中,每日构建工作做的只是获取源代码、编译源代码,并生成可用的软件版本,同时,必须通过人工来完成动态测试和静态测试,从而降低了开发的效率且增加了测试出错或者遗漏或部分遗漏测试的概率。

现有技术中,通过在构建流程中加入单元测试及代码规则检测相关测试,以提升开发效率。但是如果整个软件版本构建由于新增代码错误导致的构建中断,是没有解决措施的,如果由于新增代码错误导致构建中断,最终生成一个不可用软件版本,而软件构建目的就是最终构建出一个可用软件版本。

可见,如何保证构建软件版本的正确性,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种自动化构建软件版本的方法与装置,可以保证构建软件版本的正确性。

为解决上述技术问题,本发明实施例提供一种自动化构建软件版本的方法,包括:

S10:获取源代码;

S11:利用预先存储的单元测试用例集合对所述源代码进行单元测试;

S12:判断所述单元测试是否成功;若否,则执行S13;若是,则执行S14;

S13:将所述源代码回滚至上一次代码版本,并将所述代码版本作为源代码,返回所述S11;

S14:编译所述源代码生成程序包;

S15:利用预先存储的模块测试用例集合对所述程序包进行模块测试;

S16:判断所述模块测试是否成功;若否,则返回所述S13;若是,则执行S17;

S17:依据所述程序包,构建软件版本。

可选的,在所述S12之后还包括:

当判断出所述单元测试失败时,则向预先存储的邮箱地址发送单元测试失败的通知信息。

可选的,在所述S12之后还包括:

当判断出所述单元测试成功时,则向预先存储的邮箱地址发送单元测试通过的通知信息。

可选的,在所述S16之后还包括:

当判断出所述模块测试失败时,则向预先存储的邮箱地址发送模块测试失败的通知信息。

可选的,在所述S16之后还包括:

当判断出所述模块测试失败时,则清除所述S14中编译所述源代码过程中生成的系统文件。

本发明实施例还提供了一种自动化构建软件版本的装置,包括获取单元、测试单元、判断单元、回滚单元、编译单元和构建单元,

所述获取单元,用于获取源代码;

所述测试单元,用于利用预先存储的单元测试用例集合对所述源代码进行单元测试;

所述判断单元,用于判断所述单元测试是否成功;

若否,则触发所述回滚单元,所述回滚单元,用于将所述源代码回滚至上一次代码版本,并将所述代码版本作为源代码,触发所述测试单元;

若是,则触发所述编译单元,所述编译单元,用于编译所述源代码生成程序包;

所述测试单元还用于利用预先存储的模块测试用例集合对所述程序包进行模块测试;

所述判断单元还用于判断所述模块测试是否成功;

若否,则触发所述回滚单元;

若是,则触发所述构建单元,所述构建单元,用于依据所述程序包,构建软件版本。

可选的,还包括发送单元,

所述发送单元,用于在所述判断单元判断出所述单元测试失败之后,向预先存储的邮箱地址发送单元测试失败的通知信息。

可选的,所述发送单元还用于在所述判断单元判断出所述单元测试成功之后,向预先存储的邮箱地址发送单元测试通过的通知信息。

可选的,所述发送单元还用于在所述判断单元判断出所述模块测试失败之后,向预先存储的邮箱地址发送模块测试失败的通知信息。

可选的,还包括清除单元,

所述清除单元,用于在所述判断单元判断出所述模块测试失败之后,清除所述编译单元在编译所述源代码过程中生成的系统文件。

由上述技术方案可以看出,软件版本构建系统会自动获取最新提交的源代码;利用预先存储的单元测试用例集合对所述源代码进行单元测试;当单元测试失败时,则说明源代码存在问题,此时可以将源代码回滚至上一次代码版本,并将所述代码版本作为源代码,对其进行单元测试,从而可以有效的保证源代码的正确性。将通过单元测试的源代码进行编译处理生成程序包;利用预先存储的模块测试用例集合对所述程序包进行模块测试。当模块测试失败时,则说明源代码存在问题,此时可以将源代码回滚至上一次代码版本,并将所述代码版本作为源代码,返回单元测试的步骤。当模块测试成功后,则说明该程序包可以实现相应的测试功能,则可以依据所述程序包,构建软件版本。系统自动化进行单元测试和模块测试,可以大大节省开发人员的开发时间,缩短软件版本的开发周期,提高了研发效率,并且利用代码自动回滚功能,可以有效保证每一次构建出来的软件版本都是可用的版本。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种自动化构建软件版本的方法的流程图;

图2为本发明实施例提供的一种自动化构建软件版本的装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种自动化构建软件版本的方法。图1为本发明实施例提供的一种自动化构建软件版本的方法的流程图,该方法包括:

S10:获取源代码。

软件版本构建系统可以自动化的获取到最新提交的源代码。

S11:利用预先存储的单元测试用例集合对所述源代码进行单元测试。

单元测试可以是对源代码的语法、结构、过程、接口等进行测试。单元测试用例是开发者编写的一段代码程序,为了使得软件版本构建系统可以自动化的对源代码进行单元测试,可以在系统中预先存储单元测试用例集合。该单元测试用例集合中包含有可以实现相应单元测试的单元测试用例。

S12:判断所述单元测试是否成功。

对源代码进行单元测试,如果单元测试失败,则说明源代码的语法、结构、过程或者接口等可能存在问题,则执行S13;如果单元测试成功,则可以说明源代码编写正确,则执行S14。

S13:将所述源代码回滚至上一次代码版本,并将所述代码版本作为源代码,返回所述S11。

在本发明实施例中,当单元测试失败,可以采用代码回滚的方式,将代码版本自动回滚到上一次提交状态,即将上一次提交的代码作为源代码,然后重新进行单元测试。

S14:编译所述源代码生成程序包。

当源代码通过单元测试后,可以对源代码进行编译处理生成程序包,即将源代码翻译成计算机可以识别的语言。

S15:利用预先存储的模块测试用例集合对所述程序包进行模块测试。

模块测试可以是对程序包的功能、性能及业务逻辑等进行测试。为了使得软件版本构建系统可以自动化的对程序包进行模块测试,可以在系统中预先存储模块测试用例集合。该模块测试用例集合中包含有可以实现相应模块测试的模块测试用例。

S16:判断所述模块测试是否成功。

对程序包进行模块测试,如果模块测试失败,则可以说明程序包的功能、性能或者是业务逻辑等可能存在问题,则返回S13;如果模块测试成功,则可以说明程序包可以实现相应的功能测试,则执行S17。

S17:依据所述程序包,构建软件版本。

由上述技术方案可以看出,软件版本构建系统会自动获取最新提交的源代码;利用预先存储的单元测试用例集合对所述源代码进行单元测试;当单元测试失败时,则说明源代码存在问题,此时可以将源代码回滚至上一次代码版本,并将所述代码版本作为源代码,对其进行单元测试,从而可以有效的保证源代码的正确性。将通过单元测试的源代码进行编译处理生成程序包;利用预先存储的模块测试用例集合对所述程序包进行模块测试;当模块测试失败时,则说明源代码存在问题,此时可以将源代码回滚至上一次代码版本,并将所述代码版本作为源代码,返回单元测试的步骤。当模块测试成功后,则说明该程序包可以实现相应的测试功能,则可以依据所述程序包,构建软件版本。系统自动化进行单元测试和模块测试,可以大大节省开发人员的开发时间,缩短软件版本的开发周期,提高了研发效率,并且利用代码自动回滚功能,可以有效保证每一次构建出来的软件版本都是可用的版本。

在上述过程中,当单元测试失败后,则说明最新提交的源代码存在问题,为了便于软件构建管理员及时发现并处理问题,可以在系统中预先存储软件构建管理员的邮箱地址,当判断出所述单元测试失败时,则向预先存储的邮箱地址发送单元测试失败的通知信息。

同理,当单元测试成功后,则说明最新提交的源代码不存在问题,为了便于软件构建管理员及时了解当前源代码的运行情况,可以在系统中预先存储软件构建管理员的邮箱地址,当判断出所述单元测试成功时,则向预先存储的邮箱地址发送单元测试通过的通知信息。

当模块测试失败后,则说明最新提交的源代码存在问题,为了便于软件构建管理员及时发现并处理问题,可以在系统中预先存储软件构建管理员的邮箱地址,当判断出所述模块测试失败时,则向预先存储的邮箱地址发送模块测试失败的通知信息。

在上述过程中将源代码编译成程序包的过程中会产生一些系统文件,该系统文件中包括所生成的程序包,这些系统文件会占用一定的内存空间。当对程序包进行模块测试失败时,则在编译过程生成的系统文件已经不具有使用价值,为了节省内存空间,可以当判断出所述模块测试失败时,清除编译所述源代码过程中生成的系统文件。

通过清除编译过程产生的系统文件,可以有效避免无用信息占用内存空间,提升系统内存空间的利用率。

图2为本发明实施例提供的一种自动化构建软件版本的装置的结构示意图,包括获取单元21、测试单元22、判断单元23、回滚单元24、编译单元25和构建单元26,

所述获取单元21,用于获取源代码;

所述测试单元22,用于利用预先存储的单元测试用例集合对所述源代码进行单元测试;

所述判断单元23,用于判断所述单元测试是否成功;

若否,则触发所述回滚单元24,所述回滚单元24,用于将所述源代码回滚至上一次代码版本,并将所述代码版本作为源代码,触发所述测试单元;

若是,则触发所述编译单元25,所述编译单元25,用于编译所述源代码生成程序包;

所述测试单元22还用于利用预先存储的模块测试用例集合对所述程序包进行模块测试;

所述判断单元23还用于判断所述模块测试是否成功;

若否,则触发所述回滚单元24;

若是,则触发所述构建单元26,所述构建单元26,用于依据所述程序包,构建软件版本。

可选的,还包括发送单元,

所述发送单元,用于在所述判断单元判断出所述单元测试失败之后,向预先存储的邮箱地址发送单元测试失败的通知信息。

可选的,所述发送单元还用于在所述判断单元判断出所述单元测试成功之后,向预先存储的邮箱地址发送单元测试通过的通知信息。

可选的,所述发送单元还用于在所述判断单元判断出所述模块测试失败之后,向预先存储的邮箱地址发送模块测试失败的通知信息。

可选的,还包括清除单元,

所述清除单元,用于在所述判断单元判断出所述模块测试失败之后,清除所述编译单元在编译所述源代码过程中生成的系统文件。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,软件版本构建系统会自动获取最新提交的源代码;利用预先存储的单元测试用例集合对所述源代码进行单元测试;当单元测试失败时,则说明源代码存在问题,此时可以将源代码回滚至上一次代码版本,并将所述代码版本作为源代码,对其进行单元测试,从而可以有效的保证源代码的正确性。将通过单元测试的源代码进行编译处理生成程序包;利用预先存储的模块测试用例集合对所述程序包进行模块测试;当模块测试失败时,则说明源代码存在问题,此时可以将源代码回滚至上一次代码版本,并将所述代码版本作为源代码,返回单元测试的步骤。当模块测试成功后,则说明该程序包可以实现相应的测试功能,则可以依据所述程序包,构建软件版本。系统自动化进行单元测试和模块测试,可以大大节省开发人员的开发时间,缩短软件版本的开发周期,提高了研发效率,并且利用代码自动回滚功能,可以有效保证每一次构建出来的软件版本都是可用的版本。

以上对本发明实施例所提供的一种自动化构建软件版本的方法与装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1