inf1413 aula08 principiosteste 2 - puc-rioinf1413/docs/inf1413_aula08... · 3ulqftslrv gh 7hvwh...

19
1 Princípios de Teste 2 Arndt von Staa Departamento de Informática PUC-Rio Fevereiro 2018 Fev 2018 2 Arndt von Staa © LES/DI/PUC-Rio Especificação Objetivo da aula apresentar e discutir os processos relacionados com testes processo: modo de planejar, organizar e realizar um trabalho Justificativa para realizar testes de forma confiável é necessário trabalhar de forma disciplinada além de testar precisa-se depurar e redisponibilizar o artefato corrigido a disciplina é estabelecida através de processos definidos Texto Pezzè, M.; Young, M.; Teste e Análise de Software; Porto Alegre, RS: Bookman; 2008, capítulo 4

Upload: others

Post on 04-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

1

Princípios de Teste 2

Arndt von Staa

Departamento de Informática

PUC-Rio

Fevereiro 2018

Fev 2018 2Arndt von Staa © LES/DI/PUC-Rio

Especificação

• Objetivo da aula

– apresentar e discutir os processos relacionados com testes

• processo: modo de planejar, organizar e realizar um trabalho

• Justificativa

– para realizar testes de forma confiável é necessário trabalhar de forma disciplinada

– além de testar precisa-se depurar e redisponibilizar o artefato corrigido

– a disciplina é estabelecida através de processos definidos

• Texto

– Pezzè, M.; Young, M.; Teste e Análise de Software; Porto Alegre, RS: Bookman; 2008, capítulo 4

Page 2: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

2

Fev 2018 3Arndt von Staa © LES/DI/PUC-Rio

Projeto do teste – eficiência e eficácia

• Testes são– pouco eficientes

• a cada execução de um caso de teste são encontradas poucas falhas, mesmo que existam muitos defeitos

• um grande número de casos de teste não encontra defeitos– como não sabemos se o caso de teste exercita defeitos, precisamos

criar e executá-lo

– pouco eficazes• é de conhecimento geral que sobram defeitos remanescentes

– isso decorre dos testes terem sido mal feitos?

– demorados e caros• tem sido observado que em torno de 35% a 50% do custo de

desenvolvimento é gasto com criação de suítes e realização testes– custo é alto especialmente no caso de teste manual

– usando técnicas formais leves e testes automatizados isso cai para entre 10% a 30%, devido à redução do retrabalho inútil

O sítio: http://www.softwaretestinghelp.com/software-test-metrics-and-measurements/apresenta diversas métricas aplicadas a um exemplo específico

Projeto do teste – eficiência e eficácia

• Entre as formas de melhorar o desempenho dos testes figuram

– especificar cedo a qualidade satisfatória a alcançar

• para todos os atributos de qualidade considerados relevantes

• ouvindo todos os interessados (papéis)

– estabelecer um processo disciplinado de controle da qualidade

• pode ser um processo ágil, por exemplo XP

– planejar a sequência de testes

– selecionar apropriadas técnicas de realização dos testes

• dar preferência à automação da realização dos testes

– usar ou desenvolver técnicas e ferramentas que permitam gerar suítes de teste a partir das especificações

– . . .

Fev 2018 4Arndt von Staa © LES/DI/PUC-Rio

Page 3: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

3

Processo de teste, visão bem abstrata

Fev 2018 5Arndt von Staa © LES/DI/PUC-Rio

Especificação

Artefatoaceito

Desenvolverou corrigir

Testar(requer oráculo)

Projetar ourever o teste

Avaliar

Laudo

Suíte deteste

Relevânciados resultados

Resultadosobtidos

Artefato

Falhas relevantes

Um conjunto de ferramentas de apoio

Fev 2018 6Arndt von Staa © LES/DI/PUC-Rio

Especificaçãoinicial

NãoOK

Formalizarespecificação

Especificaçãoformalizada

Gerarexemplos de

comportamento

Exemplos decomportamento

Revisar pelosinteressados

LaudoCorrigiraprimorar

Gerar

contextoscript

Gerarexemplos de

contexto

Exemplos decontexto

Script decontexto

Script deteste

Gerar de teste

script

OK

Especificação inicial, ver aula 03 garantia da qualidade

Solicitações de alteração?

Page 4: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

4

Planejamento dos testes

