Upload
ferno-santiago
View
45
Download
1
Embed Size (px)
Citation preview
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
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
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
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
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
+
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
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
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
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
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
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
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
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
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
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
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");
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Dúvidas?
OBRIGADO!
Fernando Santiago
Leonardo GiacominiAnalistas de Testes