2010年终总结 新年展望

时间过得很快,转眼又一年过去了,在公司已经一年半了。看了一下去年写的总结,真简短,对2010的展望居然只有一句话

明年工作上主要还是集中在数据库相关技术,自动化回归测试框架,Python应该是主要的编程语言。

那先回顾一下吧,今年我的确围绕着数据库开展工作,我主要测试的是一个原始的OLAP数据仓库,星型结构,若干fact表加若干dimension表,做的比较多的工作有:如果数据重新load,验证。如果数据需要修复,验证。客户需要新的数据,测试。性能优化,验证。另外还有若干和数据库相关的工作,省略之。

自动化回归测试框架,我们CORE有3个产品,每个产品都有自己的regression,总得来说都是大同小异,工作原理就是用python脚本去控制自己的程序,然后各自进行一些操作,获取一些结果,进行比较,展示结果。在5、6月份的时候首先把Adserver的regression界面重写了一次,从原先的很山寨变成了现在的山寨,看起来大家对这个山寨的工具还比较满意;之后在11月的时候把ETL的regression用同样的方法重写了一次,当然,当中有不少改进。中间还搞了不少零零散散的regression。抓住主要的思想,快速持续观察产品状况。

Python,果然今年用了很多,主要用来完成一些自动化的工作,web.py写regression的UI。

综上所述,一年前的预测还是相当的准,并且,有挺多预测外的收获。由于需要写点UI,所以摆弄了一下HTML和JS。把regression挪到数据库上进行管理,学了点数据库的东西。

明年,明年干点啥呢?

首先当然进一步巩固现在的自动化成果,并且尽可能把现在还没有覆盖的点或者面给补上。单机执行已经可能在不久的将来会成为瓶颈,明年可能会考虑一些利用硬件虚拟化,并行,来提高效率的工作。今年我帮大家提高了不少效率,明年我希望让大家自己帮自己提高效率。来年工作肯定还是围绕数据库,MySQL肯定是必须的,之后可能会接触到一些基于列存储的数据库,这应该是以后的方向。Python依然是主要的工具,本来想学习一下Ruby,现在看来优先级很低,随缘。测试技术方面的尝试应该有Exploratory Testing和Model Based Testing这样相对前沿的基础,还有Code Coverage这样成熟的技术。

在web.py中处理表单中的多选下拉框

web.py是一个轻量级的web framework,源代码只有7000多行(我自己用wc -l计算,肯定偏多了),用它来做个简单的站点很方便,上手容易。我在公司就用web.py做了我们自己的自动化测试管理工具,主要是管理自动化用例,展示测试结果。最近遇到一个问题,我想做一个多选下拉框,但是等我做完以后发现结果跟我预想的不太一样。

我用的是web.py的web.form.Dropdown类来生成一个多选下拉框。只需在初始化dropdown的时候传一个multiple=”参数就OK了

form.Dropdown(‘adserver_id’, description=’Adserver: ‘, args=ADSERVERS, multiple=”)

这样生成的html就是



不过当我选中多个选项提交表单的时候,我在服务端得到的结果却是最后一个选中的选项,例如我选了Coretest2 – 1和Coretest3 – 1,那么我在服务端拿到的数据就只有Coretest3 – 1。用Firebug抓了一下请求看,原来POST的数据是长这个样子的:

adserver_id: 1
adserver_id: 2

在web.py中,一般是通过web.input()来获取表单提交的数据。而web.input()会把所有提交的数据给storify方法处理一下(可以更容易的访问dict的数据,例如原来是mydict[‘name’],可以写成mydict.name),而这个方法默认会把adserver_id处理成唯一的key,所以无论输入是多少个adserver_id,最终拿到的只有1个。解决方法很简单,用这个方法来获取post的数据web.input(adserver_id=[]),这样提交adserver_id的多个数据就会被保存到一个列表里面了。

但是这时候会遇到另一个问题,就是如果想要更改这个case的时候,就没有办法在web.py里面用 value=xxx 来指定哪些options是应该被选中的。value=xxx只能指定一个option,怎么办?我是用了JavaScript来解决。思路很简单,就是页面Load完以后,JavaScript获取一下哪些options应该被选中,然后就选上那些项,OK

rework

<rework>,中文名《重来》,一本最近比较火的书,周四拿到书,今天刚过了一遍,真是一本好书,尤其推荐在startup公司的朋友们读读。肯定会让你全身热血沸腾。下面是一些阅读体会:

  • Planning is guessing – 一个字:干!回头想想,以前曾经有过很多“计划”,最后都是一句“计划赶不上变化啊”就丢到一边了,别计划了,开干吧。就好像那个adserver regression UI那样,不需要计划,想到什么就做什么。
  • Scratch your own itch – 只有你自己才知道你需要什么样的工具来改善自己的工作,所以我建议AF QA的同事,别在原来adserver那个工具上改,做一个真能解决问题的regression
  • Start making something – 其实web.py看一天就可以开始动手做东西了,咱们又不是要应付考试
  • Ignore the detail early on – 之前就是犯过一个这样的错误,想做一个很酷的功能,折腾了1天,都没做出来,最后用一个朴实的方案,2个小时就OK了,而且据我观察,其实这个“功能”大家用的并不多
  • Launch now!
  • Meeting are toxic – 现在在公司还好,大家开会都很理性 : )
  • Good enough is fine – 这个东西是有点山寨,但是我们也不需要show给客户看嘛,呵呵
  • Go to sleep – 前段时间老加班,效率真的降低不少,工作时间的延长并不代表能完成更多的任务
  • Don’t copy – 我的成功可以复制,但是不能粘贴 – [段子]
  • Send people home at 5 – 赞成,但是不太现实

书中还有其他很多很好的观点,没能一一列出,如果不想买纸版书的朋友,可以找找哪里有PDF下,这本书是http://37signals.com/出品,大家可能不知道这个公司是干嘛的,没关系,Ruby on Rails听过吧?作者就在这个公司。