Automatizando testes de aplicativos desktop com Winium e SpecFlow

BRQ Tech
BRQ Tech
Published in
6 min readJan 10, 2020

Introdução

Atualmente fala-se muito em automação de testes web e móbile, 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

Clicar no menu Arquivo->Novo->Projeto

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.

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.

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 e Specflow Feature File, dar um nome para a feature e clicar no botão Adicionar.

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

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.

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

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

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

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

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

Escrito por: Robert Bruno Pereira

--

--

BRQ Tech
BRQ Tech

Paixão em transformar negócios com tecnologia