一直做
测试,开发的活儿也干过,比如写个嵌入式OCX,做个演示程序之类的。
这几天修改一个程序,弄的我彻底混乱了。
需求是车间提出的,XX部需要定期传我们公司的产品信息到他们那里,简单说,就是他们分给我们公司一些认证码,我们公司的产品有产品码,还有一个sam码,程序需要把这三个码(产品码、认证码、Sam码)关联,公司
记录产品生产记录(消耗三码)以及销售记录,定期把记录生成标准xml文件上传。
原先公司有人写过程序,但是生成的xml不符合标准,所以上面就给了我们一个程序,但是程序本身有问题,比如销售过的记录,仍然可以重复销售,车间反映程序不好用,每个月生产大量的产品(几百到几万),一个一个录入太费事。希望能用条码枪扫描的方式快速录入。
正好这段时间我没有什么事情做,领导就安排我做了。
程序是用python的,使用的pylons框架。原先我只是大概的了解python,并没有具体的写过程序,这次刚好熟悉一下。
程序有setup的安装包,安装是好用的,里面使用了nginx。领导不知道从哪里弄来的src,行,就分析改吧。
第一步就坑了我,src文件根本无法运行,查找了很多的资料,最后都无法从源码执行。好在setup的是好用的,我就只能在src中修改,再发布到安装程序中。后来他们说,src的版本是比较旧的,但是也没有办法,因为安装文件中是pyo的,看不到源码什么样,我后来也去网上找了反编译插件,但是都是linux下的,算了,不费事了,版本旧就旧吧,干活要紧。
接着就是大概的分析程序,了解pylons的都知道,这个就是一个胶水MVC框架,基本只负责model、controller、routing等内容,我用的程序View部分采用的Extjs。
一通下资料
学习,好在程序逻辑不是很复杂,就是几个mysql数据库的表,对应几个js页面功能。使用fiddler很容易就能知道哪个部分对应什么页面。剩下的就是动手修改了。
里面的坑就不说了,反正有源码,主要就是照葫芦画瓢,弄出来再说。很快第一版发布了。
安装到车间,第二天就来找了,IE6下不好使。我都用Firefox的,大家都知道,用firebug调试很方便,没有出问题啊。结果我在IE下一用,真的有问题,可能是我原先复制的ext控件,firefox支持,IE6不支持,重新把控件写了一遍,这次可以了。
接着发布,人家又来了。说用扫描枪不好使,每次扫描后,没有保存扫描的记录,而是保存的下拉框中第一条记录。
我开发的时候,没有用扫码枪,因为我知道扫码枪的最后有一个Enter事件,所以我都是用键盘Enter替换扫码枪,在我这里是没有问题的。赶紧借了一个扫描枪测试,确实有问题。
接着就是调试,弄了一天都没有弄好,Combo控件本身就应该是存在问题的,Ext对combo的控制本来就很乱来,每次扫码枪扫完后,焦点我都挪走了,但实际combo上还是有焦点,而且焦点是最后的鼠标位置,后来我实在搞不定,就听了别人的意见,把combo换成了text,这样就不会有问题了。
接着继续发布,结果人家检查的时候立刻就打脸了,比如原先1234的产品码,用扫码枪扫描,自动关联获取sam码和认证码,我测试的时候,都是随便输入比如aa之类的没问题,但是人家检查的时候,用12录入就获取到了,靠,我马上想到了,当时对ext不熟悉,使用了data.store.find,这个是带正则匹配的,换成findExtra就没问题了。
现在车间还在用,其实如果没问题,应该还是比较好用的。
只是在这个过程中,发现自己还是遗漏了太多的内容。如果从测试人员的角度,这样一个程序,写
测试用例,一点点的测试,根本不会出现这样的问题。但是自己当了
程序员,就第一时间想着把功能完成,最后并没有按照系统的方式去测试,都是随便大概的跑跑就那么样的,结果就不停的有小问题存在。
看来开发和测试的差异还是蛮大的。一个很小的程序的修改,我觉得5天应该可以搞定,但实际10天了,还是可能会有新需求、新问题存在。
纪念自己的程序员之旅。
PS.
现在一周过去了,没有人来找我,应该大概不会有什么新问题了.