禅道的基本使用

2.禅道基本使用

2.1.禅道使用的基本流程

禅道管理软件中,核心的三种角色:产品经理、研发团队和测试团队,这三者之间通过需求进行协作,实现了研发管理中的三权分立。其中产品经理整理需求,研发团队实现任务,测试团队则保障质量,其三者的关系如下图:

基本流程如下:

  1. 产品经理创建产品
  2. 产品经理创建需求
  3. 项目经理创建项目
  4. 项目经理确定项目要做的需求
  5. 项目经理分解任务,指派到人。
  6. 测试人员测试,提交bug。

2.2.敏捷开发及scrum简介

在正式讲述禅道的基本使用流程之前,先让我们来了解下敏捷开发和scrum。因为禅道的设计理念基础是基于scrum的,因此了解scrum的基本概念有助于您了解和使用禅道。

2.2.1. 敏捷开发

我们比较熟知的软件项目管理方法是瀑布。其基本流程是需求-> 设计->开发->测试。基本假设只要把每一个环节都做正确,那么终得到的结果也是正确的。瀑布开发有非常成功的案例,比如微软。但从总体来讲,瀑布项目失败率比较高。国外的软件先行者们针对瀑布开发中暴露出来的问题进行了一系列的探索、思考和总结,终提出了Agile的概念,中文翻译为敏捷开发。敏捷开发有很多种方式,其中scrum是比较流行的一种。

2.2.2. scrum

1. scrum里面的角色

scrum由product owner(产品经理)、scrum master和team(研发团队)组成。

  • 其中product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
  • scrum master 负责召开各种会议,协调项目,为研发团队服务。
  • 研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。 

2. 迭代开发

与瀑布不同,scrum将产品的开发分解为若干个小sprint(迭代),其周期从1周到4周不等,但不会超过4周。参与的团队成员一般是5到9人。每期迭代要完成的user story是固定的。每次迭代会产生一定的交付。

3. scrum的基本流程

scrum的基本流程如上图所示:

  • 产品负责人负责整理user story,形成左侧的product backlog。
  • 发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
  • 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,终每个任务都有明确的负责人,并完成工时的初估计。
  • 每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
  • 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
  • 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。

上面所讲的就是scrum的基本流程,后面我们会陆续在相关地方再做进一步的阐述。禅道的基本框架是基于scrum的,因此您对scrum的流程有了基本了解之后,再来看禅道就会比较容易了解。

2.3.禅道和scrum的对应关系

简介:禅道在设计的时候,基础框架是基于scrum的,同时又补充完善了测试,文档,发布,计划等功能。肯定有同学会问,是不是我使用禅道,就必须是用敏捷。答案当然是否定的,您完全可以使用禅道来进行瀑布式管理,也可以使用的很好。正式基于这一点考虑,我们在设计禅道的时候,都是采用了比较中性的概念,而不是scrum里面特有的概念。

禅道在设计的时候,基础框架是基于scrum的,同时又补充完善了测试,文档,发布,计划等功能。肯定有同学会问,是不是我使用禅道,就必须是用敏捷。答案当然是否定的,您完全可以使用禅道来进行瀑布式管理,也可以使用的很好。正式基于这一点考虑,我们在设计禅道的时候,都是采用了比较中性的概念,而不是scrum里面特有的概念。下面让我们来看下禅道和scrum的对应关系。

2.3.1. 概念的对应

scrum

 禅道

 备注

 product

 产品

禅道里面使用了产品的概念。

 user story

 需求

其实标准的翻译应该为用户故事,不过禅道还是采用了比较中性的概念。

 sprint

 项目

很多朋友对产品和项目的概念不是很清楚,其实有了这个对应关系就很容易理解了。

 task

 任务

 这两个概念是一致的。

 team

 团队

 

 burndown chart

 燃尽图

 

 潜在交付物

 发布

 

 

2.3.2. 角色的对应

scrum

 禅道

 备注

product owner

 产品经理

 禅道使用的还是比较中性的产品经理的概念。

 scrum master

 项目经理

 

 team

 团队成员

 

 

2.3.3. 禅道新增的概念

