软件测试持续集成的方法实践

配置管理

  配置管理在软件开发项目中极其重要,它记录了软件开发流程的演进过程。它能够实现软件增量式开发,并随时可以追溯或查看任意时间的软件版本。持续集成一书中对配置管理是这样定义的:

  配置管理是指一个过程,通过该过程,所有与项目相关的产物,以及它们之间的关系都被唯一的定义、修改、存储和检索。

  那么我们怎么做配置管理?

  (一)版本控制

  (1)首先我们需要一个版本控制系统,Subversion、Mercurial或者Git,对于一个分布式的团队最好优先选择Mercurial或者Git。

  (2)把软件开发有关的所有内容进行版本控制。包括源代码、数据库脚本、构建脚本、部署脚本、文档、第三方依赖、MindMap等等。保证新加入的成员能够很容易地从零开始工作,保证在新的测试或者生产中能轻松部署应用。

  (3)频繁提交代码到主干。为了验证修改的正确性,快速的得到反馈,以及能够轻松地回滚到某个无错误的版本,提倡频繁提交。

  (4)提交注释清晰明了。构建失败时,为了能够通过版本控制器查询是谁破坏了构建,以及他做了哪些修改,提交代码的时候必须使用意义明显的提交注释。建议第一段是简短的总结,第二段是描述更多的修改细节。

  (二)依赖管理

  第三方库文件是最常见的依赖,我们可以在本地建一个外部依赖库的副本来统一管理所有依赖,如果你使用Maven,你就可以这样做。

  (三)环境配置

  软件最终的运行环境可能不止一个,而且每个软件都会依赖的硬件、软件、基础设施或者外部系统才能工作。我们必须把环境配置自动且可靠化,可以借助Puppet或者CfEngine之类的工具软件。

  持续集成

  敏捷宣言首要原则就是尽快的交付可工作的软件到客户手中,为了实现这一原则,控制成本并及早的验证修改的正确性和快速得到反馈,提倡使用持续集成方法。

  准备工作:

  (1)版本控制

  (2)自动化构建

  (3)持续集成系统(Jenkins,Go,TeamCity等等)

  (4)七步代码提交法则。如下图:

  为了实现持续集成需要做一下准备:

  (1)频繁提交

  (2)创建全面的自动化测试套件(单元测试、功能测试等)

  (3)保持较短的构建和测试过程

  (4)可视化构建状态(可使用红绿熔岩灯)

  必不可少的实践

  (1)构建失败后不要提交代码

  (2)提交前在本地运行所有的提交测试(单元测试、功能测试等)

  (3)等提交测试通过后再继续工作

  (4)下班之前,构建必须处于成功状态

  (5)若测试运行慢,就让构建失败

  (6)若有编译错误或者代码风格问题,就让构建失败

  持续集成改变了以往的软件开发模式,使应用程序任何时候都处于可运行状态,创建了一个快速的反馈环,使你能够尽早的发现问题,而发现问题越早,修复成本越低。

  测试策略

  测试策略的设计主要是识别和评估项目风险的优先级,以及决定采用哪些行为来缓解风险的一个过程。

  测试有很多种,Brian Marick提出了如下图 所示的测试象限。

  好的测试策略会带来很多的积极作用。测试会建立我们的信心,使我们相信软件可按预期正常运行。

相关链接:

软件开发为何采用持续集成

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-05 17:26:42

软件测试持续集成的方法实践的相关文章

持续集成(三):最佳实践

[编者的话]这是持续集成系列的最后一篇,在本文中,作者列出了Martin Fowler撰写的CI白皮书里面的一些原则,并介绍了一些个人的实践经验. 引言 本文讲的是持续集成(三):最佳实践这是持续集成系列的第三篇.在这篇文章里,我们将介绍实现一个CI流程的一些最佳实践.笔者也将会根据自己的行业经验介绍一些真实世界里的提醒和警告. 快速回放:在本系列的第一篇里,我们介绍了CI的基本概念以及它和敏捷开发及DevOps团队文化的关联.在第二篇里,我们介绍了CI服务器的概念以及它是如何将各种实现一个CI

