在技术飞速发展的当下,随着各行各业的软件逻辑复杂程度提升带来的需求变更,传统测试已无法满足与之相对应的一系列测试任务,有必要引入一个自动化、可持续集成构建的DevOps平台来解决此类问题。本文将主要介绍SkyEye与Jenkins的持续集成解决方案。
何谓DevOps?DevOps是一种软件开发和运维的文化和方法论,旨在加强开发人员(Development)和运维团队(Operations)之间的合作与协调,以实现更高效、更快速、更稳定的软件交付和部署过程,强调通过自动化和持续反馈来实现软件开发、测试、部署和运维的无缝衔接,以及不断地改进和优化整个交付流程。
构建一个持续集成环境必须满足以下三个条件:
(1) 一个自动构建过程,包括自动编译、分发、部署和测试等;
(2) 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库;
(3) 一个持续集成服务器。
持续集成需要结合多个工具来完成整套工作流。工具链的功能及相关技术如下表所示:
▲ 业务流程与工具链的对应关系
01.SkyEye简介
SkyEye,中文全称天目全数字实时仿真软件,是国产自主可控的基于可视化建模的硬件行为级仿真平台,能够为嵌入式软件提供虚拟化运行环境,开发、测试人员可在该虚拟运行环境上进行软件开发、软件测试和软件验证活动。
基于SkyEye的持续集成流程图如下图所示:
▲ 基于SkyEye全数字仿真软件的持续集成流程演示图
基于SkyEye的持续集成流程所涉及的工具链有:
▲嵌入式软件测试工具链实现技术
02.Jenkins简介
Jenkins是一个开源的自动化服务器工具,用于构建、测试和部署软件项目,同时也是适用于持续集成(CI)和持续交付(CD)的工具,可以帮助开发团队自动化软件开发流程中的各种任务。
Jenkins的主要特点和功能有:
**自动化构建:**允许开发团队在代码提交到版本控制库(如Git)时触发自动化构建过程。每当有新代码提交时,Jenkins就会自动拉取最新代码并构建项目,以确保项目的可编译性。
**持续集成:**通过将开发人员的代码集成到共享代码库中,并在每个代码提交时进行构建和测试来支持持续集成,可以与各种版本控制系统(如Git、Subversion等)集成,以监视代码的变化并自动触发构建过程。
**插件生态系统:**具备庞大的插件生态系统,可以扩展其功能和集成其他开发和部署工具;插件可以用于构建工具、测试框架、静态代码分析、部署到云平台等。
**可扩展性:**可以根据项目需求进行自定义配置,允许用户创建自定义构建过程、添加自定义脚本和命令,并与其他工具和服务集成。
**可视化界面:**提供易于使用的Web界面,用户可以管理和监控构建过程,还可查看构建历史、设置构建触发器、监视构建输出等。
**分布式构建:**允许将构建任务分发到多个代理节点上执行,有助于加快构建过程并提高整体性能。
**报告和通知:**可以生成详细的构建报告,包括测试结果、代码覆盖率和静态代码分析结果等,还可以通过电子邮件、即时消息和其他渠道向团队成员发送构建状态和通知。
Jenkins的灵活性和可定制性使其成为持续集成和持续交付流程中的重要工具。它能够自动执行复杂的构建任务、及时提供反馈和报告,并促进团队合作和协同开发。无论是小型项目还是大型企业级应用程序,Jenkins都可以帮助开发团队提高效率、降低风险,并提供高质量的软件交付。
03.SkyEye与Jenkins持续集成
SkyEye与Jenkins集成有着诸多优势:
**摆脱特定硬件限制:**可以在PC上进行多种型号的嵌入式软件测试;
**脚本化配置:**减少复杂的配置过程,让操作过程更简单;
**自动化测试:**Jenkins持续集成工具可以自动化完成构建环节,同时,通过增加集成频次尽早发现缺陷避免方向性错误;
**降低风险:**一天内可进行多次集成仿真测试,有利于检查缺陷,了解软件的状况;
**不受时间、地点限制:**任何时间、任何地点都生成可部署的软件,利用持续集成,可以随时对源码进行小改动,并将这些改动和其他代码进行集成,及时测试。
SkyEye与Jenkins持续集成的流程为:
1. 源码管理/SkyEye工程/测试数据管理:
通过SkyEye构建好相应的工程,将构建好的工程上传至Gitea仓库project分支,并将源码上传至Gitea仓库code分支。
2. 代码修改:
通过git add/git commit/git push操作,git push指令触发webhock通知Jenkins进行自动构建任务。
3. Jenkins收到指令构建任务:
拉取Gitea仓库中的源码以及工程,将源码通过CCS编译后生成二进制文件。
4. 二进制文件部署:
将二进制文件拷贝到SkyEye工程中。
5. 通过SkyEye进行自动化测试:
通过Python脚本或者命令行指令进行自动化测试,生成测试结果。
6. Jenkins自动发送邮件:
通过邮件告知任务构建情况以及测试结果。
其中,Jenkins配置过程如下图所示:
(1) 配置slave节点,保证服务器与测试服务器联通;
▲ slave节点配置
(2) 新建持续集成任务;
▲ 新建任务配置
(3) 克隆源代码、测试脚本、仿真工程;
▲ 克隆源代码配置
▲ 克隆测试数据配置
▲克隆测试工程配置
(4) 配置编译脚本、自动化测试脚本;
▲编译脚本、自动化测试脚本配置
(5) 邮件配置;
▲ 邮件模板配置
(6) 执行过程;
▲ Jenkins中测试用例执行
(7) 测试结果知会。
使用Python脚本对测试结果进行整理,并通过Jenkins自带邮件插件进行告知,通知测试结果。
▲邮件接收测试结果