除了scrum基本的概念外,禅道还补充完善了下面概念,以达到对软件生命周期的完整覆盖。

  • 产品发布计划
  • 产品路线图
  • build
  • bug
  • 测试用例
  • 测试任务
  • 测试结果
  • 文档
  • todo

2.4.禅道的新手教程

禅道8.2beta版本开始,添加了禅道新手教程,以任务的形式教大家禅道的最简的使用操作。

首次登录使用禅道时,会提示是否进入禅道新手教程页面。

点击确定后,页面会跳转到新手教程页面。

新手教程包含8个任务:创建帐号、创建产品、创建需求、创建项目、管理团队、关联需求、创建任务、分解任务、提Bug。

禅道页面右侧会显示具体任务,左侧的禅道页面有当前任务的操作提示。

按照教程流程具体操作即可,需要注意的是新手教程里8个任务填写的数据系统是不会保存的。

需要中途退出新手教程,点击右上角的“退出教程”按钮。

新手教程和禅道使用手册都已内置到禅道页面右上角的帮助栏里。

想重新打开新手教程或者使用期间有不清楚的地方,可以点击“帮助”获取。

2.5.创建第一个产品

禅道的设计理念是围绕产品展开的,因此我们首先要做的就是创建一个产品。

 

  • 产品名称和产品代码是必填项。其中产品代号可以理解为团队内部约定俗称的一个称呼,比如我们禅道的代号是zentao,需要是英文字母和数字的组合。
  • 产品负责人:负责整理需求,对需求进行解释负责,制定发布计划,验收需求。
  • 测试负责人:可以为某一个产品指定测试负责人,这样当创建bug,而不知道由谁进行处理的时候,该产品的测试负责人会成为默认的负责人。
  • 发布负责人:由这个角色负责创建发布。
  • 访问控制:可以设置产品的访问权限,其中默认设置只要有产品视图的访问权限就可以访问。如果这个产品是私有产品,可以将其设置为私有项目,那么就只有项目团队成员才可以访问。或者还可以设置白名单,指定某些分组里面的用户可以访问该产品。

2.6.添加第一个需求

我们产品经理可能都习惯了写需求设计文档,或者规格说明书,通过一个非常完整的word文档将某一个产品的需求都定义出来。但在禅道里面,我们提倡按照功能点的方式来写需求。简单来讲,就是将原来需求设计文档中的每一个功能点摘出来,录在禅道里面,作为一个个独立的功能点。如果按照scrum标准走的话,我们可以称之为用户故事(user story)。所谓用户故事,就是来描述一件事情,作为什么用户,希望如何,这样做的目的或者价值何在,这样有用户角色,有行为,也有目的和价值所在,非常方便与团队成员进行沟通。

创建需求的步骤如下:

  1. 使用产品经理角色登录系统。
  2. 进入产品视图。
  3. 在页面右侧,有“新增需求”菜单,点击菜单,出现新增需求的页

  • 需求的标题是必填项。
  • 所属计划和模块,可以暂时保留为空。
  • 需求审核那块,我们选上不需要审核,这样新创建的需求状态就是激活的。只有激活状态的需求才能关联到项目中,进行开发。
  • 需求可以设置抄送给字段,这样需求的变化都可以通过email的形式抄送给相关人员。
  • 可以设置关键词,这样可以比较方便的通过关键词进行检索。

2.7.开始第一个项目

产品经理按照我们前面的操作创建需求之后,下面该项目经理上场了。下面我们一起来看下如何在禅道中开始一个项目

2.7.1. 创建项目

1. 进入项目视图,点击右侧的”新增项目“链接。

2. 出现项目添加的页面

在这个页面设置项目名称、代号、起止时间、可用工作日、团队名称、项目目标和项目描述等字段。其中关联产品是可以为空的。

  • 和我们前面讲述的简使用流程有一点区别就是在添加项目的时候,需要关联下产品。可以多选。
  • 项目可以控制它的访问权限,分为默认、私有和自定义白名单三种。

2.7.2. 设置团队