Adaptado de: Machado, P.; Vincenzi, A.; Maldonado, J.C.; “Software Testing: An Overview”; in [Borba et al, 2010], pags 1-17

Fev 2018 Arndt von Staa © LES/DI/PUC-Rio 7

Requisitosdo serviço

Requisitosfuncionais e

não funcionais

Arquiteturado sistema

Projetos

Plano deteste de

aceitação

Plano deteste de

integração

Plano deteste desistema

Especificarrequisitos

Especificarsistema

Arquitetarsistema

Projetarcomponentes

Teste deunidade

Desenvolverunidade

Teste deAceitação

Teste desistema

Teste deintegração

Produçãodos testes

Execuçãodos testes

Além de planejar, poderíamos projetar suítes de teste?

Fev 2018 8Arndt von Staa © LES/DI/PUC-Rio

Processo de seleção de casos de teste

Especificação

Artefato

Casos de testeabstratos

Gerar casosde teste

Determinarsignificados

Casos de testesemânticos

Selecionardados eações

Casos de testevalorados

Casos de testeúteis

Determinaroráculo

Padrões

Critério deseleção

Critério devaloração

Escolher ocritério deseleção

Suíte de testeformada por

Massas de teste

Scripts de testeautomatizado

Especificação daferramenta de teste

automatizado

Gerar scriptde teste

automatizado

Automaçãodo teste

Page 5: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

5

Fev 2018 9Arndt von Staa © LES/DI/PUC-Rio

Processo de seleção de casos de teste

while ( ! feof( pArq )){

...printf( "%d" , strlen( Buffer ) ) ;...

}

• Casos de teste:

Abstratos Semânticos Valorados Resultado esperado

Executa 0 vezes Arquivo vazio { } nada

Executa 1 vezArquivo com 1 registro

{ aaa } 3

Executa 3 vezesArquivo com 3 registros

{ aaa , bb , c } 3 2 1

casos de teste úteis

Fev 2018 10Arndt von Staa © LES/DI/PUC-Rio

Processo de teste

EspecificaçãoRequisitos de qualidade

Solicitação dealteração

Produzirartefato

instrumentado

Escolhercritérios

Corrigirartefato

Gerarcasos de teste

Diagnosticarfalhas

Reduzirinstrumen-

tação

Corrigircasos de teste

Efetuarteste

Falha doscasos de teste

Falha daespecificação

OK final

OK incre-mento

OKintermediário

Falha doartefato

fluxo de laudos

fluxo do processo

fluxo de informação

Solicitação dealteração

Artefatoaceito

Suíte de testeaceita

Armadura de teste aceita

Especificaçãoaceita

Laudosfinais

Próximoincremento

Histórico dealterações

Page 6: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

6

Resultado final

• Artefato e suíte de teste aceitos

– estarão aceitos segundo o teste

• portanto a qualidade assegurada pelo teste depende do rigor e da abrangência da suíte de teste

– o tamanho da suíte não implica rigor nem abrangência

• rigor e abrangência dependem dos critérios de seleção de casos de teste utilizados para criar as suítes de teste

• rigor depende do grau de cobertura – ex. percentual das arestas do fluxograma percorridas

• rigor depende da corretude e do grau de formalidade da especificação

– um dos objetivos da criação de suítes de teste é criar um conjunto suficientemente rigoroso com o menor número de casos de teste capaz de assegurar a qualidade requerida

• risco é aceitável

Fev 2018 11Arndt von Staa © LES/DI/PUC-Rio

Resultado final

• Qualquer teste percorre um determinado caminho no artefato sob teste

– dado um mesmo conjunto de dados de entrada o caminho percorrido é, em geral, o mesmo

– não será o mesmo se existirem dependências temporais

• por exemplo sincronização entre processos

• por exemplo uso de variáveis não inicializadas

Fev 2018 12Arndt von Staa © LES/DI/PUC-Rio

Page 7: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

7

Resultado final

• Limitação da suíte de teste

– dados que correspondem a um mesmo caso de teste abstrato tendem a percorrer os mesmos caminhos

• portanto a suíte pode nunca percorrer o AST de forma que exercite determinados caminhos, mesmo que seja repetido o teste

• caso esses caminhos contenham defeitos, estes permanecerão desconhecidos, independentemente do número de vezes que o artefato seja retestado

