QA Ninja - Testes e Sistemas legados #quemNunca - ONLINE/2016

FernoSantiago 752 views 31 slides Oct 25, 2016
Slide 1
Slide 1 of 31
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31

About This Presentation

Vamos falar sobre a manutenção de sistemas legados através de testes automatizados que verificam cenários críticos e permitam o refactoring.

Palestra apresentada no evento QA Ninja Conf - 2016.
http://www.qaninjaconference.com/


Slide Content

www.qaninjaconference.com @QA-Ninja-Conf
Testes e Sistemas Legados
#quemNunca
Fernando Santiago
Eng. Computação – UBC / Eng. Software – UNISUL
CTFL / CSM

Apoio
@scguts gutssc.wordpress.com
[email protected]

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

gutssc.wordpress.com
Sistemas Legados
... e o Testador de software

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

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

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

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.

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 é

gutssc.wordpress.com
Suricato: Estrutura
Testes Automatizados
Selenium TestNG
Suricato
driver

xml
annotations

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)

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" );

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

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

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

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

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

gutssc.wordpress.com
Aplicação: Suíte de Testes
<suite name="qaninja">
<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.qa_ninja.ScreenshotListener"/>
</listeners>
<test verbose="2" name="TESTE_01" annotations="JDK">
<parameter name="url" value="http://localhost:8080/qaninja/" />
<parameter name="usuario" value="usuario"/>
<parameter name="senha" value="usuario!"/>
<classes>
<class name="br.com.qaninja.NomeClasseTest">
<methods>
<include name="nomeMetodo"/>
</methods>
</classes>
</test>
</suite>

gutssc.wordpress.com
Aplicação: Implementação de Testes
public class ExtratoClienteTest {

@BeforeClass
public void setUp() {
acessaBase("BaseQANinja", 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");
}

}

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();
}...

gutssc.wordpress.com
Aplicação: Execução de Testes

gutssc.wordpress.com
Aplicação: Evidência de Falha

gutssc.wordpress.com
Se na teoria é bom...
...Na prática é melhor ainda.
Aplicação: Execução

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

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

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

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

gutssc.wordpress.com
Integração Contínua: Versão de Cliente

gutssc.wordpress.com
Integração Contínua: Versão de Produção

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.

Testes e Sistemas Legados. #quemNunca
[email protected]
Contato
[email protected]
/in/fernosantiago
/fernosantiago
gutssc.wordpress.com
Fernando Santiago