1. 点击保存按钮,会提示项目创建成功,然后可以选择设置团队。

 2. 或者从项目视图中的团队菜单,也可以进行项目的团队管理。

 在维护项目团队的时候,需要选择都是哪些用户可以参与到这个项目中,同时需要设置这个用户在本项目中的角色(角色可以随便设置,比如风清扬,冬瓜一号等)。可用工作日和可用工时每天需要仔细设置。通常来讲,一个人不可能每天8小时投入,也不可能一星期七天连续投入。

3. 设置完毕之后,系统会自动计算这个项目总得可用工时。

 

2.8.确定项目要完成的需求列表

简介:迭代开发区别于瀑布式开发就是它将众多的需求分成若干个迭代来完成,每个迭代只完成当下优先级高的那部分需求。禅道软件中项目关联需求的过程,就是对需求进行排序筛选的过程。

迭代开发区别于瀑布式开发就是它将众多的需求分成若干个迭代来完成,每个迭代只完成当下优先级高的那部分需求。禅道软件中项目关联需求的过程,就是对需求进行排序筛选的过程。下面我们来看下如何关联需求。

2.8.1. 关联产品

如果在创建项目的时候,已经关联过产品,可以忽略这个步骤。

1.以项目经理身份登录。

2.进入项目视图。

3.点击“关联产品”按钮。然后点选该项目相关的产品即可。

2.8.2. 关联需求

1.在关联需求的时候,可以按照优先级进行排序。

2.关联的需求状态必须是激活的(评审通过,不能是草稿)

2.9.为需求分解任务

需求确定之后,项目中几个关键的因素都有了:周期确定、资源确定、需求确定。下面我们要做的事情就是为每一个需求做wbs任务分解,生成完成这个需求的所有的任务。

note:是完成需求的所有任务,这里面包括但不限于设计,开发,测试等。

2.9.1. 访问项目的需求列表页面

  •  在项目的需求列表页面,可以很方便地对某一个需求进行任务分解。
  • 同时还可以查看这个需求已经分解的任务数。

2.9.2. 分解任务

  • 这时候创建任务的时候,就可以选择需求了。
  • 我们同时提供了需求查看的链接。
  • 如果需求和任务的标题是一样的,可以通过”同需求“按钮快捷的复制需求的标题。

2.9.3. 任务分解的几个注意事项

  1. 需要将所有的任务都分解出来。这里面包括设计,开发,测试,美工,甚至包括购买机器,部署测试环境等等。
  2. 任务分解的粒度越小越好,比如几个小时就可以完成。
  3. 如果一个任务需要多个人负责,继续考虑将其拆分。
  4. 事务型的事务可以批量指派,比如需要让团队里面的每一个人都写个项目总结,可以选择类型是事务,然后批量指派给团队里面的所有人员。
  5. 任务的类型请仔细设置,这个会涉及到需求研发阶段的自动计算。后面我们会有讲解。
  6. 任务的分配好是自由领取,这样可以大程度上调动大家的积极性。

2.10.提交bug

项目进展到后期主要的工作就是测试。测试人员和开发通过bug进行互动,保证产品的质量。

2.10.1.    bug的基本处理流程

禅道里面缺陷处理的基本流程是:测试提交bug => 开发解决bug => 测试验证bug => 测试关闭bug。

如果bug验证没有通过,可以激活:测试提交bug => 开发解决bug => 测试验证bug => 测试激活bug => 开发解决bug => 测试验证 => 测试关闭。

还有一个流程就是bug关闭之后,又发生了。测试提交bug => 开发解决bug => 测试验证bug => 测试关闭bug => 测试激活bug => 开发解决bug => 测试验证 => 测试关闭。

2.10.2.    提出bug

  • 在创建bug的时候,必填的字段是影响版本,bug标题,重现步骤这些基本的信息。
  • 所属项目,相关产品,需求可以忽略。
  • 创建bug的时候,可以直接指派给某一个人员去处理。如果不清楚的话,可以保留为空。

2.10.3.    解决bug

当一个bug指派给某一位研发人员之后,他可以来验证解决这个bug。

1. 通过各种标签和检索条件找到需要自己处理的bug

在对bug进行出来之前,需要先要找到需要自己处理的bug。禅道提供了各种各样的检索方式,比如指派给我,可以列出所有需要我处理的bug。

 

2. 解决bug

