软件测试的艺术(读书笔记7)

下面继续本书第四部分的读书笔记部分

第四部分 开发中的调试和测试思想

  第8章 调试;第9章 敏捷开发模式下的测试

第9章 敏捷开发模式下的测试

  随着市场竞争的日趋激烈,今天的商业项目需要不断缩短发布时间,同时还要不断地为客户提供高质量的产品。而老一套的开发模式很难适应当今的竞争环境,所以有一些开发人员就开始讨论轻量化和快速的开发方法。这就是著名的《敏捷软件开发宣言》,这份宣言没有僵化的开发方法和复杂的技术结构,而更像是一份针对客户和开发个体的箴言警局。

1、敏捷开发的特征

  从敏捷软件开发宣言可以发现敏捷开发的一些特征:

  (1)客户参与

    围绕以客户需求为导向的开发过程,需要让客户尽早参与到开发周期中,并一直到其结束;如果没有客户参与,敏捷开发等同失败,这时可以选择传统的开发流程。

  (2)迭代开发

    敏捷开发提倡迭代式和增量式的开发模式。

  (3)测试驱动

    测试在其中发挥重要作用,依赖单元测试和验收测试(极限编程)。

2、敏捷测试的特征

   敏捷测试要求每个人参与到测试计划的设计、实现及执行中去。客户通过定义用例集以及程序属性参与到定义验收测试的设计中来。开发者和测试者打造可以进行功能自动化的测试组件。敏捷测试要求每个人参与,需要有大量的沟通与协作工作。

  (1)客户参与

    在客户参与阶段,客户需要参与到开发周期来定义验收测试的设计。

  (2)自动化测试

    开发人员需要在软件代码实现之前,创建单元测试。在软件代码实现后,有任何的代码的递增,都需要进行单元测试。所以需要自动化的单元测试。

  (3)项目跟进

    测试者不仅是把问题找出来交给开发人员修复,他们的任务是通过持续的测试反馈推动项目前进,并帮助开发这修复bug、改变需求及其他一般质量的提升。

3、极限编程与测试

  极限编程是一种新的软件开发方法,可以很好的支持像Java、Visual Basic及C#等面向对象编程语言的应用。面向对象的开发语言虽然加快了程序的开发,但其质量并未得到保证。

  XP(极限编程)开发方法的目的是短时间内开发高质量的程序。XP除了需要客户参与之外,还高度依赖模块的单元和验收测试,也就是说每次代码的递增和修改,开发人员都必须进行单元测试,以确保代码库满足其规格说明的要求。

  3.1 极限编程基础

  XP是一种使开发人员快速生产高质量代码的软件开发过程。如果将“质量”定义为:代码库对其设计的规格以及客户的满意程度。

  XP的关注点是:

    • 实现简单的设计。
    • 开发人员与客户的沟通。
    • 不断地测试代码库。
    • 重构以适应规格说明的变更。
    • 寻求用户的反馈。

  XP更倾向于中小规模的软件开发,因为此类软件的规格说明变更非常频繁,同时还需要同客户进行实时的沟通。

  XP同传统的开发过程相比有一下几点不同:

  (1)避免大规模项目综合症

    综合症:开始编码之前客户和编程小组碰头,设计软件的每个细节。XP的策划阶段重点在于收集应用程序的一般性需求,而非在所有小细节上。

  (2)避免编写不需要的功能

    将精力集中在必需的功能上,有助于短时间内开发高质量的软件。

  (3)将主要精力集中在测试上

    传统软件开发模型会建议首先编码,然后生成测试接口。但XP方法,先生成单元测试用例,然后才编写代码通过测试。

  XP开发模型有12个核心实践,可总结归纳为4个概念

     1.聆听客户和其他程序员的谈话

     2.与客户合作,开发应用程序的规格说明和测试用例

     3.结对编程

     4.反复测试代码库

    下表是极限编程的12个核心实践    

实践 注释
1.计划与需求分析
  • 将市场和业务开发人员集中起来,共同确认每个软件特征的最大商业价值
  • 以使用场景的形式重新编写每个重要的软件特征
  • 程序员估计完成每个场景的时间
  • 客户根据估计时间和商业价值选择软件的功能特征
2.小规模、递增地发布 努力添加细微的、实在的、可增值的特征,频繁发布新版本 
3.系统隐喻 编程小组确认隐喻,便于建立命名规则和程序流程 
4.简要设计 实现最简单的设计,是代码通过单元测试。假设变更即将发生,因此不要在设计上花太多时间,只是不停地实现 
5.连续测试 编写模块之前生成单元测试,模块只有通过单元测试后才算完成 
6.重构 清理和调整代码库。单元测试有助于不破坏程序功能,应在任何重构之后重新进行所有单元测试 
7.结对编程 两位程序员协同工作,在同一台机器开发代码库。这样可以对代码进行实时检查,提高发现缺陷的概率和改正的几率 
8.代码的集体所有权 所有代码归全体程序员所有,没有哪一个程序员只致力于开发某一个代码库 
9.持续集成 每天的程序变更,需要通过单元测试后才能集成到代码库中 
10.每周40小时工作 不允许加班。如果每周都全力工作了40小时,就不需要加班。在重大发布前的一星期例外 
11.客户在现场 开发人员和编程小组可以随时接触用户,这样可以快速、准确地解决问题,是开发不至于中断 
12.按标准编码 所有代码看上去必须一致。设计一个系统隐喻有助于满足改原则 

   重要的核心实践:XP计划和XP测试。

  (1)XP计划

    XP计划的重点是确定客户的应用需求,然后设计使用场景(或用例故事,User Story)来满足客户的应用需求。用户也可以在验收测试时使用这些场景。同时用户的深入参与,也可以获得对程序的拥有感和信心。

  (2)XP测试

    XP测试的关键是进行连续的测试。连续测试包括:单元测试和验收测试,但是单元测试占据主要部分。持续的测试也可以增强编程小组对代码库的信心。

  3.2 极限测试

    极限测试主要包括:单元测试和验收测试。

  (2)单元测试

    1.所有代码模块在编码开始前必须设计好单元测试用例;

    2.产品在发布之前必须通过单元测试。

  因此需要自动化的软件测试套件来进行单元测试,这些测试套件可以通过编写测试脚本,执行全部或其中的一部分。此外测试套件可以生成报告,并对程序中出现的缺陷进行分类。

  (2)验收测试

    验收测试是由客户而不是开发人员来执行的。验收测试可以是自动化或非自动化。验收测试也是回归测试的一种形式。

参考文献:

[1]敏捷软件开发宣言.http://agilemanifesto.org/iso/zhchs/manifesto.html 

 

  

猜你喜欢

转载自www.cnblogs.com/chengabc/p/11351334.html