33
Suricato – Automatizando Testes de Interface Leonardo – Analista de Testes 05 DE DEZEMBRO DE 2014 Fernando – Analista de Testes

Tech Day Softplan - Automatizando Testes de Interface

Embed Size (px)

Citation preview

Page 1: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Automatizando Testes de Interface

Leonardo – Analista de Testes

0 5 D E D E Z E M B R O D E 2 0 1 4

Fernando – Analista de Testes

Page 2: Tech Day Softplan - Automatizando Testes de Interface

Introdução

T E C H D A Y | T E S T E S D E S O F T W A R E

• UNIC

• Sistemas Legados

• Teste Ideal

• TesteNG

• Selenium

• Suricato

• Conclusão - Gerenciamento de Falhas

• Desafios Futuros

Page 3: Tech Day Softplan - Automatizando Testes de Interface

UNIC – Unidade Indústria da Construção

• Software Integrado de Gestão para a Indústria da Construção

• 100% WEB

• Mais de 2mil clientes

• Público-alvo: construtoras, incorporadoras, empreiteiras,instaladoras, entre outros

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 4: Tech Day Softplan - Automatizando Testes de Interface

Sistemas Legados

Os sistemas legados podem vir a apresentar uma lista bem longade não-conformidades, tais como: projetos não-extensíveis;código complicado, documentação pobre ou inexistente; e umhistórico de modificações mal gerido. (PRESSMAN, 2006)

ManutençãoSubstituiçãoModernizaçãoCarência de TestesRastreabilidade

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 5: Tech Day Softplan - Automatizando Testes de Interface

Pirâmide de Testes Ideal

UI

INTEGRAÇÃO

UNITÁRIOS

T E C H D A Y | T E S T E S D E S O F T W A R E

-M

anu

ten

ção

+

-V

elo

cid

ade

+

Page 6: Tech Day Softplan - Automatizando Testes de Interface

Pirâmide de Testes Ideal – UNIC

UI

INTEGRAÇÃO

UNITÁRIOSPor que?

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 7: Tech Day Softplan - Automatizando Testes de Interface

Suricato

Também conhecido como o sentinela da savana, vivem emcolônias de até 40 indivíduos. Dentro do grupo, os animaisrevezam-se nas tarefas de vigia e proteção dos indivíduos dacomunidade.

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 8: Tech Day Softplan - Automatizando Testes de Interface

Suricato

• Biblioteca Keyword Driven para facilitar a automação de testes

• Desenvolvido em Java usando Selenium

• Gerenciado através do Maven

• Relatórios e screenshots de erros

• Automação para não programadores

• Encapsula e abstrai a implementação do teste

• Alta reutilização de métodos

• Maior velocidade no desenvolvimento de testes

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 9: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Bases de DadosEs

taçã

o

•Repositório

•Cópia do repositório

Serv

ido

r

•Repositório

•Cópia do repositório

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 10: Tech Day Softplan - Automatizando Testes de Interface

Suricato – TestNG

• Verificação de código seguro em um ambiente multithread

• Suporta testes com data-driven (@DataProvider)

• Suporte a parâmetros

• Dependência de métodos e grupos de métodos de testes

• Suporte para ferramentas e plugins (Eclipse, IDEA, Maven, etc)

• Relatório de execução de testes - Maven Surefire Plugin

O TestNG é um framework de testes inspirado no Junit e NUnit,mas com novas funcionalidades, tornando este framework maiseficiente e fácil de usar.

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 11: Tech Day Softplan - Automatizando Testes de Interface

TestNG – Relatório de Execução

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 12: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Selenium

Selenium se refere ao Acceptance Testing (Teste de Aceitação)que envolve rodar testes em um sistema finalizado. Os testesrodam diretamente em um browser, exatamente como o usuáriofaria.

• API de criação/execução de testes automatizados em sistemasweb

• Testes de compatibilidade entre browser e plataformasdiferentes

• Testes de funcionalidades da aplicação web

• Suporte a várias linguagens de programação

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 13: Tech Day Softplan - Automatizando Testes de Interface