研发人员解决bug,选择解决方案,一般来讲有效的解决bug方案是”已解决“。详细的解决方案,我们在后续的文章中会详细加以讲述。

2.10.4.    关闭bug

当研发人员解决了bug之后,bug会重新指派到bug的创建者头上。这时候测试人员可以来验证这个bug是否已经修复。如果验证通过,则可以关闭该bug。

 

2.11.维护联系人

禅道新版本把原组织--用户里的维护列表功能放到了我的地盘页面。

在联系人创建的列表,可以在需求、任务、bug抄送时,直接选择,不需要挨个的去选择要抄送的用户。这样抄送的用户,可以收到提醒邮件。当然,前提是你得成功的配置了发信。

下面介绍一下怎么创建联系人列表。选择用户时,会罗列出所有的用户名。用户添加在组织--用户里操作。需要添加到联系人列表的用户,直接点击一下即可。

 

已创建的联系人列表,可以增加和删除列表里的用户,操作后保存即可。

 

创建好联系人列表后,在需求、任务、bug页面的抄送给项后,会显示联系人按钮,点击选择所要抄送的联系人列表名称。抄送给项就会自动显示该联系人列表里用户。以下截图以任务的抄送给为例。

 

2.12.禅道的自定义功能

禅道8.2beta版本开始,增强了自定义功能。用户可以根据自己的使用需要个性化设置禅道页面所显示的功能模块和字段。可自定义的项如下:

  • 导航菜单的自定义
  • 我的地盘、产品主页、项目主页、测试主页的自定义
  • 需求、任务、bug、用例列表页的简单表格与高级表格的切换
  • 提需求、建任务、提bug、建用例页面的自定义
  • 需求、任务、bug、用例导出数据时,导出字段的自定义
  • 后台的自定义
  • 模块名是否显示的自定义
  • 水晶报表自定义查询条件

下面具体介绍禅道的自定义功能。

2.12.1.    导航菜单的自定义

可以隐藏掉导航菜单和二级、三级导航菜单。

1、 把鼠标放在导航栏任意菜单上,后面就会显示 自定义导航 的设置图标。

 

2、 点击图标即可进入自定义导航设置页面。

  • 需要隐藏的导航菜单和二级导航菜单,直接点击即可。点击后,隐藏的导航和二级导航被虚线框起来。需要重新显示,直接再点击一下即可。
  • 直接鼠标拖拽可以更改导航菜单显示的顺序。
  • 还可以点击 恢复默认 按钮,还原为导航菜单的默认显示。

 

3、 产品需求、项目任务、测试bug、测试用例可以自定义三级菜单。

3.1  以产品需求页面为例,保存了搜索结果,并且勾选了 显示在菜单栏 项。

3.2  本次的搜索查询结果就会显示在产品需求的菜单栏里。

3.3  如果菜单栏不再想显示该搜索查询结果,可以进入自定义导航页面进行隐藏。

3.4  如果是想删除掉这个搜索查询结果,可以到搜索页面右侧 我的查询 那选择需要删除掉的搜索查询名称,点击旁边的删除按钮即可。

 

2.12.2.    我的地盘、产品主页、项目主页、测试主页的自定义

1、 新版本禅道,在我的地盘首页添加了流程图区块。如果想更改首页显示的区块,可以点击区块右上角的图标对该区块进行编辑和删除等操作。

 

2、 点击编辑后,可以选择其他模块,修改区块名称以及外观设计。

 

3、 我的地盘首页右上角的蓝底白色加号图标,点击可以添加想显示的区块。

还可以根据自己的工作需要对添加的区块进行设置。

 

4、下面以产品主页的自定义来举例说明一下产品主页的自定义。项目主页、测试主页的自定义可以直接参考产品主页的设置。

  • 新版本禅道新增了产品主页、项目主页和测试主页。
  • 主页显示的都是相关的区块。产品主页默认显示的是未关闭的产品和指派给我的需求区块。
  • 同样产品主页的右上角有蓝底白色加号的添加区块按钮,每个区块的右上角都有编辑操作的按钮。点击就可以进行编辑和添加区块的操作。

  • 产品的需求页面右上角有 设为模块首页 提示。点击设置后,产品主页就直接显示需求列表页。
  • 同理项目的任务列表页和测试的bug列表页都可以设置为该模块的首页。

 

