Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof....

28

Transcript of Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof....

Page 1: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.
Page 2: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código

Prof. Alexandre Marcos Lins de Vasconcelos06/out/2007

Page 3: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Apresentação do Palestrante• Bacharel em Ciência da Computação, UFPE,

1987• Mestre em Informática, UFPE, 1989• PhD em Ciência da Computação (Engenharia

de Software), University of York, GB, 1993 • Professor Adjunto do CIn-UFPE desde 1995• Sócio-Fundador da Qualiti• Consultor nos modelos de qualidade de

software CMMI e mps.BR• Consultor na Área de Testes de Software• Coordenador do Projeto de Testes CIn-

EPSON

Page 4: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Agenda• Motivação• Contexto da Proposta• Visão Geral da Proposta• Introdução à Análise de Cobertura de

Código• O Processo de Desenvolvimento Proposto • Conclusões• Referências

Page 5: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Motivação• Os custos associados às falhas de software justificam

um processo de testes rigoroso e bem planejado• Apesar do rigor, não é possível garantir que os casos

de testes cubram uma parte significativa do código a ser testado– Bugs podem não ser encontrados pelo processo de testes

de unidade, sendo localizados apenas em estágios posteriores de testes.

• Os custos com teste podem variar de 25% a 50% do orçamento total em muitos projetos de desenvolvimento de software

Page 6: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Motivação• Um problema que pode ser encontrado,

no processo de desenvolvimento é a ausência de uma medida quantitativa da qualidade dos casos de teste produzidos

• Uma aproximação usada para obter essas medidas quantitativas é adotar a análise de cobertura de código no processo de desenvolvimento de código, para os testes de unidade elaborados pela organização

Page 7: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Contexto da Proposta• Desperdício de tempo do time de

desenvolvimento para analisar o código fonte na identificação de cenários para criação de casos de teste– Não sabem que partes do código são realmente

testadas pelos casos de testes existentes– Não sabem o quão forte é o conjunto de casos do

teste unitários

• Como conseqüência, alguns bugs podem ser encontrados em fases de testes posteriores

Page 8: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Visão Geral da Proposta• Definição de um processo de

desenvolvimento utilizando técnicas de análise de cobertura de código

• Desenvolvido no contexto do STP (Software Test Program), parceria entre Motorola (BTC – Brazil Test Center) e CIn (Centro de Informática)

Page 9: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Introdução à Análise de Cobertura de Código

Page 10: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Análise de cobertura de Código• É um tipo de técnica usada em teste de

caixa-branca (teste estrutural), cujo objetivo é verificar como o conjunto de testes exercita partes do código

• É utilizada para averiguar a qualidade do conjunto de testes e não a qualidade do produto de software

• Normalmente utilizada nos estágios de teste de unidade e de integração

Page 11: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Análise de cobertura de Código• Consiste em determinar o percentual de

elementos requeridos, por um dado critério de teste, que foram exercitados pelo conjunto de casos de teste utilizado

• A partir dessa informação o conjunto de casos de teste pode ser aprimorado, acrescentando-se novos casos de teste para exercitar os elementos ainda não cobertos

• Permite uma análise sobre a redundância e utilidade dos testes unitários

Page 12: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Com a análise pode-se saber• Que partes do software os casos de teste

não cobrem?

• Que novos casos de teste precisam ser criados para se ter uma melhor cobertura?

• Quais casos de teste são redundantes?

Page 13: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Instrumentação do código• Consiste em introduzir pontos de

verificação em partes específicas (estratégicas) do código (break points, controle de fluxo, labels do código, início e fim de procedimentos, ...).

Page 14: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Algumas Métricas de Cobertura de Código

Page 15: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Como a cobertura de código trabalha

Statement Coverage

Page 16: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Como a cobertura de código trabalha

Branch Coverage

Page 17: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Funcionamento de uma Ferramenta de Análise de Cobertura de Código

Código Fonte

Compilação

Execução dosCasos de Testes

Código Instrumentado

Relatório de Cobertura

Instrumentação

Aplicação

Ferramenta de Cobertura

Page 18: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Cantata++ for testing C, C++ and Java

Algumas Ferramentas de Análise de Cobertura de Código

