介绍
  曾经有一段时间,人们习惯于在MS Excel里面编写单元测试用例,然后开发人员就按照单元测试用例一步一步的来实现用例。这通常是很耗时的漫长的过程,尤其是如果应用很大或者UI很复杂的话。
  这一套单元测试的执行过程常常成为瓶颈,因为任何代码修改都会带来手工执行大量单元测试,以确保新的修改没有破坏原有功能。
  如今是个快节奏时代,人们希望工作能够无需人工介入、自动化的快速完成。每个人都喜欢执行一个命令就能把工作搞定,而且在执行期间不需要人工介入。需要做的仅仅是检查一下最终的输出结果。
  当这个世界正在迈向自动化时,自动化测试也不甘落后,不论是在功能测试方面还是UI测试方面。每天我们都能听说自动化测试方面涌现出的新软件。
  本文提供了一些信息给那些想用Coded UI自动测试框架来进行应用界面自动化的.Net开发者。
  什么是Coded UI?
  最近我一直在寻找一个自动化的用户接口测试的解决方案。用户接口测试需要用户多次进行手工输入操作,这是一个既枯燥又费时的过程。因此,我想寻找一种更智能的自动化UI测试的方案,这种UI测试在不需要人工干预下,能够被保存,记录并提供支持 ,快速测试代码的改变。
  Coded UI 采用用户接口来驱动应用的进行自动化测试。这些测试包括UI控制的功能性测试。他们使你可以验证整个应用的功能是否正确,其中包括了用户接口。Coded UI尤其适合用于用户接口中存在校验或者其它的登录方式的测试,比如网页。Coded UI也可以用于人工测试用例的自动化。
  Coded UI 测试帮助用户测试应用程序的用户接口。这些测试允许用户验证应用程序的功能。Coded UI 多数时间用于帮助验证在UI层本身的有效逻辑。它能够验证值对用户接口的控制的正确性。
  其它方案
  市场有许多自动化用户接口的方案,比如HP的QuickTest Professional, IBM Rational Functional Tester. 其它著名的,易于使用的开源工具解决用户接口自动化问题的有Selenium,也能够记录测试,需要的时候回放。市场上还有来自Microsoft的也能不需要太多努力做同样的事。用Visual Studio Microsoft还有Coded UI的方案用于单元测试。
  Coded UI适合在哪儿用?
  大多数安装了Visual Studio的开发者都喜欢在Visual Studio的环境里进行单元测试,而不是使用第三方工具。由微软提供的Coded UI,在Visual Studio环境里可谓上手即用。在开发者的机器上无需另外安装任何东西。一旦你安装了Visual Studio的Premium版或者Ultimate版,你就同时也安装好了Coded UI。
  Coded UI可用性
  为了使用Coded UI,需要安装Visual Studio 2010/2012/2013的Premium版或者Ultimate版。
  Coded UI 测试的组成
  Coded UI 测试的组成容易理解。它可分成下列文件:
  UIMap.uitest
  这个文件是UIMap类的XML表示。UIMap类包括视窗,控件,属性,方法,断言和动作。
  UIMap.cs
  对UIMap的自定义部分都存在这文件里。如果修改直接存在UIMap.designer.vb文件的话,那些修改都会在记录结束后丢失,因为这个文件重新创建了。
  给每个在测应用程序中的每个模块创建一个独立的UIMap文件。
  UIMap.Designer.cs
  这是部分类表达各种类。这各种类是给多样的控件和他们的范围,属性,方法的类。
  提示:不要直接修改 UIMap.Designer.cs。加入你这样做,这个修改会被覆盖掉。
  CodedUITest.cs
  这类表示的实际的CodeUI测试类,方法调用,和断言调用,所有的方法和断言默认都是从UIMap.Designer.cs文件调用的。这类有具有【codedUITest】属性TestClass和包含具有【TestMethod】属性的多种方法。

