• Nenhum resultado encontrado

TESTES AUTOMATIZADOS Manual Básico

N/A
N/A
Protected

Academic year: 2022

Share "TESTES AUTOMATIZADOS Manual Básico"

Copied!
14
0
0

Texto

(1)

TESTES

AUTOMATIZADOS Manual B sico á

Por Giovano da Cruz Balestra

(2)

Sumário

1.INTRODUÇÃO...4

2.O EXT.NET...5

3.HELLO WORLD DO WEBDRIVER SELENIUM...6

4.Colocando a Mão na Massa...7

5.AUTOMAÇÃO USANDO O JENKINS...14

(3)

1. INTRODUÇÃO

Esse documento, tem como objetivo, nortear o uso das classes e métodos desenvolvidos pela Equipe 5 e Equipe 6, para realizar testes automatizados usando o webdriver selenium e códigos escritos em C#.

Nesses últimos meses as equipes trabalharam, realizando análises e pesquisas, que motivadas pela busca de excelência no desenvolvimento de software, chegaram aos resultados disponíveis nesse documento. São muitos os métodos e recursos disponíveis pelo Selenium Webdriver+C#, foram realizados vários testes, mas recursos ainda podem ser melhorados, por isso esse documento, pode sofrer alterações com o passar do tempo.

(4)

2. 0O EXT.NET

O Ext.net é um dos maiores, problemas encontrados, para realizar testes automatizados no sistema Sigen+, devido ao seu dinamismo, isso mesmo, olhando do lado do programador isso é algo bom, entretanto para o programador de teste, um elemento ter id que muda a cada acesso é uma dor de cabeça enorme, ou ter elementos que ficam escondidos e só aparecem após uma ação de clique ser realizada também, como é o caso das caixas de seleção dentro de células nos grids.

O webdriver selenium, possui uma enorme variedade de funções programadas para varrer os documentos web buscando os elementos solicitados, a forma mais simples e eficaz é realizar a busca através do id, mas existem outras formas, como pelo name, xpath, css, etc.

Algumas vezes a forma convencional não conseguem alcançar os resultados, a solução encontrada foi partir para execução de funções em javascript. Acreditamos ter superado senão todas, a maioria dificuldades com relação ao Ext.net, realizamos testes com componentes que podemos considerar complexos, como por exemplo o componente acordeon, que pode possuir vários grids ou fieldsets, outro bom exemplo são grids que possibilitam o anexo de documentos e fotos conforme demonstrado na imagem e códigos abaixo.

Código usado para inserir as imagens no Grid Fotos da Tela Laudo de Vistoria Final GetController().UploadFile("fuAnexoFoto-file",

System.IO.Directory.GetCurrentDirectory()+"//Anexos//Chrysanthemum.jpg");

Thread.Sleep(2000);

GetController().UploadFile("fuAnexoFoto-file",

System.IO.Directory.GetCurrentDirectory() + "//Anexos//Koala.jpg");

Thread.Sleep(5000);

Figura 1: Grid Fotos da Tela Laudo de Vistoria Final

(5)

3. HELLO WORLD DO WEBDRIVER SELENIUM

Nesse capítulo será demonstrado como criar um teste automatizado usando o Selenium Webdriver + C#, o primeiro passo é entender a tela que será testada, um programador de testes tem que saber quais são as funções de cada elemento e o resultado esperado, o webdriver selenium pode testar tanto se o elemento(buttom, input, label, etc.) existe, como também se ele está funcionando normalmente, para isso basta que o teste possua em suas codificações os cliques, verificações e escritas exigidas. Para melhorar a experiência de programação dos testes e que os mesmos estejam o mais próximo do idealizado a equipe sempre gera um plano de testes em paralelo com a criação das telas, conforme imagem abaixo.

Figura 2: Parte de um Plano de teste -Tela Grade de Produtos Fabricados(rotulagem)

(6)

4. COLOCANDO A MÃO NA MASSA

Para começar sugerimos uma tela simples onde o usuário precisaria criar, ler, atualizar e deletar determinados registros, o famoso CRUD.

1º Passo – Criar uma pasta com o nome da tela a ser testada

2º Passo – Criar as Classes principais de teste, que para essa tela são três:

CorControler.cs CorTest.cs BVCor.cs

