一个让人目瞪口呆的BUG

几乎快要忘记这个故事了。

我的记性就是这么不靠谱,总是要把发生的事情写下来才肯放心。所以,才能从代码库中找到这个项目。所幸的是,开源中国的私有代码托管太棒了。

事情是这样的,当时有一家儿科医院,在病人住院后,要每天检测一次患者的各项指标,评估其死亡概率。 从程序员的角度来看,就是输入一组数字,根据给定的公式,算出结果,这么简单。

不知道医生每天在计算这些数据时心里在想什么,毕竟,计算别人的死亡率,感觉不太好。专门负责这件工作的人,每天要输入上百份数据,然后手工汇总到Excel中,也不轻松。

他们提供了一个在线计算的网站,由于年代久远,网址早已失传,只找到了这张截图:

这是他们每天都在使用的工具。关键是操作十分不便。他们要打开病历,照着上面的数字输入,第一项结束后,要把手移动到鼠标上去切换到下一项。比如200份资料,要输入200次,15项,那就是3000次输入。而且由于网站不能保存数据,他们要把计算结果复制到自己的Excel中。

这个Excel是他们要的结果,对于非IT人士,用于统计和研究,Excel是最容易,最常见,可能也是唯一的数据格式了。

so,需求主要有三点:一是不能依赖网络(说不定哪天断网了,或者这个网站挂了),二是要尽量减少人工的劳动强度;三是要把数据保存到 Excel 中。

具体需求如下:

1 提供一个界面,上面显示各项指标和计算结果。

2 每一项指标参数,都有格式要求。比如,x.xx, 意思是小数点后两位。比如,当输入 1.23 以后,光标自动跳转到下一个输入框。以节省切换光标的操作。

3 打开界面后,光标自动位于第1个输入框。

4 有一些固定选择的参数需要做成下拉框,成为焦点(就是获得光标)后,要自动弹出全部选项,自动选中第一个,用户可以用上下箭头选择。用右箭头结束。

4 全部输入完成后,结果实时出现。

最后的运行效果,应该是,用户不用看屏幕,盲输,眼只需要看着病历,手只需要放在数字键盘上,这样效率最高。

这样一个简单的程序,居然也要经过13次修改,才能让客户满意,也许当年我比较菜吧。最后完工的界面如下:

然而交付以后,用户说,按下每一项输入完成后,根本都不能自动跳转。

这是个大问题,相当严重。

对方的机器是XP系统,所以,我装了XP虚拟机,反复测试,在我的机器上没毛病。

怎么都测不出来这个BUG。

我要求对方把硬盘摘下来邮寄给我,遭到拒绝,理由是硬盘里有医院的机密信息。

我找了一台旧的台式机,在上面装了XP,依然不能测出问题所在。

最后,我打算亲自跑一趟,去现场解决这个问题。想一想路费,有点犹豫。最后,我说,要不然,你装个录屏软件,让我看看你是怎么操作的。

录屏没毛病。

我开始疯狂地测试,无论如何都无法重现这个BUG,测到怀疑人生。

我说,不然,你用手机拍下你的操作,把手的运动和屏幕一起拍给我看。

这下,我找到了原因,原来对方用的是小键盘。而我是用笔记本开发的,没有小键盘。

问题就这么解决了。我的判断逻辑,只针对键盘上面的一行数字跳转,因为我的笔记本根本没有小键盘啊。

那么台式机是怎么回事?因为我从来不用数字小键盘。

顺利结束。

后来,我在跟别人讲到这个BUG时,两个人都笑出了眼泪。

发表评论

电子邮件地址不会被公开。 必填项已用*标注