CN102708051A - 程序持续集成的方法及*** - Google Patents
程序持续集成的方法及*** Download PDFInfo
- Publication number
- CN102708051A CN102708051A CN2012101270278A CN201210127027A CN102708051A CN 102708051 A CN102708051 A CN 102708051A CN 2012101270278 A CN2012101270278 A CN 2012101270278A CN 201210127027 A CN201210127027 A CN 201210127027A CN 102708051 A CN102708051 A CN 102708051A
- Authority
- CN
- China
- Prior art keywords
- program
- test
- continuous integration
- integration system
- message
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种程序持续集成的方法及***,其中,本发明所述的程序持续集成的方法包括:对所获取的修改后的程序进行编译,并在编译成功后输出第一启动信息,接着,基于所述第一启动信息对所述程序进行测试,以便确定所述程序是否能正确运行。本发明能够自动对修改后的程序进行编译,并将编译成功的程序进行测试,由此可大大减少编程人员的重复工作,提高编程人员的工作效率。
Description
技术领域
本发明涉及软件测试,特别是涉及一种程序持续集成的方法及***。
背景技术
随着计算机技术的发展,软件供应商为了满足用户的各种需求,不断开发出能实现各种功能的软件,而任何一款软件在开发过程中,往往需要花费一个项目组成员诸多心血,例如,先要制定该软件项目的阶段性任务、目标,随后具体实施等,而该软件项目在项目各个阶段之间极少有反馈,而且常常只有在项目生命周期的后期才能看到结果,通常也只有通过强制完成日期和里程碑来跟踪各个项目阶段等,由此容易导致很多问题在软件开发的后期才能被发现,这不但延长了软件开发周期,还增加了软件开发的成本。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种程序持续集成的方法及***,以便及时发现并解决程序在开发过程中所存在的问题。
为实现上述目的及其他相关目的,本发明提供一种程序持续集成的方法,其包括步骤:1)对获取的程序进行编译,并在编译成功后输出第一启动信息;2)基于所述第一启动信息对所述程序进行测试,以确定所述程序是否能正确运行。
优选地,所述步骤2)还包括:当确定所述程序能够正常运行时,输出第二启动信息;以及步骤3)基于所述第二启动信息将所述程序并入所述程序所属的程序集中。
优选地,所述程序持续集成的方法还包括步骤:4)当确定所述程序不能正确运行时,基于对所述程序的修改而启动前述步骤1)。
优选地,所述程序持续集成的方法还包括步骤:5)将所述程序进行编译的编译结果和/或对所述程序进行测试的测试结果通知相关编程人员。
优选地,所述通知采用的是邮件通知方式。
基于上述目的,本发明还提供一种所述程序持续集成***,其包括:编译模块,用于对所获取的程序进行编译,并在编译成功后输出第一启动信息;测试模块,用于基于所述第一启动信息对所述程序进行测试,以便确定所述程序是否能正确运行。
优选地,所述程序持续集成***还包括:集成模块,用于基于所述测试模块在测试得到所述程序能够正常运行时输出的第二启动信息而将所述程序并入所述程序所属的程序集中。
优选地,所述程序持续集成***还包括:启动模块,用于当所述测试模块在测试得到所述程序不能正确运行时,基于对所述程序的修改而启动所述编译模块。
优选地,所述程序持续集成***还包括:通知输出模块,用于将由所述编译模块对所述程序进行编译而得到的编译结果和/或由所述测试模块对所述程序进行测试的而得到的测试结果通知相关编程人员。
优选地,所述通知采用的是邮件通知方式。
如上所述,本发明的程序持续集成的方法及***,具有以下有益效果:能够自动对修改后的程序进行编译,并将编译成功的程序进行测试,由此可大大减少编程人员的重复工作,提高编程人员的工作效率;另外,还能够将编译结果和/或测试结果提供给编程人员,以便编程人员能快速发现程序中出现的问题,并予以及时解决,从而缩短程序开发周期。
附图说明
图1显示为本发明的程序持续集成的方法流程图。
图2显示为本发明的一种优选的程序持续集成的方法流程图。
图3显示为本发明的程序持续集成***结构示意图。
图4显示为本发明的一种优选的程序持续集成***结构示意图。
元件标号说明
1 程序持续集成***
11 编译模块
12 测试模块
13 集成模块
14 启动模块
15 通知输出模块
S1-S5、S21 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
图1为本发明的程序持续集成的方法的流程图。其中,所述程序持续集成的方法主要由程序持续集成***来执行,所述程序持续集成***为安装在计算机设备中的应用模块等。该计算机设备为一种能够按照事先存储的程序,自动、高速地进行大量数值计算和各种信息处理的现代化智能电子设备,其硬件包括但不限于微处理器、FPGA(现场可编程门阵列)、DSP(数字信号处理器)、嵌入式设备等。
在步骤S1中,所述程序持续集成***用于对所获取的程序进行编译,并在编译成功后输出第一启动信息。
需要说明的是,本领域技术人员应该理解所述程序持续集成***对程序进行编译的过程,故在此不再予以详述。
其中,所述程序包括任何用计算机语言编写的命令序列的集合,优选地,其包括但不限于:能实现单一功能的命令序列集、能实现多功能的命令序列集等。例如,能计算圆面积的程序、包含文字编辑功能及图形编辑功能的程序等。
所述程序持续集成***获取程序的方式包括但不限于:1)基于编程人员的操作来获取程序,例如,编程人员在编程界面所显示的程序X1的第3至10行***程序代码x11,然后保存修改后的程序X1,则所述程序持续集成***基于来自编程人员保存的操作来获取程序X1。2)由其他设备提供给所述程序持续集成***。例如,由保存程序的版本控制***所属的计算机设备将修改后的程序提供给所述程序持续集成***等。
当所述程序通过编译时,所述程序持续集成***输出第一启动信息。所述第一启动信息包括任何能够启动将所述程序进行测试的信息,其包括但不限于布尔值等。
在步骤S2中,所述程序持续集成***用于基于所述第一启动信息对所述程序进行测试,以便确定所述程序是否能正确运行。优选地,所述程序持续集成***包括自动测试机。
需要说明的是,本领域技术人员应该理解所述程序持续集成***对程序进行测试的过程,故在此不再予以详述。
其中,程序能正确运行的含义包括所述程序基于预定测试用例运行后,能输出与所述预定测试用例对应的结果。
优选地,如图2所示,本发明所述步骤S2中还包括步骤S21,本发明所述程序持续集成的方法还包括步骤S3。
具体地,在步骤S21中,当所述程序能够正常运行时,输出第二启动信息。其中,所述第二启动信息包括任何能够表示所述程序为能够正确运行的信息,其包括但不限于布尔值等。
在步骤S3中,当所述程序能够正常运行时,所述程序持续集成***基于所述第二启动信息将所述程序并入所述程序所属的程序集中。
具体地,所述程序持续集成***基于所述程序诸如身份类的注释等身份特征信息,将所述程序取代所述程序集中的身份特征信息相同的程序块;或者,所述程序持续集成***基于所述程序诸如编号类的注释信息,将所述程序添加在所述程序集中与所述编号对应的位置等。
其中,所述程序持续集成***确定所述程序所属的程序集的方式包括但不限于:基于预先的设置来确定;基于预定的程序与程序集的对应关系来确定等。
作为另一种优选方式,如图2所示,所述程序持续集成的方法还包括步骤S4。
在步骤S4中,当所述程序不能正常运行时,基于对所述程序的修改而启动前述步骤1)。其中,所述程序不能正常运行的情况包括任何导致程序无法正常运行的情况,其包括但不限于:所述程序未能通过编译、所述程序未能通过测试等。
例如,程序A’未能在步骤S1中通过编译或者未能在步骤S2中通过测试,则所述程序持续集成***确定所述程序A’不能正常运行,则人员对所述程序A’进行修改后,所述程序持续集成***获取所述修改后的程序A’,以便再次执行编译操作和/或测试操作等。
作为又一种优选方式,如图2所示,所述程序持续集成的方法还包括步骤S5。
在步骤S5中,所述程序持续集成***将对修改后的程序进行编译的编译结果和/或对程序进行测试的测试结果通知相关编程人员。
其中,所述编译结果包括但不限于:编译成功的信息、导致编译失败的某行代码的信息等。所述测试结果包括但不限于:测试成功信息、导致测试失败的部分程序的异常信息等。
其中,所述程序持续集成***将所述编译结果和/或测试结果通知相关编程人员的方式包括但不限于:1)基于相关编程人员的联系方式来将所述编译结果和/或测试结果通知相关编程人员。例如,所述程序持续集成***将编译失败的某行代码的信息通过预定的邮箱地址通知相关编程人员。2)直接显示编译结果和/或测试结果给相关编程人员,或者将编译结果和/或测试结果予以保存,以便编程人员查看等。例如,所述程序持续集成***将程序未通过测试的测试结果以日志形式予以保存,以便编程人员查看等。
图3为本发明的程序持续集成***的结构示意图。所述程序持续集成***1包括:编译模块11和测试模块12。
所述编译模块11用于对所获取的程序进行编译,并在编译成功后输出第一启动信息。
需要说明的是,本领域技术人员应该理解所述测试模块11对程序进行编译的过程,故在此不再予以详述。
其中,所述程序包括任何用计算机语言编写的命令序列的集合,优选地,其包括但不限于:能实现单一功能的命令序列集、能实现多功能的命令序列集等等。例如,能计算圆面积的程序、包含文字编辑功能及图形编辑功能的程序等等。
所述编译模块11获取程序的方式包括但不限于:1)基于编程人员的操作来获取程序,例如,编程人员在编程界面所显示的程序X1的第3至10行***程序代码x11,然后保存修改后的程序X1,则所述编译模块11基于来自编程人员保存的操作来获取所述程序X1。2)由其他设备提供给所述编译模块11。例如,由保存程序的版本控制***所属计算机设备将修改后的程序提供给所述编译模块11等。
当所述程序通过编译时,所述编译模块输出第一启动信息。所述第一启动信息包括任何能够启动将所述程序进行测试的信息,其包括但不限于布尔值等。
所述测试模块12用于基于所述第一启动信息对所述程序进行测试,以便确定所述程序是否能正确运行。优选地,所述测试模块包括自动测试机。
需要说明的是,本领域技术人员应该理解所述测试模块12对程序进行测试的过程,故在此不再予以详述。
其中,程序能正确运行的含义包括所述程序基于预定测试用例运行后,能输出与所述预定测试用例对应的结果。
优选地,如图4所示,所述程序持续集成***1还包括:集成模块13。
所述集成模块13用于基于所述测试模块在测试得到所述程序能够正常运行时输出的第二启动信息而将所述程序并入所述程序所属的程序集中。其中,所述第二启动信息包括任何能够表示所述程序为能够正确运行的信息,其包括但不限于布尔值等。
具体地,所述集成模块13基于所述程序诸如身份类的注释等身份特征信息,将所述程序取代所述程序集中的身份特征信息相同的程序块;或者,所述集成模块基于所述程序诸如编号类的注释信息,将所述程序添加在所述程序集中与所述编号对应的位置等。
其中,所述集成模块确定所述程序所属的程序集的方式包括但不限于:基于预先的人工设置来确定;基于预定的程序与程序集的对应关系来确定等。
作为一种优选方式,如图4所示,所述程序持续集成***1还包括:启动模块14。
所述启动模块14用于当所述测试模块在测试得到所述程序不能正确运行时,基于对所述程序的修改而启动所述编译模块11。其中,所述程序不能正常运行的情况包括任何导致程序无法正常运行的情况,其包括但不限于:所述程序未能通过编译、所述程序未能通过测试等。
例如,程序A’未能通过编译或者测试,则所述测试模块12确定所述程序A’不能正常运行,则人员对所述程序A’进行修改后,所述启动模块14获取所述修改后的程序A’,以便再次执行编译操作和/或测试操作等。
作为又一种优选方式,如图4所示,所述程序持续集成***1还包括通知输出模块15。
所述通知输出模块15用于将对修改后的程序进行编译的编译结果和/或对程序进行测试的测试结果通知相关编程人员。
其中,所述编译结果包括但不限于:编译成功的信息、导致编译失败的某行代码的信息等。所述测试结果包括但不限于:测试成功信息、导致测试失败的部分程序的异常信息等。
其中,所述通知输出模块15将所述编译结果和/或测试结果通知相关编程人员的方式包括但不限于:1)基于相关编程人员的联系方式来将所述编译结果和/或测试结果通知相关编程人员。例如,所述通知输出模块15将编译失败的某行代码的信息通过预定的邮箱地址通知相关编程人员。2)直接显示编译结果和/或测试结果给相关编程人员,或者将编译结果和/或测试结果予以保存,以便编程人员查看等。例如,所述通知输出模块15将程序未通过测试的测试结果以日志形式予以保存,以便编程人员查看等。
综上所述,本发明的程序持续集成的方法及***能够自动的对修改后的程序进行编译,并将编译成功的程序进行测试,由此可大大减少编程人员的重复工作,提高编程人员的工作效率;另外,所述程序持续集成***能够将编译结果和/或测试结果提供给编程人员,以便编程人员能快速发现程序中出现的问题,进而及时解决程序开发过程中存在的问题,缩短程序开发周期。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种程序持续集成的方法,其特征在于,包括:
1)对获取的程序进行编译,并在编译成功后输出第一启动信息;
2)基于所述第一启动信息对所述程序进行测试,以确定所述程序是否能正确运行。
2.根据权利要求1所述的程序持续集成的方法,其特征在于,包括:
当确定所述程序能够正常运行时,输出第二启动信息;
基于所述第二启动信息将所述程序并入所述程序所属的程序集中。
3.根据权利要求1所述的程序持续集成的方法,其特征在于,还包括:
当确定所述程序不能正确运行时,基于对所述程序的修改而启动前述步骤1)。
4.根据权利要求1所述的程序持续集成的方法,其特征在于,还包括:
将所述程序进行编译的编译结果和/或对所述程序进行测试的测试结果通知相关编程人员。
5.根据权利要求4所述的程序持续集成的方法,其特征在于,所述通知采用的是邮件通知方式。
6.一种程序持续集成***,其特征在于,包括:
编译模块,用于对所获取的程序进行编译,并在编译成功后输出第一启动信息;
测试模块,用于基于所述第一启动信息对所述程序进行测试,以便确定所述程序是否能正确运行。
7.根据权利要求6所述的程序持续集成***,其特征在于,还包括:
集成模块,用于基于所述测试模块在测试得到所述程序能够正常运行时输出的第二启动信息而将所述程序并入所述程序所属的程序集中。
8.根据权利要求6所述的程序持续集成***,其特征在于,所述程序持续集成***还包括:
启动模块,用于当所述测试模块在测试得到所述程序不能正确运行时,基于对所述程序的修改而启动所述编译模块。
9.根据权利要求6所述的程序持续集成***,其特征在于,还包括:
通知输出模块,用于将由所述编译模块对所述程序进行编译而得到的编译结果和/或由所述测试模块对所述程序进行测试的而得到的测试结果通知相关编程人员。
10.根据权利要求9所述的程序持续集成***,其特征在于,所述通知采用的是邮件通知方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210127027.8A CN102708051B (zh) | 2012-07-12 | 2012-07-12 | 程序持续集成的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210127027.8A CN102708051B (zh) | 2012-07-12 | 2012-07-12 | 程序持续集成的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102708051A true CN102708051A (zh) | 2012-10-03 |
CN102708051B CN102708051B (zh) | 2016-04-27 |
Family
ID=46900856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210127027.8A Active CN102708051B (zh) | 2012-07-12 | 2012-07-12 | 程序持续集成的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102708051B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090763A (zh) * | 2014-07-11 | 2014-10-08 | 携程计算机技术(上海)有限公司 | 编译发布方法及发布服务器 |
CN104156224A (zh) * | 2013-05-14 | 2014-11-19 | 广东电网公司信息中心 | 一种软件构建持续集成方法及*** |
CN105335284A (zh) * | 2014-08-07 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 一种用于持续集成***的数据处理方法及装置 |
CN106126432A (zh) * | 2016-09-18 | 2016-11-16 | 网易(杭州)网络有限公司 | 软件开发项目中修改内容的测试方法及装置 |
CN106293742A (zh) * | 2016-08-11 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于定时构建的自动化***集成方法 |
CN106970818A (zh) * | 2017-03-27 | 2017-07-21 | 深圳市中博睿存信息技术有限公司 | 一种用于Linux平台的软件持续集成方法及装置 |
CN108572912A (zh) * | 2017-09-22 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种持续集成方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174069A1 (en) * | 2006-01-03 | 2007-07-26 | Moore J L Jr | Continuous integration of business intelligence software |
CN101515232A (zh) * | 2008-02-21 | 2009-08-26 | 卓望数码技术(深圳)有限公司 | 一种软件持续集成***及方法 |
CN102012814A (zh) * | 2010-11-24 | 2011-04-13 | 中兴通讯股份有限公司 | 软件版本的构建方法和*** |
-
2012
- 2012-07-12 CN CN201210127027.8A patent/CN102708051B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174069A1 (en) * | 2006-01-03 | 2007-07-26 | Moore J L Jr | Continuous integration of business intelligence software |
CN101515232A (zh) * | 2008-02-21 | 2009-08-26 | 卓望数码技术(深圳)有限公司 | 一种软件持续集成***及方法 |
CN102012814A (zh) * | 2010-11-24 | 2011-04-13 | 中兴通讯股份有限公司 | 软件版本的构建方法和*** |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156224A (zh) * | 2013-05-14 | 2014-11-19 | 广东电网公司信息中心 | 一种软件构建持续集成方法及*** |
CN104156224B (zh) * | 2013-05-14 | 2017-11-07 | 广东电网公司信息中心 | 一种软件构建持续集成方法及*** |
CN104090763A (zh) * | 2014-07-11 | 2014-10-08 | 携程计算机技术(上海)有限公司 | 编译发布方法及发布服务器 |
CN105335284A (zh) * | 2014-08-07 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 一种用于持续集成***的数据处理方法及装置 |
CN105335284B (zh) * | 2014-08-07 | 2018-12-28 | 腾讯科技(深圳)有限公司 | 一种用于持续集成***的数据处理方法及装置 |
CN106293742A (zh) * | 2016-08-11 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于定时构建的自动化***集成方法 |
CN106126432A (zh) * | 2016-09-18 | 2016-11-16 | 网易(杭州)网络有限公司 | 软件开发项目中修改内容的测试方法及装置 |
CN106970818A (zh) * | 2017-03-27 | 2017-07-21 | 深圳市中博睿存信息技术有限公司 | 一种用于Linux平台的软件持续集成方法及装置 |
CN108572912A (zh) * | 2017-09-22 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种持续集成方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102708051B (zh) | 2016-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102708051A (zh) | 程序持续集成的方法及*** | |
CN102855178B (zh) | 一种单元测试中生成Mock库的方法和装置 | |
US8752020B2 (en) | System and process for debugging object-oriented programming code leveraging runtime metadata | |
CN102368216B (zh) | 一种基于项目自动构造的流程实现方法 | |
CN102591777A (zh) | 一种单元测试代码生成方法及装置 | |
CN102053854A (zh) | 用于动态并行化二进制程序的上下文相关切片法 | |
CN101859244A (zh) | 多工具链工程构建方法及*** | |
CN102402427A (zh) | 一种Java应用程序的更新方法及装置 | |
CN103744684B (zh) | 一种异构软硬件协同开发的方法及*** | |
US11379188B2 (en) | Plugin-oriented functional programming system configured with software components | |
CN104391717A (zh) | 一种调试时代码动态更新方法 | |
CN105468428A (zh) | 一种安卓源代码编译方法及*** | |
US7185322B2 (en) | Method and apparatus for parallel action processing | |
CN112131315A (zh) | 多任务并行开发下的数据库同步方法及装置 | |
CN103605526A (zh) | 一种基于责任链模式的模版组件化生成代码的方法 | |
CN104991810A (zh) | 自动添加apk到安卓***中的方法及处理*** | |
CN102566481B (zh) | 一种基于c语言的plc控制***及其实现方法 | |
CN102541592A (zh) | 一种通信设备及其软件升级的方法 | |
CN116909543A (zh) | 基于微服务架构的ot域工业组件建模及其代码生成方法 | |
CN102023870B (zh) | 一种软件修改的检测方法、装置及电子设备 | |
JP2010049439A (ja) | ソフトウェアモデルを用いたシステム構築方法およびモデリング装置 | |
CN104407843A (zh) | 一种高低层模块解耦的依赖倒置优化方法 | |
Song et al. | An xpath-based approach to reusing test scripts for android applications | |
CN112035439A (zh) | 数据迁移方法及装置、计算机设备及计算机可读存储介质 | |
CN103559068A (zh) | 基础计算环境组件的配置方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |