JaBUTi/Crab: Ferramentas para Testes e Métricas de Softwareccsl.ime.usp.br/files/fisl10.pdf ·...
Transcript of JaBUTi/Crab: Ferramentas para Testes e Métricas de Softwareccsl.ime.usp.br/files/fisl10.pdf ·...
1
Paulo R. M. MeirellesIME-USP
27 de Junho de 2009 FISL 10
Porto Alegre, Brasil
JaBUTi/Crab:JaBUTi/Crab:Ferramentas para Testes Ferramentas para Testes e Métricas de Softwaree Métricas de Software
2
O que veremos...O que veremos...•Agenda•Software Livre é mais livre com Testes
Automatizados• JaBUTi- Formando um comunidade ...
•Andamento do Projeto Mangue- Crab
3
DefiniçõesDefinições•Medida•Avaliação em relação a um padrão
•Métrica•Método para se certificar de um atributo•Composta de uma ou mais medida
•Indicador•Variável que interpreta uma métrica- Ex: Alta cobertura pode indicar que o software é
de qualidade
•Teste ...
5
MétricasMétricas•Entender o andamento do desenvolviment•Feedback•Comunicação•Problemas- Identificar, Acompanhar e Resolver
•Qualidades- Identificar, Acompanhar e Exibir
•Gerenciar
6
Definir MétricaDefinir Métrica•GQM•Goal > Question > Metric•Exemplo:- G: Desenvolver software com qualidade.- Q: O software está bem testado?- M:- Cobertura dos testes +- Número de asserções + - Número de testes falhando
9
FerramentasFerramentas•Eclipse Metrics:•http://metrics.sourceforge.net/update
•Eclipse Eclemma:•http://update.eclemma.org
•Testability Explorer:•http://code.google.com/p/testability
explorer
•Selenium•http://seleniumhq.org/
12
MANGUEMANGUE•Projeto de Doutorado•Ciência da Computação no IME-USP- Projeto do CCSL-USP- Contexto do Projeto Qualipso
•Orientador: Prof. Dr. Fabio Kon• Início: 03/2008•Qualificação: 2009.2•Previsão de Conclusão: 2011.2•Bolsa: CNPQ desde 08/2008
13
MANGUEMANGUE•Motivação• Crescente aumento do uso e desenvolvimento do
FLOSS (Freely-Licensed Open Source Software)
15
MANGUEMANGUE•Motivação• Ecossistema do FLOSS- Quantidade de FLOSS disponíveis- SourceForge em 2007/2008: » 167.643 projetos» 1.776.733 usuários e desenvolvedores cadastrados
- 1% de Sucesso?» Se aumentarmos para 10%...
- UE: 80% do $ em serviços- Estratégico para UE (e Brasil?)
18
MANGUEMANGUE•Problema•Avaliar rapidamente programas e códigos
de terceiros- Semelhante quando surgiu o Outsourcing
•Falta de critérios objetivos para avaliar a confiabilidade do FLOSS
19
MANGUEMANGUE•Questões a serem respondidas•Como é possível medir a qualidade de
produtos de software para ajudar na escolha de um deles?
•Que características são relevantes para avaliação de um FLOSS?
•Quais são as métricas de qualidade de um FLOSS?
20
MANGUEMANGUE•Questões a serem respondidas•Quais métricas são apropriadas para
avaliação de código-fonte de um FLOSS?•Como comparar FLOSS similares?•Como automatizar a avaliação da
qualidade e o que pode ser automático?•Como verificar a eficiência das métricas e
da automação da avaliação?
21
AgendaAgenda•Objetivo•Mais problemas•Metodologia•Pesquisa de campo•Projetos relacionados•1ª Ferramenta do Mangue: Crab
22
MANGUEMANGUE•Objetivo•Composição de métricas- Combinação de métricas podem representar uma
característica significativa do software
•Definir novas métricas
23
MANGUEMANGUE•Objetivo•Desenvolver uma ferramenta de avaliação
automática da qualidade de código-fonte - métricas combinadas e configuradas por
especialistas- análise automática de características como
flexibilidade, clareza, modularidade e manutenibilidade do software
•Adaptar à ferramentas existentes
24
MANGUEMANGUE•Objetivo•Aumento da qualidade do FLOSS•Facilitar a comparação entre FLOSS•Aumento da adoção de FLOSS pela indústria
de software
25
MANGUEMANGUE•Mais problemas•Código-Fonte é o principal artefato do
FLOSS- Metodologias e métricas baseada na
documentação do processo do software não se aplicada
26
MANGUEMANGUE•Mais problemas•Métricas existem há decadas...- “In the past, most metrics have been defined by
an individual and then tested and used only in a very limited environment (...). Currently, useful metrics and models cannot be pulled off the shelf and used indiscriminately, careful application of available metrics and models can yield to useful results if they are tuned to a particular environment (...)” [SEI, 1988].
28
MANGUEMANGUE•Metodologia•Análise estatística- Correlação significativa de métricas X
características com a qualidade do FLOSS
•Experimentos controlados- Ferramentas existentes- Novas ferramentas
29
MANGUEMANGUE•Metodologia•Levantamento do estado-da-arte em
métricas de software•Estudo das métricas e metodologias usadas
em outros projetos e ferramentas•Coleta de opinião especialistas em FLOSS e
métodos ágeis•Pesquisa de campo com especialista em
desenvolvimento de software- GQM: Qualipso Europa
30
MANGUEMANGUE•Pesquisa com Especialistas•Questionário com 123 perguntas- 9 pessoais- 28 profissionais- 106 métricas e características listadas- Dividido em 16 grupos» Código-fonte(24), Testes(11), Comunidade(12),
Manutenibilidade(11), Interoperabilidade(3), Portabilidade(2), Usabilidade(5), Ferramentas(4), Independência(2), Confiança(6), Funcionalidades(5), Satisfação(4), Documentação(6), Suporte(4), Treinamento(4), Canais de distribuição e licenças(2)
- Notas: 1-Irrelevante ... 10-Essencial
31
MANGUEMANGUE•Pesquisa com Especialistas•38 entrevistados - ...de 80 convidados por e-mail- 8 gerentes- 13 lideres de projetos FLOSS- 22 com mais de 10 anos de experiência- 16 com menos de 10 anos de experiência- 11 Mestrado e Doutorado
36
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Módulo para configurações
(não espalhados pelo código)
38
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Existência de comentários no código
(cobertura e distribuição no código)
39
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Uso de bons nomes para classes,
métodos, variáveis
40
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Padrões de nomenclatura
usados uniformemente
42
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Sem duplicação de Código
43
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Nível de coesão entre módulos/
classes do sistema
45
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Estruturas de dados
utilizadas
46
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Estilo uniforme de indentação
47
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de testes por método ou
função
48
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de testes por linha
de código
49
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de linhas em cada
método
50
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de métodos em cada classe
51
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de linhas de testes
52
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de linhas em cada
classe
53
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de atributos em cada classe
54
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de colunas por linha não muito grande
55
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Complexidade Ciclomática
56
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de variáveis locais em
cada método
57
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de métodos ou
funções
58
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número de classes (ou arquivos ou
módulos)
59
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte
Número total de linhas de código
61
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Existência de testes automatizados
62
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Existência de testes de
desempenho (benchmarks)
63
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Estudo sobre o consumo de recursos (disco, memória...)
64
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Relatos dos experimentos de
desempenho
65
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Testabilidade do código (facilidade de
escrever testes)
66
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Uso de um arcabouço de testes
68
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Estudo sistemático sobre o tempo de
resposta
69
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Publicação dos resultados dos testes
70
MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes
Existência de um subgrupo (comunidade
ou pessoa) especializado em testes
72
MANGUEMANGUE•Outros projetos
- FlossMetrics- Ohloh- Qualoss- QSOS- SQO-OSS- Fossology- ETICS
•Mais focados em metodologias- Avaliações subjetivas
73
MANGUEMANGUE•Ferramenta: Crab (caranguejo)•Módulo de Configuração e Interpretação de
Métricas de Software- Independente para ferramentas de métricas Java- JaBUTi, Metrics, CheckStyle...
- Carrega métricas de uma ferramenta- Define intervalos e categoria de cada métrica- Definição de nota e classificação de cada intervalo
- Resultado geral do programa analisado- Nota final da avaliação- Detalhamento por classe
83
MANGUEMANGUE•Resultados Parciais•Monografia •Pesquisa com especialistas- Análise estatística- Delimitação do escopo do projeto
•Versão 0.1 da Ferramenta Crab- Acoplada à JaBUTi
•Artigos- Workshop de Teses do SBQS- Submissão para Sessão Ferramentas SBES
84
MANGUEMANGUE•Links•http://ccsl.ime.usp.br/mangue•http://ccsl.ime.usp.br/mangue/crab•svn://ccsl.ime.usp.br/jabutimetrics- /trunk/JabutiMetrics- JaBUTi em LGPL- Crab em BSD
•Material sobre Testes•http://ccsl.ime.usp.br/agilcoop/- Parte do conteúdo apresentado- Paulo Cheque e Fabio Kon
85
AgradecimentosAgradecimentos
IME-USPhttp://www.ime.usp.brCCSL-USPhttp://ccsl.ime.usp.brQualipsohttp://www.qualipso.orghttp://qualipso.icmc.usp.brCNPQhttp://www.cnpq.br