Экспорт (0) Печать
Развернуть все
Развернуть Свернуть
Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

Создание управляемого данными закодированного теста пользовательского интерфейса

Для тестирования различных условий можно запускать тесты несколько раз с различными значениями параметров. Управляемые данными закодированные тесты пользовательского интерфейса — удобный способ сделать это. Вы задаете значения параметров в источнике данных, и каждая строка в источнике данных — это итерация закодированного теста пользовательского интерфейса. Общий результат теста будет основываться на результате всех итераций. Например если одна итерация завершается неудачей, общим результатом теста будет ошибка.

Требования

  • Visual Studio Ultimate, Visual Studio Premium

В этом примере создается закодированный тест пользовательского интерфейса, который работает в приложении "Калькулятор Windows". Он складывает два числа и использует утверждение для проверки правильности суммы. Далее утверждение и значения параметров для двух чисел кодируются в управляемые данными и сохраняются в файле с разделителями-запятыми (CSV).

Шаг 1. Создание закодированного теста пользовательского интерфейса

  1. Создайте проект.

    Создание проекта по кодированному тестированию пользовательского интерфейса
  2. Выберите запись действий.

    Выбор записи действий
  3. Откройте приложение "Калькулятор" и начните запись теста.

    Запись действий
  4. Сложите 1 и 2, приостановите средство записи и создайте метод теста. Позже эти значения ввода пользователя будут заменены значениями из файла данных.

    Создание метода тестирования

    Закройте построитель теста. Метод добавляется в тест.

            [TestMethod]
            public void CodedUITestMethod1()
            {
                // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                this.UIMap.AddNumbers();
    
            }
    
  5. С помощью метода AddNumbers() проверьте, выполняется ли тест. Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T).

    В окне обозревателя тестов отображается результат теста, показывающий, пройден тест или нет. Чтобы открыть окно обозревателя тестов, в меню ТЕСТ выберите Окна, а затем выберите Обозреватель тестов.

  6. Так как источник данных также может использоваться для значений параметров утверждения, с помощью которых тест проверяет ожидаемые значения, добавим утверждение для проверки правильности суммы двух чисел. Поместите курсор в методе теста, показанном выше, откройте контекстное меню, выберите Создать код для кодированного теста пользовательского интерфейса, а затем выберите Использовать построитель кодированных тестов ИП.

    Сопоставьте элемент управления "Текст" с калькулятором, который отображает сумму.

    Сопоставление элемента управления текста пользовательского интерфейса
  7. Добавьте утверждение, которое проверяет правильность значения суммы. Выберите свойство DisplayText, которое имеет значение 3, а затем выберите Добавить утверждение. С помощью средства сравнения AreEqual проверьте, имеет ли сравнение значение 3.

    Настройка проверочного утверждения
  8. После настройки утверждения снова создайте код из построителя. При этом создается новый метод для проверки.

    Создание метода проверочного утверждения

    Так как метод ValidateSum проверяет результаты метода AddNumbers, переместите его в нижнюю часть блока кода.

            public void CodedUITestMethod1()
            {
                            
                // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                this.UIMap.AddNumbers();
                this.UIMap.ValidateSum();
    
            }
    
  9. Убедитесь, что тест выполняется, с помощью метода ValidateSum(). Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T).

    На этом этапе все значения параметров заданы в соответствующих методах как константы. Теперь давайте создадим набор данных, чтобы сделать наш тест управляемым данными.

Шаг 2. Создание набора данных

  1. Добавьте текстовый файл в проект dataDrivenSample с именем data.csv.

    Добавление в проект файла с разделителями-запятыми
  2. Заполните CSV-файл следующими данными.

    Num1

    Num2

    Sum

    3

    4

    7

    5

    6

    11

    6

    8

    14

    После добавления данных этот файл должен выглядеть следующим образом.

    Заполнение CSV-файла данными
  3. Важно сохранить этот CSV-файл в правильной кодировке. В меню ФАЙЛ выберите Дополнительные параметры сохранения и выберите в качестве кодировки Юникод (UTF-8 без сигнатуры) — кодовая страница 65001.

  4. Этот CSV-файл необходимо скопировать в выходной каталог, иначе не удается запустить тест. Скопируйте его с помощью окна «Свойства».

    Развертывание CSV-файла

    Теперь, когда у нас есть созданный набор данных, следует привязать данные к тесту.

