Compartilhar via


Criando um teste de interface do usuário codificado controlado por dados

Para testar diferentes condições, você pode executar os testes várias vezes com valores de parâmetros diferentes.Os testes de interface do usuário codificados controlados por dados são uma forma conveniente de fazer isso.Definir valores de parâmetro em uma fonte de dados e cada linha da fonte de dados é uma interação do teste de interface do usuário codificado.O resultado geral do teste será baseado no resultado para todas as iterações.Por exemplo, se uma interação de teste falhar, o resultado geral do teste terá falhas.

Requisitos

  • Visual Studio Ultimate, Visual Studio Premium

Criar um teste de interface do usuário codificado controlado por dados

Este exemplo cria um teste de interface do usuário codificado que é executado no aplicativo Calculadora Windows.Ele adiciona dois números juntos e usa uma declaração para validar se a soma está correta.Em seguida, os valores de parâmetro e de declaração para os dois números são codificados para se tornarem controlados por dados e armazenados em um arquivo (.csv) de valores separados por vírgula.

Etapa 1 - Criar um teste de interface do usuário codificado

  1. Criar um projeto.

    Criar um projeto de teste de IU codificado

  2. Escolha registrar as ações.

    Deseja registrar as ações

  3. Abra o aplicativo Calculadora e inicie a gravação do teste.

    Registrar ações

  4. Adicione 1 mais 2, pause o gravador e gere o método de teste.Posteriormente, substituiremos os valores dessa entrada do usuário por valores de um arquivo de dados.

    Método de teste Genetate

    Feche o construtor de teste.O método é adicionado ao teste:

            [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. Use o método AddNumbers() para verificar se o teste é executado.Coloque o cursor no método de teste mostrado acima, abra o menu de contexto e escolha Executar Testes.(Atalho de teclado: Ctrl + R, T).

    O resultado do teste que mostra se o teste passou ou falhou é exibido na janela do Gerenciador de Testes.Para abrir a janela do Gerenciador de Testes, no menu TESTE, escolha Windows e, em seguida, escolha Gerenciador de Testes.

  6. Como uma fonte de dados também pode ser usada para valores de parâmetro de declaração — que são usados pelo teste para verificar os valores esperados — vamos adicionar uma declaração para validar se a soma de dois números está correta.Coloque o cursor no método de teste mostrado acima, abra o menu de contexto e escolha Gerar Código para Teste de Interface do Usuário Codificadoe, em seguida, Usar Construtor de Teste de Interface do Usuário Codificado.

    Mapeie o controle de texto na Calculadora que exibe a soma.

    Mapear o controle de texto da interface do usuário

  7. Adicione uma declaração que valida que o valor da soma está correto.Escolha a propriedade DisplayText que possui o valor 3 e escolha Adicionar Declaração.Use o comparador AreEqual e verifique se o valor de comparação é 3.

    Configurar a declaração

  8. Após configurar a declaração, gere o código do construtor de novamente.Isso cria um novo método para a validação.

    Gerar o método de asserção

    Como o método ValidateSum valida os resultados do método AddNumbers, mova-o para a parte inferior do bloco de códigos.

            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. Verifique se o teste é executado usando o método ValidateSum().Coloque o cursor no método de teste mostrado acima, abra o menu de contexto e escolha Executar Testes.(Atalho de teclado: Ctrl + R, T).

    Neste ponto, todos os valores de parâmetro são definidos em seus métodos como constantes.Em seguida, vamos criar um conjunto de dados para fazer com que nosso teste seja controlado por dados.

Etapa 2 - Criar um conjunto de dados

  1. Adicione um arquivo de texto ao projeto dataDrivenSample denominado data.csv.

    Adicionar um arquivo de valores separados por vírgula ao projeto

  2. Preencha o arquivo. csv com os seguintes dados:

    Núm1

    Núm2

    Sum

    3

    4

    7

    5

    6

    11

    6

    8

    14

    Depois de adicionar os dados, o arquivo deve aparecer como o seguinte:

    Preencher o.Arquivo CSV com dados

  3. É importante salvar o arquivo. csv usando a codificação correta.No menu FILE, escolha Opções Avançadas de Salvamento e Unicode (UTF-8 sem assinatura) – Página de código 65001 como a codificação.

  4. O arquivo .csv deverá ser copiado para o diretório de saída ou não será possível executar o teste.Use a janela Propriedades para copiá-lo.

    Implantar o.Arquivo CSV

    Agora que criamos o conjunto de dados, vamos associar os dados ao teste.

Etapa 3 – Adicionar associação de fonte de dados

  1. Para associar a fonte de dados, adicione um atributo DataSource dentro do atributo [TestMethod] existente que está imediatamente acima do método de teste.

            [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();
    
            }
    

    A fonte de dados agora está disponível para ser usada nesse método de teste.

    DicaDica

    Consulte amostras de atributos de fonte de dados na seção de P e R para obter amostras sobre como usar outros tipos de fonte de dados como XML, SQL Express e Excel.

  2. Execute o teste.

    Observe que o teste é executado por meio de três iterações.Isso ocorre porque a fonte de dados que foi associada continha três linhas de dados.No entanto, você observará também que o teste ainda está usando os valores de parâmetro constante e está adicionando 1 + 2 com uma soma de 3 a cada vez.

    Em seguida, configuraremos o teste para usar os valores no arquivo de fonte de dados.

Etapa 4 – Usar os dados no teste de interface do usuário codificado

  1. Adicione using Microsoft.VisualStudio.TestTools.UITesting.WinControls à parte superior do arquivo 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. Adicione TestContext.DataRow[] no método CodedUITestMethod1() que aplicará valores da fonte de dados.Os valores de fonte de dados substituem as constantes atribuídas aos controles UIMap usando os controles 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();
    
            }
    

    Para descobrir quais propriedades de pesquisa nas quais codificar os dados, use o Editor de Teste de Interface do Usuário Codificados.

    • Abra o arquivo UIMap.uitest.

      Abra o Editor de testes UI codificados

    • Escolha a ação da interface do usuário e observe o mapeamento de controle da interface do usuário correspondente.Observe como o mapeamento corresponde ao código, por exemplo, this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.

      Use o Editor de testes de UI codificados para ajudá-lo em código

    • Na janela Propriedades, abra Propriedades de Pesquisa.O valor Nome das propriedades de pesquisa valor é o que está sendo manipulado no código usando a fonte de dados.Por exemplo, o SearchProperties está sendo atribuído aos valores na primeira coluna de cada linha de dados: UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString();.Para as três iterações, este teste irá alterar o valor Nome da propriedade de pesquisa para 3, depois 5 e finalmente 6.

      Use as propriedades de pesquisa para ajudar na codificação

  3. Salve a solução.

