TestComplete的Open Applications

上一篇 / 下一篇  2007-09-17 22:00:42 / 个人分类:TestComplete

TestCompleteOpen Applications51Testing软件测试网Q"y2].B7m%dob

 

R1Y;[s p+b0

陈能技51Testing软件测试网'U5FB%m:W,@gqc

2007-9-17

9tj a(gh0

 51Testing软件测试网D-Hl1s:N]Rv3m

TestComplete提出了一个新的概念:Open Applications(开放应用程序)。

U L'r!y0a$]?8N A0

 51Testing软件测试网;T4}a5S ]4M4Pq

测试一个外部程序时,TC使用Windows API来与控件进行交互。这种方式叫做黑盒测试

0y7j'Q W8Yt u0

 

G/H%T;A4Z0

TC与被测应用程序的接口越深入,可测试性就越强。从外部进行测试,但是可以很好地观察和控制内部,这种方式叫白盒测试51Testing软件测试网t Np/h7I/j0z

 51Testing软件测试网|5cw:e t;^9|9]

对于TC来说,可以进行白盒测试的应用程序叫做Open Applications(开放应用程序),即对于TC来说,这些应用程序的对象、方法、属性都是Open的。51Testing软件测试网9F2F8SFRVn

 51Testing软件测试网a7aAQ.rRl#T-Mb

TC支持各种语言编写的Open Applications,包括:DelphiC++BuilderVBVC++Java.NETWPFPowerBuilderFoxProAccessInfoPath Forms51Testing软件测试网Fwvz\wd/v

 51Testing软件测试网9^Z)sZU/VA

下面举个简单的例子来说明TC是如何支持这种开放应用程序的白盒测试方法。51Testing软件测试网.HdL/@(Io'?

 51Testing软件测试网1}_5P!T4P%n!fT

VS.NET中新建一个Windows应用程序,在Form1中编写如下代码:

H X%E)Bk ep0

 

CF#rs4}m#GV0

Private void button1_Click(object sender , EventArgs e)

j&j/nHA2My7f+g0

{

? v8QQ H-w+pYV0

      ShowText(“OK!”);51Testing软件测试网,B!V3J|#X(`:x K5Nx/K

}

8kOT3|/G0

 

DF*\[\0

Private void ShowText(string txt)51Testing软件测试网.e(dL K |ABS3WS

{

4K|xx#OJk;P0

      This.label.Text=txt;

-h v;d&K-KE8K!j0

}51Testing软件测试网m'bY4b4r i

 51Testing软件测试网3J%jG(I`Uo K+v"{ I6o

可以看到,对于私有的方法ShowText,一般GUI测试工具是没办法访问到的,只能利用Windows API记录用户点击Button1Button1的按键事件触发并调用ShowText这种间接的、黑盒的测试方法来对ShowText进行测试。

z_0\/i"R;Ky B%[h0

 

/t4|@d}0

但是TCOpen Applocations机制提供了这种访问私有对象的能力。在TCObject Browser中可以在Form1Methods页看到ShowText方法。在脚本中调用也非常简单,例如:

JD]AUF,\0

Sys.Process(‘WindowsApplication1’).WinFormsObject(‘Form1’).ShowText(‘OK!’);

BeuS"eCs`0

 51Testing软件测试网-s\C j8Y)S\z7\!r

TC的这种对被测程序的内部访问能力无疑对我们的GUI自动化测试方法提供了新的思路。51Testing软件测试网X;Xs9r&Dg.?a5? SQ

 

I.b;ky ]3u0

TAG: TestComplete 自动化测试 测试工具 黑盒测试 白盒测试

Testing is believing 引用 删除 陈能技   /   2007-09-19 21:31:56
TC通过NameMapping的技术来解决可维护性问题,参见:
http://blog.csdn.net/testing_is_believing/archive/2007/08/17/1748969.aspx
kernzhang的个人空间 引用 删除 kernzhang   /   2007-09-19 19:25:00
多谢你的答复!关于第一个问题我重申一下!因为我是主做QTP这块,他有个对象库这个概念!不过根据你的回答,我想这块他可能是没有!关于ODT,好像里面的对象是靠自己编程或者手工添加进去的!我现在只是粗略了看了一下testcomplete,不对请指正!
如果TC没有对象库这个概念,那么我想换一种方式向你咨询一下,TC是怎么识别对象的?好像默认为三个属性,如果属性不能帮助TC唯一识别一个对象,那么怎么处理?
自动化测试最大的问题是对象的变化而导致维护量的增大!请问一下TC软件大概用什么策略解决这个问题!
Testing is believing 引用 删除 陈能技   /   2007-09-19 00:06:11
1、对于第一个问题,由于不是很清楚你的问题的原意,所以不能确保准确地回答;如果问题是指TC是否提供直接的关键字驱动测试的脚本编写支持,那么答案是否定的,但是TC提供一种新的模式叫ODT(对象驱动测试)的方式进行测试脚本的编写,详细见我在CSDN上的一篇文章:
http://blog.csdn.net/testing_is_believing/archive/2007/09/04/1772334.aspx

2、TC对很多标准控件和第三方控件的支持都挺好,但是也会碰到无法识别的对象,这时候TC会记录对象的绝对坐标,导致回放的失败或带来脚本的不稳定性。我们可以考虑利用键盘操作、TAB键等方式增强脚本的健壮性,另外,如果被测程序是“Open Applications”,则可以通过直接访问程序内部的对象方法的方式绕过界面层来控制被测程序。
kernzhang的个人空间 引用 删除 kernzhang   /   2007-09-18 20:06:27
TC感觉很牛!我现在也在看TC,请问二个问题,
1、TC如何去实现脚本与对象的分离的?
2、TC如何去测试自定义的对象的,我想TC也有无法识别的对象的!
 

评分:0

我来说两句

Open Toolbar