Шаг 3. Добавление привязки источника данных

  1. Чтобы привязать источник данных, добавьте атрибут DataSource в существующий атрибут [TestMethod], который находится сразу над методом теста.

            [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod]
            public void CodedUITestMethod1()
            {
                            
                // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                this.UIMap.AddNumbers();
                this.UIMap.ValidateSum();
    
            }
    
    

    Источник данных теперь доступен для использования в этом тестовом методе.

    СоветСовет

    Примеры использования других типов источников данных, таких как XML, SQL Express и Excel, см. в разделе Примеры атрибутов источников данных.

  2. Запустите тест.

    Обратите внимание, что тест выполняется в три итерации. Это происходит потому, что привязанный источник данных содержит три строки данных. Однако можно также заметить, что тест по-прежнему использует константные значения параметров и каждый раз складывает 1 и 2, получая сумму 3.

    Далее мы будем настраивать тест для использования значений из файла источника данных.

Шаг 4. Использование данных в закодированном тесте пользовательского интерфейса

  1. Добавьте using Microsoft.VisualStudio.TestTools.UITesting.WinControls в верхнюю часть файла CodedUITest.cs:

    using System;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;
    using System.Windows.Input;
    using System.Windows.Forms;
    using System.Drawing;
    using Microsoft.VisualStudio.TestTools.UITesting;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using Microsoft.VisualStudio.TestTools.UITest.Extension;
    using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard;
    using Microsoft.VisualStudio.TestTools.UITesting.WinCo757529f7ccf1163afbe8" data-source="Next, the assertion and the parameter values for the two numbers are coded to become data-driven and stored in a comma-separated value (.csv) file." xml:space="preserve">Далее утверждение и значения параметров для двух чисел кодируются в управляемые данными и сохраняются в файле с разделителями-запятыми (CSV).  

    Шаг 1. Создание закодированного теста пользовательского интерфейса

    1. Создайте проект.

      Создание проекта по кодированному тестированию пользовательского интерфейса
    2. Выберите запись действий.

      Выбор записи действий
    3. Откройте приложение "Калькулятор" и начните запись теста.

      Запись действий
    4. Сложите 1 и 2, приостановите средство записи и создайте метод теста. Позже эти значения ввода пользователя будут заменены значениями из файла данных.

      Создание метода тестирования

      Закройте построитель теста. Метод добавляется в тест.

              [TestMethod]
              public void CodedUITestMethod1()
              {
                  // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                  this.UIMap.AddNumbers();
      
              }
      
    5. С помощью метода AddNumbers() проверьте, выполняется ли тест. Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T).

      В окне обозревателя тестов отображается результат теста, показывающий, пройден тест или нет. Чтобы открыть окно обозревателя тестов, в меню ТЕСТ выберите Окна, а затем выберите Обозреватель тестов.

    6. Так как источник данных также может использоваться для значений параметров утверждения, с помощью которых тест проверяет ожидаемые значения, добавим утверждение для проверки правильности суммы двух чисел. Поместите курсор в методе теста, показанном выше, откройте контекстное меню, выберите Создать код для кодированного теста пользовательского интерфейса, а затем выберите Использовать построитель кодированных тестов ИП.

      Сопоставьте элемент управления "Текст" с калькулятором, который отображает сумму.

      Сопоставление элемента управления текста пользовательского интерфейса
    7. Добавьте утверждение, которое проверяет правильность значения суммы. Выберите свойство DisplayText, которое имеет значение 3, а затем выберите Добавить утверждение. С помощью средства сравнения AreEqual проверьте, имеет ли сравнение значение 3.

      Настройка проверочного утверждения
    8. После настройки утверждения снова создайте код из построителя. При этом создается новый метод для проверки.

      Создание метода проверочного утверждения

      Так как метод ValidateSum проверяет результаты метода AddNumbers, переместите его в нижнюю часть блока кода.

              public void CodedUITestMethod1()
              {
                              
                  // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                  this.UIMap.AddNumbers();
                  this.UIMap.ValidateSum();
      
              }
      
    9. Убедитесь, что тест выполняется, с помощью метода ValidateSum(). Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T).

      На этом этапе все значения параметров заданы в соответствующих методах как константы. Теперь давайте создадим набор данных, чтобы сделать наш тест управляемым данными.

    Шаг 2. Создание набора данных

    1. Добавьте текстовый файл в проект dataDrivenSample с именем data.csv.

      Добавление в проект файла с разделителями-запятыми
    2. Заполните CSV-файл следующими данными.

      Num1

      Num2

      Sum

      3

      4

      7

      5

      6

      11

      6

      8

      14

      После добавления данных этот файл должен выглядеть следующим образом.

      Заполнение CSV-файла данными
    3. Важно сохранить этот CSV-файл в правильной кодировке. В меню ФАЙЛ выберите Дополнительные параметры сохранения и выберите в качестве кодировки Юникод (UTF-8 без сигнатуры) — кодовая страница 65001.

    4. Этот CSV-файл необходимо скопировать в выходной каталог, иначе не удается запустить тест. Скопируйте его с помощью окна «Свойства».

      Развертывание CSV-файла

      Теперь, когда у нас есть созданный набор данных, следует привязать данные к тесту.

    Шаг 3. Добавление привязки источника данных

    1. Чтобы привязать источник данных, добавьте атрибут DataSource в существующий атрибут [TestMethod], который находится сразу над методом теста.

              [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod]
              public void CodedUITestMethod1()
              {
                              
                  // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                  this.UIMap.AddNumbers();
                  this.UIMap.ValidateSum();
      
              }
      
      

      Источник данных теперь доступен для использования в этом тестовом методе.

      СоветСовет

      Примеры использования других типов источников данных, таких как XML, SQL Express и Excel, см. в разделе Примеры атрибутов источников данных.

    2. Запустите тест.

      Обратите внимание, что тест выполняется в три итерации. Это происходит потому, что привязанный источник данных содержит три строки данных. Однако можно также заметить, что тест по-прежнему использует константные значения параметров и каждый раз складывает 1 и 2, получая сумму 3.

      Далее мы будем настраивать тест для использования значений из файла источника данных.

    Шаг 4. Использование данных в закодированном тесте пользовательского интерфейса

    1. Добавьте using Microsoft.VisualStudio.TestTools.UITesting.WinControls в верхнюю часть файла CodedUITest.cs:

      using System;
      using System.Collections.Generic;
      using System.Text.RegularExpressions;
      using System.Windows.Input;
      using System.Windows.Forms;
      using System.Drawing;
      using Microsoft.VisualStudio.TestTools.UITesting;
      using Microsoft.VisualStudio.TestTools.UnitTesting;
      using Microsoft.VisualStudio.TestTools.UITest.Extension;
      using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard;
      using Microsoft.VisualStudio.TestTools.UITesting.WinControls;
      
    2. Добавьте TestContext.DataRow[] в метод CodedUITestMethod1(), который будет применять значения из источника данных. Значения из источника данных переопределяют константы, назначенные элементам управления UIMap, с помощью элементов управления SearchProperties:

              public void CodedUITestMethod1()
              {
                              
                  // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                  this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString();
                  this.UIMap.UICalculatorWindow.UIItemWindow21.UIItem2Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num2"].ToString();
                  this.UIMap.AddNumbers();
                  this.UIMap.ValidateSumExpectedValues.UIItem2TextDisplayText = TestContext.DataRow["Sum"].ToString();
                  this.UIMap.ValidateSum();
      
              }
      

      Чтобы понять, в какие свойства поиска следует кодировать данные, используйте редактор закодированных тестов пользовательского интерфейса.

      • Откройте файл UIMap.uitest.

        Открытие редактора закодированного тестирования пользовательского интерфейса
      • Выберите действие пользовательского интерфейса и просмотрите соответствующее сопоставление элементов управления пользовательского интерфейса. Обратите внимание, как сопоставление соответствует коду, например, this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.

        Использование редактора закодированного тестирования пользовательского интерфейса для поддержки при кодировании
      • В окне свойств откройте свойства поиска. Значение Имя свойств поиска — это то, что обрабатывается в коде с помощью источника данных. Например, SearchProperties назначаются значения в первом столбце каждой строки данных: UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString();. В рамках трех итераций этот тест изменит значение Имя для свойства поиска на 3, затем на 5 и наконец на 6.

        Использование свойств поиска для поддержки при кодировании
    3. Сохраните решение.

    Шаг 5. Запуск управляемого данными теста

    • Убедитесь, что тест теперь управляется данными, запустив его еще раз.

      Вы должны увидеть, как тест проходит по трем итерациям, используя значения из CSV-файла. Проверка также должна работать, и тест в обозревателе тестов должен отображаться как пройденный.

    Руководство

    Дополнительные сведения см. в следующих документах: "Шаблоны и приемы. Тестирование при непрерывной поставке с использованием Visual Studio 2012", глава 3, "Лабораторные среды" и "Шаблоны и приемы. Тестирование при непрерывной поставке с использованием Visual Studio 2012", глава 5, "Средства тестирования".

    Ee624082.collapse_all(ru-ru,VS.120).gifЧто такое атрибуты источника данных для других типов источников данных, таких как SQL Express или XML?

    Можно использовать строки примеров источников данных из таблицы ниже, скопировав их в код, и внести необходимые настройки.

    Тип источника данных

    Атрибут источника данных

    CSV

    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod]
    

    Excel

    DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=|DataDirectory|\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]
    

    Тестовый случай в Team Foundation Server

    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.TestCase", "http://vlm13261329:8080/tfs/DefaultCollection;Agile", "30", DataAccessMethod.Sequential), TestMethod]
    

    XML

    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\data.xml", "Iterations", DataAccessMethod.Sequential), DeploymentItem("data.xml"), TestMethod]
    

    SQL Server, экспресс-выпуск

    [DataSource("System.Data.SqlClient", "Data Source=.\\sqlexpress;Initial Catalog=tempdb;Integrated Security=True", "Data", DataAccessMethod.Sequential), TestMethod]
    

    Ee624082.collapse_all(ru-ru,VS.120).gifВопрос. Можно ли использовать управляемые данными тесты в моем приложении Windows Phone?

    Ответ. Да. Закодированные тесты ИП на основе данных для Windows Phone определяются с помощью атрибута DataRow тестового метода. В следующем примере для x и y заданы значения 1 и 2 в первой итерации и значения -1 и -2 во второй итерации теста.

    [DataRow(1, 2, DisplayName = "Add positive numbers")]
    [DataRow(-1, -2, DisplayName = "Add negative numbers")]
    [TestMethod]
    public void DataDrivingDemo_MyTestMethod(int x, int y)
    
    

    Дополнительные сведения см. в разделе Использование управляемых данными закодированных тестов пользовательского интерфейса в приложениях Windows Phone.

    Ee624082.collapse_all(ru-ru,VS.120).gifВ. Почему не следует изменять файл UIMap.Designer?

    Ответ. Любые изменения кода, внесенные в файл UIMapDesigner.cs, будут переопределяться каждый раз при создании кода с помощью построителя кодированных тестов ИП. В этом примере и в большинстве случаев изменения кода, необходимые, чтобы тест использовал источник данных, можно делать в файле исходного кода теста (т. е. CodedUITest1.cs).

    Если требуется изменить записанный метод, необходимо скопировать его в файл UIMap.cs и переименовать. Файл UIMap.cs можно использовать для переопределения методов и свойств в файле UIMapDesigner.cs. Необходимо удалить ссылку на исходный метод в файле CodedUITest.cs и заменить ее именем переименованного метода.

