SCMLife.com

 找回密码
 加入SCMLife
楼主: aries_duan

[原创] 软件测试之独孤九剑

[复制链接]

9

主题

0

好友

692

积分

小学三年级

Rank: 3

发表于 2008-8-8 00:23:49 |显示全部楼层
期待哈,写的真不错,很有感触,,
( X3 {0 D5 B2 A4 _+ ~( C$ x7 m
5 b; [/ r4 ]2 n( K- s2 C  R嘿嘿
7 I8 M, f6 y5 }! g5 X+ ?偶也 也是个武侠狂,,
回复

使用道具 举报

11

主题

0

好友

126

积分

小学一年级

Rank: 1

发表于 2008-8-8 11:58:47 |显示全部楼层

回复 89# 的帖子

实实在在的学习了一把这个软件。
回复

使用道具 举报

2

主题

0

好友

411

积分

版主

Rank: 15Rank: 15Rank: 15

发表于 2008-8-8 13:37:45 |显示全部楼层
我不会再继续深入的介绍QTP这个软件了,因为涉及到太多的内容了,我们还是会把关注点集中到他们使用QTP出现的问题上面
8 }' j8 @5 p8 e6 z' _  F6 ^,具体应用的方法将不是本书的介绍范围。
回复

使用道具 举报

1694

主题

117

好友

2万

积分

管理员

打杂工

Rank: 30Rank: 30Rank: 30Rank: 30

发表于 2008-8-8 13:40:54 |显示全部楼层
原帖由 aries_duan 于 2008-8-8 13:37 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=108783&ptid=13566][/url]9 {/ F# ~6 e( L3 G4 [+ K
我不会再继续深入的介绍QTP这个软件了,因为涉及到太多的内容了,我们还是会把关注点集中到他们使用QTP出现的问题上面
1 ^9 Z& c6 [7 Z1 @,具体应用的方法将不是本书的介绍范围。
) }8 W8 Y4 Q+ ~& w2 U* K( _

3 |. A2 _* }& @9 U) D5 [赞同aries_duan的意见,不宜过多去介绍某个软件,还是以故事为主,穿插软件解决具体问题的办法为辅。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入SCMLife

开始创建第二个淘专辑:软件配置管理基础知识,邀请更多热衷于帮助他人的配置管理的从业者们一起来维护此专辑。
回复

使用道具 举报

2

主题

0

好友

411

积分

版主

Rank: 15Rank: 15Rank: 15

发表于 2008-8-11 22:17:41 |显示全部楼层
可是岳灵珊和仪琳的测试工具引入没有收到令狐冲他们那样的效果,反而因为测试效率降低了,受到了王经理的批评。仪琳更是受了委屈,哭了好几次。田伯光看到仪琳挨训时可怜的样子,心里着急可又无计可施。情急之下,晚上一个人跑到了岳灵珊她们的宿舍,想来帮帮忙。岳灵珊礼貌的请田伯光进了宿舍,仪琳看到田伯光进来也点头向他致意。田伯光直接开门见山,“其实这次你们项目引入自动化测试并不顺利是有原因的。主要是令狐冲这个急皮猴子,还没把东西完全的摸透就冒冒然的告诉了你们。自动化测试的确是个好技术,但是并不是对每一个项目都合适的。你们两个目前所做的测试工作恰好是不适合使用工具的阶段。想想看,你们这周的时间主要花在什么方面了?”
5 ?' }' w7 k: b& J* Y“一开始主要是对工具的熟悉。因为工具本身使用起来不太困难,没两天基本的操作就全掌握了,但是我们最大的问题就出现在录制了大量的脚本,但是却经常出现奇奇怪怪的错误,我们也分不清楚是程序出了问题,还是我们录制脚本出了问题。”岳灵珊到现在还有些弄不清楚状况。7 k7 b; A1 k8 D0 l: X
“QTP虽然是一个实用性非常强的测试工具,但是也有它的局限性。它对于dot net和java开发的程序,需要安装独立的插件才能正常识别。你们测试的那部分代码有些地方就是用dot net实现的控件,你们的问题就出现在无法正常识别的那些控件上面。其实这也算不上是QTP的缺点,因为那些控件是需要付费获得的,只能说是HP公司的商业手段影响了你们的应用。”
1 `# A- j: R5 A, J/ @; S0 x0 H- v“不仅仅是这个问题。我测试的那个模块是web应用程序,应该不会出现识别不了的问题是吧。可是我的那个模块的界面元素很不稳定,这个版本的页面元素,到了下一个版本就换了一个名称了,弄得我老得重新录制脚本。本来想节省时间的,现在却浪费了好多时间。”仪琳也一肚子的怨气。
% [$ K9 N& i$ I* {( P+ S“你说的情况是另外一种情况,GUI不稳定。我们的自动化测试脚本依据的就是界面中的各个元素,通过对界面元素的操作来模拟用户的行为。当界面元素不稳定的时候,我们就会发现脚本的维护量会非常的大。坦率的说,这个阶段尚不适合采用自动化测试。”田伯光显然早已经做好了功课,对情况了如指掌。
1 B2 n! B" K2 |: y' i“这个模块已经开发好久了,现在的界面还是改来改去的。难道就真的没有办法在这个阶段实施自动化测试了?那自动化测试岂不是局限性太大了?”仪琳有点不甘心。& _! K) ]& u4 D: C) V& T
“这倒也不是,通过一些高级脚本的编写技术,可以降低脚本的维护量,从而达到能实现自动化测试的目的。谈到这,我们得先从自动化测试框架技术讲起。”田伯光看到仪琳不错眼神的看着他,心头一阵狂喜。; X/ R: y2 w3 a' @
“自动化测试框架技术,是不是什么关键字驱动?令狐冲说是市场噱头,教我们不用理会的。”岳灵珊有点不高兴,嘟起了嘴。4 ?0 T9 D8 J5 f4 [3 q
“令狐这个臭小子。”田伯光心中暗道。“他说的有些偏颇,自动化测试框架其实是自动化测试工具设计的一个整体思路和构想,就像我们建房子所设计的蓝图和框架结构一样,当然可以拿到市场上去作为市场宣传的工具,但是并非只是市场的噱头没有实际意义。”在两位美眉面前,还是得给令狐冲留点面子。
+ B$ D. f4 @& t
( A4 P. M1 ]& S8 e5 f“一个设计良好的自动化测试框架,可以帮助我们更好的进行自动化脚本的设计。你们刚才所谈的关键字驱动,就是一种目前流行的自动化测试框架。关键字驱动是通过将windows中的各种对象和操作进行抽象,作为自动化测试程序的内置对象。在测试脚本中,以这种对象的形式记录用户的操作。我们来看一个例子。Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").WebTable("RETURN").ChildItem(3, 2, "WebElement", 0)。这是一个web程序的一个对象在关键字驱动框架中的表现。”3 j& V* W6 |7 g: s* A0 m1 d, {: Y1 ?$ N
Browser("Welcome: Mercury Tours")
& T6 M& v5 l1 \  T/ g: ]2 |7 v# N
Page("Select a Flight: Mercury").9 K) t; }1 f, |1 M8 V
WebTable("RETURN")
1 L; \: H! X% x4 `
ChildItem(3, 2, "WebElement", 0)9 h) Y  L1 L/ i* y. o
指定浏览器访问的web网站
: j6 s# z  z- p
指定所访问的页面2 |4 y# u% d' i- X0 N; K+ B( H
指定Web中的某一表格- K3 ?/ E, g( e# j/ Z3 W
指定表格中的元素& A9 G5 @& s2 L* O6 ?/ x9 e0 a3 |

* k& v+ I$ a. L6 k( W: m* N7 P9 t& E" K+ e" {% W8 `& G+ r+ D
8 t: h- K2 C  j$ t
“你们经常遇到的问题是什么?”田伯光故意要逗仪琳说话。! G) ], V- O" T$ `3 I1 o
“我们最常见的问题就是,第一次测试的时候,某表格变成四个列了,而原来是按照三个列进行的录制,列的顺序也会经常发生变化。”仪琳丝毫没有觉察出田伯光在故意和他搭讪。
( X& j- o9 J$ X2 \( s2 |: X“我知道了。现在我们的脚本不需要重新录制了,只需要将最后的childitem的参数进行相应的修改就可以了。但是…如果我有很多的对象都被改变了,或者我多次使用的一个对象被改变了,那我的修改岂不是工作量很大?”岳灵珊的领悟能力比仪琳快了一线。5 U$ @6 e' y; t) e1 H- `. h
“QTP提供的对象仓库技术可以帮助我们解决对象维护的工作量。我们只需要在对象仓库中对相应的对象进行维护,脚本中所有的使用该对象的地方都会同步进行修改了。”田伯光对岳灵珊的反应有点吃惊,在他看来,所有的MM应该只是关心漂亮的衣服,不应该对软件有如此高的天赋。& I! _* q. z5 [" y3 l
“呵呵,这样一来,我们工作的效率就能大幅提高了。田工,真是多谢你了。”仪琳冲田伯光甜甜的一笑。虽然不能一笑倾城,但是起码倾了田情圣。田伯光恍恍惚惚的回到了宿舍。
回复

使用道具 举报

1694

主题

117

好友

2万

积分

管理员

打杂工

Rank: 30Rank: 30Rank: 30Rank: 30

发表于 2008-8-11 22:32:50 |显示全部楼层

回复 95# 的帖子

这一节把仪琳做软件测试最大的优势表露出来了,能够让高手主动传授技术,可是不一般啊。+ F% H8 D+ `# k0 g6 C

" e' e( K" i5 n1 i! v这节描写的很好,把什么场合该用、什么场合不该用自动化测试描写的很清楚。学习哈。
开始创建第二个淘专辑:软件配置管理基础知识,邀请更多热衷于帮助他人的配置管理的从业者们一起来维护此专辑。
回复

使用道具 举报

2

主题

0

好友

411

积分

版主

Rank: 15Rank: 15Rank: 15

发表于 2008-8-12 16:08:05 |显示全部楼层
看来田伯光的指点起到了作用,这两天仪琳对他再也不是不理不睬了,每次见面都会和田伯光热情的打招呼。田伯光这几天仿佛生活在天堂里,心情也是好的不得了,总是抓着令狐冲问这问那。令狐冲这几天已经连续回答了70多遍“仪琳还没有男朋友”这类的问题。当田伯光正准备问第80遍的时候,段誉一脸倦意的回到了宿舍。这几天,段誉的小组正在进行最后的验收测试。其中段誉所要负责的是一个需要凌晨3点钟开始运行的功能,由于需要和国外的公共服务器发生功能同步,所以不能采用修改系统时间的方式模拟环境测试。可怜的段誉只得每天3点钟爬起来去运行测试用例。几天下来,段誉明显瘦了一圈了,黑眼圈和国宝熊猫也可以媲美了。到了宿舍,段誉见到两人悠闲的躺着聊天,不由得向这两个人诉起苦来了。' {! ^- o2 p" C
“这是什么工作呀?起得比鸡还早,干的比狗还累,这吃的比猪还差!真不是人过的日子。田工,你也是这么熬过来的吗?”4 D( K/ _% I; U( {: [& ?  f
“我可没你这么笨。我田伯光可是号称福威集团第一帅哥,夜生活如此丰富多彩,怎么能浪费大好时光在工作上呢?”
4 ~' V) E& L9 |" n" w3 F" w“那可能就是我命苦了,你们都没有摊上这样的测试任务呀。”段誉长叹一口气。
' l$ L$ @/ I+ v; K& |' T“谁说的。福威集团的业务在全世界都有,服务器也是分布在不同的地区,而进行同步的时间更是千奇百怪。当然我也会摊上这样的测试任务啦。不过呢,我不会像某人一样傻傻的等到凌晨三点钟手动开始运行测试。人和动物最大的区别是什么呀?就是会制作和使用工具。”田伯光悠闲地把手中的一粒花生米抛到了嘴里,对段誉和令狐冲,他可没对待仪琳那样的耐心。
: ~+ c+ _0 U% ^, R+ Q& y段誉听说田伯光有办法解决这个问题,也顾不得田伯光的挖苦,一下子窜到田伯光面前“快来教教我,怎么解决这个问题?”* e, g2 ]5 y4 Y( k* ?% b2 x1 t' i
田伯光没搭理段誉,直接从床上坐起来,往门外就走,边走边说:“今天好饿呀,去吃点什么呢?食堂的菜都吃腻了….”段誉赶紧抓起钱包,亦步亦趋的跟了出去。+ S& f# G7 v0 i; f6 l
+ U" {# Q7 F6 q
酒足饭饱后的田伯光心情挺不错的。刚回到宿舍,发现令狐冲早就把测试环境给准备好了。段誉费了一顿饭的功夫,终于求得田伯光传授独门秘籍,没想到令狐冲坐得渔人之利,只需在旁边静静的做着,就一样能学到田伯光多年研究出来的测试技术。令狐冲向段誉眨眨眼,段誉也只能无奈的笑笑。( n: [+ \) w" z# s' E1 W
田伯光田大师,起码在此刻田伯光自己是这么认为的,在打了493个饱嗝之后,终于开始授课了:“自动化测试工具,在这种需要定时运行的环境下面,才能真正显示出自己作用。毕竟人不能像机器一样24小时待命,另外从精确度上来看,手工的也完全无法和自动运行相比。所以作为自动化测试工具,是一定会考虑自动运行这方面的功能的。QTP也为此专门保留了这样的一套接口,让测试人员开发可以自动运行的脚本。”9 H/ T) p( V+ V  X+ g0 `
“只要我们安装了QTP,就会在安装程序的bin目录下发现QTObjectModel.dll文件。我们能通过VBS,VC++等语言编写代码通过这个文件来调用QTP的各项功能。可以这么说,QTP实现了一个自动化的对象模型,来为从外部操作自动化测试脚本提供了方便。我们先来看一下QTP的对象模型。”
. z& g6 S' g! d6 R% v$ w6 P+ y4 l+ j. t
“Application对象是对象树中最顶层的元素,Test作为application的子结点,是一个测试对象。在代码中,实例化该对象,并对其进行操作,就能实现对其代表的自动化测试脚本的操纵。Test中包含的Run方法,就是起到运行该测试脚本的作用了。看下这段代码:”
% t: ]0 ]- d" D7 \
, D, y; P1 r3 o1:dim app
7 N$ ?7 C: P: _5 V, v3 C$ [ 6 I# M8 {# c& t3 Q
2:set app=CreateObject("QuickTest.Application")
# Z1 H( |5 O8 [  x0 O5 W) p9 K3:app.launch
: L3 W4 W9 x4 a2 ]7 }4:app.Visible = True, i. q7 }1 G" K" m
5:app.open "F:\doc\QTPTest\first\"" \9 f! _. S9 j
6:Set qtTest = app.Test$ O. g6 j! z9 o4 w6 P

1 _8 M9 m* _' a8 E3 a5 ^7:qtTest.Run
* N! X& i& D) _; n, V
: b$ _; e3 x% l* h“这段代码就可以实现自动运行某段脚本的功能,这段脚本是用VBScript编写的,如果你熟悉C++的话,也可以用VC++来编写。不过我喜欢使用VBS这种轻量级的脚本。第2、3句就是创建了一个application对象并在内存中加载该对象。但是仅仅运行到这阶段,现在的界面上我们看不到QTP的主程序,因为他们仅仅在内存中进行加载,还没有显示出来,所以需要第4句,将QTP的主程序显示到前端桌面。”
$ F3 S1 Q3 [5 {& r" R“第五句我知道什么意思了,就是让QTP加载相应的自动化测试脚本,对吧!”令狐冲又在旁边开始插嘴了。& g- F# D7 N8 }& Z: d
“是的,后面就简单了。创造一个test对象实例,再调用该实例的Run方法,就能轻松实现该自动化测试脚本的运行了。”
  u/ v2 K: K2 S3 T) X& O( F6 ]7 v) r段誉双击刚才保存的VBS文件,果然QTP自动运行起来,并完整的执行了这个脚本。“可是这并没有完全实现定时运行呀?”段誉还是有点不明白。( A& S1 B$ i# a, y$ L. g/ z
“笨。”令狐冲学田伯光拍了段誉的后脑勺。“windows不是提供了计划任务吗?我们只需设置该计划任务在凌晨三点自动运行这段脚本不就行了?”
# ~) j& E, ]  S( ?' ]% W                “没错。但是还有更好的方法,QC也提供了自动运行脚本的接口,不过你们目前还没接触到这个工具,所以就不多说了。关于QTP对象模型,还有很多应用,比如说对测试结果的保存,对测试数据的控制等等。这些就需要你们慢慢去摸索了。天色不早了,我也该去享受美好的夜生活了,走了。”田伯光迫不及待的要把这个技术教给仪琳,生怕令狐冲这小子又在两个女生面前显摆的时候,又教错了。' p  ]: a+ ?$ H; H0 q
4 {. Z( a9 p7 g& D3 n/ @
[ 本帖最后由 aries_duan 于 2008-8-12 23:35 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入SCMLife

回复

使用道具 举报

11

主题

0

好友

126

积分

小学一年级

Rank: 1

发表于 2008-8-15 22:21:57 |显示全部楼层

回复 95# 的帖子

非常好的内容。尤其是对自动化测试有了更多了解,特别是Gui测试的时候的限制等等。是不是winrunner也有类似的限制呢?不好意思,没有用过呢,只是听说过。
回复

使用道具 举报

11

主题

0

好友

126

积分

小学一年级

Rank: 1

发表于 2008-8-15 22:27:12 |显示全部楼层

回复 97# 的帖子

所谓更好的办法是什么呢?感觉windows scheduler是个方法,但其他方法是不是也要放到task里面schedule呢?只不过用的方式不一样?
回复

使用道具 举报

19

主题

0

好友

263

积分

小学二年级

Rank: 2Rank: 2

发表于 2008-8-19 11:31:04 |显示全部楼层
对自动化测试的描述很到位!不错不错:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入SCMLife


关闭

SCMLife推荐上一条 /4 下一条

手机版|Archiver|SCMLife.com

GMT+8, 2012-5-19 19:43 , Processed in 0.046462 second(s), 9 queries , Gzip On, Memcache On.

Powered by JoyShare Licensed

回顶部