Page 19: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Relatórios de Cobertura de Código

• Dependendo da ferramenta de cobertura, podem ser gerados vários tipos de relatórios, com formato textual e/ou gráfico e com diversas extensões (ex.: html, pdf, xml).

Page 20: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Relatório de Cobertura de Código - EMMA

Page 21: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

O Processo de Desenvolvimento Proposto

Configuração da ferramenta

Guideline da Ferramenta

Execução dos testes unitários

Compilação do código

Instrumentação do código

Geração do relatório

Relatório de cobertura

Build instrumentada

Código fonte instrumentado

Código fonteoriginal

Análise dos resultados de cobertura

Desenvolvedor

Casos de testes unitários

Arquivo de histórico de execução

Recuperação dos testes

Alteração do código fonte

Page 22: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Avaliação do Processo:Estudo de caso 1 - Utilização do código instrumentado em Simuladores

• Resultados

• Subsídios para elaboração do processo proposto

• A proposta de métricas de cobertura foi adotada pelo time de desenvolvimento

• Aquisição da ferramenta de cobertura de código pelo time de desenvolvimento

• Criação de guideline de cobertura

Page 23: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Avaliação do Processo:Estudo de caso 2 - Utilização do código instrumentado no sistema embarcado

• Resultados

• Sucesso na inserção da análise de cobertura de código no fluxo de testes

• Build instrumentada rodando no aparelho

• Detecção dos motivos do baixo nível de cobertura

Page 24: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Avaliação do Processo:Estudo de caso 3 - Impacto na Execução dos Casos de Testes

Gráfico de Execução de Caso de Teste - Tempo Total

0:00:000:00:430:01:260:02:100:02:53

1 3 5 7 9 11 13 15 17 19

Casos de Testes

Tem

po

Méd

io

de

Exe

cuçã

o

Build com Instrumentação Build sem Instrumentação

Execução Completa dos Casos de Testes

0:00:00

0:00:17

0:00:35

0:00:52

0:01:09

0:01:26

0:01:44

0:02:01

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

Tem

po

s

Build com Instrumentação Build sem Instrumentação

Tempo médio do ciclo completo da execução dos casos de testes

Tempo médio completo da execução dos casos de testes realizado por um

testador

Resultados

Page 25: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Conclusões• Processo de Desenvolvimento de Software com

cobertura de código– Melhoria significativa na qualidade dos testes unitários;

• Utilização da ferramenta de cobertura– Possibilita alcançar um código bem testado;– Agrega mais qualidade, em menos tempo;– Baixo impacto na utilização do processo– Elimina erros, criando cenários de falha ou de

sucesso;– Dá mais produtividade aos processos de codificação e

de teste.

Page 26: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Perguntas?

Page 27: Adaptando um Processo de Desenvolvimento de Software para Análise de Cobertura de Código Prof. Alexandre Marcos Lins de Vasconcelos 06/out/2007.

Referências• MYERS, G., The Art of Software Testing, Wiley, 2004.• DUSTIN, E. Effective Software Testing: 50 Specific Ways to Improve Your

Testing. Addison Wesley. : December 18, 2002• CRAIG, R. D., JASKIEL, S. P. Systematic Software Testing. Artech House.

2002• KRUCHTEN, P. Rational Unified Process, The: An Introduction, Third Edition.

Addison Wesley. 2003.• TELES, V. M. Cobertura de Testes na Prática.• BullseyeCoverage. Bullseye Testing Technology. Disponível em:

http://www.bullseye.com/productInfo.html. Acesso em: 11 Nov.• Cantata C++. IPL software Products Group. Disponível em:

http://www.ipl.com/products/tools/pt400.uk.php. Acesso em: 11 Nov.• LDRA. Testbed Manual. C/C++ 7.x (Windows (95\98\2K\NT\XP)) Manual

Revision 23 - October 2004. Liverpool: Liverpool Data Research Associates Ltd.

• Clover Code Coverage. Cenqua Pty Ltd. Disponível em: http://www.cenqua.com/clover/. Acesso em: 11 Nov.

• Testwell CTC++. Testwell. Disponível em: http://www.testwell.fi/ctcdesc.html. Acesso em: 11 Nov.