Testes e Sistemas legados #quemNunca

31
www.cnqs.com.br @cnqsbr Testes e Sistemas Legados #quemNunca Fernando Santiago Eng. Computação UBC / Eng. Software UNISUL CTFL / CSM

Transcript of Testes e Sistemas legados #quemNunca

Page 1: Testes e Sistemas legados #quemNunca

www.cnqs.com.br @cnqsbr

Testes e Sistemas Legados #quemNunca

Fernando Santiago Eng. Computação – UBC / Eng. Software – UNISUL

CTFL / CSM

Page 2: Testes e Sistemas legados #quemNunca

Apoio

@scguts gutssc.wordpress.com

[email protected]

Page 3: Testes e Sistemas legados #quemNunca

Os SISTEMAS LEGADOS podem vir a apresentar uma lista bem longa de NÃO CONFORMIDADES, tais

como: projetos não extensíveis; código complicado, documentação pobre ou inexistente; e um histórico

de modificações mal gerido.

gutssc.wordpress.com

+ Custo

+ Problema

+ Manutenção

- Limite de potencial

- Rastreabilidade

- Testes

Sistemas Legados

Page 4: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Sistemas Legados

... e o Testador de software

Page 5: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Pirâmide de Automação de Testes

+

M

A

N

U

T

E

N

Ç

Ã

O

-

-

V

E

L

O

C

I

D

A

D

E

+

Interface

Integração

Unitário

Page 6: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

+

M

A

N

U

T

E

N

Ç

Ã

O

-

-

V

E

L

O

C

I

D

A

D

E

+

Interface

Integração

Unitário

Pirâmide de Automação de Testes

Page 7: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Case: Sienge

www.softplan.com.br/carreira

Software Integrado de Gestão para a Indústria da Construção 100% web

Mais de 2500 clientes

Cliente alvo: Construtoras, incorporadoras, empreiteiras, instaladoras, entre outros

+ 3.989.855 linhas de código

Page 8: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Framework de Testes: Suricato

Também conhecido como o sentinela da savana, os suricatos revezam-se nas

tarefas de VIGIA e PROTEÇÃO dos indivíduos da comunidade.

Page 9: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Suricato

2009

Alta reutilização de métodos

Relatórios e screenshots de falhas

Automação para não programadores

Encapsula e abstrai a implementação do teste

Maior velocidade no desenvolvimento e execução de cenários de testes

(headless browsers)

História

Benefícios

Biblioteca Keyword Driven

Gerenciado por Gradle

Desenvolvido em Java

Selenium

TestNG

O que é

Page 10: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Suricato: Estrutura

Testes Automatizados

Selenium TestNG

Suricato

driv

er

xml an

nota

tions

Page 11: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Suricato: Base de Dados

Repositório origem

Repositório espelho Servidor de aplicação

(Cópia)

(Serviço de banco parado)

(Serviço de banco inicializado)

Page 12: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Suricato: Principais Keywords

Preenchimento

Ação

Verificação

digitaNoCampo("label_campo", "vl_digitado");

selecionaValor("label_campo", " vl_selecionado");

digitaNoCampoDaGrid("nm_grid", linha_grid, "nm_coluna",

"vl_digitado");

acessaBase("nome_base", "usuario", "senha", 564);

clicaNoBotao("label_botao");

mudaParametroWeb(123, "vl_configuracao");

esperaPaginaCarregar(); (espera explícita)

verificaMensagemDeSucesso();

verificaCampoComValor("label_campo", "vl_esperado");

comparaRelatorio("relatorio_esperado.pdf",

"relatorio_gerado.pdf");

Page 13: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação

Cenário da Equipe

Planejamento de Testes

Especificação de Testes

Implementação de Testes

Execução de Testes

Conclusão

Cenário Atual

Page 14: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Cenário da Equipe

Equipe

02 Analistas de sistemas

02 Analistas de testes

08 Desenvolvedores

Módulos

Comercial

Financeiro

Defeitos registrados

Backlog de defeitos: 127

Média semanal de defeitos: 24

Média semanal de falhas: 81

Set/2013

Prazo

Uheuheuehuehue

Page 15: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Planejamento de Testes

Período de captura de defeitos: 3 meses

TABELA DE DEFEITOS POR FUNCIONALIDADE

Funcionalidade Ocorrência %

Cadastro de Título 30 4,3

Inclusão de Baixa 61 8,7

Repactuação 54 7,7

Geração de Cobrança Escritural 111 15,9

Solicitação de Contratos 18 2,6

Cancelamento de Contratos 36 5,2

... ... ...

TOTAL 698 100

Page 16: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Especificação de Testes - Dados

TABELA DE CADASTRO DE DADOS - TÍTULO

tpCorrecao tpCorrecao tpJuros tpAcrescimos txAdm ...

