据Matt Heusser说,Gerald Ford国际机场的停车场计费器像个老爷车。于是他给全世界的测试人员提出了一个挑战:找出这个停车场计费器的缺陷。通过twitter和博客,许多人去测试这一应用程序。在往下看之前,建议你先花几分钟来看看自己能找到多少缺陷。
敏捷测试教练Selena Delesie从日期和时间这几个字段的边界值入手。
“只玩了几分钟,我一天内短时间停车的账单就达到了6,750,000.00美元的。……
下面看到的是,通过在“离开时间”这一字段进一步尝试简单的超限设置,我的费用竟攀升至2,500,000,000,000,041.00美元。值得注意的是,这只是我一天内的停车?不可思议。”
一名在Philippines工作的软件测试人员KC注意到,如果你尝试用页面的默认值做计算,在错误被覆盖之前,会有一个含php错误信息的页面跳出来。其它测试参与者们则发现,这个错误在每次页面加载时都会出现,而页面仅仅忽略了此异常。
形形色色的人都来玩这个程序,他们都想看看最高能获得多少停车费。比较好玩的是,Matt最初提出的挑战后面有一系列跟帖,这是大家共同努力的结果。随着新帖对前人记录的不断刷新,对根本问题的洞察也进一步浮现出来。
Alain Bohon发现了一些有趣的事情,停车计费器认为这些例子是有效的:
o 我如果在同一天的上午6点到达,并在上午3点离开,就不用付钱!
o 我改主意了,决定在4/4/10晚上27点到达,并可以在4/13/10早上-6点离开,哇!
o 事实上,我能在12.5555点到达,在13.00004点离开么……我猜我能。
Peter Haworth-Langford发现,最初的异常来源于mktime()这个方法。了解了此方法所调用的参数,他着手创建一些新的测试来看看是否能找到另外的缺陷。
Dr. Meeta Prakash观察到,这个应用程序能接受任何输入,包括许多边界外的输入都可以接受。
Matt发现,在经济停车场第7天的停车好像是免费的,程序计算出来的结果是停7天更加便宜:停车6天又3小时是60美元,而停7天只要54美元!多停了一天还省了6美元。
有几个人还发现日期选择框有时显示不了,Matt说:
“日期选择框的代码会触发它弹出,但如果它已经“弹出”了,就什么都不做。呃,但有个用户交互的问题。如果我点弹出(让它显示),随后点回程序窗体,那么日期 选择框就到了浏览器后面。接下来我再点显示弹出框,业务逻辑会认为“嘿,弹出框已经弹出了”,于是没反应——然而用户可不明白这些。甚至刷新或者重新提交 页面之后,仍旧没反应。
很多人提出了这一点,但大多数只是注意到了症状,缺乏重现步骤或操作范例。……如果最佳缺陷报告有奖金的话,我打赌有了重现步骤一定会好很多。”