3º Passo – Programar a Classe CorController.cs seguindo os comentários em verde no código.

//Declaração das usings using Sigen.Sigen.Tela;

using Sigen.util;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading;

using System.Threading.Tasks;

using Sigen.Sigen.Usuario;

using Sigen.Sigen.Cadastro;

(7)

using Microsoft.VisualStudio.TestTools.UnitTesting;

using Sigen.Base;

using OpenQA.Selenium;

//Criação do namespace namespace Sigen.Inspecao.Cor {

//Criar um classe que herda do CadastroBasico controller class CorController : CadastroBasicoController

{

//Método Construtor

public CorController(Driver.BROWSER browser) : base(browser) {

}

#region CRUD

//Cria um método que testa a criação de um novo registro

public override void Create(BVUsuario usuario, Model.BusinessValue value) {

//Procura um caixa de texto pelo id e insere uma informação dentro dela PutText("nmCodigoDescricao", "Roxa - Teste");

//Clica no botão F10 - Salvar ButtonSave();

//Armazena o numero O id após inserir os registros no bd BVCor cor = (BVCor)value;

int idCor = 0;

if (int.TryParse(GetController().GetValue("idCodigoDescricao"), out idCor)) cor.idCor = idCor;

}

//Cria um método que verifica se os dados salvos retornaram corretamente do banco public override void Read(BVUsuario usuario, Model.BusinessValue value)

{

//Chama o teste para criar um registro Create(usuario, value);

//Chama o teste de pesquisa Search(usuario, value);

(8)

//Verifica se o valor Inserido foi o mesmo retornado do Banco

Assert.AreEqual(GetController().GetValue("nmCodigoDescricao"), "Roxa - Teste");

}

//Já esse Método faz a atuliazação da informações salvas anteriormente public override void Update(BVUsuario usuario, Model.BusinessValue value) {

//Chama o teste de pesquisa Search(usuario, value);

//Essa Linha chama o método que procura um caixa de texto pelo id e insere uma informação dentro dela

PutText("nmCodigoDescricao", "Roxa - Teste Alterada");

//Ja essa linha chama a método que clica no botão F10 - Salvar ButtonSave();

}

//No método abaixo realizamos a exclusão do registro após seu cadastro ter sido realizado

public override void Delete(BVUsuario usuario, Model.BusinessValue value) {

//Chama o teste de pesquisa Search(usuario, value);

//Clica no botão delete, aceita a mesagem e verifica se apareceu a mensagem de sucesso da exclusão

ButtonDelete();

} #endregion

//Esse é o metodo que realiza a pesquisa de um registro previamente cadastrado public override void Search(BVUsuario usuario, Model.BusinessValue value) {

//Chama o teste para criar um novo registro Create(usuario, value);

//Busca o id gerado anteriormente BVCor idcor = (BVCor)value;

//Clica do Botão F2 - Pesquisar ButtonSearch();

(9)

//insere na caixa de pesquisa por id, a informação PutText("id_codigo_descricao", idcor.idCor.ToString());

//Clica no botão Pesquisar da Windows Pesquisa ButtonSearchWindow();

//Aguarda por 2 segundos, os registros irem pro grid Thread.Sleep(2000);

//Seleciona o último registro cadastrado ExecuteScript(

"var rec = gridSearch.store.getCount();

gridSearch.getSelectionModel().selectRow(rec-1);");

//Clica no botão Selecionar

ButtonSearchWindowSelected();

}

//Usado para definir a URL da tela que irá ser acessada.

public override String Tela() {

return "/DSA.Tabelas/Cor";

}

//Esse metodo não esta sendo utilizado nesse teste

public override void Save(BVUsuario usuario, Model.BusinessValue value) {

} } }

(10)

4º Passo – Programar a Classe CorTest.cs

Essa classe é responsável em fazer a comunicação com o programa Vstest.exe, para esse exemplo é preciso do seguinte código.

//Declaração das usings using System;

using Microsoft.VisualStudio.TestTools.UnitTesting;

using Sigen.util;

using OpenQA.Selenium;

using Selenium.login;

using Sigen.Sigen.Tela;

using Sigen.Sigen.Usuario;

using Sigen.Sigen.Cadastro;

