Skip to main content

Introdução

Winium e SpecFlow: saiba neste post como automatizar testes de aplicativos.
Atualmente fala-se muito em automação de testes web e mobile, são raras às vezes em que nos deparamos com projetos de automação de aplicações desktop.

Porém, em muitas empresas ainda existe muitos sistemas críticos desenvolvido neste formato.

Pensando nisso resolvi escrever este artigo para ajudar de alguma forma, equipes que precisam iniciar um projeto de automação para estes sistemas.

Neste artigo vou usar a calculadora do Windows como sistema a ser testado.

Ferramentas usadas para construir o projeto de automação

  • Winiun
  • Specflow
  • Nunit
  • C#
  • Selenium web driver
  • Inspect (Inspecionar elementos)
  • Visual Studio Pro 2019
  • Windows 10
  • Calculadora do Windows

Após uma breve introdução do que iremos abordar neste artigo e as ferramentas que serão usadas, é hora de colocar a mão na massa.

Criando o projeto

Passo 1 — Abrir o Visual Studio e criar um novo projeto de testes para Winium e SpecFlow

Clicar no menu Arquivo->Novo->Projeto

Visual Studio — Winium e SpecFlow

Dar um nome para o projeto, escolher o local onde o projeto será criado e clicar no botão OK.
A estrutura do projeto será criada usando o dot net framework 4.7.1.

Após clicar no botão OK, o projeto será criado, conforme figura abaixo.

Visual Studio - Gerenciador de soluções

Passo 2 — Adicionando as bibliotecas

Para adicionar as bibliotecas, usamos o Nuget, que é o repositório de bibliotecas da Microsoft.

Clicar com o botão direito em cima do projeto e clicar no menu GERENCIAR PACOTES DO NUGET

SpecFlow,
Winiun,
Nunit,
SpecRun.Runner

OBS.: por padrão, ao criar o projeto é adicionado o MSTest, desinstalar esta biblioteca.

Após instalação das bibliotecas, o packages.config deve ficar como o da figura abaixo.

packages.config

Passo 3 — Criando features de teste

Com o ambiente preparado, podemos começar a escrever as features com os casos de testes.
Para criar uma feature, deve clicar com o botão direito em cima do projeto, menu Adicionar->Novo Item

Na janela que abrir, selecionar SpecFlow em ITENS DO VISUAL STUDIO Specflow Feature File, dar um nome para a feature e clicar no botão Adicionar.

Winium e SpecFlow

Após clicar em Adicionar, podemos notar que na estrutura do projeto consta um novo arquivo.

Solução Winium e SpecFlow

Clicar duas vezes na Feature para abri-la caso não esteja aberta e escrever o caso de testes utilizando a linguagem Gherkin.
No exemplo mostrado na figura abaixo, estou utilizando uma técnica chamada de Data Driven, que é a técnica de executar várias vezes o mesmo cenário de teste para diversos valores.

linguagem Gherkin

A escrita do caso de teste esta concluída, próximo passo é mapear os objetos da aplicação que será testada.

Passo 4 — Criar os Steps de Teste

Para criar os Steps de teste, basta clicar com o botão direito dentro da tela da feature e clicar em Generate Step Definitions

 Generate Step Definitions

Após clicar em Generate Step Definitions aparecerá a seguinte tela.

Generate Step Definitions

Clicar no botão Generate e escolher o local onde será criado o arquivo.

Salvando projeto Winium e SpecFlow

Após escolher o local, basta clicar em salvar.
O arquivo será criado na estrutura do projeto.

Estrutura do projeto Winium e SpecFlow

Ao abrir o arquivo, devemos ver uma classe parecida com o da figura abaixo.

Arquivo public class

Com os steps criados, próximo passo é inspecionar os objetos e com o uso do driver do winium criar os comandos que vão interagir com a calculadora.

Inspecionar objeto

Para inspecionar os objetos, utilizarei a ferramenta nativa do Windows 10 chamada Inspect.exe, que pode ser encontrada no seguinte endereço.
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64

Para iniciar a inspeção, abra a aplicação que será testada, neste abrirei a calculadora e posteriormente o Inpsect.

OBS.: caso abrir o Inspect antes de abrir a aplicação que será testada, dentro do inspect deve clicar no menu Action->Refresh para que a aplicação que será testada fique visível dentro da ferramenta.
Caso abrir a aplicação que será testada antes do inspect não precisa fazer um refresh no inspect.

A tela do inspect deve ficar parecida com o da figura abaixo.
Note que consta a calculadora na área de trabalho do inspect.

Tela do Inspect

Neste exemplo utilizaremos como lacator o ID dos objetos.

Para descobrir o ID de cada objeto, devemos clicar no sinal de + do lado da calculadora.

ID do objeto

Clicar em cima do objeto que desejamos descobrir o ID.
Do lado esquerdo da tela do Inspect, podemos ver todos os detalhes do objeto.
O valor do ID fica em AUTOMATIONID.

AUTOMATIONID

Para todos os objetos que serão usados no teste, devemos fazer este tipo de inspeção.

Agora que já sabemos como inspecionar os objetos e pegar o identificador, podemos começar a escrever o código que vai interagir com a calculadora.

Para começar a codificação, devemos abrir a classe de steps “CalculadoraSteps.cs” e no primeiro método inserir os comandos que vão abrir a calculadora.

Steps do teste

No restante dos steps, serão colocados os comandos que vão interagir com a calculadora.
Note, que aqui colocamos os identificadores dos objetos, onde iremos clicar e ou capturar o resultado do calculo.

Steps do teste do projeto Winium e SpecFlow

Como boa prática, devemos validar o resultado do calculo, para verificar se o sistema está realmente funcionando.
Para isso temos um step especifico para fazer essa validação, conforme print abaixo.

Resultado do teste

OBS: Como estamos trabalhando com Data Driven, alguns métodos recebem valores como parâmetro.

Passo 5 — Execução dos testes

Neste momento a automação esta finalizada, podemos compilar o projeto para verificar se deu algum erro.
Caso não tenha erros, podemos verificar do lado esquerdo em Gerenciador de Testes, os casos de testes criados.

Execução do teste

Agora, basta executar os casos de testes e verificar o resultado da execução.
Para executar os testes, no Gerenciador de Testes, clica em EXECUTAR TUDO os testes começam a serem executados, um por um.

Após a execução dos testes, podemos ver o resultado no Gerenciador de Testes.

gerenciador de testes

Um detalhe interessante, como estamos usando o SpecFlow, no final de cada execução é gerado um relatório detalhado, na figura abaixo, pode ser visto uma pequena parte do relatório.

Project test execution Report

Robert Bruno Pereira é Analista de Teste na BRQ

Entre em contato com a BRQ e saiba mais.

BRQ fale conosco