作者:朱金灿

来源:http://blog.csdn.net/clever101

1.背景

在以往的软件研发过程中,存在一个比较严重的问题:测试版本发布周期长,严重时长达两个月无法发布测试版本。为了有效解决这个问题,我在主持开发公司平台软件的过程中采用了现代软件工程的每日构建。这里简要介绍下公司平台软件。公司平台软件不仅仅是作为公司的拳头产品去销售,而且需要提供SDK供项目部同事去做系统定制开发。每日构建(daily builds)是指每天自动地在指定时间完整地构建整个软件代码。之所以采用每日构建,最初的目的是尽量将源码编译过程和初步的代码质量检查都交给机器完成,从而达到减少人力提交效率的目的。

2.流程简介

在软件开发流程中引入每日构建,具体来说包括如下几步:每日构建工具选择、工具安装和每日构建流程的设计和执行。

要执行每日构建,需要选择合适的工具。在工具的选择上,我们主要基于两点考虑:一是尽量降低成本;二是能够获得足够的技术支持。因此,在选择每日构建工具时,我们主要考虑开源的、在业界广泛使用的并能和现有的开发环境配合使用的工具,为此我们选择了业界著名的开源每日构建工具hudson。

然后就是部署每日构建工具hudson。一般来说,要执行每日构建需要专门的每日构建服务器。最开始由于缺乏专门的每日构建服务器,我们把hudson部署在源码服务器上。

接着的关键一步是设计每日构建流程。常见的简单的每日构建流程主要是在指定的时间获取服务器的代码,编译代码和将编译好的二进制文件拷贝到指定发布目录。但在每日构建的实践过程中,我们发现需要针对这一流程进行完善。完善后的每日构建流程如下图所示。

图 1 每日构建流程图

公司平台软件的每日构建流程的执行时间设定在每天凌晨12:30开始执行。一般来说,如果源码编译顺利,测试人员在第二天上班后就可在版本发布目录中拿到软件的最新测试版本并开始测试。

3.总结

从2013年开始执行每日构建,公司平台软件的每日构建流程已经持续执行了将近四年。总结这四年的执行情况,公司平台软件每日构建基本上达到了预期目标,大大提高了测试版本的发布频率,以前两个月无法发布一个测试版本的情况一去不复返。通过每日构建,也暴露出了两个突出问题:一是一些同事因为粗心忘记提交一些代码而导致每日构建失败;二是即使每日构建成功,有时发布的软件版本也不能完全满足测试的要求,比如有时发布的软件无法运行导致软件无法测试。暴露出来的问题也促使我们反思软件开发过程中存在的问题。

4.后续改进设想

针对每日构建中出现的问题,我们认为每日构建不仅可以是一个软件编译流程,而且也可以是一个软件质量检查工具,因此公司平台软件每日构建流程还有比较大的完善空间。在每日构建流程的后续完善中,可以考虑在流程前面增加代码静态质量检查,在流程后面增加编译后的软件质量检查。具体的完善流程如下图所示。

图 2 每日构建完善流程图

上述流程涵括了软件质量的两方面检查:一是代码质量检查;二是功能质量检查。功能质量检查的目的主要是:一、保证软件是无毒的;二、保证软件的基本可测性,即发布的软件测试版本不是那种无法运行的或者一点就崩溃的软件版本。