Etapa 5 – Executar o teste controlado por dados

  • Execute o teste novamente para verificar se o teste agora é controlado por dados.

    Você deve ver o teste ser executado por meio das três iterações usando os valores no arquivo .csv.A validação deve funcionar bem e o teste deve ser exibido conforme passado no Gerenciador de Testes.

Diretriz

Para obter informações adicionais, consulte Testando para Entrega Contínua com o Visual Studio 2012 – Capítulo 2: Teste da Unidade: Testando o Interior e Testando para Entrega Contínua com o Visual Studio 2012 – Capítulo 5: Automatizando os Testes do Sistema

Perguntas e respostas

Quais são os atributos de fonte de dados para outros tipos de fonte de dados, como SQL Express ou XML?

Você pode usar as cadeias de caracteres de fonte de dados de amostra na tabela abaixo ao copiá-los em seu código e fazendo as personalizações necessárias.

Tipo de Fonte de Dados

Atributo de Fonte de Dados

CSV

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

Excel

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

Caso de teste no 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 Express

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

P: posso usar testes direcionados a dados em meu aplicativo do Windows Phone?

R: Sim.Os testes de IU codificados e orientados a dados para Windows Phone são definidos com o uso do atributo DataRow em um método de teste.No exemplo a seguir, x e y usam os valores de 1 e 2 na primeira iteração e de -1 e -2 na segunda iteração do teste.

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

Para obter mais informações, consulte controlados por dados de uso da interface do usuário testes codificados nos aplicativos do Windows Phone.

P: Por que não posso modificar o código do arquivo UIMap.Designer?

R: Todas as alterações de código que você fez no arquivo UIMapDesigner.cs serão substituídas cada vez que você gerenciar o código usando o UIMap - Construtor de Teste de Interface do Usuário Codificado.Neste exemplo e na maioria dos casos, as alterações de código necessárias para habilitar um teste para usar uma fonte de dados podem ser feitas no arquivo de código-fonte do teste (ou seja, CodedUITest1.cs).

Se você tiver de modificar um método gravado, copie-o para o arquivo UIMap.cs e renomeie-o.O arquivo UIMap.cs pode ser usado para substituir métodos e propriedades no arquivo UIMapDesigner.cs.Você deve remover a referência para o método original no arquivo Coded UITest.cs e substituí-la pelo nome do método renomeado.

Consulte também

Referência

UIMap

Assert

Conceitos

Verificando código pela Automação da Interface do Usuário

Práticas recomendadas para testes de IU codificados

Configurações e plataformas compatíveis para testes de IU codificados e gravações de ações

Outros recursos

Criando testes de UI codificados