Добавления сообщества

ДОБАВИТЬ
Показ:

Ee624082.collapse_all(ru-ru,VS.120).gifЧто такое атрибуты источника данных для других типов источников данных, таких как SQL Express или XML?

Можно использовать строки примеров источников данных из таблицы ниже, скопировав их в код, и внести необходимые настройки.

Тип источника данных

Атрибут источника данных

CSV

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod]

Excel

DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=|DataDirectory|\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]

Тестовый случай в Team Foundation Server

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.TestCase", "http://vlm13261329:8080/tfs/DefaultCollection;Agile", "30", DataAccessMethod.Sequential), TestMethod]

XML

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\data.xml", "Iterations", DataAccessMethod.Sequential), DeploymentItem("data.xml"), TestMethod]

SQL Server, экспресс-выпуск

[DataSource("System.Data.SqlClient", "Data Source=.\\sqlexpress;Initial Catalog=tempdb;Integrated Security=True", "Data", DataAccessMethod.Sequential), TestMethod]

Ee624082.collapse_all(ru-ru,VS.120).gifВопрос. Можно ли использовать управляемые данными тесты в моем приложении Windows Phone?

Ответ. Да. Закодированные тесты ИП на основе данных для Windows Phone определяются с помощью атрибута DataRow тестового метода. В следующем примере для x и y заданы значения 1 и 2 в первой итерации и значения -1 и -2 во второй итерации теста.

[DataRow(1, 2, DisplayName = "Add positive numbers")]
[DataRow(-1, -2, DisplayName = "Add negative numbers")]
[TestMethod]
public void DataDrivingDemo_MyTestMethod(int x, int y)

Дополнительные сведения см. в разделе Использование управляемых данными закодированных тестов пользовательского интерфейса в приложениях Windows Phone.

Ee624082.collapse_all(ru-ru,VS.120).gifВ. Почему не следует изменять файл UIMap.Designer?

Ответ. Любые изменения кода, внесенные в файл UIMapDesigner.cs, будут переопределяться каждый раз при создании кода с помощью построителя кодированных тестов ИП. В этом примере и в большинстве случаев изменения кода, необходимые, чтобы тест использовал источник данных, можно делать в файле исходного кода теста (т. е. CodedUITest1.cs).

Если требуется изменить записанный метод, необходимо скопировать его в файл UIMap.cs и переименовать. Файл UIMap.cs можно использовать для переопределения методов и свойств в файле UIMapDesigner.cs. Необходимо удалить ссылку на исходный метод в файле CodedUITest.cs и заменить ее именем переименованного метода.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2015 Microsoft