周末,由于项目需要,作为一个开发者,我决定研究一下自动化测试,因为最近,我们要统计User Story所带来的Defect的个数,所以Dev要在开始的时候就要准备自己在自己的开放环境上多测试几遍。
公司一直在用QTP测试,用VB去写脚本,额的神呀,那语言我玩不转,所以还是选择了Selenium,因为它提供了Java的driver,还是不错的。先装了一个Firefox插件,录制了一些脚本,拷贝到JUnit里面,竟然不可以运行。网上Google了很久没有找到好的方法,一方面是由于我们的这个frame写的不是怎么标准,另外一个方面估计是网络太慢了。所以我加上了一个waitForPageLoad,竟然神奇的可以通过了。不知道为什么,但是这样的脚本的东西,我也懒得去理解为什么。
一直想怎么把东西做到超级的自动化,自动化达到在一个地方输入,另一个地方就可以验证了,最后决定,把输入数据写到Excel里面,中间的数据存储到数据库中(必须的,其实还是可以在Excel里面存着,不过懒得这样存,访问Excel不是俺的强项)。最后去根据这些中间的结果去验证最后的输出是不是正确。
想法很好,开始做了,遇到了第一个问题,输出是简单的<tr><td>test</td></tr>, 怎么去验证这个test是不是正确呢? 去网上继续搜索,发现用xpath能解决这个问题,最后用以下的path解决了这个东东,如下(xpath=//div[@id='reponseFormHeader']/div/table/tbody/tr[1]/td[1]) 可以用一个firefox差价xpather去发现这个东东,并且写上去,也解决了给这些没有必要的text写上一个Identifier的问题 (QA一直强调要给这些Text都加上一个ID方便自动化测试)。
最后选择把中间结果写在MongoDB里面,原因很简单,Schemaless和Map driven的DB,我仅仅需要把Map往里面一扔,后面的就不用管了。简单粗暴,但是又是很实用。 自动化测试不是很难,但是要用心去做,QA也不是很容易,很多东西,资料不多,写起来也很奇怪。
最后说说敏捷软件开发,什么时候写自动化测试呢? 看网上有人说,QA测试中80%的要手工测试,我比较不同意,我认为80%都可以进行自动化测试。自动化测试是QA可以在很早就可以开始的,Mockup出来后就可以开始了。只要我们把自动化测试当成一回事去做,可以省去很多很多的effort,不失为一种敏捷的快捷之路。