Coded UI的特性/好处
  进行用户界面测试的同时进行校验.
  生成VB.Net/C#代码.
  测试用例可以被记录和重放.
  集成了ALM Story
  能够作为每日构建的一部分来运行.
  根据需要进行高级扩展.
  和Visual Studio集成在一起,所以无需单独购买许可.
  Coded UI对Web和Windows应用同样适用.
  著名的Microsoft支持.
  创建Coded UI测试
  Coded UI测试可以用下列方式创建
  使用MTM进行快速自动构建
  从现有的记录(从手动测试中记录下来的操作)中创建Coded UI
  在Coded UI Test Builder创建的底稿的基础上创建一个新的Coded UI测试.
  自己写Coded UI.
  这个白皮书的范围仅限于“在Coded UI Test Builder创建的底稿之上创建一个新的Coded UI测试”。
  小贴士: 尽量使用Coded UI Test Builder。
  Coded UI Test Builder
  每一个Coded UI测试的生成都需要遵从下列步骤.
  记录/停止/暂停
  编辑记录下来的步骤
  添加断言
  生成代码
  创建Coded UI 测试
  创建新的Coded UI 项目
  要开始使用Coded UI,首先我们需要创建一个测试项目,用来保存所有Coded UI测试。创建一个新的Coded UI项目包含下列步骤
  打开Visual Studio 2012
  选择 File > New > Project
  选择需要的语言模板 (C# or VB.Net). 我们选择了C#.
  选择Coded UI Project
  输入一个名字
  点击 OK 按钮
  添加 Coded UI 测试
  Visual Studio默认配置为创建Coded UI 测试使用 "Generate a new Coded UI Test from scratch using Coded UI Test Builder"
  提示:在测试的应用程序中,当你创建UI控件时尽量使用有意义的名称,从而对于自动生成的控件显得更加有意义和可用。
  一旦 Coded UI 测试工程创建完成,将会自动打开生成Coded UI 测试代码的对话框,请给出以下选项的设置。
  记录操作,编辑UI地图或添加断言
  使用一个已经存在的操作记录
  默认情况下 选择记录操作,编辑UI地图或添加断言,无需做任何操作,然后点击 "ok"
  Coded UI Test Builder
  选择了上述选项后,Coded UI Test Builder就会被打开,同时Visual Studio窗口被最小化。这意味着我们已经为记录操作做好了准备。
  正如之前描述的,Coded UI Test Builder基于下列4个操作来做记录
  Record Steps
  Update or Delete Steps
  Verify Results (Add Assertions)
  Generate Code
  小贴士: 如果用户界面(UI)变化了,就重新记录测试方法或断言方法,或者重新记录一个既有测试方法中受影响的部分。
  记录一个序列的操作.
  记录一个操作主要需要下列几步.
  Start Recording, 通过选择Record按钮即可.
  Pause Recording, 用来处理记录过程中的其它操作,即Generate Code.
  Edit/Delete 操作, 以防错误的操作被记录。
  Generate code为记录下来的操作创建编号。会给每一个记录下来的操作都生成编号。
  Add Assertions 用来校验结果。
  小贴士: 创建断言最好使用Coded UI Test Builder,因为它会在UIMap.Designer.cs文件中自动添加一个断言方法。
  为记录动作做计划
  任何事情的成功都取决于它计划得有多好。较好地计划最大限度保证了任务成功完成。这样总是比较好,在开始记录动作之前,我们计划好所有的所有要计划的步骤。
  这里我们将要使用应用程序Windows计算器来记录步骤。我们要自动地加和减两个数字。在记录加和减两个数字的时候,下面的步骤将会用到。
  。点击“开始记录”控件
  。到开始,点击执行
  。在执行窗口,输入”calc"
  。停止记录,看记录的步骤
  。删除错误的步骤(存在的话)
  。产生代码;提供和动作相匹配的名字。比如,打开计算器。
  提示:当你产生一个方法时候,使用一个有意义的方法的名字,代替默认名字。
  有意义的名字帮助识别方法的木的。
  。重新记录,提供第一个数字,暂停记录产生代码
  。重新记录,提供操作(加或者减),暂停记录,产生代码
  。重新记录,提供第二个数字,暂停记录,产生代码。
  。加断言
  提示: 产生你的测试作为一系列记录的方法
  提示: 可以的时候,限制每个方法小于10个动作。这模块化的方法让UI改变时候容易替换方法。
  结论
  我们已经看到了Coded UI可以使开发者的生活变得多么轻松,尤其是遇到每次都需要进行很多输入的复杂页面的时候。这时,测试用例只需要被记录一次,就可以按照需要执行任意多次。使用Coded UI比使用其它工具的好处是,它能自动适配Web页面和Windows窗口应用。Coded UI测试可以用Visual Studio 2010来运行,也可以用任何版本的VS来运行,它们的功能正变得越来越强大。无需多说,Coded UI是一个由技术领导者提供的强大工具,想要体验Coded UI测试的强大,我们应该开始在项目中使用它看看它能带来多少ROI,我确信Coded UI不会让你失望。

最新内容请见作者的GitHub页:http://qaseven.github.io/

使用Coded UI进行UI的自动化测试相关推荐

  1. Ui自动化概念+Web自动化测试框架介绍

    目录 UI 1.UI自动化测试概念:我们先明确什么是UI 2.为什么对UI采用自动化测试? 3.什么项目适合做UI自动化测试? 4.UI自动化测试介入时机 5.UI自动化测试所属分类 Web自动化测试 ...

  2. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)的理解(即c++参数初始)

    MainWindow::MainWindow( QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {} 一直对这句话理解有误 ...

  3. 【pyqt5】——入门级模板(ui文件+ui转py文件+逻辑py文件)(消息提示框)

    目录 1.ui文件 2.ui转py文件 3.逻辑py文件 4.实例 1)ui文件--demo.ui 2)ui转py文件--demo.py 3)逻辑py文件--demoLogic.py 4)运行结果 1 ...

  4. ui(new Ui::MainWindow) 解惑

    文章目录 一.问题描述 二.问题分析 1.mainwindow.h 2.ui_mainwindow.h 3.mainwindow.cpp 一.问题描述 QT生成一个简单的MainWindow工程后,m ...

  5. uni-app里的拓展组件uni ui与UI框架uView UI的Popup 弹出层的区别!

    uni-app里的拓展组件uni ui与UI框架uView UI的Popup 弹出层的区别! 文章目录 1.官网Popup 弹出层链接 2.属性不同 3.属性对照 4.弹出的方式 5.uView特有属 ...

  6. 【Lyra UI】UI 玩法逻辑小结

    [Lyra UI]UI 玩法逻辑小结 UI 这块分两个部分:功能版逻辑 + 材质效果 本篇讨论逻辑,即怎么组织UI结构,代码怎么串联事件和逻辑 笔者之前并没有用UE开发过游戏,也算是从零开始,所以并不 ...

  7. js ui 前端UI框架

    http://fineui.com/ http://www.layui.com/ js ui 前端UI框架

  8. 零基础小白学习UI设计 UI的学习路线是什么

    零基础学习UI设计,担心的就是不知道要学哪些内容,郑州UI学习路线是什么呢?要怎样去学习这门课程,那么零基础的同学想快速的学习UI交互设计,那么下面给大家分享一份UI交互设计学习课程大纲给大家. UI ...

  9. 转: windows下C++ UI库 UI神器-SOUI

    转:http://www.cnblogs.com/setoutsoft/p/4996870.html 前言 在Windows平台上开发客户端产品是一个非常痛苦的过程,特别是还要用C++的时候. 尽管很 ...

  10. 移动端、PC端(前后台)、小程序常用的UI框架 - UI框架篇

    目录 1.移动端UI库 ①.Vant UI ②.Mint UI ③.Muse UI ④.Nut UI 2.PC端前.后台UI库 ①.Element UI ②.vue-element-admin ③.i ...