Fev 2018 13Arndt von Staa © LES/DI/PUC-Rio

Resultado final

• Consequência

– para reduzir a chance de remanescerem defeitos é necessário percorrer uma grande gama de diferentes caminhos

• para reduzir o trabalho de criar uma grande variedade de casos de teste, pode-se gerar aleatoriamente diferentes suítes, usando algum programa, cada suíte contendo uma quantidade grande casos de teste

• se a cada execução do teste for gerada uma nova suíte utilizando uma semente de geração de números aleatórios diferente, diferentes caminhos serão percorridos a cada execução

– como durante o desenvolvimento é comum testes serem repetidos, a repetição dos testes gerados e executados por meios automatizados sem que ocorram falhas aumenta a confiança de que não persistem defeitos relevantes

– para poder replicar o teste é necessário saber qual foi a semente utilizada

Fev 2018 14Arndt von Staa © LES/DI/PUC-Rio

Page 8: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

8

Fev 2018 15Arndt von Staa © LES/DI/PUC-Rio

Fatores de qualidade relevantes

• testabilidade: facilidade de ser (re)testado com suficiente rigor e abrangência sempre que necessário

– torna necessário que o artefato seja acompanhado de

• suítes de teste aceitas e versionadas

• arcabouço de teste aceito e versionado

• módulos de teste aceitos e versionados

• versões das ferramentas de desenvolvimento utilizadas

• artefatos de desenvolvimento e versionados– produtos são artefatos de desenvolvimento entregues ao usuário ou

cliente

Fev 2018 16Arndt von Staa © LES/DI/PUC-Rio

Fatores de qualidade relevantes

• detectabilidade: facilidade de observar que ocorreu um erro reportando a correspondente falha

– erros ocorrem

• endógeno – por causas internas

• exógeno – por causas externas. ex. erros de uso, outros sistemas

– requer redundâncias contidas no sistema (código), exemplos

• instrumentação, exemplos– assertivas

– oráculos automatizados

– geradores e verificadores de logs

• comparar n réplicas (resultados) e determinar o possível responsável pelas discrepâncias observadas:

– uso de diferentes especificações para calcular o resultado

– implementar n versões de uma mesma especificação

– distribuir v >= 1 versões sobre n >= 3 máquinas independentes

• . . .

Page 9: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

9

Fev 2018 17Arndt von Staa © LES/DI/PUC-Rio

Fatores de qualidade relevantes

• diagnosticabilidade: facilidade de determinar qual é o defeito a partir do relatório de ocorrência de uma falha– apoio à localização do defeito a partir do relatório da falha

– relatório da falha acompanhada de informação complementar(ex. logs) capaz de descrever o estado da execução no ponto em que foi observado o erro, exemplos:

• pilha de execução

• estado das variáveis relevantes

• ações e dados fornecidos pelo usuário

• estado dos recursos funcionais, ex. sockets, semáforos, ...

• estado dos sensores e atuadores

– pequena latência do erro implica que o ponto de observação da falha estará próximo do defeito causador

• isso implica que a detecção deve ser realizada por instrumentação– o ser humano não tem condições para observar falhas com a

granularidade e a rapidez necessárias

Fev 2018 18Arndt von Staa © LES/DI/PUC-Rio

Fatores de qualidade relevantes

• depurabilidade: facilidade de eliminar completa e corretamente o defeito

– artefato com boa qualidade de engenharia

• boa arquitetura e boa modularidade

• especificação, arquitetura e projeto – correspondem exatamente a o que está implementado

• documentação técnica suficiente para o mantenedor localizar e entender como alterar corretamente o artefato

– ambiente utilizado para desenvolver existe

– sub-sistema de apoio à manutenção existe

• scripts de teste automatizado

• roteiros de teste

• scripts de recompilação e integração

• documentação técnica útil

Page 10: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

10

Fev 2018 19Arndt von Staa © LES/DI/PUC-Rio

Processo de depuração

Artefatoa testar Efetuar

os testes

Determinaro defeito

Validaro defeito

Revisaralteração

Efetuaralteração

Validarhipóteses

Adicionarinstrumentação

e / ouFormular mais

casos teste

Formularhipóteses

Identificarfalhas

Novos casosteste e/ou maisinstrumentação

Resultados obtidos

Descriçãodas falhas

