自动化测试初体验 软件测试
近两个月的自动化脚本编写,让我从一个门外汉终于进到了门里,下面想说一下这两个月学习QTP的一些体验想法:
首先,学习自动化脚本要有一个好的思想去指导,没有思想指导的会让人无从下手,其实这点不管学习任何新东西都是必须的,这个思想一般来源于前辈、专家、高手的引导,学习了思想才知道如何去开始,脑子里形成了一个轮廓,甚至有点迫不及待想去自己动手做了。我们的思想大概包括了这些方面:如何维护对象库,执行case的组成,common的function、base的function,各个case要有自己的checkpoint及datainstall,如何去封装function以达到最少的代码重复,
第二,学习方法:有了思想,可能已经觉得是这样,我应该会做了,但其实真动起手来,还是很盲目,东一下西一下,最好的方法,拿一个范本来学习一下,在阅读别人代码的同时,理清原本盲目的思路,然后自己去尝试写第一个脚本,这其中肯定会遇到各种各样的问题,不会使用对象的方法啊、不会使用已有的函数啊等等,不过解决方法更多:QTP的Help,关键要会使用索引搜索,英语都不是问题的,很简单;google很强大,上面有无数前辈们不同的解决方法;身边的前辈至关重要,因为很多实实在在的问题,google和help还真帮不上忙;偶尔还会碰到自己脑筋短路的时候,怎么都跑不通的脚本,别人一看就知道问题在哪里,而且也许很简单,这个时候最大的想法是拿块豆腐撞死算了!^_^
第三:关于问题及总结:写完除了完成了任务,学到了东西,更重要的是可以拿出东西来可以跟大家分享,让后面的人更容易的走过我们这一步,所以问题及总结必不可少,每一个脚本都会遇到这样那样大大小小的问题,或许问题很“弱智”,既然自己会犯,别人也依然会犯,所以同样需要拿来给大家借鉴,唯一不能怕的是丢人!
第四:关于代码优化及数据准备:现在我们的代码,几乎就是硬性使用某个用户,必须有某些数据才能跑的动,能跑脚本的准备会花费太多力气,后期在完成的基础上需要对代码做优化,不需要准备太多的硬性数据就可以跑的动我们的脚本。
上面只提到了概括的内容,现在说一下在我写的过程中遇到的问题及一点点总结:
一、不知道如何使用对象的方法:最简单的是使用QTP的help了,索引一下这个对象,就会有对象的所有方法,也会有例子,最常用的WebTable对象,GetCellData和ChildObject方法,如果是校验这个table的某行列中是否有对象,不用使用ChildObject.Exist,只要WebTable.GetCellData值是否为空即可。
二、思路已经有了,却不会写代码:对于一个没有开发经验的测试工程师这很正常,经常是知道要怎样做,却不知道用哪个函数来实现这个想法,比如取字符串的某几个值,匹配字符串等等,关于字符串常用的方法有:instr、left、right、mid、trim、。。。等等,这些是经常要使用的,最好就是对于已用到的函数做一个记录,不用上次用了这次忘了,又去google一把,浪费太多时间,将函数的参数及使用方法用自己简单易懂的方式记录下来。
三、学会使用DOM结构分析:越来越深刻的体会到DOM结构真的很有用,定义了对象唯一可以确认对象的几个属性就可以很方便的找到这个对象,不过有时候对象之间的childobjects关系弄不是很明白,尤其层级比较多的时候,谁是谁的child不是很清楚,到底该定义到哪个级别的对象再去定义其child呢?不过多尝试几次总会成功!
Set obj=browser(”浏览器“).Page(”页面“).WebElement(”对象“)
set desc1=description.Create
desc1(”miclearcase/" target="_blank" >cclass”).value=”WebElement”
desc1(”html tag”).value=”LI”—–此处value可以设定多个,直到完全可以确定一个或几个同类型对象即可。
Set c_obj1=obj.ChildObjects(desc1)
c_obj1可能会有多个使用c_obj1.count来计算其数量,而从c_obj1(0)开始便指其第一个对象
这样就可以找到obj的一个子对象c_obj1,对其进行对象可以进行的操作了!
四、调试代码是一个漫长的过程,多多使用msgbox,看下得到的内容是否与预期一样,或许就是这不一致的内容导致,尤其对于数据库校验的内容,会碰到校验的内容其实是错误的,但是并没有报错,单步执行是很有效的方法。