测鬼记(下)之职场日记——锐意进取(5月28日)

5月28日

 

报到已经一周了,自己被分到一个关于数据仓库处理的一个项目,项目主要分4个子系统,自己来得最晚也就跟了其中的一个权限分配系统,算不上复杂,也没花什么心思,测试前的准备工作就也完成了。权限分配系统的测试方法,使用边界值法,即权限存在[1,N]种分配方法,只需要遍历每一个,然后N最大的组合即可。

 

原以为换个新工作会很忙,自己的担子会比较重,结果还是没什么压力。另外,这个系统在我看来3个人足够,招我来做这个有点浪费,系统还在开发中,每天的日子其实也很无趣得很。

 

经了解团队里面最近招了一个做性能测试的,自己在这方面倒是看了不少书,但在步通却几乎没有实践过,抽机会还是要去好好请教一下补充这方面的知识更好。理论还是得与实践相结合才知道是到底是怎样的,也许这个东西就是所谓的经验吧!

 

快下班时候,测试经理跟我说:“另一个项目XXX数据库系统有用户反馈经常下载数据失败,但是整个数据下载项有很多,大概有5千多个表,人力去遍历所有表下载几乎是不太可能的,而出现问题的地方也没有什么规律,所以一直以来想开发一个自动测试的系统让每次数据发布后都能够在测试环境跑一遍,这样才能做到较全面的覆盖。曾经有同事也用QTP尝试过,但都失败了。这不是你来了,你抽空试一试”,于是这个任务便分到了我的头上。

 

领到这个任务时,心里的石头一下子就落了下来,终于明白招我来的真实目的、或者说真正在要解决、要完成的事情是什么。招聘的目的不就是为了解决问题的么?自己既然来到这里,那这个问题肯定得解决才是,没什么迟疑的,当即我便登录了系统进行了研究。

 

核心功能长这个样子,一看就知道难点在处理左侧的List项上面。

测鬼记(下)之职场日记——锐意进取(5月28日)

 

通过咨询同事以前失败的主要原因,在以下3点:

 

1、左侧区域各个库、表是不确定的,没有找到方法能够一次性的遍历所有列表项,而且后台数据库也没有办法一下就导出这个层次结构,这个层次结构是由后台程序某种算法生成的。

2、右侧字段数据也是变化的,并且查询后所耗费的时间也不一样,有的很快有的很慢,以前的方案经常是等到对象超时了,还没有查询完。

3、采用录制的方法生成的脚本一回放没多久就出错了,修改脚本怎么都不能适应这个系统。

 

大概就这些,自己要解决这个问题,实际上只要解决1、2也就差不多,对于2来说其实也不太难,一个while{break}应该就能解决。对于1只要分析得清楚这个层次结构,也应该是可以解决的。

 

另外,针对此系统的测试执行可能是由数据部、测试部、开发人员进行的,个人觉得使用QTP并不太方便。QTP部署比较重量级,而且还是独占电脑的模式,从使用人员的角度来看,这个程序的执行最后是随时随地、一键化进行。个人觉得还是采用WatiN来实现更好一些,只需要双击命令行程序,测试就可以开始了,执行测试简单化,而且并不需要独占电脑,方便了很多。

 

对于原因1的分析,我们可以看到其HTML的结构大概长这个样子:

测鬼记(下)之职场日记——锐意进取(5月28日)

 

<ul>标签下面展表了所有List,<li>标签下显示一个系列标签、点击<a>标签后才显示接下来的<ul>数据库标签、同时<ul>标签下又显示了表名,确实看上去没什么规律,而且继续探索发现,有些系列库下又存在这种结构‘系列库-库—库-表-子表’的形式,其HTML结构更复杂。

 

也许我太关注其HTML结构,也许我们可以跳出来,从另一个角度来考虑。于是对1的实现方式变成了:

测鬼记(下)之职场日记——锐意进取(5月28日)

 

根据Button按钮class属性ico_close、ico_open来判断是否是展开状态,并使用一个while循环将所有Button按钮展开,**link下的<a>标签。

对于2的实现方式只需要如下:

测鬼记(下)之职场日记——锐意进取(5月28日)

获取所有的link,并在link标签下寻找具有class属性为ico_docu属性的Button进行点击操作,并进行相关的业务操作。

 

解决了这2点,所以对于这个任务只需要再加强一下代码的健壮性也就差不多算完成了,承认确实比一般系统要复杂一些,但只要好好分析还是没有不能搞定的,照这个样子,看来明日差不多就可以交差了,嘿嘿,似乎太快了一点。