肥皂剧测试(Soap Opera Testing)是Hans Buwalda(CTO, LogiGear Corporation)提出的系统级功能测试方法。其特征和方法对于基于情景(Scenario)的探索式测试很有启发性,是探索式测试者值得研究的工具。本文将简介肥皂剧测试的基本方法和特征,详细论述请参考Hans的原文。
测试用例
一个肥皂剧测试的测试用例是一个场景(Scenario),类似于一个小故事或肥皂剧中的一段情节。Hans的文章收录了 Brian Marick(测试专家、敏捷宣言的缔造者之一)编写的一个测试用例,十分有趣。
用例名:租用与事故
客户Marick为了三天的旅途租了一辆汽车。在租用期间,他又延长了一周(以便获得足够的租用积分来得到Preferred等级)。几天后,他打电话报告车丢了,并要求换车。他强调在更换车辆时,他理应享受Preferred等级,即便在租赁期开始时他并不位于该等级。他得到了另一辆车。两天之后,他打电话报告那辆“被偷”的车被找到了。事实证明,实情是他忘记了停车地点。他希望归还其中的一辆车,并结束相关的租赁业务。糟糕的是:发现旧车时,他的新车撞上了旧车。现在,它们都损坏了。
该情节将测试以下内容
- (在租赁期)升级到Preferred等级
- 延长租赁
- 被盗申报
- 车辆更换
- 取消车辆更换
- 取消被盗申报
- 归还受损车辆
这是一个典型的系统级的场景测试用例,用一个较长的流程覆盖了系统的多个功能。通常,测试者会遵循如下步骤来构造肥皂剧测试用例:
- 分析系统,确定系统的功能点,并拟定测试目标。
- 设计一条或多条肥皂剧测试用例,以满足测试目标。
- 如果发现新的测试目标,延展已有的测试用例或增加新测试用例,以确保测试覆盖。
Hans建议测试者分享、阅读、讨论彼此的测试用例,以获得灵感,并完善故事。他认为,拥有独立的测试设计与评审阶段,是肥皂剧测试的一个优点。
四大特征
Hans用 一句话归纳了肥皂剧测试的特征:
Try to write scenarios that are (1) based on real life, (2) exaggerated, and (3) condensed into a limited number of events.
其要点与电视中的肥皂剧如出一辙:源于真实生活、浓缩、夸张,(同时要充满乐趣)。
1. 源于真实生活(based on real life)
软件要能帮助客户解决实际问题,特别是复杂的现实世界中的困难问题。《项目百态》指出:“很多项目没有真正成功,只因为缺少一个人专门负责确保最终的业务流程——从用户的角度看来——尽量顺利地开展。”肥皂剧测试通过聚焦用户的使用场景来伸张用户权益。那些看似极端、却可能真实发生的故事,往往能揭示系统的深层次错误。此外,通过编写肥皂剧测试用例,测试者可以更好地学习并理解被测试系统。当他把测试用例分享给项目涉众(特别是领域专家和开发者)时,整个项目团队都会受益。
2. 夸张(exaggerated)
肥皂剧测试用戏剧性的问题拷问软件,看它如何应对。这与James Whittaker在《探索式软件测试》中提出的“学究测试法”(Intellectual Tour)和“傲慢的美国佬测试法”(Arrogant American Tour)有些相似。测试可以像刻板的老学究,向软件提出难以回答的问题。测试也可以是骄傲的美国佬,总是发出可笑的问题,惹是生非,自以为是(好似测试用例中的Marick)。夸张的情节让肥皂剧好看,夸张的测试用例帮助软件应对现实难题。
3. 浓缩(condensed)
肥皂剧测试同时展开多个复杂的情况,看软件如何处理。软件也许可以分别处理每一项业务,但是当多个业务同时提交且相互牵扯时,软件的设计缺陷可能让用户一筹莫展。肥皂剧往往展开多个支线情节,相互交织,彼此推动,测试情景也可以如此。此外,浓缩的情节可以在较短的时间内测试多个功能,提高了测试效率。
4. 乐趣(fun)
乐趣是高效软件测试的核心因素之一。软件测试是高水平的智力活动,需要测试者全神贯注,以思考力决定成败。枯燥的测试过程会压抑测试者的创造性,使他们的精力被快速耗尽,注意力渐渐被网页和邮件所吸引。而有趣的测试过程会激发测试者的创造力,使他们始终热情高涨、思维活跃。因此,Hans强调编写测试用例一定要充满乐趣(it must be
great fun to write them)。此外,好的测试情节不但容易理解,而且能够激发审阅者、测试者的灵感,让他们发展出更好的支线和细节。
肥皂剧测试与探索式测试
探索式测试强调测试将测试设计与测试执行作为相互支持的活动并行地执行(详见Cem Kaner的定义),但是并不排斥单独的测试设计阶段。Cem Kaner说,测试有两个极端:完全的即兴测试(毫无计划)和绝对的计划测试(编写细致入微的测试计划,且严格遵循),大多数测试者都位于两极之间,有些人更靠近即兴的一端,有些人更靠近计划的一端。注重实效的测试者会根据当前项目的特征,动态地调整自己的位置。
在《探索式软件测试》的第5章,James Whittaker详细讨论了如何结合场景测试与探索式测试。他说:“场景是探索式测试的一个绝佳起点,探索可以给场景加入宝贵的变化。明智的测试人员会把这两种方法结合起来,以更好地覆盖应用程序”。肥皂剧测试用例就像是地图,给出了测试流程和一般性指导。在测试过程中,探索式测试者可以去游历更多的情节、发展更多的支线、探究更多的细节。正如James所说:“地图不是为了找到最短的路径,而是帮我们找到更多的路径”。
剧本固然要紧,但是导演和演员的现场互动和即兴发挥可能更加重要(喜欢王家卫或杜琪峰电影的人对此会有更多认同)。测试用例就是剧本,它展示了舞台;集编剧、导演、演员于一身的测试者应该发挥创造力,去演绎精彩的测试。