using Sigen.Model;

using Sigen.Base;

//Criação do namespace namespace Sigen.Inspecao.Cor

{

//Início da Classe principal de teste [TestClass]

//Recebe por herança as funcionalidades do CodicoDescriçãoTest public class CorTest : CodigoDescricaoTest

{

public CorTest() {

value = new BVCor();

}

//Inicializa o navegador e da o start no teste

protected override BusinessController GetController() {

return new CorController(Driver.BROWSER.CHROME);

}

//Retorna ou envia valores entre os métodos o valor protected override BVTela GetValue()

{

return value;

(11)

}}

5º Passo – Programar a Classe BVCor.cs

//Declaração das usings using Sigen.Sigen.Tela;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

//Criação do namespace namespace Sigen.Inspecao.Cor {

//Classe herda as funcionalidades do BVTela public class BVCor : BVTela

{

//Métodos de get e set dos elementos a serem armazenados ou consultados na execução dos Testes

public int idCor {get;set;}

} }

(12)

6º passo – Executar os Testes

Enquanto o teste é escrito pode ser necessário ir verificando se ele está conseguindo realizar os comandos programados, para isso utilizamos a Windows Test Explorer. A figura abaixo mostra como exibir ou ocultar essa janela.

O resultado com ele estiver aparecendo será a Window exibida na Figura 4.

O funcionamento dessa janela é simples, basta selecionar o teste, clicar no menu Run, teste Figura 3: Acessando a Window Test Explorer

(13)

selecionado, ou usar o clique com o botão direito no teste escolher entre o modo Debug ou Run. Pronto após programar e testar seu teste irá ajudá-lo a ter sua aplicação sem precisar repetir os cansativos movimentos de cliques e escrita de textos, uma vez escritos poderá rodar o teste N vezes.

5. AUTOMAÇÃO USANDO O JENKINS

Possuímos, um servidor com o Jenkins instalado, esse sistema serve para agendar serviços e eventos que precisam ser iniciados de forma automática, com um horário pré-agendado. Ele irá servir para realizar a automação de nessa automatização.

Como?

1º Copiara o Trunk diariamente para a base de testes automatizados, via SVN.

2º Realizara o Build dessa cópia.

3º Irá rodar os testes escritos e comitados até o dia anterior.

Quando?

Os teste irão rodar diariamente, as 2:00 hs da manhã, todos os dias da semana.

Esse Ocorrer falhas?

- Caso esses testes apresentem algum problema para ser executados, o próprio jenkins dispara um e-mail para alertar sobre os erros encontrados.

Como tenho acesso?

- Esse sistema já está integrado com o Active Directory, portanto todos poderão ter acesso, usando suas senhas de produção. Pode ser acessado pelo endereço: cnt-gerti-36148:8080.

Figura 4: Tela de Acesso ao Jenkins

(14)

Referências

Documentos relacionados

Assim, com o aprofundamento e a apreciação das perspectivas educacionais, esta estratégia não apenas vai contribuir para uma estruturação inter-pessoal

alunos. Entendemos que essas significações medeiam suas necessidades frente à educação de alunos com PAEE, de modo que esta atividade aconteça o mais próximo do

Para obter informações detalhadas sobre os recursos e componentes do computador, como gerenciamento de energia, unidades, memória, segurança e outros recursos, clique em

O Orçamento do Estado para 2006 aprovado pela Assembleia da República permite ir mais longe como provam os dados constantes do quadro II, e se o governo não vai mais longe é

Diferentemente do prazo fixado para pagamento dos precató- rios, as RPVs são depositadas pelos Tribunais Regionais Federais nos bancos ofi- ciais, mensalmente, obedecido o prazo de

Varr edura TCP Window ( cont inuação) ACK- win manipulado Não Responde ACK- win manipulado ICMP Tipo 3 Firewall Negando Firewall Rejeitando Scanner de Porta... Var r edur a FI N/

Na semana entre os dias 7 e 11 de maio, o mercado deve continuar a acompanhar os mesmos pilares (leia-se Europa) para determinar o desempenho do período, acompanhando os

15.6 - Os pedidos de esclarecimentos referentes a este processo licitatório deverão ser enviados ao pregoeiro, até três dias úteis anteriores à data fixada para abertura da