提到Windows的UI自动化,不得不能不说Coded UI测试。Coded UI测试是微软在VS2010里面推出的一个新功能,概念其实也不是很新,就是通过录制回放的功能来尽可能的简化Windows的UI自动化。

个人的理解,Coded UI的底层仍然是基于Windows TestAutomation SDK的Code,它的最大的作用就是把Code封装了一层,使之能为可以调用的方法,大大简化了测试人员对于编码的硬需求,不懂C#或者VB的测试人员可以很容易的利用Coded UI开展自动化。

Coded UI不仅可以测试Windows的应用程序(据说对WPF支持的特别好),它也可以对Web浏览器开展测试,VS2010支持微软的IE和Firefox,我用的是VS2013,还没有来得及用这个东西测网站,我一般都用Robotframework + Selenium2library进行测试。

笔者最近在做一个和SCCM相关的项目,希望通过Coded UI能实施一些UI自动化的工作,尝试了一下,感受如下

怎么用Coded UI

1. 先分析Windows应用程序是啥技术

这个估计测试人员用肉眼看不出来,可以请教开发,或者用一些工具帮忙看。Coded UI据说对WPF支持的比价好,对MFC支持的一般。

知道了这点,心里面可以有个数,对后面测试中可能的风险有个心理准备

2. 录制

打开VS,建立一个Test Project,然后选Coded UI,VS2013的步骤大概就是这样,VS2010会复杂一点, anyway,然后差不多就可以开始录制了

录制的窗口很小,点击红色的按钮就可以开始录制了,录制没什么特别的,Coded UI会记录你的鼠标和键盘的操作,并把他们变成一些可以用术语表现得事件。

备注:录制的时候可以加入Assertion,这是为了判断测试结果的需要,否则录下来的就是一步一步的UI操作,特别注意。加入Assertion需要对Windows的控件属性有一点了解。

3. 调整录制结果

录制完了要点停止,之后点击中间的阶梯的按钮,就会出现录制的动作,这些动作都用很容易理解的步骤呈现在面板上。之后点击最右边的按钮就可以生成代码了。

需要给生成的代码取个名字,做为一个动作次序的标志

4. 调整UI操作次序以及其他属性

双击右侧Panel的UIMap.uitest,就可以打开UI操作的面板

里面包括了以前录制过的每一个动作次序,点开之后可以看到具体的动作,左边是录制的次序,右边是控件的定位方法,定位的方法和一般的Windows Ui自动化定位元素相比,其实变化不大,从窗口开始,一层一层的找Windows的控件,直到能够精确的定位。

调整的目的有两个,把录制的次序拆分,或者在录制次序里面加入等待时间

用右键点击一个动作次序,可以发现也就几个选项,注意,不能在这里把一个动作次序里面的动作移到别的动作次序里面去,除非你改后台的代码。(改后台的代码不是微软推荐的最佳实践)

调整的另外一个目的是优化对控件的查找,右键点击控件的树形结构,你可以很容易的使用“Locate the UI Control"对控件进行定位,也就是看看Coded UI目前还能不能找到这个控件。

如果找不到,大概有两个原因

a. 原来的Windows应用窗口已经关闭了,需要重现打开

b. 控件的属性发生的变化,需要再定义。

如果真的属于控件属性变化,需要通过UIVerifier或者UI Spy重新查找该控件的属性,这不属于本文讨论的范围

修改控件定位的方法是这样,先选一个控件,然后点"Search Properties"之后会出现对于控件的定义,然后修改这些定义就可以了。

5. 组合测试用例

录也录了,改也改了,剩下来的工作就是把他们组合成测试用例,组合的方法就要动代码了,这个我就不多说了,通过排列

”this.UIMap.次序的名字“,来把测试用例进行再组合

6. 执行测试用例

执行的方法有点绕人,一般用VS习惯的人会直接点Run按钮,然后你就等着报错吧,呵呵

正确的方法,找到你在第5步里面的修改的那个代码,点击右键

你可以选择Run test或者是Debug test来执行或者是调试测试用例,当然你可以可以通过其他的办法,这里VS2010和VS2013的方法不太一样,就不仔细说了。

7. 追加录制

任何人不可能第一次就把事情做完美,更何况是录制测试用例,如果你发现少录了一些步骤怎么办?答案就是追加录制

追加录制的方法如下,

1. 找到你在第5步里面的修改的那个代码

2. 找到你要追加的地方,找到某一个动作的代码那里,点鼠标右键

按照上图的方法来选,就可以打开录制的UI,继续录制啦

8. 一些注意事项

1. 对于每个点击事件里面鼠标坐标的理解

如上图,里面有一个坐标295,11,有人肯定会问,在这种情况下,如果我得屏幕分辨率改了,或者程序没有最大化,那岂不就定位不到了?

对这个的理解是这个坐标其实是对于一个控件里面的坐标,只要这个控件大小不变,坐标还是可以定位的。

2. 不是每个控件都能识别

就拿微软的SCCM来说,Coded UI对于里面的一些控件也不能做的很好的识别,有些是自定义的控件,有些控件识别的很不稳定,这里我就不举例子了。

遇到这种控件怎么办,我推荐的方法就是用能稳定识别的控件的相对坐标来定义这些不能识别的控件。

例如,如果一个按钮A不能稳定的被点击,而在它附近的一个按钮B每次都能点击,那么我们可以先取B的坐标,然后加入B和A之间的相对距离,就可以定位到A了,提供一个自己写的函数给大家参考

  public void offsetclick(UITestControl control, string button, int left, int top, int time){int x = control.Left;int y = control.Top;x = x + left;y = y + top;if(button == "right"){Mouse.Click(MouseButtons.Right, ModifierKeys.None, new Point(x, y));}else{Mouse.Click(MouseButtons.Left, ModifierKeys.None, new Point(x, y));}Playback.Wait(time);}

