本发明涉及软件开发。具体为基于jenkins构建的自动化软件集成与测试方法及系统。
背景技术:
1、在嵌入式软件开发过程中,随着软件功能的不断迭代与完善,需求变更会引起一系列的软件集成、编译、测试等工作。传统方式即需要人工不断的根据需求按照一定顺序进行变更、重复迭代操作,无法满足当前的软件敏捷开发需求。为保证软件落地效率及质量,亟需一种自动化软件集成与测试系统。在实现本发明过程中发现现有技术中至少需要解决以下问题:
2、(1)传统开发模式中,开发人员分别提交应用程序与底层工程至代码仓库,在代
3、码编译之前需要专门人员进行应用程序与底层工程的集成,集成完成后才能进行编译、测试等工作。人工手动集成效率低还会出现不可避免的操作失误,并且需要投入相应的人工成本。
4、(2)另外一些基于jenkins的持续构建系统虽然实现了代码编译测试等自动化构
5、建功能,但执行完成后需要用户主动分别查找各项执行结果以及执行日志,用户查找过程繁琐并且可能发生遗漏等情况。
6、(3)基于jenkins的持续构建系统存在当多个项目同时执行时,调用工具链的license发生冲突现象,license资源需要分配管理。
技术实现思路
1、本发明为了解决背景技术中存在的问题,目的在于提供了基于jenkins构建的自动化软件集成与测试方法及系统,解决以自动集成代替人工集成的方式解决现有技术中集成测试效率低、易出错、高成本的问题;以闭环的构建形式解决用户主动查找构建结果过程繁琐易遗漏问题;根据工具链的license数量和应用场景,提供合理的license管理策略,用即分配、不用即释放,解决项目任务构建冲突问题。
2、用于解决问题的方案
3、一种基于jenkins构建的自动化软件集成与测试方法,所述方法包括:
4、s1:上传应用程序和底层软件程序至svn代码管理仓库;
5、s2:获取应用程序和底层软件程序;
6、s3:jenkins调用脚本对应用程序和底层软件程序进行集成;
7、s4:jenkins调用编译工具对集成后的项目代码进行编译并判断编译是否成功,以此同时验证集成是否成功;若成功则执行s5,否则结束,构建结果及日志以邮件的形式反馈用户;
8、s5:jenkins调用测试工具对编译后的代码进行测试,判断测试结果是否符合指定的标准,若符合,则进入s6,否则结束,构建结果及日志以邮件的形式反馈用户;
9、s6:将应用程序、底层软件程序和编译后的代码推送至svn指定地址仓库。
10、进一步,在步骤s1中,应用程序负责实现项目功能逻辑,底层软件程序实现硬件资源管理和容器开发;底层软件程序和应用程序之间需要实现相应的信息交互,一方面,应用程序通过对底层驱动程序发送相应的指令,实现硬件控制的动作指令;另一方面,底层软件程序将硬件读写的状态、从硬件上获得的数据传送给应用程序,实现应用程序与底层软件程序间的交互。
11、进一步,在步骤s2中获取代码的方式有两种,一种是采用变更触发、另一种定时触发;
12、上述两种触发方式均是在前期运行环境搭建过程中进行设置:通过配置“buildtriggers”项中buildperiodically周期性触发选项,通过设置时间点,实现到点自动触发检出最新代码进行周期性构建;通过配置“buildtriggers”项中pollscm选项,通过设置持续监测的频率,持续查询svn代码库是否有更新,通过代码的更新实现自动触发检出最新代码进行任务构建。
13、进一步,在步骤s3中jenkins调用脚本对应用程序和底层工程进行集成;
14、其中,利用标准化技术,对应用程序与底层软件程序中输入输出变量进行标准化命名;应用程序与底层软件程序之间对应的输入输出接口一一对应;脚本实现应用程序与底层软件程序之间函数与接口的调用关系,代替人工手动集成,避免了人工执行误差并且提高了工作效率;
15、在步骤s3中,将集成的代码打包并上传svn指定路径,以备步骤s4流程使用。
16、进一步,在步骤s4中,编译结果根据编译工具返回的结果参数进行判断,若返回的参数与预设的结果一致,则判断为执行成功,否则失败;
17、在步骤s4中,将打包结果文件并上传svn指定路径,以备s5流程使用,其中结果文件包括:构建成功标志、构建日志和编译成功后的代码。
18、进一步,在步骤s5中,根据测试工具的不同,测试需要用户提交测试用例;测试结果需要用户制定测试结果通过标准;当测试结果小于或者等于预先设定的阈值时,则为通过;当判断出测试结果大于预先设定的阈值时,则为失败。
19、进一步,在步骤s4、s5中调用编译及测试工具时,判断是否存在空闲license,如果不存在空闲license,则推迟构建,如果存在空闲license,则调用工具进行构建,构建完成后释放license;如果整个过程成功完成,则发送构建结果邮件,否则判断是否是因为license被占用导致失败,如果是因为license被占用,则推迟构建,可判断指定推迟次数,如果判断指定次数后该license还被占用则可得出该工具使用可能出现故障,需要用户主动查看该工具的使用状态,否则发送邮件说明失败原因。
20、进一步,在步骤s3、s4、s5中,执行结果以及构建日志以邮件的形式告知用户,这样从用户上传到集成、编译及测试形成闭环,通过自动反馈构建结果及日志,实现系统的闭环控制,用户可及时发现问题并解决问题,从而提升工作效率,提高代码质量。
21、进一步,在步骤s6中,变更后的应用程序、底层软件程序经过集成、编译及测试都构建成功后,存放于指定地址仓库,用于后续程序迭代更新以及发布使用,可实现提交源码与最终构建成功程序的分离,避免代码污染。
22、一种基于jenkins构建的自动化软件集成与测试系统,所述系统包括:
23、用户管理模块、环境配置模块、svn集成管理模块、项目管理模块、jenkins交互模块、工具链集成模块和邮件发送模块;
24、所述用户管理模块,用于用户信息维护和权限管理;
25、所述svn集成管理模块,用于统一存放管理模型和底层代码以及构建过程中的产物;
26、所述工具链集成模块,用于对系统工具链进行集成,包括对编译、测试工具的集成;
27、所述jenkins交互模块,用于调用预设的工具链,实现代码的集成、编译和测试;
28、所述项目管理模块为中枢模块,与其他模块之间交互,用于负责项目的新建、打开、保存、关闭、提交、查看、构建、禁用、启用和删除,邮件发送模块用于将各工具执行的结果通过邮件发送给指定的用户;
29、所述环境配置模块,用于配置项目文件的加载路径和存储路径以及相关个性化配置,包括获取源码的目录地址、获取测试用例的目录地址、构建完成后存储的指定svn目录地址、选择项目需要调用的工具、定时构建触发的时间点和变更构建触发的轮询周期。
30、所述邮件发送模块,用于将各工具构建结果及日志通过邮件发送给指定的用户,供用户分析使用;
31、其中,用户管理模块包括:添加用户、删除用户、用户权限查看、用户权限修改、用户登录管理和修改密码,所述用户管理模块主要与数据库进行交互,包括对数据库中的数据进行保存、加载以及更新;
32、其中,svn集成管理模块还包括:实现配置管理工具的扩展点,可进行查询、导入和删除操作;还可实现源码管理工具的扩展点,负责对jenkins任务的svn源码管理部分进行配置;
33、其中,jenkins交互模块还包括:任务的创建、修改、查看、禁用/启用和任务的删除,该功能的实现主要借助jenkins命令实现;
34、其中,工具链集成模块还用于对工具链的存储以及调用权限管理;工具链至少包括:编译工具和测试工具。
35、有益效果:
36、上述技术方案的有益效果在于:
37、1、本发明提出的一种基于jenkins构建的自动化软件集成与测试系统,在软件集成时调用脚本自动集成代替人工手动集成,避免了人工执行误差并且提高了工作效率。该系统可实现软件集成、编译和测试一系列操作,包含了实际工作中大部分必要的工作流程,整个过程以自动代替人工手动操作,大大提高了工作效率。
38、2、本发明提出的一种基于jenkins构建的自动化软件集成与测试系统,从用户上传到集成、编译及测试形成闭环,通过自动反馈构建结果及日志,实现系统的闭环控制,用户可及时发现问题并解决问题,从而提升工作效率,提高代码质量。
39、3、本发明提出的一种基于jenkins构建的自动化软件集成与测试系统,根据工具链的license数量和应用场景,