Android项目持续集成实践之Gitlab CI

简介 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误. 入门 下面我们来简单介绍,如果通过Gitlab CI来对Android项目持续集成. 一言不合,先甩给你一个项目链接:https://gitlab.com/snowdream/Citest 项目很简单,就是一个默认创建的Andro

构建iOS持续集成平台(一)自动化构建和依赖管理

2000年Matin Fowler发表文章Continuous Integration[1]:2007年,Paul Duvall, Steve Matyas 和 Andrew Glover合著的<Continuous Integration:Improving Software Quality and Reducing Risk> [2]出版发行,该书获得了2008年的图灵大奖.持续集成理念经过10多年的发展,已经成为了 业界的标准.在Java, Ruby的世界已经诞生了非常成熟的持续集成工具

为什么我们迫切需要持续集成?

本文讲的是为什么我们迫切需要持续集成?[编者的话]持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础.本文论述了当前软件开发过程中存在的问题,讲解了持续集成.持续集成服务器的概念,最终探讨了为什么我们需要持续集成来解决这些问题. [3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站]本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览:持续集成系统介绍:客户端与服务端的 CI/C

为什么我们迫切需要持续集成(Continuous Integration)

原文同步至 https://waylau.com/why-we-need-continuous-integration/ 持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础.本文论述了当前软件开发过程中存在的问题,讲解了持续集成.持续集成服务器的概念,最终探讨了为什么我们需要持续集成来解决这些问题. 当前软件开发过程存在的问题 在没有应用持续集成之前,传统的开发模式是这样的: 项目一开始是先划分好模块,分配模块给相应的开发人员: 开发人员

IOS6.1单元测试持续集成实践

最近项目测试需要,调研并实践了下IOS下单元测试工具和框架.目前比较流行的工具有xcode自带的OCUnit.GHUnit等,我选择的是GHUnit,因为相比OCUnit,GHUnit具有如下优势: 1.开源框架 2.支持重复测试.单一测试.集成测试. 3.断言方法丰富 4.支持持续集成 5.测试类型多样(UI和Command Line) 官方地址如下:http://gabriel.github.io/gh-unit/ GitHub下载地址:https://github.com/gabriel/

产品迭代发布如何更快速?阿里持续集成与持续交付实践之路全解析

2017年5月9日,云效平台资深研发工程师向禹通过直播分享了<持续集成与持续交付实践之路>.他从云效背景.云效方案.云效价值三个方面进行了分享.他主要分享了持续集成持续交付的解决方案和案例,并且对大型系统如何实现持续集成.持续交付.进行产品迭代发布进行了详细介绍. 以下内容根据直播视频整理而成. 云效背景--阿里巴巴<持续交付>之路 大应用下的交付 在七八年之前,阿里巴巴的B2B一直沿用瀑布的模式来进行项目管理,当时已经感觉到瀑布模式对应用持续快速的发展产生了很大的影响.并且当时很

《配置管理最佳实践》——2.11 持续集成与每日构建

2.11 持续集成与每日构建 持续集成是一个相当流行的软件开发实践.现在,人们时常把持续集成和敏捷开发联系到一起.实际上,即使开发团队使用的不是敏捷开发的过程, 持续集成在他们之间也已经非常流行.另外一个很明显的现象是很多研发团队并不需要签入构建(commit build, check-in build),也就是说并不需要每次有代码签入代码库都要立刻触发一个构建.很多时候,每日构建已经足够用了,而且也容易实现.持续集成经常会发起很多没必要的失败构建,导致显示面板上出现很多没必要的失败记录.某些构

Jenkins与Docker的持续集成实践

本文讲的是Jenkins与Docker的持续集成实践[编者的话]持续集成(CI/CD)是一种软件开发实践.用于帮助团队成员频繁.快速的集成,测试他们的工作成果,以尽快发现集成错误. 更频繁.更早的集成意味着更早的发现问题.通过持续集成,及时发现和解决代码故障,提高代码质量,减少故障处理成本等等. [3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站]本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览:持续集成系统介绍:客户端与服务端的