• 测试实施实践

    • 持续集成

      • 什么是持续集成
      • 为什么要持续集成
      • 持续集成的优势
        • 减少风险
        • 任何时间、任何地点生成可部署的软件
        • 增强项目的可见性
        • 建立团队对开发产品的信心
      • 原则
    • TDD
    • ATDD
    • BDD
    • 结对编程
    • DevOps

测试实施实践

持续集成

什么是持续集成

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

为什么要持续集成

因为对于多人合作的大型软件来说,越早发现问题,解决问题的成本越低。随着软件项目复杂度的增加(即使增加一个人),就会对集成和确保软件组件能够在一起工作提出了更多的要求-要早集成,常集成。早集成,频繁的集成帮助项目在早期发现项目风险和质量问题。

持续集成的优势

减少风险

一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。
减少重复过程
减少重复的过程可以节省时间、费用和工作量。说起来简单,做起来难。这些浪费时间的重复劳动可能在我们的项目活动的任何一个环节发生,包括代码编译、数据库集成、测试、审查、部署及反馈。通过自动化的持续集成可以将这些重复的动作都变成自动化的,无需太多人工干预,让人们的时间更多的投入到动脑筋的、更高价值的事情上。

任何时间、任何地点生成可部署的软件

持续集成可以让您在任何时间发布可以部署的软件。从外界来看,这是持续集成最明显的好处,我们可以对改进软件品质和减少风险说起来滔滔不绝,但对于客户来说,可以部署的软件产品是最实际的资产。利用持续集成,您可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。不采用持续集成的情况下,这些问题有可能到交付前的集成测试的时候才发现,有可能会导致延迟发布产品,而在急于修复这些缺陷的时候又有可能引入新的缺陷,最终可能导致项目失败。

增强项目的可见性

持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。通常,项目成员通过手工收集这些信息,增加了负担,也很耗时。持续集成可以带来两点积极效果:
(1)有效决策:持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统可以报告功能完成度和缺陷率。
(2)注意到趋势:由于经常集成,我们可以看到一些趋势,如构建成功或失败、总体品质以及其它的项目信息。

建立团队对开发产品的信心

持续集成可以建立开发团队对开发产品的信心,因为他们清楚的知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。

原则

  1. 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他们的变更不会导致持续集成失败。
  2. 开发人员每天至少向版本控制库中提交一次代码。
  3. 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。
  4. 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。
  5. 每次构建都要100%通过。
  6. 每次构建都可以生成可发布的产品。
  7. 修复失败的构建是优先级最高的事情。

TDD

TDD (测试驱动开发(Test-Driven Development))TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。

ATDD

验收测试驱动开发(Acceptance Test Driven Development)

BDD

BDD:行为驱动开发(Behavior Driven Development)

行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。主要是从用户的需求出发,强调系统行为。BDD最初是由Dan North在2003年命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应。

使用BDD和ATDD可以解决需求和开发脱节的问题,首先他们都是从用户的需求出发,保证程序实现效果与用户需求一致。
这个过程可以使用基于BDD的自动化测试工具Cucumber。

结对编程

其实结对编程做起来很简单也很有趣,找个水平差的不太远的程序员和自己配成一对。只用一台计算机,大家选一个人坐在键盘前面负责输入,另一个人坐在后面口述。两个人要不断的交流,频率不应低于一分钟一次。整个的设计思想由后面只动口不动手的人主导,而由操键盘的人做实现。由于人的思维速度是快于输入代码的速度的。那么观看的人可以有空闲的时间做额外的思考,观察代码写的有没有问题,结构有没有问题。
如果程序员的经验积累足够,是很容易看出存在潜在问题的代码的,即表面上实现了功能,但实际上是一种糟糕的做法。这在XP(eXtreme Programming 极限编程)中被称为代码坏味道,在 Martin Fowler的《重构》一书中有详细的介绍。两个有经验的程序员同时在一起工作,看起来好像浪费了一个人的时间:但实际上的效果确实完成了更高质量的代码。程序编的不那么容易出BUG,而且代码也写得更为优雅和紧凑.

DevOps

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。
需要频繁交付的企业可能更需要对DevOps有一个大致的了解。Flickr发展了自己的DevOps能力,使之能够支撑业务部门“每天部署10次”的要求──如果一个组织要生产面向多种用户、具备多样功能的应用程序,其部署周期必然会很短。这种能力也被称为持续部署,并且经常与精益创业方法联系起来。 从2009年起,相关的工作组、专业组织和博客快速涌现。
DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。

