jabuti/crab: ferramentas para testes e métricas de softwareccsl.ime.usp.br/files/fisl10.pdf ·...

87
1 Paulo R. M. Meirelles IME-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 Software e Métricas de Software

Upload: tranmien

Post on 13-Dec-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

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 ...

4

PesquisaPesquisa•AgilCoop - CNPQ

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

7

CoberturaCobertura

8

TestabilidadeTestabilidade

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/

10

JaBUTiJaBUTi•Versões•Código Java• J2ME• JaBUTi Service- Integrada ao QualipsoFactory

11

JaBUTiJaBUTi

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)

14

MANGUEMANGUE•Motivação•Comunidades FLOSS- ... de todos os tipos e níveis

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?)

16

MANGUEMANGUE•Motivação•Como “convencer a usar”/escolher um

determinadado software?

17

MANGUEMANGUE•Motivação•Como “convencer a usar”/escolher um

determinadado software?

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].

27

MANGUEMANGUE•Mais problemas•Ferramentas de Métricas ...

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

32

PesquisaPesquisa

Download do código-fonte e binários

33

PesquisaPesquisa

Uso de padrões da indústria e protocolos

bem disseminados

34

PesquisaPesquisa

Módulo para configurações

35

PesquisaPesquisa

Scripts para configuração do

processo de build

36

MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte

Módulo para configurações

(não espalhados pelo código)

37

MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte

Separação em Módulos

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

41

MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte

Cobertura dos testes

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

44

MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Código-Fonte

Nível de acoplamento

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

60

MANGUEMANGUE•Aquele problema•Ferramentas de Métricas ...

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

67

MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes

Tipos de teste disponíveis

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

71

MANGUEMANGUE•Pesquisa com Especialistas•Análise estatística: Testes

Testes de mutação

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

74

CRABCRAB

75

CRABCRAB

76

CRABCRAB

77

CRABCRAB

78

CRABCRAB

79

CRABCRAB

80

CRABCRAB

81

CRABCRAB

82

CRABCRAB

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

86

ContatoContato

Paulo [email protected]

Centro de Competência em Software Livre da USP

[email protected]

87

DiscussãoDiscussão

!?