2007-08-30
一个用Delphi做的通用UI功能测试方案,大家提提意见
常见的功能测试软件需要了解DOM或SWT,SWING对象,我觉得简直是多此一举。
我正在用Delphi做一个验收测试程序,貌似可以男女老少大小通吃,可用于web,SWT,swing,桌面或甚至手机测试,原理是局部截屏,
再通过全屏图像匹配查找,来定位鼠标,模拟键盘输入,并作正确性判断。Delphi本身即做为测试脚本语言,并做数据库清空比对以及日志输出。
编的过程中有两个难点,不过好在都解决了,一个是图像匹配速度问题,利用到了scanline来快速取点。另一个是表单的输入,如果也用截屏的方法,
反而比较笨拙,好在Delphi自带了Webbrowser,可用于html表单解析,可以两者结合起来用,用于表单项比较多的情况。
此软件的目的着重于功能测试,不考虑压力测试,也不适用于UI整体配色、背景、字体经常变换的情况。
一个测试更改用户名的脚本示例:
try
testName:='account'; //指定测试数据存放在\account\目录下
clickAt('profileLink'); //在全屏查找\account\profileLink.bmp图像,找到后鼠标单击它, 超出一定时限后还找不到则出错
waitfor('submit'); //等待表单提交link显示出来,直到超时出错
clickAtRight('username'); //点username.bmp对应的输入栏,鼠标将会点在匹配部分的右边沿中心点,即text input部分,而不是点在文字上
writekeys(KEY_CLEAR); //模拟键盘输入,将现有内容删除
writekeys('abc'); //输入一些字符
clickAt('submit'); //点提交link
waitfor('success'); //等待成功画面出现
checkDB('select username from user where userid=`001`','abc'); //比对数据库
log.add('account test passed!');
except
log.add('account test failed!');
end;
我正在用Delphi做一个验收测试程序,貌似可以男女老少大小通吃,可用于web,SWT,swing,桌面或甚至手机测试,原理是局部截屏,
再通过全屏图像匹配查找,来定位鼠标,模拟键盘输入,并作正确性判断。Delphi本身即做为测试脚本语言,并做数据库清空比对以及日志输出。
编的过程中有两个难点,不过好在都解决了,一个是图像匹配速度问题,利用到了scanline来快速取点。另一个是表单的输入,如果也用截屏的方法,
反而比较笨拙,好在Delphi自带了Webbrowser,可用于html表单解析,可以两者结合起来用,用于表单项比较多的情况。
此软件的目的着重于功能测试,不考虑压力测试,也不适用于UI整体配色、背景、字体经常变换的情况。
一个测试更改用户名的脚本示例:
try
testName:='account'; //指定测试数据存放在\account\目录下
clickAt('profileLink'); //在全屏查找\account\profileLink.bmp图像,找到后鼠标单击它, 超出一定时限后还找不到则出错
waitfor('submit'); //等待表单提交link显示出来,直到超时出错
clickAtRight('username'); //点username.bmp对应的输入栏,鼠标将会点在匹配部分的右边沿中心点,即text input部分,而不是点在文字上
writekeys(KEY_CLEAR); //模拟键盘输入,将现有内容删除
writekeys('abc'); //输入一些字符
clickAt('submit'); //点提交link
waitfor('success'); //等待成功画面出现
checkDB('select username from user where userid=`001`','abc'); //比对数据库
log.add('account test passed!');
except
log.add('account test failed!');
end;
评论
duronshi
2007-10-02
各位有什么要求,有什么要求可以统一提出来,我来将它完善下
boms
2007-09-26
不错,很有意思的咚咚
borland
2007-09-26
建议:lz可以做成按键精灵类似的可编程咚咚。
drinkjava
2007-09-09
不开源了不开源了,已删除
drinkjava
2007-09-05
东西很简单,现在没时间整理,周未我会把源码放上来,有兴趣的话可以down下来,然后爱整么改整么改。因为非常简单,数据准备(Prepare)和测试都放在一起,新的测试项目只要把项目另存一下即可。
tiyi
2007-09-02
这个东西很有意思,我也是delphi fans,楼主有没有什么构建计划?大家讨论讨论,也许可以一起实现。
drinkjava
2007-08-30
yananay 写道
还有比较麻烦的一点就是,必须测试数据必须是图片才可以.
另外你如何得到程序界面上的信息?也是通过图片?
另外你如何得到程序界面上的信息?也是通过图片?
是的,我现在程序做法是先设好测试方案名,手工输入图片名称(如不输入将默认以数字序号自动递增生成,以后再手工改成有意义的名字,可以参见第一贴中的贴图),然后鼠标右键在屏幕任意位置按下,拖放,再松开,就可以截得存放在测试目录里的图片了,也不是太麻烦。用鼠标右键而不是左键和中键是因为右键拖放基本上不影响待测程序画面,当然也可采用键盘快捷键之类的。
取图有个麻烦的地方是,如果要取的图片在屏幕上有多个时,例如有多个长得一样的提交按钮,要借助于它旁边的图片文字来定位,截图时取大一点,或在脚本中指定第几张图,如写成 clickAtTopRightNo('xxxx',3);这表示在全屏从左到右,从上到下开始找xxxx.bmp,以找到的第3张图片为准,并鼠标点击在它的右上角。
yananay
2007-08-30
还有比较麻烦的一点就是,必须测试数据必须是图片才可以.
另外你如何得到程序界面上的信息?也是通过图片?
另外你如何得到程序界面上的信息?也是通过图片?
drinkjava
2007-08-30
yananay 写道
优点: 如果真的通用,就是最大的优点
缺点:
1、需要花钱买delphi
2、需要学习 object pascal
缺点:
1、需要花钱买delphi
2、需要学习 object pascal
语言并不重要,关键是思路,用JAVA,VC,VB也都能做,但要同时与键盘、鼠标、屏幕图形、数据库、日志文件还有一个鼠标截屏Hook这些东西打交道,Delphi算是比较方便的,至于要学习Object pascal却不一定,编测试用例时,把整个项目另存一下,然后添加新单元,只要调用已写好的方法即可,一般不需要自已再写新方法,这里是它当作脚本来使用,基本上不需要对Delphi了解多少。
yananay
2007-08-30
优点: 如果真的通用,就是最大的优点
缺点:
1、需要花钱买delphi
2、需要学习 object pascal
缺点:
1、需要花钱买delphi
2、需要学习 object pascal
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 8684 次
- 性别:

- 来自: 0

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
征求开源脚手架项目发起人
stone2083 写道确实不满楼主的口气. movingboy所说的Sprin ...
-- by drinkjava -
征求开源脚手架项目发起人
确实不满楼主的口气.movingboy所说的SpringSide和AppFuse ...
-- by stone2083 -
征求开源脚手架项目发起人
kele8boy 写道工作过一段时间的人,这种框架多了去了. 是啊,这些框架对某 ...
-- by drinkjava -
征求开源脚手架项目发起人
工作过一段时间的人,这种框架多了去了.
-- by kele8boy -
征求开源脚手架项目发起人
既然你肯花点时间来说明问题,我就跟你讨论一下吧。不过我要提醒你一下:请注意一下说 ...
-- by movingboy






评论排行榜