zoukankan      html  css  js  c++  java
  • 软件测试的艺术(读书笔记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 

     

      

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/chengabc/p/11351334.html
Copyright © 2011-2022 走看看