`

敏捷开发流程

阅读更多

敏捷开发流程

需求采集

所有需求都采集到"PivotalTracker":http://www.pivotaltracker.com/projects/10357

实现需求

获取需求

登录"PivotalTracker":http://www.pivotaltracker.com/projects/10357
在Icebox中找到分值(优先级较高)的故事,点击Start按钮

开启后台测试监控

#这句也可放在.bashrc中,就不用自己打了
export AUTOFEATURE=true
script/autospec

定义用户行为(故事)

script/generate feature user name:string
      #执行结果如下,这样就生成了feature文件和相应的step文件
      exists  features/step_definitions
      create  features/manage_users.feature
      create  features/step_definitions/user_steps.rb
#使用vim编辑feature文件
vim features/manage_users.feature

cucumber支持中文描述用户行为,
可通过以下查询中文关键字与英语关键字的对应关系

cat /usr/lib/ruby/gems/1.8/gems/aslakhellesoy-cucumber-0.1.99.22/lib/cucumber/languages.yml | grep -A 13 zh-CN

不得不说一下cucumber的step定义,比如有以下feature部分定义

场景: 用户登录
  假如 我在登录页面
  当 我输入用户名为admin

则step定义可以是这样的

当 /我输入(.*)为(.*)/ do |label, value|
  #以下语句可用于调试,显示页面内容
  #puts response.body
  fill_in(label, :with => value)
end   

页面源码是这样的


<label for='login'>用户名</label>
<input id="login" is_focus="true" name="login" type="text" />




即fill_in方法会自动去找页面中用户名 对应的输入框,并且将值输入,

#单独运行feature中的某个scenario
cucumber --language zh-CN features/manage_calling_events.feature -s 更新来电
#查看test日志,以便跟踪测试过程出现的问题
tail -f log/test.log

编写Rspec单元测试代码

#生成实体
script/generate rspec_model event phone:string timing:datetime
#打开event_spec.rb编写测试代码

#测试的一般内容为:
#测试是否能够正常保存(加感叹号表示出现错误时抛异常)
Event.create!(@valid_attributes)
#测试记录数变化情况
lambda do
  Call.create!(@valid_attributes)
end.should change(Case, :count).by(1)

#测试数据的准备,所有实体都有对应的fixture,文件名如cases.yml
noise:
  content: 楼下太吵了

#在rspec中调用测试记录
#先在describe Call do下一行定义
fixtures :cases 
#之后就可以这样调用了
cases(:noise)

验收测试

安装selenium firefox插件
安装rselenese格式

#rselenese格式安装详细说明
#在firefox菜单中打开[Tools]-[Selenium IDE]
#在Selenium IDE菜单中打开[Options]-[Options...]-[Formats]
#点击左下角的[Add]
#在Name of the format:中输入rsel
#将下载的rselenese.js的内容粘贴到文本框中
#点击右下角的[OK]按钮保存,退出
#每次手动测试时,都打开firefox菜单Tools=>Selenium IDE
#录制测试脚本后,以rsel格式保存至spec/selenium/中的某个子目录(如admin)
#运行以下语句,系统打开浏览器,自动运行测试脚本
mongrel_rails start -e test -d
rake test:acceptance
#注意,如果测试过程需要修改程序代码,则修改后要重启服务器,修改rsel除外
mongrel_rails restart

代码覆盖率

应经常查看测试代码的覆盖情况

#安装rcov
sudo gem install spicycode-rcov --no-ri --no-rdoc
#运行rspec rake
rake spec:rcov
#查看报告
firefox coverage/index.html
#之后就补充测试代码了

常用测试策略

  1. 数据库记录正常保存,则记录数会加1

结对编程

利用ssh,screen,vim实现结对编程

#screen配置文件,以支持256color
wget http://saberma.github.com/file/dot/screenrc -O ~/.screenrc

#安装autossh,避免ssh闲时等待过长自动断开连接
sudo apt-get install autossh
#下载rscreen脚本,调用autossh登录后直接运行screen
wget http://saberma.github.com/file/bin/rscreen -O /usr/local/bin/rscreen
sudo chmod a+x /usr/local/bin/rscreen

#测试一下
screen -xR
vim
#另开一个terminal
rscreen localhost
#会看到两个terminal显示相同vim

其他

在测试用例,单元测试都通过,而手动测试出现错误的时候,一定不能直接修正
应该先补充测试,让测试失败,再修正问题

出现疑难问题时,为便于相互协作,可通过ssh远程连至问题机后直接操作

#问题机安装ssh服务
sudo apt-get install openssh-server
#其他机连接问题机(ip为191,用户名为saberma)
ssh 192.168.1.191 -l saberma
#输入密码

参考资料

Selenium Reference
Selectors

<script type="text/javascript"> var disqus_url = &quot;http://saberma.me/rails/agile/2009/07/17/rails-agile.html&quot;; var disqus_developer = 1; </script>

DISQUS...
分享到:
评论

相关推荐

    软件敏捷开发过程文档

    本资料包中的"软件敏捷开发过程文档"提供了一个全面的框架,帮助开发者理解并实施敏捷开发流程。 1. **需求规格说明**:这是敏捷开发中的关键部分,传统的需求分析在敏捷中转变为更灵活的“用户故事”。用户故事是...

    产品敏捷开发流程说明.pdf

    Scrum敏捷开发流程是一个迭代式开发过程,强调团队协作、快速响应变化和不断改进。 1. 角色及职责 * 产品负责人(PM):主要决定每个迭代要开发的功能,并在每个迭代结束评审交付项是否符合要求。在产品开发流程...

    敏捷开发流程与方法讲义.pptx

    敏捷开发流程与方法讲义.pptx

    Scrum敏捷开发过程.pdf

    Scrum敏捷开发过程.pdf

    敏捷开发流程与方法

    敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。

    敏捷开发流程自己总结.doc

    敏捷开发流程是一个轻量级的软件开发方法,旨在通过增量的、迭代的开发过程来交付有价值的软件。整个开发周期包括多个小的迭代周期,每个小的迭代周期称为一个Sprint,每个Sprint的建议长度为2到4周。在Scrum中,...

    敏捷开发流程总结

    一套个人在敏捷开发中总结的敏捷开发流程规范与流程每一步的输出制品。

    测试驱动的软件开发 TDD (Test-Driven Development)+敏捷开发过程

    敏捷开发过程则是一种更为灵活和迭代的项目管理方法,它提倡快速响应变化,强调客户参与和团队协作。敏捷开发的典型框架包括Scrum、Kanban等。在敏捷开发中,TDD可以作为核心实践之一,有助于提高软件质量,减少缺陷...

    后端开发敏捷开发流程详细说明

    敏捷开发流程详细说明 敏捷开发流程详细说明 敏捷开发流程详细说明

    scrum敏捷开发流程框架

    Scrum敏捷开发流程框架是一种广泛应用于软件开发领域的项目管理框架,尤其在复杂和不确定性的环境中,Scrum展示了其灵活性和高效性。Scrum的核心在于它强调迭代和增量开发,通过频繁的反馈和调整来应对变化,确保...

    敏捷Scrum开发流程培训总结.docx

    敏捷宣言是敏捷开发的核心,它强调人际关系、工作软件、客户合作和适应性的重要性,而非过程、工具、详尽文档和严格计划。这种理念与传统的瀑布模型形成对比,后者倾向于线性的开发流程和固定的计划。 敏捷开发的...

    敏捷开发的艺术

    你将看到敏捷开发过程的全景图,包括为非技术类读者准备的全面指导,以及为开发者和测试人员准备的实用技术实践。, 本书为以下问题提供了明确的答案:, 怎样才能采用敏捷开发?, 我们真的需要结对编程吗?, 汇报应该...

Global site tag (gtag.js) - Google Analytics