一个UI自动化的小例子
随便用一个小例子来解释一下UIA自动化的开发吧.我先现在有一个Button是disable的状态,一旦Button enable,我们就Click弹出一个窗口.
我们使用的测试工具就有同步的功能.
1.自动化工具生成的程序(发现和操作控件,不能真正运行)
button=FindButton();
ClickButton(button);
2.傻瓜的自动化程序(通过加入sleep变成可以运行的程序)
button=FindButton();
Sleep(10);
ClickButton(button);
Sleep(10);
window=FindWindow();
3.简单的自动化程序(加入同步,使得更可靠和有效率)
button=FindButton();
WaitButtonEnable(button);
ClickButton(button);
window=WaitWindowOpen();
4.完整的自动化程序(保证100%可靠,没有测试程序bug,简单写了一下,没有包含exception的控制,时间急,可能也会有错误,不过就是这个意思)
Button button=null;
for(int i=0;button==null&&i<3;i++) //如果FindButton不稳定,调用三次in case
{
button=FindButton();
if(button==null)
{
Log.Error("Tryout{0}:Can not find button",i); //测试工具不稳定
}
else
{
break;
}
}
if(button==null)
{
Log.Error("Cannot find button. Quit"); //测试工具找不到button,或者产品问题
Log.Screen();//截图,只是为了示例,以后不再单独写
return;
}
if(!WaitButtonEnable(button))
{
if(button.Enabled==true) //测试工具问题,没有得到enable的消息
{
Log.Error("enabled, but tool didn't detect");
}
else//测试工具问题,不能成功检测button的状态,或者产品问题没有enable
{
Log.Error("don't enable");
return;
}
}
Window window=null;
for(i=0;window==null&i<3;i++)//ClickButton不稳定,或者没有得到open event,或者产品问题
{
ClickButton(button);
window=WaitWindowOpen();
if(window==null)//没有click或者没有得到消息,或者产品问题
{
int count=0;
findwindow://FindWindow不稳定,重试3次
window=FindWindow();
if(window!=null) //没有得到消息,但是窗口弹出
{
Log.Error("didn't get event");
break;
}
else //没有click,或者产品问题, 或者FindWindow不稳定
{
Log.Error("Tryout{0}:didn't get window",i);
count++;
if(count>3)
{
}
else //FindWindow不稳定,workaround
{
Log.Error("goto{0}",count);
goto findwindow;
}
}
}
else //成功
{
break;
}
}
if(window==null)
{
Log.Error("didn't get window, maybe tool or product problem.");
return;
} 请问你们用的什么测试工具? 我们用的自己的。 Record/Playback的机制?
或者是纯粹的编程? 不需要recording and playback
直接编程。
另外,recording对新手来说可能很有用,真正想做好的自动化,没什么用。全部代码都需要改写。 很有意思,请问这是用什么写的? VB还是C#啊? 我这个只是一个例子,没有考虑语言。
很多人对自动化的认识局限在recording and playback上。
其实,recording的代码基本没用,全部应该改写。
如果recording的两句代码,最后要变成一大片。
我的主要开发语言是C++,C# and C++/CLI(新学的),这个程序的语法基本是C/C++的。 被移动了,看看我的话题在哪里。 很有研究 学习价值
感谢楼主发帖
学习中。。。。。。 其实我有一个疑问
我想了很久了
自己开发测试工具或者直接变编程自然好,可以畅通无阻想怎么侧就怎么侧,很深入的测,浅浅的测。甚至不爽了 可以block当前的东西 直接create条件 跑到下面去
我的疑问出来了
现在开发为了节省 开发人员的劳动和繁杂的coding 工作 都已经把很多东西封装起来然后就让dev来调用 改改参数就直接用了。目的就是为了节省 时间 使高效
这里我们自动化测试的话
自己完完全全coding去测试虽然功能很强大但是会不会耗费了太多的时间和力量在上面 原本只要点一下鼠标 敲一下键盘就过去了。
现在却要写一大堆的code来控制
这样时间,效率上会不会很差?
当然有些系统很特别 有些测试工具根本就侧不了只能自己写测试工具 这种得除外
这个自动化测试脚本或者测试程序的开发上 对于这个时间效率以及追求无限制无障碍的测试功能你是怎么balance的?
还有你觉得完全coding去代替自动化工具简单的record那种生成的代码 有什么好处和优点?
[ 本帖最后由 jaunty 于 2007-11-23 17:44 编辑 ] 楼主的帖子我都看
写的好
.
呵呵,学习了! 很简单的理论,非说得这么复杂.唉!................. :victory: Thank you very much for sharing!The good man!The good life of peace!
页:
[1]