Java自动化测试(一)

软件自动化测试范畴很广,理论我就不说了,只针对我此次选的题目——Java自定义组件的测试,从Java事件机制的基础提及,其中有一小部分关于开源软件测试框架Abbot的简单介绍
仍是先说说Abbot吧,Abbot能够支持Java GUI组件从单元测试到集成测试,简单地说,单元测试时,你可使用Abbot的一些类库,把你要测试的GUI扔给某个方法,而后Abbot能够查找某个组件,好比特定按钮,而后对那个按钮调用一下 click(个人按钮),就能够实现“点击”的效果, 你会看到屏幕上的鼠标移动到那个按钮上并点击,颇有趣吧,固然你能够手工编写一堆代码控制鼠标移动到那个按钮上并点击,可是那样很麻烦,Abbot帮你封装了不少底层的操做。
对于一个已经作好的GUI,Abbot也能够进行脚本录制,也就是你在你的GUI上操做,Abbot自动记下你的动做,以脚本形式保存起来,之后你还能够进行重放。下面是官方介绍的一部分翻译:java

Abbot 框架
abbot提供了一个框架测试你的GUI代码,而不用考虑你的代码的当前状态。若是你喜欢进行测试驱动的开发,那么abbot提供相关工具为你生成单元测试代码。若是你已经有一堆代码但不是基于单元测试的,abbot也能够帮你生成脚本
总的来讲,abbot测试首先要得到组件的引用,而后要么模拟用户操做,要么对组件的状态进行断言。abbot提供ComponentReference得到组件的句柄,以及扩展的、相似robot的对象,用来模拟用户行为。这些操做既能够经过脚本,也能够经过java代码来实现
abbot的目标:
1.用户输入的可靠重现
GUI测试不完全的一大缘由就是不能很好的重现用户输入
2.利用脚本控制动做
使用动态解析的脚本,省去了写新的测试代码的麻烦,而且这些脚本还能直接调用java单元测试的代码
3.下降组件之间的绑定
若是修改了原有的GUI布局,组件的位置、大小改变了,那么以前的测试代码可能会失效(好比找不到新的组件位置)在不一样平台下,组件的位置大小均可能改变,那样测试框架就不能跨平台了。abbot使用查询机制,只要能查询到组件,即便位置大小改变了,abbot同样能够运行
4.底层使用低级的操做系统事件来实现高级的语义行为
java.awt.robot提供了便利的方法直接生成事件,可是其功能太过基础,不方便使用,abbot在其上抽象出方便的接口(正如Swing对基本窗口的抽象同样)。经过抽象语句,你能够很容易的推断出测试代码的功能,好比像下面这样:
Click on 100, 100
Move to 110, 110
Press down key
Press down key
Click on 110, 110
app

Select "blue" from the color list框架

5.支持动态录制高级语义事件
你能够手工编辑xml文件,也能够一条条修改测试语句,可是有了Costello editor ,电脑会帮你记录全部用户动做,并自动生成脚本
6.用户动做的记录和生成是可扩展的
你能够本身扩展上述框架,以支持自定义的组件。虽说用基本的robot能够在不修改测试代码的状况下测试任何东西,不过使用扩展的好处在于:你的代码更加抽象,就好像调用CalRow(10)而不是click(x,y),其中x、y指的是第10行的中心坐标
ide

相关文章
相关标签/搜索