从一个实例详解敏捷测试的最佳实践(下)

发表于:2009-3-03 15:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈晓颖    来源:IBM

分享:

  第三部分:敏捷开发中的测试流程

  本部分结合一个软件项目,详细介绍项目流程中的主要测试活动,每个活动的前提条件和目标任务等。

  3.1 介绍项目实例

  项目介绍:根据一家在线 B2B 公司的要求,我们将为其开发一款类似于谷歌的搜索服务。作为 Web Service,该服务可以内嵌于网页中。当用户输入关键词并选择商户的类型和位置后,系统会返回具体商户的列表(参见图 3)。

  图 3. 项目实例图

  

  典型的敏捷开发和测试活动参见下表。它主要由三部分构成,从最初的用户故事设计和发布计划,到几次 Sprint 周期的迭代开发和测试,以及最后的产品发布阶段。每个时间段都有相应的测试活动。通常 Sprint 周期被分成两类:特征周期(Feature Sprint)和发布周期(Release Sprint)。特征周期主要涉及新功能的开发和各类测试。发布周期则会结合计划,确定新版本功能,然后对最新的功能进行测试。

敏捷开发的主要活动测试活动
用户故事设计寻找隐藏的假设
发布计划设计概要的验收测试用例
迭代 Sprint估算验收测试时间
编码和单元测试估算测试框架的搭建
重构详细设计验收测试用例
集成编写验收测试用例
执行验收测试重构验收测试
Sprint 结束执行验收测试
下一个 Sprint 开始执行回归测试
发布发布

  在迭代的 Sprint 周期中,开发部分可以根据传统步骤分成编码和单元测试、重构和集成。需要指出的是,重构和集成是敏捷开发的 Sprint 迭代中不可忽视的任务。如果在新的 Sprint 周期中要对上次的功能加以优化和改进,必然离不开重构和集成。

  在每个 Sprint 周期结束前,测试团队将提交针对该 Sprint 周期或者上个 Sprint 周期中已完成的功能的验收测试(在实际项目中,测试团队的进度通常会晚于开发团队)。这样一来,开发团队可以运行验收测试来验证所开发的功能目前是否符合预期。当然,这个预期也是在迭代中不断变化和完善的。

  当产品的所有功能得以实现,测试工作基本结束后,就进入了发布周期。此时,测试团队的任务相对较多。

  以上,我们概述了敏捷开发的主要活动。下面我们将对各阶段相应的测试活动作详细的介绍和分析。首先是用户故事设计和发布阶段。

  3.2 用户故事设计和发布计划阶段

  在用户故事和发布计划阶段,项目经理和产品经理会根据客户的需求,制定概要的产品发布日程计划。此时,测试人员可以和开发人员一起学习新的功能,了解客户的需求。其中,有两个主要活动:寻找隐藏的假设和设计概要的验收测试用例。

  3.2.1 寻找隐藏的假设

  正如前文所述,开发人员通常关注一些重要的系统功能而忽视细节。此外,敏捷开发倡导简单的实现方案,每个开发 Sprint 周期不可能将功能完美得实现;相反,每个 Sprint 都会增量得开发一些功能。所以,测试人员在最初就需要从各种角度来寻找系统需求,探索隐藏的假设。

  项目实例:

  1. 从在线 B2B 公司角度思考

  Q:这个搜索框对公司的业务有什么价值?

  A:搜索框可以为用户方便得提供商户的目录信息。如果越来越多用户使用这个搜索框,可以增加我们网站的访问量。

  2. 从用户角度思考

  Q:作为查询信息、寻找商业合作伙伴的网站用户,搜索框对我有什么好处?

  A:坏处:找到一家商户的地址,过去才发现已经关门歇业

  好处:查找商户很简单,只要轻点鼠标

  不快:有时候在寻找一类商户,却记不清楚具体名字

  3. 从程序员角度思考

  Q:一个搜索框的最简单实现方法是什么?

  A:一个有 text input 和 search button 组成的 form;后台通过 server 程序将符合类型和地址的商户名从数据库中取出,返回给用户;每个返回项包括商户的名称、地址和评价意见。

  4. 寻找这些观点中的问题

  Q:搜索框如何在用户忘记具体名字的时候提醒用户?

  A:在第一版本中实现比较困难。可以让用户输入至少一个类型来提高模糊查找的效果。

  5. 最后寻找到隐藏的假设

  以上的思考让测试人员对系统的隐含假设更加清晰:

  首先,系统应该能够在高峰时候处理 200 条搜索请求和 1000 个鼠标点击事件。

  其次,用户可以在已经查找到的内容中继续查找

  最后,系统提供一个商户类别清单;如果用户选择商户类别而忘记具体名字,系统提供模糊查询。

  在敏捷开发中,这些假设可以作为用户故事记录下来,从而指导未来系统的开发和测试。

  3.2.2 设计概要的验收测试用例

  定义完一系列用户故事后,测试人员就可以着手设计概要的验收测试用例。正如我们在前文论述,不同于单元测试,验收测试检查系统是否满足客户的预期,也就是用户故事是否能够实现。于是,测试人员可以根据每条用户故事来扩展,寻找其中的“动作”,然后为每条“动作”制定正例和反例。

  项目实例:

动作数据期待的结果
搜索一组能成功搜索到的(类别,位置)数据在该类别和位置条件下的一组商户信息
搜索一组不能成功搜索到的(类别,位置)数据空列表

  3.3 迭代 Sprint 阶段

  当一个 Sprint 周期正式开始时,项目经理将制定该周期的具体开发和测试任务。在定期的 Sprint 计划会议(Planning Meeting)上,每位团队成员都要提供自己在未来一个 Sprint 周期中的休假和培训计划。另外,每个团队可以根据各自团队成员的能力和工作经验,适当设定一个工作负载值(Load Factor)。比如,我们团队的工作负载值为 75%,也就是说每个人平均每天工作 6 小时(以 8 小时计算)。接着,大家就可以开始分配任务。

  当开发团队开始编码和单元测试时,测试人员的工作重点包括:估算验收测试的时间、估算测试框架的搭建、详细设计验收测试和编写验收测试代码。第两个主要活动一般在项目初期的 Sprint 周期中完成。其他的三个主要活动将在接下来的多个 Sprint 周期中视情况迭代进行。下面我们将具体介绍每个主要活动。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号