就在一张便签上写下“失败”,将其拍在文件上,并从肩膀上递回给Harold ,然后回到我之前的工作中去了。Harold 毫不掩饰对我的做法的愤怒,问道:“这是什么意思?”
我将椅子转到面对他的位置,回答:“如果你确实想要,我可以做测试。不过得了吧,这是互联网!任何东西都无法保证100% 的概率!”Harold 拂袖而去。
第二周开始的时候,Harold 又拿着另一张纸来了。他将这份文件交给了我,只是问:“这样好一些了么?”这一次我尽力阅读了所有条目。
“系统性能要求:
. 95% 的情况下,95% 的网页会在5秒或者更短的时间内显示出来。
. 应用程序应支持1 000 个用户同时使用。
. 98% 的情况下,课程将在第一次尝试时就完全正确下载。
. 95% 的情况下,课程将在60 秒或者更短的时间内下载完成。”
“好一些?确实。不过还是没什么意义,而且完全无法验证。话说回来,这到底是用来做什么的呢?”我回答。Harold 显然有些失望,但还是冷静地告诉我,他被要求创建我们与客户的合同的性能要求。我终于理解了他的意图,我建议Harold 安排一个数个小时的会议,我们进一步讨论他的任务。他同意了。
结果,Harold 却花了好几个会议,向我解释客户的预期、他的任务背后的故事,而我则向Harold 解释了为什么我们不希望将本来就模棱两可的性能指标写到合同义务中去,这些含糊之处是什么,以及哪些数据是我们确实可以度量且有价值的。最后,Harold 和我将篇幅已扩展到好几张纸的下述要点交给我们的项目经理Sadra 审查:
“系统性能测试要求:
. 性能测试将在多种负载和使用模型下进行,具体负载和使用模型将在系统功能和工作流程建立时确定。
. 对于任何内部版本,凡是出现性能测量结果超出以下数据的,必须报告开发组长:
─ 在任意数量的用户条件下,有超过5% 的情况加载网页的时间超过5秒。
─ 在任意数量的用户条件下,有超过1% 的情况加载网页的时间超过8秒。
─ 超过2% 的情况,课程无法完整或正确下载。
─ 在任意数量的用户条件下,有超过5% 的情况课程下载所需的时间超过60 秒。
─ 在当前最高负荷情况下运转时,系统可以持续1个小时保证95 %的网页在5秒或更短时间内加载完毕,9% 的课程在60 秒或更短的时间内完全正确下载。
. 外部版本将附有性能测试报告,包括:协作是性能测试之美的基石
─ 在任意数量的用户条件下,有超过5% 的情况加载时间超过5秒的那些网页。
─ 在任意数量的用户条件下,有超过1% 的情况加载时间超过8秒的那些网页。
─ 超过2% 的情况无法完全或正确下载的课程。
─ 在任意数量的用户条件下,有超过5% 的情况下载所需时间超过60 秒的那些课程。
─ 在当前最高负荷情况下运转时,系统可以持续1个小时保证95% 的网页在5 秒或更短时间内加载完毕,95% 的课程在60 秒或更短的时间内完全正确下载。
. 项目经理可根据[此处删除客户名字]、开发团队或性能测试组长的请求或建议,酌情添加其他有益于项目的性能测试。”
令我们懊恼的是,Sadra 在把我们列出的条款逐字加到客户合同中去时,指出Harold 和我以后应该加强协作。