Mensal Neutro Nenhum Nenhum False ...

Anual Sem retroatividade Simples Mensal simples True ...

Com retroatividade Composto Mensal Composto ...

Fixo Diário ...

... ... ...

Títulos a serem cadastrados na base de dados

Page 17: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Especificação de Testes - Cenários

TABELA DE CENÁRIOS DE TESTES - INCLUSÃO DE BAIXA

titulos* dtBaixa calcVlPresente tpBaixa corrigirVl ...

1 Vencimento False Adiantamento False ...

2 Atrasada True Cancelamento True ...

3 Antecipada Recebimento ...

4 Substituição ...

... ... ...

Cenários de testes a serem codificados

* Títulos gerados na tela anterior

Page 18: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Suíte de Testes <suite name="CNQS">

<parameter name="repositorio" value="C:\local"/>

<parameter name="baseDados" value="C:\local"/>

<parameter name="chromePathDriver" value="./local"/>

<parameter name="fireBirdService" value="nm_servico_banco_dados"/>

<parameter name="caminhoScreenshots" value="C:\local"/>

<parameter name="caminhoDownloads" value="C:\local"/>

<parameter name="tearDown" value="true"/>

<listeners>

<listener class-name="br.com.cnqs.ScreenshotListener"/>

</listeners>

<test verbose="2" name="TESTE_01" annotations="JDK">

<parameter name="url" value="http://localhost:8080/cnqs/"/>

<parameter name="usuario" value="usuario"/>

<parameter name="senha" value="usuario!"/>

<classes>

<class name="br.com.cnqs.NomeClasseTest">

<methods>

<include name="nomeMetodo"/>

</methods>

</classes>

</test>

</suite>

Page 19: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Implementação de Testes public class ExtratoClienteTest {

@BeforeClass

public void setUp() {

acessaBase("BaseCNQS", 0);

mudaParametroWeb(001, "S");

}

MenuPage menuPage = new MenuPage();

@Test(priority = 1)

public void gerarExtratoCliente() {

ExtratoClientePage emitirExtrato = menuPage.navegarParaExtratoCliente();

emitirExtrato.preencherTitulo("174");

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

emitirExtrato.clicarNoBotaoVisualizar().

compararRelatorios("relatorio.pdf", "relatorio.pdf");

}

}

Page 20: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Implementação de Testes public class MenuPage {

public void navegarParaExtratoCliente() {

navegaPara("Financeiro.Contas a Receber.Relatórios...");

esperaPaginaCarregar();

}...

public class ExtratoClientePage {

public void preencherTitulo(String cdTitulo) {

digitaNoCampo("Título", cdTitulo);

esperaPaginaCarregar();

}

public void preencherCorrecaoAte(String dtCorrecao) {

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

}

public void clicarNoBotaoVisualizar() {

clicaNoBotao("Visualizar");

esperaPaginaCarregar();

}...

Page 21: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Execução de Testes

Page 22: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Evidência de Falha

Page 23: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Se na teoria é bom...

...Na prática é melhor ainda.

Aplicação: Execução

Page 24: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Aplicação: Conclusão

Processo de automação

Período: 15 meses

Horas mensais: 47,1 (média por analista)

Cenários automatizados: 909

Falhas prevenidas: 190

Page 25: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Falhas Prevenidas

0

50

100

150

200

250

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Falhas Falhas Acumuladas

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

mês mês mês mês mês mês mês mês mês mês mês mês mês mês mês

Page 26: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Históricos de Defeitos

0

5

10

15

20

25

30

35

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Média semanal

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

Melhoria: 58% em queda Queda de defeitos: 58%

mês mês mês mês mês mês mês mês mês mês mês mês mês mês mês

Page 27: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Históricos de Defeitos

0

20

40

60

80

100

120

140

160

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Estoque de defeitos

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

Melhoria: 96% em queda Queda de defeitos: 96%

mês mês mês mês mês mês mês mês mês mês mês mês mês mês mês

Page 28: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Integração Contínua: Versão de Cliente

Page 29: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Integração Contínua: Versão de Produção

Page 30: Testes e Sistemas legados #quemNunca

gutssc.wordpress.com

Cenário Atual

• Queda na quantidade de falhas reportadas pelo cliente;

• Baixa quantidade de defeitos no backlog corretivo da equipe;

• Prioridade no desenvolvimento do backlog evolutivo da equipe;

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

• Integração da automação de testes no ciclo de desenvolvimento;

• Execução de testes agendados em Integração Contínua;

• Redução em 91% de retrabalho durante o ciclo de desenvolvimento

aplicado com coach test.

Page 31: Testes e Sistemas legados #quemNunca

Testes e Sistemas Legados. #quemNunca

[email protected]

Contato

[email protected]

/in/fernosantiago

gutssc.wordpress.com

Fernando Santiago