Seleniumpublic class SeleniumTest{

private static final String TITULO = "Tech Day";

private static final String TEMA = "Testes de Software";

WebDriver driver = new ChromeDriver();

SeleniumMenu menu = new SeleniumMenu(driver);

@Test

public void loginTest() throws Exception {

SeleniumPage teste = menu.acessaPagina();

teste.preencheLogin("nome.sobrenome");

teste.preencheSenha("mudar123");

teste.entrar();

teste.verificaCabecalho(TITULO);

List<String> resultadosEsperados = Arrays.asList(TEMA);

assertEquals(resultadosEsperados, teste.carregarGrid());

}

}

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 14: Tech Day Softplan - Automatizando Testes de Interface

Seleniumpublic class SeleniumPage{

private final WebDriver driver;

WebDriver driver = new ChromeDriver();

public void preencheLogin(String nmLogin) {

driver.findElement(By.name("id_login")).sendKeys(nmLogin);

}

public void preencheSenha(String vlSenha) {

driver.findElement(By.name("id_senha")).sendKeys(vlSenha);

}

public void entrar() {

driver.findElement(By.id("botao")).click();

this.waitForPageToLoad();

}

public void verificaCabecalho(String nmCabecalho) {

assertTrue(driver.findElement(By.cssSelector("BODY")).

getText().matches("^[\\s\\S]*"+nmCabecalho+"[\\s\\S]*$"));

}

...

}

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 15: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Estrutura

Fluxos Automatizados

Suricato

Selenium TestNG

Dri

ver

XM

L

An

no

tati

on

s

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 16: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Keywords

T E C H D A Y | T E S T E S D E S O F T W A R E

Preenchimento

•digitaNoCampo("Título", "123");

•selecionaValor("Tipo de correção*", "Anual");

•digitaNoCampoDaGrid("Apropriação", 1, "Valor", "3");

Ação•clicaNoBotao("Salvar");

•clicaNoLink("Clientes");

Verificação

•verificaMensagemDeSucesso();

•verificaCampoComValor("Título", "123");

•comparaRelatorio("relatorioTitulo01.pdf", "relatorioTitulo01.pdf");

Page 17: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Evidencia de Falha

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 18: Tech Day Softplan - Automatizando Testes de Interface

Equipe COMCRC

Set/20132 Analistas de Sistemas8 Analistas Desenvolvedores2 Analista de Testes

SITUAÇÃO DE ERROS DA EQUIPE

Estoque Média/Semana

+ 127 ± 24

Comercial

Financeiro

Sienge

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 19: Tech Day Softplan - Automatizando Testes de Interface

Case – Suricato

Planejamento

Especificação

Implementação

Execução

Conclusão

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 20: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Planejamento de Testes

TABELA DE ERROS POR FUNCIONALIDADE

Funcionalidade Ocorrências % por ocorrência

Título 30 4,3

Inclusão de Baixa 61 8,7

Repactuação 54 7,7

Cobrança Escritural 111 15,9

Solicitação de Contratos 18 2,6

Cancelamento de Contratos 36 5,2

... ... ...

Total de Ocorrências 698 100

Período de captura de erros: 3 meses

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 21: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Especificação de Testes

dt_baixa fl_calcVlPresente cd_titulo fl_apresSomenAmortizacao ...

01/02/2013 false 279mensal false ...

01/01/2013 true 281anual true ...

10/12/2012 282anualResid ...

dt_baixa fl_calcVlPresente cd_titulo fl_apresSomenAmortizacao ...

01/02/2013 false 279mensal false ...

01/01/2013 false 281anual true ...

... ... ... ... ...

Tabela de pares

Ferramentas utilizadas: Hexawise, Pairwise, etc

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 22: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Implementação de Testespublic class ExtratoClienteTest {

MenuPage menuPage = new MenuPage();

@BeforeGroups("clienteComum")

public void setUp() {

acessaBase("SiengeCrcTesteInterno", 0);

}

@Test(groups = "clienteComum", priority = 1)

public void gerarExtratoClienteCaso01() {

ExtratoClientePage emitirExtrato = menuPage.extrato();

emitirExtrato.preencherTitulo("123");

emitirExtrato.preencherDtCorrecao("01/01/2013");

emitirExtrato.clicarNoBotaoVisualizar();

comparaRelatorio("relatorio01.pdf", "relatorio.pdf");

}

}

