学习札记——关于测试学习阶段性总结(Rspec学习一)

  

最近整个项目组都在进行测试学习,接触到几个对我来说很陌生又十分先进概念,靠着在网上收罗的资料,仅是摸到点皮毛,
  ,

  在软件工程中,BDD是一种基于测试驱动开发测试驱动开发(TDD)的软件开发过程和方法。   BDD作为一种设计方法,可以有效的改善设计,并在系统的演化过程中为团队指明前进方向。
     测试驱动开发,英文全称测试驱动开发,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。
  
  
  在基于BDD开发模式的项目中,以Rails项目开发为例,有如下步骤:
  1、对一个项目立项后,首先进行故事分解。要对系统故事分解,要求我们做到基本的需求分析和对系统的概要设计。
  2、专注于一个用户故事,对其进行详细定义,这一阶段也就是我们编写RSpec测试用例的阶段。通过分析用户故事和用户场景的方式对系统的行为进行详细的定义,把定义写在我们的测试用例中。在这一阶段,包括了我们的传统的软件工程周期中的需求分析和详细设计阶段,需求分析体现在分析系统的行为上,详细设计体现在用例编写时需要为系统实现定义大量的接口,这一点下边细讲。
  3,对于该用户故事,实现视图层:
  3.1、运行RSpec测试用例,结果失败;
  3.2,编码实现该视图;
  3.3,重新RSpec运行测试用例,通过;
  3.4,重构代码;
  4,对于该用户故事,实现控制器层,重复3.1 - -3.4的过程。
  5,对于该用户故事,实现模型层,重复3.1 - -3.4的过程。
  6、重构三个层次的代码,完成该用户故事。
  7,重复3 - 6的过程,完成系统其他用户故事。
  8日系统集成,集成测试,确认测试,测试测试等。
  9日,系统交付及后期维护。
  这个过程图示如下:
  ,   

学习札记——关于测试学习阶段性总结(Rspec学习一)

  
  
  
  这里强调了按照视图,控制器到模型的顺序来做开发,这是BDD鼓励从外向里的方式来开发程序,先实现与用户直接交互的视图层,然后是核心业务层控制器,最后是与数据库交互层的模型,BDD不但是我们开发程序中运用的一种技术,同时也可以尽早的将系统的用户接口体现出来,体现系统的商业价值,对于开发,用户与系统交互时的行为是系统的核心业务,先将用户接口开发出来,有助于我们专注于实现核心业务,而不浪费精力于其他方面。
  
  
  
  如果是已有项目直接在gemsfile里面配置即可如下如(由于笔者使用的jruby版本比较低)   ,   组:发展:测试做
  ,宝石“database_cleaner"
  ,宝石“rspec-rails"
  ,宝石“cucumber-rails"
  ,宝石“webrat"
  ,宝石“rspec-mocks"
  ,宝石“spork" ~祝辞,1.0 rc
  ,宝石“factory_girl", 2.6.4 ~祝辞的
  ,宝石“factory_girl_rails"”~祝辞1.7.0”
  
结束   
  
  主要配置插件有
  rspec-rails
  cucumber-rails
  factory_girl_rails(模拟大量测试数据)
  在这里配置好后可直接包更新自动安装相关插件
  当然也可以用gem安装XXXXX方式安装。
  
  最后形成的目录结构如图
  ,   

学习札记——关于测试学习阶段性总结(Rspec学习一)

  

,

  

小技巧如果使用时rubymine这个IDE,你可以利用他的工具工具选项里面束操作,或是快速安装宝石来安装和维护插件

  
  (主要运用了存根的打桩技术)
  
  代码如下
  
  之前(:每个)
  @metadatum=mock_model (Metadatum)
  @metadatum.stub (subscribe_to_the_number_of) .and_return (“1“)
  @metadatum.stub(拯救).and_return(真正的)
  
结束   
  它“指数不应nil"做
  获得“index"
  响应。should_not be_nil
  分配(元数据)。should_not be_nil
  
结束   首先我们可以看到一个一般Rspec测试主要用到的格式

学习札记——关于测试学习阶段性总结(Rspec学习一)