测试与工程化相关的一些热点词语解释相关推荐

  1. 【40-系统性能压力测试基本概念-相关性能指标HPSTPSQPSRT-安装Jmeter教程-JMeter测试流程-线程组-取样器-监视器-测试商城首页-JMeter Address 占用的问题】

    一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...

  2. UL588圣诞灯串测试标准和相关法规

    UL588圣诞灯串测试标准 常用标准 UL588标准涵盖所有暂时使用季节性产品, 而且最大输入电压为120 V,暂时性使用的期限 是不超过90天.UL588不包含灯座大于E17灯串,非季节性灯饰,不包 ...

  3. 软件分支测试覆盖率 100%,测试覆盖率之三——测试覆盖率100%相关的话题

    上一篇文章中,介绍了测试覆盖率的意义之类的东西.测试覆盖率可以帮助我们检查测试质量,检查测试用例的有效率.如果有兴趣的话,可以阅读测试覆盖率之二--测试覆盖率有什么用? 关于测试覆盖率,我个人的感觉是 ...

  4. JAVA 编程专业词语解释~~映射

    JAVA 编程专业词语解释~~映射 话不多说,直接来... 映射最早发源于数学,映射是个术语,指两个元素的集之间元素相互"对应"的关系,为名词.映射,或者射影,在数学及相关的领域经 ...

  5. 《 阿Q正传》-鲁迅 词语解释 | 经典语录

    词语解释 "太上有立德,其次是立功,其次是立言,虽久不废,此之谓不朽".-出自<左传>-左丘明(春秋末期) 解释:(1)最上等的是树立德行,其次是建功立业,再其次是创立 ...

  6. 台阶的意思_台阶词语解释

    台阶词语解释 华语网初中语文栏目组 化石吟员 编辑整理 编者按:本课课后要求掌握的词语不多,但文中涉及的生词及成语不少,为方便大家阅读理解,我仔细阅读课文,把一些难理解或容易弄错的词语纠了出来,逐一解 ...

  7. [Silverlight] UI 测试/UI 自动化相关知识

    (摘要自:http://blogs.msdn.com/gisenberg/archive/2008/07/12/ui-automation-in-silverlight-simulating-user ...

  8. linux下测试RTC驱动相关的命令date和hwclock常见用法简介

    之前对Linux下面时间相关的内容,一无所知,第一次见到hwclock,不知为何物,也没找到解释清楚的帖子.故此整理一下,简单介绍Linux下验证rtc驱动是否工作正常,相关的的命令:date和hwc ...

  9. 测试(测试开发)类相关面试题for互联网

    (1)你对测试的看法,有哪些测试方法? 测试就是为了保证可靠性,有白盒和黑盒测试,黑盒测试有边界法等等方法. (2)你在做性能测试的时候是怎样进行测试的 请简单描述一下测试的流程? 答:1.准备测试的 ...

最新文章

  1. ideal连接数据库报错The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time
  2. Spring-beans架构设计原理
  3. SiameseFC超详解
  4. Go: 清空 Slice 的两种方法:[:0]和nil
  5. oopc——5.多态
  6. 你真的会写二分查找吗
  7. 也乱弹Book.Save而引OO对话
  8. 7.企业应用架构模式 --- 分布策略
  9. Python3,selenium动态下载某库PPT文档,省下的钱可以撸串了!!!
  10. 日语简历在线做成下载的网站(收藏)不同职业日语简历模板下载免费
  11. python中变量名有哪些
  12. postgresql源码学习(十)—— 常规锁③-主锁表与进程锁表的初始化与查询
  13. android 多媒体封装格式详解---MKV
  14. 一下科技何一:移动视频风口,内容创业者如何飞升?
  15. TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的FIR滤波处理
  16. git报错:error: failed to push some refs to ... 的解决办法及如何让线上覆盖本地方法【Git/SVN】
  17. 见证微信小程序之火热
  18. 快手服务器协议,快手协议56云服务器
  19. python快速数据分析_收藏 | 10个可以快速用Python进行数据分析的小技巧
  20. python哪里培训

热门文章

  1. 数据处理Pandas学习笔记(二)
  2. 【部署】HIDS之OSSEC部署
  3. 第一节 安装Matlab 2016a Win64
  4. 模板 - 最小割(常见最小割题型技巧总结)
  5. 文心千帆大模型测评分享,效果超出预期
  6. QTimer的使用方法
  7. 【UE4源代码观察】观察D3D11是如何被RHI封装的
  8. 想要python不报错,进来看看-->python常见错误和异常处理
  9. python循环总结
  10. Java-线程池 ThreadPool 专题详解 (美团面试题)