TestPage

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 23: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Implementação de Testespublic class ExtratoClientePage {

public void preencherTitulo(String cdTitulo) {

digitaNoCampo("Título", cdTitulo);

esperaAjaxCarregar();

}

public void preencherDtCorrecao(String dtCorrecao) {

digitaNoCampo("Correção até*", dtCorrecao);

}

public void clicarNoBotaoVisualizar() {

clicaNoBotao("Visualizar");

esperaPaginaCarregar();

}

} PageTest

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 24: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Execução de Testes

Relatório de Extrato de Cliente – Consulta do extrato

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 25: Tech Day Softplan - Automatizando Testes de Interface

Suricato – Execução de Testes

Relatório de Extrato de Cliente – Relatório para comparação

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 26: Tech Day Softplan - Automatizando Testes de Interface

Conclusão – Processo de Automação

Período: 15 meses

Horas/Mês: ±47,1

Testes: 685 + 224

Defeitos Prevenidos: +190

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 27: Tech Day Softplan - Automatizando Testes de Interface

Conclusão – Defeitos Prevenidos

0

50

100

150

200

250

set-13 out-13 nov-13 dez-13 jan-14 fev-14 mar-14 abr-14 mai-14 jun-14 jul-14 ago-14 set-14 out-14 nov-14

Falhas acumuladas

Falhas

4 14 15 4 16 26 8 13 15 7 21 18 6 10 12

4 18 33 37 53 79 87 100 115 122 143 161 167 178 190

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 28: Tech Day Softplan - Automatizando Testes de Interface

Conclusão – Eficácia dos Testes

0

5

10

15

20

25

30

35

40

45

set-13 out-13 nov-13 dez-13 jan-14 fev-14 mar-14 abr-14 mai-14 jun-14 jul-14 ago-14 set-14 out-14 nov-14

% dos defeitos detectados pela automação

5,1 15,7 25 7,5 33,3 27,6 15,6 20 26,3 10 42,8 40 16,2 20 42,8

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 29: Tech Day Softplan - Automatizando Testes de Interface

Conclusão – Histórico de Erros

0

5

10

15

20

25

30

35

set/13 out/13 nov/13 dez/13 jan/14 fev/14 mar/14 abr/14 mai/14 jun/14 jul/14 ago/14 set/14 out/14 nov/14

Média semanal

24 20 19 16 15 30 18 17 15 18 10 10 13 15 10

- 58%

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 30: Tech Day Softplan - Automatizando Testes de Interface

Conclusão – Histórico de Erros

0

20

40

60

80

100

120

140

160

set/13 out/13 nov/13 dez/13 jan/14 fev/14 mar/14 abr/14 mai/14 jun/14 jul/14 ago/14 set/14 out/14 nov/14

Estoque de erros

127 150 151 125 95 111 92 105 79 73 47 40 20 33 6

- 96%

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 31: Tech Day Softplan - Automatizando Testes de Interface

Cenário Atual

T E C H D A Y | T E S T E S D E S O F T W A R E

• Queda na quantidade de erros reportados pelo cliente

• Baixa quantidade de erros no estoque da equipe

• Prioridade no desenvolvimento de novas implementações

• Maior confiança na refatoração de código legado

• Integração da automação de testes no ciclo dedesenvolvimento

• Execução de testes agendados

• Execução de testes automatizados para versão interna e deenvio

• Prioridade para especificação de testes de novasimplementações

Page 32: Tech Day Softplan - Automatizando Testes de Interface

Desafios

• Atualizar e manter o projeto do Suricato

• Manter testes existentes

• Manter base de dados

• Execução de testes em paralelo

• Validar duplicação entre testes de UI, Serviço e Unitários

• Trabalho em conjunto entre analistas de testes e desenvolvedores

• Elaboração de especificação de testes para todas as implementações da versão

T E C H D A Y | T E S T E S D E S O F T W A R E

Page 33: Tech Day Softplan - Automatizando Testes de Interface

Dúvidas?

OBRIGADO!

[email protected]

Fernando Santiago

Leonardo GiacominiAnalistas de Testes

[email protected]