2.12.3.    需求、任务、bug、用例列表页的简单表格与高级表格的切换

需求、任务、bug、用例列表页切换到高级表格时,可以自定义显示的列字段。

下面以需求列表为例,介绍简单表格和高级表格的切换和自定义列字段。任务、bug、用例列表页的简单表格与高级表格的切换和自定义列参考需求列表页的操作。

1、 需求列表页默认的是简单表格显示,右上角有切换按钮,点击 切换到高级表格 即可。

2、 成功切换到高级表格显示后,再点击一下切换按钮,会显示 自定义列 。

3、 点击就可以进入自定义列的页面,除了必选项不能自定义外,其他可以自定义的列字段右侧都有显示和隐藏按钮。还可以自由拖拽实现排序的更改。

 

2.12.4.    提需求、建任务、提bug、建用例页面的自定义

1、 提需求页面的自定义。

点击右上角的设置按钮,进入自定义页面,不需要显示的直接不勾选即可。

2、 建任务页面的自定义。

3、 提bug页面的自定义。

4、 bug的重现步骤也可以自定义。

自定义好具体步骤,点击保存模板,填写好模板名称,勾选公共的话,所有用户都可以使用该模板。

自定义保存成功的模板,点击 应用模板 时,会显示出来,需要使用哪个模板,直接点击一下即可。

5、 建用例页面的自定义。

6、 需求、任务、bug、用例的批量添加页面和批量编辑页面也可以进行自定义设置。

  • 需求批量添加页面的自定义字段设置。

  • 需求批量编辑页面的自定义字段设置。

 

2.12.5.    需求、任务、bug、用例导出字段的自定义

禅道最新版本,需求、任务、bug、用例导出数据时,导出的字段可以自定义。

下面以需求导出数据时,自定义导出的字段为例介绍导出数据时的自定义功能。任务、bug、用例的导出字段自定义直接参考需求的即可。

1、首先点击需求列表页面右上角的 导出,选择导出数据。

2、进入导出数据页面。

  • 点击最右侧的 设置 按钮,会罗列出需求列表所有的字段。不需要的字段直接删除掉即可。
  • 设置好后,填写好模版的名称,点击保存即可。
  • 如果勾选了公共的话,那么你自定义的需求导出模块大家都可以使用。如果没有勾选公共,该导出模板只能自己使用。
  • 如果已不需要已设置好的导出模板,直接点击“删除”按钮即可。

3、设置保存成功的模板,会直接显示在模板框里,然后点击 导出 即可。

  • 点击字段框的空白处,可以通过下拉来查看到所有的字段。
  • 灰色显示的字段表示已选择,黑色显示的字段是已被删除的字段。
  • 右侧还有搜索按钮,可搜索字段名。

4、再次导出需求数据时,点击模板处的下拉按钮,会显示之前已设置保存成功的模板。

 

2.12.6.    后台的自定义

  1. 以上的5个自定义功能,是不需要分配权限的。
  2. 而后台的自定义功能,需要到组织→权限里分配后台管理和自定义的权限。有权限才可以进行自定义配置的操作。
  3. 后台可以对需求、任务、bug、用例、版本、待办、用户、流程相关项进行自定义。如果右侧有显示蓝色加号的,可以自定义添加值。
  4. 自定义配置后,点击保存即可。需要恢复默认设置直接点击 恢复默认 按钮即可。

 

2.12.7.    模块名是否显示的自定义

最新版本禅道,新增了列表页显示模块名的功能。(如果添加模块时有填写模块简称,那么就显示模块名简称。)

1、产品需求列表页面左侧的模块显示栏下有 列表页是否显示模块名 的编辑按钮。

 2、禅道里默认列表页不显示模块名,点击进入选择框,选择只显示一级模块

 3、保存成功后,需求的列表页的显示如下。

需求名称前显示有该需求所属模块的名称。如果该需求不属于任何模块,就不显示模块名。

 4、还可以选择 只显示最后一级模块,点击保存。

 5、设置成功后,在需求列表页面需求的名称前即只显示最后一级模块的名称。

 