OK,就写这么多,其实还有很多可以写的,比如微软推荐的调试步骤的实践,使用数据源等等,希望本文对大家能有所帮助。

Coded UI 自动化测试初步研究相关推荐

  1. VS 2010 测试功能学习(七) - RnP与Coded UI自动化测试

      题外话:昨天去上海浦东机场接闺女, 一切还是蛮顺利的,公交机场7线直接从上海火车南站一站直达浦东机场,票价20元,算上乘坐地铁5号和1号线的6元,从我家到机场总共要26元,相对于打 的士的220元 ...

  2. VS 2010 测试功能学习(八) - RnP与Coded UI测试(继续篇)

    题外话:CSDN博客不能上传图 片已经有一周多了,以前的博客内容中的图片仍然是"图片审核中..."状态,没关系,咱是中国网民,咱最大的优点就是能忍!图片不能传,咱继续发文字内容 的 ...

  3. 如何使用Coded UI Test对Webpage进行自动化测试

    在Visual Studio中,Coded UI Test已经不是什么新特性了,较早版本的Visual Studio中就已经有这个东东了.它主要用来帮助自动化测试工程师和开发人员确保程序在UI方面没有 ...

  4. 使用Coded UI进行UI的自动化测试

    介绍 曾经有一段时间,人们习惯于在MS Excel里面编写单元测试用例,然后开发人员就按照单元测试用例一步一步的来实现用例.这通常是很耗时的漫长的过程,尤其是如果应用很大或者UI很复杂的话. 这一套单 ...

  5. Web UI自动化测试实例(登录网易云音乐账户)——(五)Taiko

    初步想法:用Taiko自动化工具,实现登录太简单了吧! 一.对taiko的认识 初识taiko: 自动化测试工具-----Taiko taiko的安装:可能踩如下坑,那些年的坑之node.js 和 t ...

  6. 阿里疯传,手把手教你如何从0开始开展UI自动化测试?

    如何进行一个Web项目的UI自动化测试,首先需要建立一个自动化测试团队.理想情况下,该团队由四个人组成,即测试和开发工程师.中高级自动化测试工程师和两名初级自动化工程师.在非理想情况下,可能只需要一个 ...

  7. 在Visual Studio 2010中实现数据驱动Coded UI Tests

    通常情况下,我们要与不同的数据值一起重复一个测试.这个"数据驱动"在Coded UI Test中非常容易的.在本例子中,我们创建了一个Coded UI Test,以验证在计算器的两 ...

  8. 测试:VS2010的Coded UI Test参考内容列表

    本篇是一个内容索引,对测试不感兴趣的可以马上飘过:)前几篇IronRuby的文章都是围绕着自动化测试来写的,这个测试框架使用了微软的CodedUI Test的几个dll功能来写的.学习任何新的技术和事 ...

  9. .NET中的UI自动化测试

    近日,DevExpress宣布他们是首个完整支持Coded UI的第三方控件提供商.借此机会,我们也谈一谈Coded UI,看看它在构建全面自动化测试套件中是如何发挥作用的. 任何Coded UI测试 ...

  10. 基于 KIF 的 iOS UI 自动化测试和持续集成

    客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程. 一.测试框架的选择 iOS UI 自动化测试框架 ...

最新文章

  1. HP380G7服务器安装fedaro16的问题解决
  2. python软件下载安装win10-Python Win10版本下载
  3. python导入模块找不到什么原因_找不到Python导入模块错误
  4. Linux中Postfix邮件发送配置(三)
  5. SAP UI5 初学者教程之五:视图控制器初探 试读版
  6. 一位像素艺术家用39张动图,将大自然的唯美尽收眼底…
  7. append 后如何删除_如何在STATA中合并数据文件呢?
  8. rg1 蓝光危害rg0_蓝光危害IEC 62778 测试什么
  9. 分布式消息中间件rocketmq的原理与实践
  10. php-resque 轻量级队列
  11. 鏖战九载,Google 是否会因 Oracle 而弃用 Java?
  12. Java中parseInt()和valueOf(),toString()的区别
  13. 对比DoS攻击与DDoS攻击
  14. 495. 提莫攻击(不会)
  15. GNN手写字体识别java_深度之眼Paper带读笔记GNN.09.GGNN
  16. 小程序输入框设置maxlength时,拼音也会被限制
  17. Hexo系列(四) NexT主题配置
  18. 计算机桌面程序图片,笑哭!程序员电脑桌面原来是这个样子的?
  19. Paxos Made Practical
  20. 2017上海交大计算机考研复试名单,上海交通大学2017年硕士研究生复试分数线

热门文章

  1. Java 使用itextpdf添加图片印章到PDF
  2. notepad 自动排版html,notepad++怎么自动排版
  3. PPT转换成图片及合成长图
  4. 三分钟彻底弄明白shiro原理
  5. 比特率(码率) = 采样率 (Sampling rate ) * 位深 (Bit depth)* 声道数目/Opus/AAC/mp3
  6. 哈希值 是什么?哈希值是什么东西啊?具体怎么识别?怎么用?
  7. matlab函数in怎么表示什么意思,in函数(in函数用法)
  8. 【CTFhub】彩蛋篇_持续更新
  9. 计算机拼图形 比创意教案,图形联想与创意教案
  10. python 拆分pdf