软件构建、测试和部署自动化

不管是传统瀑布式开发模式还是现如今互联网行业流行的敏捷开发模式其整个过程必不可少存在软件代码编写、代码构建、软件测试(代码静态分析、单元测试、模块测试和系统集成测试等)、软件部署等主要阶段。传统的做法往往是通过人工的投入方式一个阶段一个阶段的去执行实施,这好比传统的家庭作坊式手工生产工业品时代或劳动密集的工厂加工时代。现如今工业品的生产已逐步走向自动化生产流水线而解放出来的人力更多地是投入到自动化生产线无法替代的产品设计上。那反观软件产品的生产过程,我们会发现它在国内仍也大部分处于家庭作坊或大规模劳动密集型生产过程中。而在国外特别是科技领先的美国已经普遍实现软件研发生产过程的自动化,除了架构和代码设计的人工参与外通过自动化平台最大限度地实现构建、测试、部署的自动化,大大提高了软件产品交付速度和成本。

那为什么说这将是软件研发下一步发展趋势,首先,我们看看传统软件开发过程中的问题:

  • 软件交付各阶段依赖性大发布周期长依赖于个人或小团队执行、更新状态和解决问题;
  • 应对复杂的开发环境各种应用、开发流程、硬件环境和工具
  • 多手工的流程不可重复、易出错、无可追溯性、不透明
  • 硬件资源利用率低长期空闲或资源争夺

上述问题必然导致软件交付时间长、质量差、成本高等问题,因此解决上述问题对于平台的需求基本体现在以下几点:

  • 软件开发自动化流程建模
  • 分布式编译加速、并行测试加速、一键式部署
  • 软件开发工具链集成实现工具自动执行、动态分析
  • 软件开发相关系统集成实现全面软件配置管理
  • 对现有硬件资源的统一管理和调度能力
  • 软件开发过程动态监控基于同一平台自动收集和管理过程数据
  • 提供持续集成、持续交付、敏捷开发和DevOps最佳实践

此类自动化平台在国外已有相当多的供应商如Electric Cloud、Teamcity、IBM等但我们比较推荐Electric Cloudwww.electric-cloud.com公司其专注于软件开发自动化领域十几年全球领先的500强公司大部分也采用了他家的解决方案。附件为其解决方案。

时间: 2024-12-20 14:40:18

软件构建、测试和部署自动化的相关文章

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

软件测试之构建测试---BVT

1. 构建的基本流程: a. 开发人员在他们的个人计算机上编写源代码文件 b. 他们将编写好的文件存放在一个统一集中的地方,构建组将所有的源代码编译成可以在计算机上运行的二进制文件,且用安装工具把各种需要安装到服务器上的文件包装成可以安装到不同平台的软件包.   c. 组合成一个产品 构建的过程就好比一个组装生产线,源代码文件就像是各种大小配件,被存储在一个大仓库里,源代码中,有些在构建过程中还需要再加工. 2. 构建过程: 3. 构建生产线时,软件开发部门,特别是构建测试团队需要考虑什么? a

全程软件测试之测试需求分析与计划

全程软件测试之测试需求分析与计划 在项目启动之后,就要着手软件项目的计划,包括软件测试计划.软件测试计划是整个开发计划的组成部分,同时,它又依赖于软件组织过程.项目的总体计划.质量文化和方针.在测试计划活动中,首先要确认测试目标.范围和需求,其中"测试需求分析"是关键任务,然后在测试需求基础上制定测试策略,并对测试任务.时间.资源.成本和风险等进行估算或评估. 无论何时进行估算,我们都是在预测未来,并会接受某种程度的不确定性.软件项目计划的目标是提供一个框架,不断收集信息,对不确定性进

如何开发高质量的软件 - 通过测试集中型的软件开发方法来提高软件质量

“构建技术系统所要做的工作是非常繁重的,同时还需要专业知识:语言和协议,编码与调试,测试与重构.”——James Garrett 概述 每年各个企业都在努力实现企业的主要目标.通常,这都是通过实现基于度量指标的性能目标(可能包括质量目标)以及利用最佳惯例规范商业流程来实现的.最 后,要通过一些测试和报告形式来评估这些目标对企业的影响.在接受评估之前,机智的员工都会要一个评估单——但是在开发新的软件产品,确定测试目标时,他 们常常会忽略这一点. 企业在设计实体产品时,会花很多时间设计产品的生成流程

Google软件构建工具Bazel

转载Google软件构建工具Bazel FAQ 本文是我的翻译,原文在这里.欢迎转载,转载请注名本文作者和原始链接注:如果想了解Bazel的原理,可以看看我之前翻译的Google Blaze原理及使用方法介绍系列 Bazel是什么? Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具,跟Make.Ant.Gradle.Buck.Pants和Maven一样. Bazel有什么特殊之处 Bazel是设计用来配合Google的软件开发模式.有以下几个特点: 多语言支持:Bazel支持J

《代码大全》阅读笔记-1-欢迎进入软件构建的世界

首先要明确开发计算机软件是一个复杂的工程,并不比建设高楼大厦简单.这项活动和传统的土木工程类有相似的部分,也有迥然不同的地方. 主要有下面的几种活动(根据进程推动顺序): 定义问题 需求分析 规划构建 软件架构/高层设计 详细设计 编码与调试 单元测试 集成测试 系统测试 部署/分发及保障维护 <代码大全>主要关注的是构建这部分: 本章节要点: 软件构建是软件开发的核心活动:构建活动是每个项目中位移一项必不可少的工作 软件构建的主要活动包括:详细设计.编码.调试.集成.开发者测试(包括单元测试

一次puppet部署自动化的尝试

背景: 大约有20台的生产和测试主机(Centos5.3),有6个大模块,以前都是用手动安装的,费时费力,有时也会手动操作出错. 目标: 希望用puppet来实现部署的自动化 下面以其中的一个模块的自动化部署尝试来讲解如何实现用puppet的部署自动化. 前提: 在一台测试机上安装puppet master,一台装puppet agent.具体的安装和配置过程就不再讲述了,网上的资料一堆堆的. 现在着重讲述如何配置puppet的类. 创建一个模块,叫ppe/etc/puppet/modules/

软件构建工具Scons在大型项目中的几点总结

最近在为团队搭建统一的软件构建环境,目的是用scons为十几个软件模块提供统一的编译框架和命令,支持生成release/debug不同版本的可执行文件,同时支持不同的调试级别. 1.整体结构和实施过程 a.约定好不同模块在统一的代码库中的相对位置 因为软件模块之间可能存在库依赖.头文件依赖等关系,固定的相对路径能够使得模块中包含其他模块头文件或者库的脚本语句固定下来: b.为每个新增加模块写sconscript脚本,在里面利用scons.python语句实现软件构建.部署和清除: c.如果子模块

代码大全读书笔记1---进入软件构建的世界

构建实质建设的过程,构建的过程包含计划.设计.检查工作的一些方面. 软件开发过程中的各种不同的活动: 1.定义问题(problem definition) 2.需求分析(requirements development) 3.规划构建(construction planning) 4.软件架构或高层设计(software architecture or high-level design) 5.详细设计(detailed design) 6.编码与调试(coding and debugging)