最新文章

  1. debug:g2o cmake时报错“Qt5 not found. Install it and set Qt5_DIR accordingly
  2. 常考数据结构和算法:设计LRU缓存结构
  3. C++笔记——.和::和:和-的区别
  4. jQuery中this与$(this)区别
  5. CSAPP:第十一章 网络编程
  6. SQLITE3 使用总结(1)【ZT】
  7. 2.尽量用const, enum, inline代替#define -- Prefer const, enum, inline to #define.
  8. 相对定位与绝对定位联合使用
  9. Discuz支持反对提示:抱歉您的请求来路不正确或表单无法提交的解决方法
  10. CentOS 6.2安装配置pacemaker
  11. 计算机控制电机启动接线图,电机控制线路图大全,赶紧收藏
  12. 解决打印机问题的方法
  13. 记一次wkhtmltopdf填坑经历
  14. Python 微信公众号文章爬取 简单记录一下
  15. 微信测试公众号如何进行支付测试
  16. Activity 的生命周期分析
  17. 根据流程图写python程序_根的解释|根的意思|汉典“根”字的基本解释
  18. Gene Ontology 的GO注释的可视化
  19. thinkphp6下载汉字转拼音包以及其使用方法
  20. 2015年校招求职之旅

热门文章

  1. 基于asp.net的餐具消毒公司管理软件
  2. excel一列求和_Excel表格怎么求和
  3. AANet_Attribute_Attention_Network_for_Person_Re-Identifications
  4. 统计应用中的失败案例
  5. 调用opencv3.x 库,在MFC中显示图片
  6. html 对勾单选框,利用原生js和jQuery实现单选框的勾选和取消操作的方法
  7. 函授大专计算机应用和电子商务选哪个,函授大专该如何选择专业
  8. (3)不懂事的人弄不懂的第一件事:世上本无事
  9. linux查看服务器是master,master
  10. mysql数据库的常见命令行操作