当孔明遇上QTP时

注:做测试也有好一段时间了,在整理测试工具的使用资料时,想通过比较生动有趣的方式来描述相关工具的概念、用法。下文就是针对自动化功能测试工具QTP(Quick Test Professional)的特点来写的,拟作为此工具的入门教程的……入门教程。­


话说公元250年2月30日,孔明设计并制造出一台大型集成发射器,叫“拿你命300”,它能识别出放入其内的数百种弹药并用相应的投弹器发射出去,使用起来非常方便,非常傻瓜。比如放入石头它会用投石机投掷,放入箭簇则以弓弩射出。现在需要测试它的功能是否达到这种要求。 ­

但问题是: ­

1、测试耗时很长(关系到成本); ­

2、测试过程很单调,就是放入弹药(输入),看它会用哪种发射器去发射(输出),如此重复相当多次,并且不用查看中间的工作过程,(即黑盒测试,根据输入检查输出是否符合要求); ­

3、此机批量生产后每台都要做完全相同的测试,如果有测试模板,那就省力又省心,一个模板顶过去十个(可重复测试)…… ­

而孔明日理万机,故无暇顾及此机,然则何人来测?发愁之际,吏部调一人前来助测。此人名叫齐铁炮,英文名是QTP,他不懂汉语,只会VBscript,最擅模仿,最听话,动作神速,能工作数月而不知疲倦。那不就是传说中的变形金刚?不,因为他的缺点是智商为零,非常死板,不知变通。 ­


根据这些特点,孔明这样安排他工作: ­

1.录脚本: ­

孔明先以石头为例做一遍测试过程给QTP看,然后QTP把孔明的动作都逐一记在本子上(即脚本),再依照脚本来做就完全重现了孔明的测试过程。 ­

2.插入检查点: ­

然后孔明又告诉他如何(根据预设的期望值)判断功能是否正确:对于放入的石头,按发射按钮后,如果输出端可见一投石器升起并投掷此石,则表示该功能通过。QTP也把它记下来并也成功照做。 ­

3.参数化 ­

“好,灰常好,QTP,现在你改用箭去测试。” ­
“可是丞相,我记下的脚本中只有‘……打开弹药舱,放入石头……’,并没有关于如何使用‘箭’的内容,你要做一遍给我看或者明确告诉我When,Where and How去用它,不然我无从下手。” ­
孔明一听吐血,这QTP还真不愧是笨蛋,要是每种输入的弹药都要做一遍那还不如自己测试,于是他决定在QTP原有的脚本上修改,用参数表记下所有可用弹药,在‘放入石头’的‘石头’处改用此参数表,告诉QTP每次到这一步时就取表中的下一种弹药来测,在检查点中也改用对应期望值参数表来判断结果。这下QTP才能按孔明的意愿顺利测试下去。 ­

另外: ­


对象库: ­

孔明发现,QTP在记录脚本时要用掉很多本子,仔细一看,这些本子叫“对象库”,他把有关对象的很多属性都记到里面了。比如某个按钮的属性为: ­


类型:按钮, ­
名称:发射, ­
颜色:红色, ­
密度: 3000g/m3, ­
材料:聚乙烯, ­
重量: 100g, ­
位置:左边顶部 
…… 

为的是在测试时根据这些属性来确定对象。可是用于确定对象的属性一般只要特定的两三个就够了(像刚才那个按钮只要用“类型:按钮,名称:发射”就足以标识它),其它属性变得多余且占空间。 ­


“QTP啊,我不是给你指定了几个属性来标识对象吗?你把全部都记下来干嘛?洛阳纸贵啊” ­
“丞相,我这样做是有好处的,如果根据指定的属性无法确定对象,我还有个特技,我可以用其它属性来进行智能识别。” ­
“就你那智商还智能识别……” ­



描述性编程: ­

为了节省资源,孔明令QTP不要记录对象属性到对象库,改为直接在脚本中描述对象,比如对刚才那个按钮,只需描述类型和名称就可以找到它了。 ­


自动化测试(增强): ­

孔明希望这个测试尽快完成,以便“拿你命300”可以及早投入使用,于是令QTP一旦遇到无法解决的问题或者完成测试后立刻向他报告,方式可以是用发短信、语音通话、发邮件、即时通讯工具、飞鸽传书等。因为有一次孔明不在测试现场,QTP在一炷香后还确定不了要按哪个按钮,就写了一张便条放在孔明办公桌上,其内容是: ­

无法找到“锁定目标”按钮所在的控制面板,应如何处理?你有几个选择:

A、别测了,先吃饭去 B、不管它,往下测 C、你来调试 D、去掉两个不推荐的选项 E、向现场将士求助。 ­


那时孔明刚出祁山…… ­



需求变更: ­

后来孔明又对此机增加了一个功能:如果放入玉米、地瓜之类的食物,输出来的就是烤熟的了,这样就解决了士兵作战时的吃饭问题。如果也测试这个功能应该怎么改脚本?很容易想到:在“放入石头”的参数表中增加食物,在后面检查点中增加相应期望结果即可。改好脚本后QTP运行,可这一次投石器却把玉米抛了过去,给敌人送了粮食,bug,终于出现了…… ­



当然有姐妹篇:驾驭LoadRunner


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值