平台软件每日构建总结相关推荐

  1. 入门级----测试的执行、环境的搭建、每日构建、测试记录和跟踪、回归测试、测试总结和报告...

    测试用例的准备,都是为了执行测试准备的. 测试环境的搭建 (1)测试数据:有些测试需要使用大批量的数据,例如容量测试.压力测试等.根据产品的具体测试要求,可能需要在数据库表插入大量的数据,准备大量的文 ...

  2. 一年多推行每日构建的经验总结

    作者:朱金灿 来源:http://blog.csdn.net/clever101 早在主持开发产品新版本之初,我就有一个略显激进的想法:新产品的测试版本发布频率至少在一周之内.开发人员倾向于感觉自己软 ...

  3. 数字城市地理信息公共平台软件测评大纲

    数字城市地理信息公共平台软件 测评大纲 一.平台定义 数字城市地理信息公共平台是依托地理信息数据,通过在线方式满足政府部门.企事业单位和社会公众对地理信息和空间定位.分析的基本需求,具备个性化应用的二 ...

  4. 多平台容器镜像构建就看这一篇

    前言 愿景与现实 早在1995年,就有"write once and run anywhere"(WORA,编写一次即可在任何地方运行)用于描述 Java 应用程序.时过20年,D ...

  5. 软件需求工程 高校教学平台 软件概要设计说明书

    点击查看 软件需求工程 高校教学平台 卷首语 文章目录 引言 编写目的 背景 定义 参考文献 总体设计 用户需求规定 教师.助教 学生 管理员 游客 其他需求规定 运行环境 基本设计概念和处理流程 结 ...

  6. 微软VS2015下载:开发Win10/Linux/iOS多平台软件

    微软VS2015下载:开发Win10/Linux/iOS多平台软件 来源:IT之家       作者:子非         责任编辑:子非 11月13日消息,微软刚刚宣布了 Visual Studio ...

  7. 盘点直播直播平台软件开发技术中的编解码、直播协议、网络传输与简单实现

    盘点直播直播平台软件开发技术中的编解码.直播协议.网络传输与简单实现 编解码 视频封装格式就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,它其实就是一个盒子,用来将实际的视频流以一定 ...

  8. linux平台软件动态分析工具valgrind系列工具及其可视化

    linux平台软件动态分析工具valgrind系列工具 Memcheck–内存检查工具 Callgrind–函数调用分析工具 Cachegrind–缓存命中分析工具 Helgrind–线程分析工具 M ...

  9. [转]在.NET环境中实现每日构建(Daily Build)--NAnt篇

    本文转自:http://dragon.cnblogs.com/archive/2005/07/29/203189.html   前言 关于每日构建这个话题,也已经有很多很好的文章讨论了.本文的写作过程 ...

最新文章

  1. 《每周CV论文》人脸识别难题:遮挡年龄姿态妆造亲属伪造攻击
  2. varnish性能调优
  3. C 函数 strstr 的高效实现
  4. Kotlin的解析(中)
  5. c语言使用数组计算最大数。_程序设计入门——C语言_浙江大学_第10次开课
  6. Android拍照流程
  7. 【学习笔记】Docker - 01. Docker是啥
  8. Java 截取反斜杠--java使用split拆分特殊字符
  9. r语言 图形一览_R语言实战(第2版):第三章 图形初阶(01)
  10. Behavior Language Processing with Graph based Feature Generation for Fraud Detectionin OnlineLending
  11. python if not A 和 if A is None
  12. 二叉树 查找失败 asl_算法——二分搜索amp;折半查找
  13. 地理信息系统概论_2021考研专业课地理信息系统概论(黄杏元版)知识点总结(五)...
  14. Centos网络管理(五)-Bonding、网络组和网桥
  15. matlab相关系数的显著性检验
  16. zTree 树形中的搜索定位节点
  17. Linux 压缩软件的使用
  18. HTML canvas系列-画圆(4)
  19. 旅游行业电子合同应用普及,提速、控险、降本
  20. ESD静电保护二极管的优点有哪些?

热门文章

  1. pythonyaml参数传递_configutator-将yaml节点和命令行参数映射到python函数参数。-Nolan configutator To use:...
  2. 如何完全卸载删除Parallels Desktop Mac教程
  3. C++20新特性全在这一张图里了
  4. 从Anker到SHEIN,对不起我要放弃Amazon了
  5. 领取1024节日勋章(程序员必看)
  6. 时空人工智能概念特点和核心能力
  7. centos安装LDAP即配置
  8. mxnet-lst文件
  9. 数独问题流程图_数独游戏的难度等级分析及求解算法研究
  10. 开源·共享·创新|2020年中国.NET开发者大会圆满收官!