Testes e Sistemas legados #quemNunca
-
Upload
ferno-santiago -
Category
Technology
-
view
99 -
download
0
Transcript of Testes e Sistemas legados #quemNunca
www.qaninjaconference.com @QA-Ninja-Conf
Testes e Sistemas Legados #quemNunca
Fernando Santiago Eng. Computação – UBC / Eng. Software – UNISUL
CTFL / CSM
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
driv
er
xml an
nota
tions
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
Contato
/in/fernosantiago
/fernosantiago
gutssc.wordpress.com
Fernando Santiago