编码UI测试

转自他人博客

使用 UI 自动化验证代码

Visual Studio 2013

驱动器通过其用户界面 (UI) 的应用程序的自动化的测试称为编码的 UI 测试的 (CUITs)。 这些测试包括用户界面控件的功能测试。 它们使您可以验证整个应用程序,包括其用户界面,能正常工作。 没有验证或在用户界面中,例如在网页中的其他逻辑时,编码的 UI 测试将特别有用。 他们还经常用于自动执行现有手动测试。

下面的插图所示,一种典型的开发体验可能位置,开始时,您只需生成您的应用程序 (F5) 然后单击通过 UI 控件,以验证操作正常工作。 您可能决定创建编码的测试,以使您不需要继续进行手动测试应用程序。 根据正在测试您的应用程序中的特定功能,您可以编写功能测试,或可能存在也可能不包含测试的 UI 级别集成测试的代码。 如果您只是想要直接访问某些业务逻辑,则可能会对单元测试进行编码。 但是,在某些情况下,非常有益,包括测试应用程序中的各种用户界面控件。 编码的 UI 测试可以自动执行初始的 (F5) 方案中,验证该代码改动不会影响您的应用程序的功能。

创建编码的 UI 测试可以很容易。 您只需测试手动执行时在后台运行 CUIT 测试生成器。 您还可以指定在特定字段中应显示哪些值。 CUIT 测试生成器记录您的操作,并从其生成的代码。 创建测试后,您可以专门的编辑器,您可以修改的操作序列中编辑它。

或者,如果您有一个已记录在 Microsoft 测试管理器中的测试用例,您可以从所生成代码。 有关详细信息,请参阅 录制和播放手动测试.

专用的 CUIT 测试生成器和编辑器方便地创建和编辑编码的 UI 测试,即使您主要技能概括起来可以分为测试,而不是编写代码。 但是,如果您是开发人员,您想要更高级的方式扩展测试,因此很容易复制和修改所构建的代码。 例如,可能记录测试采购处网站,然后编辑生成的代码中添加一个循环,购买了很多项目。

要求

  • Visual Studio 旗舰版, Visual Studio 高级专业版

