51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5211|回复: 14
打印 上一主题 下一主题

[原创] 一个UI自动化的小例子

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-13 07:08:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随便用一个小例子来解释一下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;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-13 11:35:08 | 只看该作者
请问你们用的什么测试工具?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-8-13 11:53:25 | 只看该作者
我们用的自己的。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-8-13 12:34:47 | 只看该作者
Record/Playback的机制?

或者是纯粹的编程?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-8-13 12:41:52 | 只看该作者
不需要recording and playback
直接编程。

另外,recording对新手来说可能很有用,真正想做好的自动化,没什么用。全部代码都需要改写。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-8-13 14:57:20 | 只看该作者
很有意思,请问这是用什么写的? VB还是C#啊?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-8-13 15:03:52 | 只看该作者
我这个只是一个例子,没有考虑语言。
很多人对自动化的认识局限在recording and playback上。
其实,recording的代码基本没用,全部应该改写。
如果recording的两句代码,最后要变成一大片。
我的主要开发语言是C++,C# and C++/CLI(新学的),这个程序的语法基本是C/C++的。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-8-15 05:45:48 | 只看该作者
被移动了,看看我的话题在哪里。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-8-15 09:17:04 | 只看该作者
很有研究 学习价值
感谢楼主发帖
学习中。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-11-23 17:40:24 | 只看该作者
其实我有一个疑问
我想了很久了
自己开发测试工具或者直接变编程自然好,可以畅通无阻想怎么侧就怎么侧,很深入的测,浅浅的测。甚至不爽了 可以block当前的东西 直接create条件 跑到下面去

我的疑问出来了
现在开发为了节省 开发人员的劳动和繁杂的coding 工作 都已经把很多东西封装起来然后就让dev来调用 改改参数就直接用了。目的就是为了节省 时间 使高效

这里我们自动化测试的话
自己完完全全coding去测试虽然功能很强大但是会不会耗费了太多的时间和力量在上面 原本只要点一下鼠标 敲一下键盘就过去了。

现在却要写一大堆的code来控制

这样时间,效率上会不会很差?
当然有些系统很特别 有些测试工具根本就侧不了只能自己写测试工具 这种得除外

这个自动化测试脚本或者测试程序的开发上 对于这个时间效率  以及追求无限制无障碍的测试功能  你是怎么balance的?
还有你觉得完全coding去代替自动化工具简单的record那种生成的代码 有什么好处和优点?

[ 本帖最后由 jaunty 于 2007-11-23 17:44 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-12-4 18:08:30 | 只看该作者
楼主的帖子我都看
写的好
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-12-4 19:45:13 | 只看该作者

.

呵呵,学习了!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-12-5 10:07:53 | 只看该作者
很简单的理论,非说得这么复杂.唉!.................
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2012-12-4 18:42:23 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2013-1-25 18:02:40 | 只看该作者
Thank you very much for sharing!The good man!The good life of peace!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-23 05:23 , Processed in 0.086179 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表