HipótesesNecessidadede mais

informação

Hipóteseválida

Possíveldefeito

Artefatosalterados

Artefatosrevisados

Evidênciainsuficiente

Semfalhas

Aprovado

Defeitoidentificado

Resultados esperadosCasos de

testeDados econtroles

mais informação

Erro exógeno

Arquivoerrado

Erro no arca-bouço de teste

Erro na plata-forma ou biblioteca

OcorreufalhaDefeito no

algoritmo

Inconsistênciacom espec.

Versão errrada

Makeerrado

Código

Script de teste

Erro naespecificação

Espec.incompleta

Espec.defasada

Especificação do módulo

Defeitono script

Erro deco-evolução

Erro de oráculo

Versãoinconsistente

Dadoserrados

Usoerrado

Diagrama de Ishikawacausa e efeitoLocalizar

Uso de debugger semsaber onde procurar

Sabe emque módulo

Sabe emque funções

Instrumentaçãoadequada e

precisa

Instrumentaçãoinexistente

Instrumentaçãoinadequada

Fev 2018 20Arndt von Staa © LES/DI/PUC-Rio

Diagramas de causa e efeito - Ishikawa

incompleto !

Ajuda formular as hipóteses das possíveis causas

Page 11: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

11

Fev 2018 21Arndt von Staa © LES/DI/PUC-Rio

Acompanhamento de problemas (recordação)

Início

Fim

Em solução

emergencial

Emanálise

Sendocontrolada

Sendoimplantada

Sendoresolvida

Aguardandosolução

emergencial

Aguardandoinformação

Aguradandoaprovação

Aguradandoimplantação

Aguardandosolução

Aguardandoinformação

Aguardandoanálise

protelada

dadosinsuficientes

falhagrave

autorizada

já resolvidacancelada

recusada

recusada

não aprovada

não aceita aprovada

concluída

dadosinsuficientes

aprovadanão aprovada

suspensa

aceita

esboço

Fev 2018 22Arndt von Staa © LES/DI/PUC-Rio

Relato de falhas

• O melhor testador

– não é aquele que encontra o maior número de falhas

– é aquele que consegue promover a eliminação do maior número dos defeitos correspondentes às falhas por ele encontradas

• O relato de falha (laudo, FAP) é o instrumento que se utiliza para vender a falha ao programador responsável por eliminar o defeito causador

– um exemplo de modelo para relatar falhas: https://bugs.opera.com/wizard/

Kaner, C.; Bug Advocacy: How to Win Friends and Stomp BUGs; 2000; Buscado em: 2008; URL:

http://www.kaner.com/pdfs/bugadvoc.pdf

Page 12: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

12

Manutenção

• Alteração ocorre durante o desenvolvimento

– atender a solicitações de mudança de requisitos

• neste caso o “defeito” é a mudança solicitada

– o desenvolvimento de software é um processo de aprendizado

• aprende-se sobre o problema a resolver

• aprende-se sobre a tecnologia utilizada para desenvolver

– também é um processo de correção sucessiva

• Manutenção ocorre após entrega óbvio

– criar, alterar, remover e co-evoluir artefatos do sistema

• Cerca de 80% do custo técnico corresponde a manutenção

– custo técnico: desenvolvimento + alteração + manutenção + dano provocado por falhas

Fev 2018 23Arndt von Staa © LES/DI/PUC-Rio

Obs. é muito difícil encontrar estatísticas confiáveis tratando dos itens do custo técnico. Ou seja, 80% é uma estimativa grosseira e pouco confiável, recorrente na literatura.

Fev 2018 24Arndt von Staa © LES/DI/PUC-Rio

Manutenção

• Tipos de manutenção– Manutenção adaptativa [Nosek & Palvia, 1990]

• modifica o artefato sem afetar a sua funcionalidade

• velho 20% novo 18%

– Manutenção perfectiva• modificam a funcionalidade do artefato

• velho 55% novo 65%

– Manutenção corretiva• remove defeitos do artefato

• velho 25% novo 17%

– Manutenção preventiva• melhora a engenharia do artefato

• Schach, S.; Jin, B.; Yu,L.; Heller, G.Z.; “Determining the Distribution of Maintenance Categories: Survey versus Measurement”; Empirical Software Engineering 8; Kluwer; 2003; pp 351–365