创建编码的 UI 测试

  1. 创建编码的 UI 测试项目。

    在编码的 UI 测试项目中都必须包含编码的 UI 测试。 如果您尚没有编码的 UI 测试项目,则创建一个。 在解决方案资源管理器,在解决方案的快捷方式菜单中选择 添加, 新项目 ,然后选择任何一个 Visual Basic 或 Visual C#。 接下来,选择测试, 编码的 UI 测试。

    • 我看不到编码的 UI 测试项目模板。

      您可能正在使用的版本的Microsoft Visual Studio 2012不支持编码的 UI 测试。 若要创建编码的 UI 测试,则必须使用Visual Studio 旗舰版或 Visual Studio 高级专业版.

  2. 添加一个编码的 UI 测试文件。

    如果您只是创建编码的 UI 项目,第一个 CUIT 文件会自动添加。 若要添加另一个测试文件,打开编码的 UI 测试项目的快捷菜单,指向添加,然后选择 编码的 UI 测试。

    在的编码的 UI 测试生成的代码 对话框中,选择 录制操作、 编辑 UI 映射或添加断言。

    编码的 UI 测试生成器显示,Visual Studio 已最小化。

  3. 录制一系列操作。

    若要开始录制,选择 记录图标。 执行您要测试应用程序,包括根据需要启动该应用程序中的操作。

    例如,如果您要测试的 web 应用程序,您可能启动浏览器、 导航到 web 站点中,和登录到应用程序。

    暂停录制到的示例,您必须处理的传入邮件,如果选择、 暂停。

    删除行动 错误地录制,请选择 编辑操作。

    若要生成代码 ,将复制您的操作,请选择 生成代码图标和类型的名称和说明的编码的 UI 测试方法。

  4. 验证用户界面 (如文字框的字段中的值。

    选择添加断言在编码的 UI 测试生成器,然后选择您正在运行的应用程序中的 UI 控件。 显示的属性列表中选择一个属性,例如, 文本在一个文本框中。 在快捷菜单中,选择添加断言。 在对话框中,选择比较运算符,比较值和错误消息。

    关闭断言窗口,然后选择生成代码。

     提示

    记录操作和验证值之间切换。 生成代码的操作或验证每个序列的末尾。 如果需要,您将能够后面插入新的操作和验证。

    有关更多详细信息,请参阅正在验证的控件的属性

  5. 查看生成的测试代码。

    若要查看生成的代码,请关闭用户界面测试生成器窗口。 在代码中,您可以看到您赋予每个步骤的名称。 该代码是您创建的 CUIT 文件中:

    C#

        [CodedUITest]
        public class CodedUITest1
        { ...
          [TestMethod]
          public void CodedUITestMethod1()
          {
              this.UIMap.AddTwoNumbers();
              this.UIMap.VerifyResultValue();
              // To generate more code for this test, select
              // "Generate Code" from the shortcut menu.
          }
        }
    
  6. 添加更多操作和断言。

    将光标放在该测试方法中的适当时刻,然后在快捷菜单中,选择为编码的 UI 测试生成代码。 将在该位置插入新代码。

  7. 编辑明细的测试操作和断言的。

    打开 UIMap.uitest。 此文件将打开在编码的 UI 测试编辑器中,在其中您可以编辑任何录制操作的序列,以及编辑断言。

    有关详细信息,请参阅 使用编码的 UI 测试编辑器编辑编码的 UI 测试.

  8. 运行测试。

    使用测试资源管理器中,或在测试方法中,打开快捷菜单,然后选择运行测试。 有关如何运行测试的详细信息,请参阅用测试资源管理器运行单元测试和 正在运行编码的 UI 测试的其他选项 在 接下来是什么?本主题结尾部分。

本主题中的其余部分提供了有关此过程的步骤的更多详细信息。

有关更详细的示例,请参见 演练:创建、编辑和维护编码的 UI 测试. 在本演练中,您将创建一个简单的 Windows Presentation Foundation (WPF) 应用程序,演示如何创建、 编辑和维护编码的 UI 测试。 本演练提供了更正已断开各种计时问题和控件重构的测试的解决方案。

启动和停止所测试的应用程序

我不想启动和停止我的应用程序、 浏览器或单独为每个测试的数据库。 如何避免它?

  •  如果不希望录制启动受测应用程序的操作,您必须启动您的应用程序,在选择之前记录图标。
  •  在测试结束时,在其中运行测试的进程将终止。 如果您在测试中启动您的应用程序,应用程序通常会关闭。 如果您不希望测试来关闭您的应用程序退出时,必须将.runsettings 文件添加到您的解决方案和使用KeepExecutorAliveAfterLegacyRun选项。 有关详细信息,请参阅 使用 .runsettings 文件配置单元测试.
  •  您可以添加测试初始化方法中,[TestInitialize] 属性,每个测试方法的开头运行代码的标识。 例如,可以从 TestInitialize 方法来启动应用程序。
  •  您可以添加一个测试清理方法 [TestCleanup] 属性,在每个测试方法的末尾运行代码的标识。 例如,可以从 TestCleanup 方法调用方法来关闭应用程序。

正在验证用户界面控件的属性

您可以使用编码的 UI 测试生成器 添加到一个用户界面 (UI) 控件 UIMap为您的测试,或生成断言用于用户界面控件的验证方法的代码。

若要为您的 UI 控件生成断言,请选择添加断言在编码的 UI 测试生成器和拖动到该控件上您想要验证的受测应用程序是否正确的工具。 在框中列出了您的控件,请释放鼠标。该控件类代码,则立即创建在UIMap.Designer.cs文件。

此控件的属性中现在列出添加断言对话框。

导航到某一特定控件的另一种方法是选择箭头 (<<) 展开视图的 UI 控件图。 若要查找父控件、 同级或子控件,可以在地图上的任意位置单击,并使用箭头键在树中移动。

  • 我在我的应用程序中,选择一个控件,或看不到 UI 控件图中的控件时,看不到任何属性。

    在应用程序代码中,您要验证的控件必须具有一个唯一的 ID,例如 HTML ID 属性或 WPF UId。 您可能需要更新的应用程序代码中添加这些 Id。

接下来,打开快捷菜单上的验证,然后再指向所需的 UI 控件的属性添加断言。 在添加断言 对话框中,选择 比较运算符 为断言,例如 AreEqual,然后键入值中断言 比较值。

为测试添加完所有断言,选择确定。

若要为断言生成代码并将控件添加到 UI 映射,请选择生成代码图标。 输入编码的 UI 测试方法的名称和说明的方法,将被添加为注释的方法。 选择添加并生成。 接下来,选择关闭 图标以关闭 编码的 UI 测试生成器。 这将生成与以下代码类似的代码。 例如,如果您输入的名称是 AssertForAddTwoNumbers,代码将类似于以下示例:

  • 向编码的 UI 测试文件中的测试方法调用 assert 方法 AssertForAddTwoNumbers:

          [TestMethod]
          public void CodedUITestMethod1()
          {
              this.UIMap.AddTwoNumbers();
              this.UIMap.AssertForAddTwoNumbers();
          }
    

    您可以编辑此文件,若要更改顺序的步骤和断言,或创建新的测试方法。 若要添加更多代码,请将光标上测试方法,并在快捷菜单上选择为编码的 UI 测试生成代码。

  • 添加一个方法调用AssertForAddTwoNumbers为您的 UI 映射 (UIMap.uitest)。 此文件将打开在编码的 UI 测试编辑器,可在其中编辑断言。

    有关详细信息,请参阅 使用编码的 UI 测试编辑器编辑编码的 UI 测试.

    在 UIMap.Designer.cs 中,您还可以查看生成的代码的断言方法。 但是,您不应该编辑此文件。 如果要使代码的改编的版本,将方法复制到另一个文件 (如 UIMap.cs、 重命名的方法,并对其进行编辑。

          public void AssertForAddTwoNumbers()
          {
              ...
          }
    
我想要选择的控件失去焦点,并试图从编码的 UI 测试生成器中选择添加断言工具时,就会消失。 请不要选择该控件的方式

选择隐藏的控件,使用键盘

有时,当中添加控件和验证其属性,您可能必须使用键盘。 例如,当您尝试记录编码的 UI 测试中使用上下文菜单控件,该控件中的菜单项的列表将失去焦点和消失,当您尝试从编码的 UI 测试生成器中选择添加断言工具。 在下图中,在 Internet Explorer 中的上下文菜单将失去焦点并消失,如果您尝试使用添加断言工具选择它说明了这一点。

若要使用键盘来选择 UI 控件,将鼠标悬停在该控件使用鼠标。 然后同时按住 Ctrl 键和 I 键。 松开键。 该控件由编码的 UT 测试生成器记录。

 警告

如果您使用 Microsoft Lync,您必须关闭 Lync 之前开始编码的 UI 测试生成器。 Microsoft Lync 干扰 Ctrl + I 键盘快捷方式。

我不能录制鼠标悬停在控件上。 是否有解决办法吗?

手动录制鼠标悬停

在某些情况下,某一特定控件,用于在编码的 UI 测试可能会要求您使用键盘手动记录的鼠标悬停事件。 例如,Windows 窗体或 Windows Presentation Foundation (WPF) 的应用程序测试时,可能有的自定义代码。 或者,可能有上悬停鼠标指针停留在控件,例如当用户悬停在其上扩展树节点定义的特殊行为。 若要测试上述情况下,您必须手动通知编码的 UI 测试生成器,按悬停控件预定义的键盘键。

执行编码的 UI 测试时,将鼠标指针悬停在控件上。 然后按住 ctrl 键,同时按住 Shift 和 R 键在键盘上。 松开键。 通过编码的 UT 测试生成器记录鼠标悬停事件。

生成测试方法之后,类似于下面的示例代码将添加到 UIMap.Desinger.cs 文件中:

C#

// Mouse hover ‘1‘ label at (87, 9)
Mouse.Hover(uIItem1Text, new Point(87, 9));
正在我的环境中其他地方使用捕获鼠标悬停事件的键分配方案。 可以更改默认键分配方案吗?

配置鼠标悬停键盘分配

如有必要,则 Ctrl + Shift + R 用来将应用在编码的 UI 测试中的鼠标悬停事件的默认键盘分配都可以配置为使用不同的密钥。

 警告

不需要更改键盘分配在一般情况下的鼠标悬停事件。 当重新分配键盘分配要格外小心。 您的选择可能已经在使用 Visual Studio 或正在测试的应用程序内的其他位置。

若要更改键盘分配,您必须修改以下配置文件:

< 驱动器号: > \Program 文件 (x86) \Microsoft Visual Studio 11.0\Common7\IDE\CodedUITestBuilder.exe.config

在配置文件中,更改的值HoverKeyModifier和 HoverKey键来修改键盘分配:

<!-- Begin : Background Recorder Settings -->
<!-- HoverKey to use. -->
<add key="HoverKeyModifier" value="Control, Shift"/>
<add key="HoverKey" value="R"/>
我有录制鼠标悬停在某个网站上的问题。 有一个修复程序,过吗?

Web 浏览器的设置隐式鼠标悬停

在很多网站,当您将鼠标悬停在某一特定控件,它展开以显示更多详细信息。 通常情况下,它们看起来像桌面应用程序中的菜单。 因为这是一种常见模式,编码的 UI 测试将启用 Web 浏览的隐式悬停。 例如,如果您的记录上在 Internet Explorer 中,激发的事件。 这些事件可能会导致冗余悬停获取记录。 正因为如此,隐式悬停记录的ContinueOnError设置为 true的 UI 测试配置文件中。 这将允许播放继续如果悬停事件失败。

若要启用隐式悬停在 Web 浏览器中的记录,请打开配置文件:

< 驱动器号: > \Program 文件 (x86) \Microsoft Visual Studio 11.0\Common7\IDE\CodedUITestBuilder.exe.config

验证配置文件具有键RecordImplicitiHovers设置为的值的 true如下面的示例所示:

<!--Use this to enable/disable recording of implicit hovers.-->
<add key="RecordImplicitHover" value="true"/>

自定义编码的 UI 测试

创建编码的 UI 测试之后,您可以通过在 Visual Studio 中使用以下某种工具进行编辑:

生成的代码

当您选择生成代码,创建几个代码段:

  • 在测试方法中的行。

    C#

        [CodedUITest]
        public class CodedUITest1
        { ...
          [TestMethod]
          public void CodedUITestMethod1()
          {
              this.UIMap.AddTwoNumbers();
              // To generate more code for this test, select
              // "Generate Code" from the shortcut menu.      }
        }
    

    您可以用鼠标右键单击此方法以添加其他录制的操作和验证。 您还可以编辑它手动来扩展或修改代码。 例如,无法将某些代码括在循环中。

    此外可以添加新的测试方法,并向其中添加代码,以同样的方式。 每个测试方法必须具有[TestMethod]特性。

  • UIMap.uitest 中的方法

    这种方法包括您所记录的操作或您已验证的值的详细信息。 您可以通过打开 UIMap.uitest 编辑此代码。 您可以删除或重构的录制的操作的专用编辑器中打开。

    在 UIMap.Designer.cs 中,您还可以查看生成的方法。 此方法执行运行测试时录制的操作。

    C#

    // File: UIMap.Designer.cs
    public partial class UIMap
    {
      /// <summary>
      /// Add two numbers
      /// </summary>
      public void AddTwoNumbers()
      { ...   }
    }
    
    警告

    因为它在您创建多个测试时,将重新生成,不应编辑此文件。

    您可以通过将其复制到 UIMap.cs 改编的版本,这些方法。 例如,可以使您可以从测试方法调用的参数化的版本:

    C#

    // File: UIMap.cs
    public partial class UIMap // Same partial class
    {
      /// <summary>
      /// Add two numbers – parameterized version
      /// </summary>
      public void AddTwoNumbers(int firstNumber, int secondNumber)
      { ...   // Code modified to use parameters.
      }
    }
    
  • UIMap.uitest 中的声明

    这些声明表示您测试所使用的应用程序的 UI 控件。 它们用于生成的代码操作控件,并访问其属性。

    您还可以使用它们如果您编写自己的代码。 例如,您可以测试方法在 Web 应用程序中选择一个超链接,在文本框中,键入一个值或分支并采取不同的测试操作基于字段中的值。

    您可以添加多个编码的 UI 测试和多个 UI 映射对象和文件以便测试大型应用程序。 有关详细信息,请参阅 使用多个 UI 映射测试大型应用程序.

有关所生成代码的详细信息,请参阅 编码的 UI 测试剖析.

编码的 UI 控件操作和属性

使用编码的 UI 测试中的 UI 测试控件时,它们被分成两部分: 操作和属性。

  • 第一部分包括您可以对 UI 测试控件执行的操作。 例如,编码的 UI 测试可以模拟鼠标点击 UI 测试控件,或模拟影响 UI 测试控件的键盘上键入的键。
  • 第二部分包含可用于获取和设置 UI 测试控件的属性。 例如,编码的 UI 测试可以获取中的项目数 ListBox,或设置 CheckBox为所选状态。

访问 UI 测试控件的操作

要执行对 UI 测试控件,如鼠标单击或键盘操作的操作使用方法在Mouse和 Keyboard类:

  • 若要执行面向鼠标的操作如鼠标单击),对 UI 测试控件,请使用 Click.

    Mouse.Click(buttonCancel);

  • 若要执行面向键盘的操作如键入一个编辑控件,使用 SendKeys.

    Keyboard.SendKeys(textBoxDestination, @"C:\Temp\Output.txt");

访问 UI 测试控件的属性

若要获取和设置 UI 控件的特定属性值,可以直接获取或设置控件的属性的值也可以使用UITestControl.GetProperty和 UITestControl.SetProperty与要获取或设置特定属性的名称的方法。

GetProperty 返回一个对象,然后可以转换为相应的 TypeSetProperty 接受的值的属性的对象。

要获取或直接从 UI 测试控件设置属性

  • 与 T:Microsoft.VisualStudio.TestTools.UITesting.UITestControl,例如 T:Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlList 或 T:Microsoft.VisualStudio.TestTools.UITesting.WinControls.WinComboBox,从派生的控件可以获取,或直接、,如下所示设置它们的属性值:

    int i = myHtmlList.ItemCount;
    myWinCheckBox.Checked = true;
    

从 UI 测试控件获取属性

  • 若要从控件获取属性值,请使用 GetProperty.
  • 若要指定要获取的控件的属性,请使用适当的字符串,从PropertyNames类作为参数的每个控件中 GetProperty.
  • GetProperty 返回相应的数据类型,但此返回值被强制转换为 Object. 返回Object然后可将强制转换为适当的类型。

    示例:

    int i = (int)GetProperty(myHtmlList.PropertyNames.ItemCount);

若要设置的属性的 UI 测试控件

  • 若要在控件中设置的属性,请使用 SetProperty.
  • 若要指定要设置控件的属性,请使用适当的字符串,从PropertyNames作为第一个参数的类 SetProperty,作为第二个参数的属性值。

    示例:

    SetProperty(myWinCheckBox.PropertyNames.Checked, true);

调试

您可以分析编码的 UI 测试中使用编码的 UI 测试日志。 编码的 UI 测试日志筛选器和运行编码的 UI 测试有关的重要信息的记录。 日志的格式,您可以快速调试的问题。 有关详细信息,请参阅 使用编码的 UI 测试日志分析编码的 UI 测试.

时间: 2024-11-07 05:12:56

编码UI测试的相关文章

win8应用的编码UI测试

实验内容及步骤 1.测试计划 测试项目名称:日历测距计算器 版本号:1.0 测试项目介绍:日历差距计算器是一款可以计算时间差的应用.对于想要使用倒计时或是企业项目的时间规划非常有帮助.功能:计算日期距离.倒计时 测试目的:检测该应用是否对用户错误输入的情况加以考虑,计算结果是否正确,考察其可用性. 测试时间:2小时 测试人员:潘博 测试环境:win8.1.visual studio2013 测试安排:首先划分等价类,考察其在输入有效等价类和无效等价类时的输出结果如何.接着考虑其边界值,在输入超过

Assignment5: 使用Visual Studio 进行可编码的UI测试

一.实验目的: 使用Visual Studio 可编码的UI测试功能创作自动化测试 二.实验原理:黑盒测试 三.实验需求:win8 app.Visual Studio Ultimate 2012/2013 四.实验步骤: 1.新建项目 2.开始录制,打开测试用的app 3.点击开始录制,然后点击在app上进行的操作,进而生成代码 4.生成代码 5.运行生测代码,做到自动测试 6.可以对生成的method进行更改,以便维护app 7.完成快速创作和运行编码的UI测试 8.确保产品提供高品质的客户体

关于VS2013的编码的UI测试。

1.  打开VS2013,选择文件→新建→项目 2.  弹出的选项左侧选择visual C#中的测试,中间选择框选择编码的UI测试项目,确定后就产生的测试项目. 3.  弹出框选择默认的录制操作巴拉巴拉,确定ok. 4.  此时右侧会弹出小的测试生成器,按钮分别为:录制,显示录制过程,添加新控件到UI映射,生成代码. 5.  在应用商店或者其他的途径中找寻你所测试的对象,打开并开始测试. 6.  从开启测试应用开始,每经过一次操作,便可生成相应的测试方法,添加方法名,VS2013会在你的测试项目

为Visual Studio添加一个“编码的UI测试生成器”的快捷方式

在添加CodedUI测试用例时,经常需要查看捕获控件的属性.按照常规的方式,只有在添加一个全新的CodedUI编码测试时才能查看捕获控件的属性,这样很不方便. 下面介绍在Visual Studio工具栏里添加一个快捷方式,随时打开"编码的UI测试生成器",随时捕获控件,查看控件属性. 操作步骤: 1. 通过Visual Studio的"外部工具"菜单,添加快捷方式 2. 制定快捷方式的命令名称和路径 Visual Studio 2013的命令为:C:\Program

使用编码的 UI 测试来测试 Windows 应用商店应用

自从Win8应运而生以来,Windows应用商店便立马成为开发者展示的舞台,而这短短的几年里应用的数量就可数以万计,这也不可避免地出现了良莠不齐的局面.我们都知道Visual Studio是目前最流行的Windows平台应用程序的集成开发环境.VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.所写的目标代码适用于微软支持的所有平台,我们也可以使用它来开发Win8应用.另一方面,Visual Studio也可以用来

对于win8 APP编码的UI测试

通过编码的UI测试轻松测试用户界面 自动化用户界面测试,是打造高品质产品的关键.这些测试可以帮助我们轻松识别UI回归测试.通过visual studio中编码的UI测试,可以生成非常强大的用户界面测试. 基本步骤如下: 1.在visual studio 2013中创建编码的UI测试项目: 在visual studio 2013中一次点击文件->新建->项目,在左侧的已安装->模板->Visual C#中点击测试,在右侧点击编码的UI测试项目后,点击确定. 2.录制UI测试操作: 创

编码的 UI测试项目

以下是用Visual Studio 2013 做编码的UI测试的步骤 1.新建测试项目 在visual studio中(我用的版本是2013 update2)点击文件->新建->项目,选择“编码的UI测试项目”,在对话框中选择“录制操作.编辑UI映射或添加断言”,点击“确定”. 2.录制的一系列操作 进行完以上步骤,VS最小化,出现编码的UI测试生成器: 从左向右的button依次是:开始/暂停录制,编辑,添加断言,生成代码: 之后进行录制: 点击“开始录制”,打开浏览器,再点击“生成代码”,

【软件测试】Visual Studio中的编码的UI测试

前言 实验课的时候看了Visual Studio Ultimate 2012:通过编码的UI测试轻松测试用户界面这个视频之后,尝试了一下,感觉非常新颖,分享一下心得.视频地址是http://s.ch9.ms/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHS/Visual-Studio-Ultimate-2012-Easily-testing-user-interfaces-with-Coded-UI-tests-CHS UI测

软件测试学习随笔(5) 编码的UI测试

自动化测试指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件. 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较.在此过程中,为了节省人力.时间或硬件资源,提高测试效率,便引入了自动化测试的概念. Visual Studio 2012中的自动化UI测试功能可以很轻松地测试应用程序的UI功能,利用它可以帮助你完成