需求分析

项目实战《付费课程MVP系统》

什么是用户故事?

用户故事是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素:

  1. 角色:谁要使用这个功能。
  2. 活动:需要完成什么样的功能。
  3. 商业价值:为什么需要这个功能,这个功能带来什么样的价值。

用户故事通常按照如下的格式来表达:

  • 英文:As a , I want to , so that .
  • 中文:作为一个<角色>, 我想要<活动>, 以便于<商业价值>
  • 举例:作为一个“网站管理员”,我想要“统计每天有多少人访问了我的网站”,以便于“我的赞助商了解我的网站会给他们带来什么收益。”

需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述

场景

cucumber里的步骤定义

  1. Given /^当前是(.*)/ do |action|
  2. @action= action
  3. end
  4. When /^输入是(.*)/ do |subject|
  5. @subject = subject
  6. end
  7. Then /^能看到(.*)/ do |greeting|
  8. if greeting != "#{@action}#{@subject}"
  9. raise "期望看到<" + greeting + ">,实际看到<" + "#{@action}#{@subject}>"
  10. end
  11. end

场景:

  1. 假如当前是中文
  2. 当输入是测试
  3. 那么能看到中文测试

场景1:

  1. 假如当前是入库
  2. 当输入是选择某个货品
  3. 那么能完成入库

场景2:

  1. 假如当前是入库
  2. 当输入是无法选择任何产品
  3. 那么能跳转到新建产品界面

精简后的需求文档

我们探索的办法

  • 使用用户故事描述,需求
  • 使用场景来验证并测试

严格执行agile很难,没有scrum master搞不定

具体需求

先实现一个MVP(最小可用原型)

查看所有课程

  • 作为一个<普通用户>,
  • 我想要<查看所有课程>,
  • 以便于<我从所有课程中,找到自己想听的课程>

场景1

  1. 假如当前没有课程
  2. 当输入是点击了查看所有课程连接
  3. 那么能看到错误提示页面,提示请稍后再来

查看课程详情

  • 作为一个<普通用户>,
  • 我想要<查看课程详情>,
  • 以便于<我可以了解课程具体内容,和讲师是谁,什么时间开讲,是否需要付费参加>

参加免费课程

  • 作为一个<普通用户>,
  • 我想要<参加免费课程>,
  • 以便于<我可以不用花钱,就可以听课>

参加付费课程

  • 作为一个<普通用户>,
  • 我想要<参加付费课程>,
  • 以便于<我可以听更好的课>

场景1:支付成功

  1. 假如当前支付成功
  2. 当输入是钱数>0,并且微信支付成功
  3. 那么能看到我的课程里的课程支付信息

场景2:支付失败

  1. 假如当前支付失败
  2. 当输入钱数《=0,或微信支付失败
  3. 那么能看到错误提示页面,提示请返回重试

查看我的个人信息

  • 作为一个<普通用户>,
  • 我想要<查看我的个人信息>,
  • 以便于<我能看到我的个人信息、课程等>

使用微信用户登录

  • 作为一个<普通用户>,
  • 我想要<使用微信用户登录>,
  • 以便于<我能不必输入任何信息,就能登录,使用该系统功能>

查看我的课程

  • 作为一个<普通用户>,
  • 我想要<查看我的课程>,
  • 以便于<我能找到那些我参加的课程>

分享课程详情

  • 作为一个<主办方>,
  • 我想要<分享课程详情>,
  • 以便于<我能推广课程,使更多人知道课程,并参与>