• Nosek, J.T.; Palvia, P.; “Software Maintenance Management: changes in the last decade”; Software Maintenance: Research and Practice 2(3); 1990; pp 157-174

Alteração modifica o artefato durante o desenvolvimento

Manutenção modifica o artefato após o desenvolvimento

Evolução é um projeto em que o sistema sofre modificações significativas, usualmente sinalizadas por mudanças de versão

Page 13: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

13

Fev 2018 25Arndt von Staa © LES/DI/PUC-Rio

Problema da manutenção

• Um sistema é um artefato composto por vários outros, alguns exemplos de artefatos componentes:

– especificação (em vários níveis de abstração)

– código

– scripts de teste

– documentação técnica

• Quando um artefato é modificado pode tornar-se necessário modificar vários outros para assegurar coerência do todo

– co-evolução

• Quanto menos trabalhoso e menos propenso a enganos for a co-evolução mais manutenível será o sistema

Fev 2018 26Arndt von Staa © LES/DI/PUC-Rio

Controle de versões

Repositório de versões

Artefatossimples

Criação

Alteraçãoautorizada

Trabalhoconcluído

Registro deartefatos

Controlarartefato

Alterarartefato

Registrarartefato

Check-out

Check-in

Criarartefato

Editarartefato

Área trabalho

Armazenarartefato

Artefatonão controlado

Artefatonão controlado

Item deconfiguração

Item deconfiguração

Item deconfiguração

TipoartefatoAceito

Nãoaceito

Page 14: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

14

Fev 2018 27Arndt von Staa © LES/DI/PUC-Rio

Apêndice

Fev 2018 28Arndt von Staa © LES/DI/PUC-Rio

Ferramentas recomendadas

Nível mínimo:

• Ambiente de desenvolvimento integrado (IDE – Integrated Development Environment)

– Eclipse, Visual Studio, ...

• Sistema de controle de versões

– SVS, Subversion, GIT, ...

• Sistema automatizado para a reconstrução de programas

– make, gmake, ant, maven, hudson ...

• Sistema de acompanhamento de problemas

– Bugzilla, Jira, ...

• Repositório compartilhado de artefatos aceitos

• Repositório de padrões, diretrizes, e convenções

• Repositório de documentação técnica (JavaDoc ou similar)

Huizinga, D.; Kolawa, A.; Automated Defect Prevention: Best Practices in Software Management; Hoboken, New Jersey: John Wiley & Sons; 2007

Page 15: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

15

Fev 2018 29Arndt von Staa © LES/DI/PUC-Rio

Ferramentas recomendadas

Nível intermediário

• Todas as do nível mínimo

• Sistema de gerência de requisitos

– acompanha a alteração dos requisitos

– permite determinar o impacto de alterações

– rastreia os requisitos nos artefatos desenvolvidos

• Sistema de teste automatizado básico

– realiza o teste de unidades

• funções, classes, módulos

– realiza o teste de regressão das unidades

Fev 2018 30Arndt von Staa © LES/DI/PUC-Rio

Ferramentas recomendadas

Nível avançado

• Todos do nível intermediário

• Transformadores– geram esqueletos a partir de diagramas

– geram esqueletos de módulos de teste

– geram outros artefatos intermediários

• Geradores– geram artefatos prontos para serem utilizados (compilados)

– geram módulos de teste

– geram casos de teste úteis idealmente scripts de teste

• Analisadores estáticos– verificam propriedades de artefatos segundo regras definidas

• Teste automatizado avançado – jUnit, dbUnit, jBehave, selenium, concordion, ...

Page 16: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

16

Fev 2018 31Arndt von Staa © LES/DI/PUC-Rio

Relato de falhas FAP – Ficha de acompanhamento de problemas

• Conteúdo do relato de falha (laudo) [Kaner, 1993]:– data – quem relatou– em que programa ocorreu?

• versão• se tiver, o número do build

– resumo da falha • um parágrafo (título) de no máximo 2 linhas

– tipo da falha (ver a seguir)– severidade da falha (ver a seguir)– descrição

• o que ocorreu e o que deveria ter acontecido?• o que você estava fazendo quando ocorreu a falha?

– você pode fornecer os dados que estava usando?– cenário de uso ao observar a falha

– como replicar a falha?– opcionalmente, sugestão de solução– anexos

Fev 2018 32Arndt von Staa © LES/DI/PUC-Rio