2.13.导入excel、csv参考文档

2.13.1.  导入excel

导入excel是专业版功能,可以导入“需求”、“任务”、“Bug”、“用例”,对他们添加或修改。

excel文件由系统导出的。可以导出xls格式或xlsx格式。有两种导出方式:

  • 导出→导出模板,导出模板文件,在文件中填写数据,保存。
  • 导出→导出数据,导出已有数据的excel文件。在此文件进行修改或添加数据,保存。

 

excelcsv的区别:

1、excel含有样式,相较csv好看。

2、excel中像“模块”、“优先级”等字段含有下拉菜单,方便数据填写。

 

在填写数据时需要注意问题:

1. 必填字段必须填写,否则导入时会忽略这条记录。

  • 需求:“需求名称”
  • 任务:“任务类型”、“任务名称”
  • Bug: “影响版本”、“Bug标题”
  • l  用例:“用例类型”、“用例标题”

2. 用例步骤的填写规则:

填写“步骤”和“预期”的时候,每步都要换行,前面是序号,与后面内容用"."、“、”、“ ”分割。例如:

1. 测试步骤第一步         1. 测试预期第一步

2. 测试步骤第二步         2.

3. 测试步骤第三步         3. 测试预期第三步

如果没有前面的步骤,则后面的预期无效。

如果步骤中间没有预期,预期则要留空。

这样系统就可以获取用例的步骤以及相对应的预期

3. 日期填写格式:yyyy-mm-dd

例:2014-03-01,单元格格式为“文本”格式。

4. 导入可修改内容:

  • 需求:需求名称、所属模块、所属计划、来源、优先级、预计工时、关键词、需求描述、验收标准
  • 任务:任务名称、所属模块、相关需求、优先级、任务类型、初预计、预计开始、截止日期、任务描述
  • Bug: Bug标题、所属模块、所属项目、相关需求、优先级、关键词、影响版本、重现步骤、类型/严重程度、系统/浏览器
  • 用例:用例标题、所属模块、相关需求、优先级、用例类型、用例状态、执行频率、适用阶段、前置条件、步骤、预期

如果导入的是模板文件,导入的记录全是新增的。

如果不是使用的模板文件,而且条目的编号有值,那么该条目是编辑相应编号的记录。如果没有编号,则是新增一条记录。

如下图:

 

2.13.2.    导入csv

导入csv是开源版功能,目前只实现用例的导入。可以用来新增或修改用例。

csv文件是经过系统导出的。有两种方式:

  • 测试→用例→导出→导出模板,导出模板文件,在文件中填写数据,保存。
  • 测试→用例→导出→导出数据,导出已有数据的csv文件。在此文件进行修改或新增数据,保存。

 

在填写数据时需要注意几个问题:

1. 像“模块”、“相关需求”这些系统数据,要在后面加(#ID),此ID表示系统里的ID号。以便导入的时候获取该条目的ID。

     像“优先级”、“用例类型”这些固定的数据,直接填写就可以了。

     如果“适用阶段”有多个,则要换行写。

2. 填写“步骤”和“预期”的时候,每步都要换行,前面是序号,与后面内容用"."、“、”、“ ”分割。例如:

1. 测试步骤第一步         1. 测试预期第一步

2. 测试步骤第二步         2.

3. 测试步骤第三步         3. 测试预期第三步

如果没有前面的步骤,则后面的预期无效。

如果步骤中间没有预期,预期则要留空。

这样系统就可以获取用例的步骤以及相对应的预期

3. 导入的内容包括:用例标题、所属模块、相关需求、优先级、用例类型、用例状态、执行频率、适用阶段、前置条件、步骤、预期。

4. “用例类型”、“用例标题”字段是必填内容,如果没有填写系统会忽略这条记录。

请参考下图:

用例导入的时候要选择正确的编码,否则会有错误提示。

如果不是使用的模板文件,如果条目的用例编号有值,那么该条目是编辑相应编号的用例。如果没有用例编号,这是新增一条用例。

上图示例是修改编号为215的用例。下图示例是增加一条用例。

posted @ 2017-08-09 19:08  如梦幽香  阅读(3979)  评论(0编辑  收藏  举报