Relato de falhas FAP – Ficha de acompanhamento de problemas

Tipo da falha• erro de processamento

• erro de projeto / especificação

• erro de documentação

• erro de biblioteca

• erro de plataforma de software

• erro de hardware

• dúvida

• . . .

Page 17: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

17

Fev 2018 33Arndt von Staa © LES/DI/PUC-Rio

Relato de falhas FAP – Ficha de acompanhamento de problemas

Severidade• problema menor

– dá para ser contornado

– é uma inconveniência

• grave– não dá para continuar usando o artefato

• infeccioso– propaga erros para outros programas ou sistemas

• catástrofe– destrói dados persistentes

– provoca grandes danos

– provoca quebra de equipamento

– provoca mortes, ruína de empresas, desastres ecológicos

Fev 2018 34Arndt von Staa © LES/DI/PUC-Rio

Relato de falhas – solução dadaFAP – Ficha de acompanhamento de problemas

• Conteúdo do relato da solução dada

– Estados e datas: aberto, em resolução, em implantação, resolvido

– Responsável por realizar (gerenciar) a alteração

– Natureza da decisão

• pendente de decisão, não reprodutível, resolvido, concluído, não é falha, cancelado pelo informante, requer mais informação, duplicata, cancelada, postergada, ...

– Descrição da solução

– Artefatos alterados e versão da alteração

• natureza da alteração, por artefato– código simples, código complexo, falta de controle, reestruturação,

projeto, arquitetura, especificação

– Responsável por aceitar a solução

Page 18: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

18

Fev 2018 35Arndt von Staa © LES/DI/PUC-Rio

Projeto do teste – eficiência e eficácia

• A eficácia do teste depende do critério de seleção dos casos de teste

– o critério de teste está relacionado com cobertura de alguma propriedade, ex.

• linhas de código

• chamadas e retornos, inclusive exceções

• assertivas, ...

– à medida que os artefatos sobem de nível de abstração, necessariamente menor será a granularidade possível de testar, ex.

• linhas de código – pequena granularidade

• chamadas e retornos – média granularidade

• funcionalidades do usuário – grande granularidade

Fev 2018 36Arndt von Staa © LES/DI/PUC-Rio

Projeto do teste – eficiência e eficácia

• Um critério de seleção é um método usado para a escolher os casos de teste que comporão uma suíte de teste

– tende a gerar uma suíte de teste capaz de identificar falhas causadas por uma determinada classe de defeitos

– existe uma grande variedade de critérios de seleção de casos de teste

Page 19: INF1413 Aula08 PrincipiosTeste 2 - PUC-Rioinf1413/docs/INF1413_Aula08... · 3ulqftslrv gh 7hvwh $uqgw yrq 6wdd 'hsduwdphqwr gh ,qirupiwlfd 38& 5lr)hyhuhlur )hy $uqgw yrq 6wdd /(6

19

Fev 2018 37Arndt von Staa © LES/DI/PUC-Rio

Bibliografia complementar

• Huizinga, D.; Kolawa, A.; Automated Defect Prevention: Best Practices in Software Management; Hoboken, New Jersey: John Wiley & Sons; 2007

• Kaner, C.; Falk, J.; Nguyen, H.Q.; Testing Computer Software; International Thompson Computer Press; 1993

• Kaner, C.; Bug Advocacy: How to Win Friends and Stomp BUGs; 2000; www.kaner.com (testing website) www.badsoftware.com (legal website)

• Kemerer, C.F.; Slaugther, S.; “An Empirical Approach to Studying Software Evolution”; IEEE Transactions on Software Engineering 28(4); 1999; pags 493-509

• Lewis, W.E.; Software Testing and Continuous Quality Improvement; Boca Raton: Auerbach; 2000

• Skwire, D.; Cline, R.; Skwire, N.; First Fault Software Problem Solving: A Guide for Engineers, Managers and Users; Kindle edition; Ireland: Opentask; 2009

• Wong, W.E.; Gao, R.; Li, Y; Abreu, R.; Wotawa, F.; “A Survey on Software Fault Localization”; IEEE Transactions on Software Engineering 42(8); Los Alamitos, CA: IEEE Computer Society; 2016; pags 707-740

Fev 2018 38Arndt von Staa © LES/DI/PUC-Rio

FIM