FACULDADE FARIAS BRITO CIÊNCIA DA...

66
FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO Samantha Kelly Soares de Almeida ENGENHARIA DE SOFTWARE EXPERIMENTAL APLICADA À MELHORIA DO PROCESSO DE TESTE Fortaleza, 2010

Transcript of FACULDADE FARIAS BRITO CIÊNCIA DA...

FACULDADE FARIAS BRITO

CIÊNCIA DA COMPUTAÇÃO

Samantha Kelly Soares de Almeida

ENGENHARIA DE SOFTWARE EXPERIMENTAL APLICADA

À MELHORIA DO PROCESSO DE TESTE

Fortaleza, 2010

Samantha Kelly Soares de Almeida

ENGENHARIA DE SOFTWARE EXPERIMENTAL APLICADA

À MELHORIA DO PROCESSO DE TESTE

Monografia apresentada para obtenção dos créditos da

disciplina Trabalho de Conclusão do Curso da Faculdade

Farias Brito, como parte das exigências para graduação no

Curso de Ciência da Computação.

Orientador: Roberto de Almeida Façanha, Msc.

Fortaleza, 2010

ENGENHARIA DE SOFTWARE EXPERIMENTAL APLICADA

À MELHORIA DO PROCESSO DE TESTE

Samantha Kelly Soares de Almeida

PARECER___________________

NOTA: FINAL (0 - 10): ________

Data: ____/ ____/ ________

BANCA EXAMINARADORA:

__________________________

Nome e Titulação

(Orientador)

__________________________

Nome e Titulação

(Examinador)

__________________________

Nome e Titulação

(Examinador)

RESUMO

O presente trabalho demonstrou como os conceitos presentes na Engenharia de

Software Experimental possibilitaram a melhoria do processo de testes em uma organização

de desenvolvimento de softwares. Para tanto, foi desenvolvido um experimento que originou

uma nova forma de testar aplicações de software denominada Preteste. Com essa metodologia

foi observada uma significativa melhoria dos indicadores de Produtividade e de Densidade de

Defeitos, alvos do estudo da pesquisa. Foi verificado que uma etapa complementar à fase de

testes de software, o Preteste, favorece a liberação do sistema com mais qualidade para a

etapa de testes sistêmicos, diminuindo o retrabalho e a identificação tardia de defeitos graves,

bem como melhorando a produtividade, da densidade de defeitos do projeto, e redução do

custo de correção dos defeitos a nível organizacional. Para auxiliar a execução do processo

modelado foi desenvolvida a ferramenta PretestResults, visando contribuir para o registro de

defeitos realizado por múltiplas pessoas e para a geração automática de relatórios de Preteste.

Palavras chave: Engenharia de Software Experimental, Preteste, Densidade de Defeitos,

Produtividade.

AGRADECIMENTOS

A Deus por ter me iluminado e por estar sempre presente na minha vida.

Aos meus pais e meu noivo pelo incentivo, dedicação e confiança.

Ao meu orientador pela compreensão e confiança.

Aos meus colegas e professores do curso que contribuiram com minha formação profissional.

A todos aqueles que de forma direta ou indireta, colaboraram para a conclusão deste trabalho.

SUMÁRIO MOTIVAÇÃO/JUSTIFICATIVA ...................................................................................................................... 14

OBJETIVOS ............................................................................................................................................. 15

Objetivo Geral ................................................................................................................................ 15

Objetivos Específicos ...................................................................................................................... 15

1.1 ENGENHARIA DE SOFTWARE ................................................................................................................. 16

1.1.1 Processo de Software ............................................................................................................ 18

1.1.2 Engenharia de Software Experimental.................................................................................. 19

1.2 TESTES DE SOFTWARE ......................................................................................................................... 22

1.2.1 Conceitos e Importância de Testes ........................................................................................ 22

1.2.2 Tipos de Teste ....................................................................................................................... 23

1.3 QUALIDADE DO PRODUTO DE SOFTWARE ............................................................................................... 24

1.3.1 Conceitos e Estratégias Principais ......................................................................................... 24

2.1 CARACTERIZAÇÃO DO DOMÍNIO DE EXPERIMENTAÇÃO ............................................................................... 28

2.1.1 Campo Laboral ...................................................................................................................... 28

2.1.2 Políticas de Qualidade da Organização Estudada ................................................................ 29

2.1.3 Principais Atividades do Processo de Teste da Empresa Estudada ....................................... 30

2.2 DETALHAMENTO DO CENÁRIO DO PRETESTE ............................................................................................ 32

2.2.1 Introdução ....................................................................................................................... 32

2.2.2 Caracterização do Cenário do Experimento .................................................................... 32

2.3 ANÁLISE DO PROCESSO DE TESTES DA ORGANIZAÇÃO SELECIONADA ........................................................ 35

2.3.1 Relação do Preteste com a ESE ............................................................................................. 35

2.4 APLICAÇÃO DO PRETESTE NO CAMPO LABORAL ........................................................................................ 36

2.4.1 Identificação da Necessidade ................................................................................................ 36

2.4.2 Etapas do Preteste ................................................................................................................ 38

2.4.3 Objetivo do Preteste .............................................................................................................. 40

3.1 RESULTADOS DOS EXPERIMENTOS ..................................................................................................... 46

3.1.1 Evolução de Indicadores de Produtividade Sem Preteste ................................................ 46

3.1.2 Evolução de Indicadores de Densidade e Defeitos Sem Preteste .................................... 48

3.1.3 Resultados da Execução do Experimento Preteste ............................................................... 50

3.1.4 Evolução de Indicadores de Produtividade com a Aplicação do Presteste............................ 52

3.1.5 Evolução dos Indicadores de Defeitos com a Aplicação do Presteste ................................... 54

3.2 FERRAMENTA PRETESTRESULTS ............................................................................................................ 56

3.2.1 Objetivo ................................................................................................................................. 56

3.2.2 Apresentação da Ferramenta ............................................................................................... 56

3.2.3 Principais Dificuldades e Lições Identificadas ....................................................................... 57

4.1 PRINCIPAIS CONTRIBUIÇÕES ................................................................................................................. 59

4.2 SUGESTÕES DE TRABALHOS FUTUROS .................................................................................................... 59

LISTA DE FIGURAS

FIG. 1 – PRIMEIRA VERSÃO DO PROCESSO PRETESTE ............ ERRO! INDICADOR NÃO DEFINIDO.

FIG. 2 – FLUXO DO PROCESSO PRETESTE .................................. ERRO! INDICADOR NÃO DEFINIDO.

FIG. 3 – TELA DA FUNCIONALIDADE RELATÓRIO DE CONFIABILIDADE DA FERRAMENTA

PRETESTRESULTS ............................................................................ ERRO! INDICADOR NÃO DEFINIDO.

LISTA DE GRÁFICOS

GRÁFICO 1 – REGRA DE 10 DE MYERS.........................................................................................................22

GRÁFICO 2 – EVOLUÇÃO DA PRODUTIVIDADE NO PROJETO A ANTERIOR AO PRETESTE ............ 47

GRÁFICO 3 – EVOLUÇÃO DA PRODUTIVIDADE NO PROJETO A ANTERIOR AO PRETESTE ............ 48

GRÁFICO 4 – EVOLUÇÃO DA PRODUTIVIDADE NO PROJETO B ANTERIOR AO PRETESTE ............ 48

GRÁFICO 5 – EVOLUÇÃO DA DENSIDADE DE DEFEITOS NO PROJETO A ANTERIOR AO PRETESTE

............................................................................................................................................................................... 49

GRÁFICO 6 – EVOLUÇÃO DA DENSIDADE DE DEFEITOS NO PROJETO B ANTERIOR AO PRETESTE

............................................................................................................................................................................... 49

GRÁFICO 7 – ESFORÇO PARA A REALIZAÇÃO DE TESTES (A) SEM PRETESTE E (B) COM

PRETESTE ........................................................................................... ERRO! INDICADOR NÃO DEFINIDO.

GRÁFICO 8 – QUANTIDADE DE DEFEITOS ANTECIPADOS COM O PRETESTE... ERRO! INDICADOR

NÃO DEFINIDO.

GRÁFICO 9 – QUANTIDADE DE DEFEITOS IDENTIFICADOS .. ERRO! INDICADOR NÃO DEFINIDO.

GRÁFICO 10 – EVOLUÇÃO DA PRODUTIVIDADE DA DISCIPLINA DE TESTES NO PROJETO A

.............................................................................................................. ERRO! INDICADOR NÃO DEFINIDO.

GRÁFICO 11 – EVOLUÇÃO DA PRODUTIVIDADE DA DISCIPLINA DE TESTES NO PROJETO B

.............................................................................................................. ERRO! INDICADOR NÃO DEFINIDO.

GRÁFICO 12 – EVOLUÇÃO DO INDICADOR DE DENSIDADE DE DEFEITOS NO PROJETO A ... ERRO!

INDICADOR NÃO DEFINIDO.

GRÁFICO 13 – EVOLUÇÃO DO INDICADOR DE DENSIDADE DE DEFEITOS NO PROJETO B ... ERRO!

INDICADOR NÃO DEFINIDO.

LISTA DE TABELAS

TABELA 1 - TABELA QUE REPRESENTA A MACRO DIVISÃO DOS TIPOS DE TESTE. ............... ERRO!

INDICADOR NÃO DEFINIDO.

TABELA 2 - PROCESSOS DA QUALIDADE COMPREENDIDOS PELA TRILOGIA JURAN ........... ERRO!

INDICADOR NÃO DEFINIDO.

TABELA 3 – EQUIPE PARTICIPANTE DO EXPERIMENTO ........ ERRO! INDICADOR NÃO DEFINIDO.

TABELA 4 – PRINCIPAIS PROBLEMAS QUE INTERFEREM NA PRODUTIVIDADE DA EQUIPE DE

TESTES ................................................................................................ ERRO! INDICADOR NÃO DEFINIDO.

TABELA 5 – PRINCIPAIS PROBLEMAS QUE INTERFEREM NA PRODUTIVIDADE DA EQUIPE DE

TESTES E GERAM AUMENTO DA DENSIDADE DE DEFEITOS. ..................... ERRO! INDICADOR NÃO

DEFINIDO.

TABELA 6 – RESULTADOS DO EXPERIMENTO PRETESTE ..... ERRO! INDICADOR NÃO DEFINIDO.

LISTA DE SIGLAS

ESE - ENGENHARIA DE SOFTWARE EXPERIMENTAL

P&D - PESQUISA E DESENVOLVIMENTO

CMMI - CAPABILITY MATURITY MODEL INTEGRATION

ISO - INTERNATIONAL ORGANIZATION FOR STANDARDIZATION 9001:2000

RFID - RADIO FREQUENCY IDENTIFICATION

TUCP - PONTOS DE CASOS DE USO TÉCNICOS

CRUD - CREATE, RETRIEVE, UPDATE, DELETE

12

INTRODUÇÃO

A Engenharia de Software Experimental, subárea da Engenharia de Software,

pode ser entendida como uma ferramenta utilizada para execução de experimentos em

processos de software (TRAVASSOS,2002). Através do uso da experimentação, pode-se

analisar o grau de eficiência de mudanças significativas, e utilizar esses resultados para

aperfeiçoar o processo, contribuindo assim para a melhoria da qualidade do produto.

De acordo com Holanda (1988), “Experimentação é o ato de experimentar...”,

e “... experimentar é submeter à experiência, por a prova, testar...”, ou seja, o ato de testar e

buscar comprovação para as hipóteses formuladas.

Galilei (1932) afirmou que existe uma resposta adequada para todas as coisas,

desde que se possa usar a razão para formular nossos questionamentos e considerar

experimentos para comprová-los, sendo seus resultados superiores a qualquer argumento

humano. Para Davies (1990), a base do método científico é a construção de uma teoria e, para

se construir uma teoria axiomaticamente, entende-se que é necessária a formulação de

hipóteses que precisam ser analisadas e comprovadas ou descartadas. Por este motivo, o

processo de experimentação desempenha um papel fundamental dentro da ciência.

Para evidenciar a importância da experimentação na ciência, Travassos (2002)

afirma que:

“Experimentação é o centro do processo científico. Somente experimentos verificam

teorias. Somente experimentos podem explorar os fatores críticos e dar luz a um

fenômeno novo para que as teorias possam ser formuladas e corrigidas.

Experimentação oferece o modo sistemático, disciplinado, computável e controlado

para a avaliação da atividade humana. Novos métodos, técnicas, linguagens e

ferramentas não deveriam apenas ser sugeridas, publicados ou apresentados para

venda sem experimentação ou validação”.

13

A experimentação é uma técnica importante para a evolução da produção de

software dentro dos mais variados domínios de aplicação. Wohlin (2000) nos lembra que

existem quatro métodos importantes para se conduzir experimentos dentro da Engenharia de

Software: científico, de engenharia, experimental e analítico (WOHLIN, 2000 apud

TRAVASSOS, 2002).

Na Engenharia de Software, Gattaz (2000) afirma que existe a necessidade da

melhoria contínua do processo de produção, para propiciar a evolução da qualidade do

produto de software. Similarmente a Gattaz, Travassos (2002) ressalta que um dos principais

fatores que contribui para a necessidade de evolução contínua do processo de produção e do

produto é a competição por mercado.

Somando-se os conceitos de experimentação e engenharia de software surgiu a

Engenharia de Software Experimental (ESE) lançada no ano de 1999 pelo estudioso Claes

Wohlin e tem como objetivo a “... aplicação do método científico (indução de base

experimental), para (i) exprimir quantitativamente relações de causa-efeito entre

características do processo de desenvolvimento de software e a qualidade dos produtos e (ii)

compreender as virtudes e limitações de métodos, técnicas e ferramentas” (ABREU, 2005).

Para Sommerville (2003), o processo de software “é um conjunto de atividades

e resultados associados que produzem um produto de software”. Esse Processo de Software é

composto por vários outros processos.

Pretendeu-se, com este projeto, utilizar a Engenharia de Software Experimental

a fim de realizar experimento controlado no processo de teste de uma organização de

desenvolvimento de software proeminente, com intuito de adaptar e aperfeiçoar o processo

para a realidade de dois projetos desenvolvidos na instituição selecionados como campo

laboral. O desenvolvimento do trabalho visa buscar e identificar melhorias que possam ser

aproveitadas pela instituição e analisar se a ESE pode ser utilizada como parte da estratégia

para evolução de processos de software.

14

Motivação/Justificativa

Com a evolução do mercado de software, surge a necessidade da melhoria

contínua dos processos como forma de alcançar uma melhor qualidade dos produtos para

atender às exigências dos clientes. Na busca de se manter competitivas e aprimorar a

qualidade de seus produtos, as instituições da área têm buscado aperfeiçoar o seu processo de

teste devido à sua ênfase primordialmente na avaliação da qualidade do produto (RUP, 2002;

DONEGAN et al, 2005).

A área de qualidade de software pode ser divida em duas subáreas: qualidade

do processo e qualidade do produto. O presente trabalho se propõe a realizar um experimento

buscando aprimorar a primeira subárea a fim de contribuir também para a melhoria da

segunda, pois segundo Sommerville (2003) a melhoria do processo implica diretamente na

melhoria do produto final (SOMMERVILLE, 2003).

De acordo com Rios (2007; p.20) “... as dimensões de qualidade só podem ser

alcançadas quando o teste de software é executado com um processo próprio...” e esse

processo necessita ser evoluído como os demais que compõem todas as fases de produção

(RIOS, 2007).

A escolha do tema se justifica pelo fato da engenharia de software

experimental possibilitar a execução de experimentos orientados e controlados a fim de que se

possa avaliar seus efeitos e validar ou descartar hipóteses levantadas (TRAVASSOS, 2002).

Para permitir que se possa executar e avaliar a eficácia de idéias e práticas para a melhoria

dos processos de software.

O campo laboral selecionado foi uma empresa de desenvolvimento de software

voltada principalmente para projetos em P&D (Pesquisa e Desenvolvimento).

A seleção do Processo de Teste e do campo laboral ocorreu devido à

necessidade de melhoria dos indicadores que medem a densidade dos defeitos encontrados em

testes sistêmicos e da produtividade das atividades de teste de dois projetos de

desenvolvimento de software na instituição. Este indicador é composto pela análise da

quantidade e criticidade dos defeitos identificados durante um ciclo de teste sistêmico. A

15

produtividade é medida baseada na base histórica da instituição orientada por linhas de base

de desempenho organizacional. Com base nessa necessidade observou-se a possibilidade da

utilização da ESE para solução do problema.

Com o objetivo de promover uma melhoria do processo de testes e qualidade

dos produtos, desenvolveu-se um experimento denominado Preteste que, diferentemente dos

demais tipos de teste, foca o fluxo básico de casos de uso, visando a identificação antecipada

de defeitos graves.

Objetivos

Objetivo Geral

O objetivo geral do projeto é aplicar conceitos da Engenharia de Software

Experimental sobre o processo padrão de testes de uma organização de desenvolvimento de

software com o objetivo de melhorar índices dos indicadores de teste e produtividade.

Objetivos Específicos

Compreender a importância da Engenharia de Software Experimental

aplicada a processos de testes e, conseqüentemente, na melhoria de

processos de software;

Identificar, no processo de testes da instituição selecionada como

campo laboral, oportunidades de aplicação de experimentos da ESE;

Reduzir os índices dos indicadores de Densidade de Defeitos e

Produtividade, a partir da incorporação do Preteste ao processo de

testes padrão da organização;

16

1 REFERENCIAL TEÓRICO

Este capítulo objetiva apresentar o referencial teórico que serviu de base para o

desenvolvimento da pesquisa.

1.1 Engenharia de Software

Surgiu a aproximadamente três décadas, por volta do ano de 1967, diante das

dificuldades de desenvolver produtos de software de qualidade frente ao aumento da demanda

no mercado. Cria-se, assim, uma fase simbolizada pela incapacidade de produção que

atendesse às necessidades das organizações. Essa fase foi denominada de Crise de Software,

que emergira no fim da década de 1970. Dentre as principais causas dessa crise estão: a

complexidade dos problemas a ser resolvida, a carência de técnicas estabelecidas para o

desenvolvimento de produtos que atendessem às expectativas dos usuários e a própria

complexidade do processo de desenvolvimento do software (DESCHAMPS,2008).

Engenharia de Software consiste na aplicação de uma abordagem disciplinada,

sistemática e quantificável aos princípios da ciência da computação. Além disso, ela

compreende o estudo e a busca por abordagens para o desenvolvimento de atividades

relacionadas à área de software (FUNKS,2002).

Segundo PURRI (2006), a Engenharia de Software representa o

estabelecimento de princípios científicos juntamente com métodos para a implementação

eficaz de processos, técnicas e ferramentas para a construção do produto.

17

O objetivo principal dessa ciência é oferecer as melhores práticas para o

desenvolvimento de software, além de apresentar alternativas para o gerenciamento do

processo de desenvolvimento, conhecidos como modelos ou metodologias.

Apesar da Engenharia de Software já existir há cerca de três décadas, os

problemas ressaltados pela Crise do Software continuam até hoje. Boa parte das técnicas,

metodologias e ferramentas desenvolvidas através de seu estudo, ainda é algo distante da

realidade de muitas empresas voltadas para o desenvolvimento de software (DESCHAMPS,

2008).

Por conta da abrangência da Engenharia de Software, surgem diversos

problemas durante a construção do produto tais como (MENDONÇA, 2008):

Existe um número enorme de variáveis envolvidas;

Seus efeitos são mal compreendidos e modelados;

Existem poucos modelos;

Existe pouca compreensão dos limites de tecnologias;

Existe pouca análise e experimentação controlada

Pode-se lidar com essas questões através de 4(quatro) formas de pensamento.

O paradigma científico, de engenharia, analítico e o experimental (WOHLIN, 2000 apud

TRAVASSOS, 2002).

Para Travassos (2002), o “método científico observa o mundo, mede e analisa,

verifica as hipóteses do modelo ou da teoria...”. O método de engenharia observa as soluções

existentes, sugere as soluções mais adequadas, desenvolve mede e analisa e repete até que

nenhuma melhoria adicional seja possível. O Paradigma Analítico é fundamentado na

matemática, propõe uma teoria formal ou um conjunto de axiomas, deriva matematicamente

um conjunto de resultados e é à base da ciência da computação.

18

Já o Paradigma Experimental até então discutido e que é o foco desse trabalho

propõe:Observação do mundo ou soluções existentes;

Um novo modelo de comportamento ou solução melhor;

Medir e analisar modelo experimentalmente;

Validar (ou refutar) hipóteses e modelos;

Repetir o processo para evoluir o conhecimento.

De acordo com Travassos (2002), “os objetivos relacionados à execução de

experimentos em engenharia de software experimental são a caracterização, avaliação,

previsão, controle e melhoria a respeito de produtos, processos, recursos, modelos, teorias...”.

Cada etapa exige um nível de esforço superior a anterior e a mais completa de todas é a etapa

de melhoria que pressupõe que podemos caracterizar, avaliar, predizer e controlar um

experimento propondo ainda melhorias através desse experimento, a um produto ou processo.

Portanto ao longo do desenvolvimento desse estudo será utilizada como objetivo a melhoria.

Ainda em concordância com Travassos (2002), a realização de um estudo

experimental envolve uma série de passos: a observação, a construção de um projeto

experimental, a coleta de dados, a análise dos dados de forma qualitativa ou quantitativa e a

avaliação do processo e produtos que estão sob experiência.

1.1.1 Processo de Software

O “Processo de Software é um conjunto de atividades e resultados associados

que produzem um produto de software.” Dentro do âmbito de desenvolvimento este processo

orienta os passos para a execução de determinada atividade com certo grau de maturidade.

(SOMMERVILLE, 2004).

Pressman (2003) apud Pinheiro (2008) defende que um processo de software

pode ser entendido como um framework para as tarefas que são necessárias para a construção

de software de alta qualidade.

19

Na organização estudada os processos definem a forma de trabalho de seus

colaboradores; fatos que ocorrem durante a produção, que não estejam de acordo com os

processos, podem ter dois tratamentos: a) requerem uma adaptação ao processo para aquela

determinada situação ou b) são registrados como não-conformidades ao processo pelo grupo

de qualidade institucional. Com isso percebe-se a importância do processo dentro da

corporação.

1.1.2 Engenharia de Software Experimental

A Engenharia de Software Experimental (ESE) é uma subárea da engenharia

de software e tem como objetivos o aprimoramento de técnicas e a verificação de hipóteses

surgidas na própria engenharia de software. (DANDOLINI, 2006).

Existem diversos autores que definem o termo Engenharia de Software.

Considerando-se como exemplo o autor Mendonça (2008) tem-se: “... a disciplina que estuda

o desenvolvimento e a manutenção de software em escala industrial possuindo métodos,

técnicas e ferramentas para gerência, desenvolvimento, manutenção, reengenharia, e

componentização de software”.

No dia a dia da engenharia de software surgem diversos questionamentos,

como por exemplo: será que a linguagem utilizada é a mais adequada para determinada

situação? Até que ponto a etapa de teste contribui para a melhoria da qualidade do produto?

Alguns desses questionamentos podem ser mais bem entendidos e até solucionados através da

aplicação de métodos experimentais para validarem tais hipóteses.

Para Travassos (2002), o método experimental sugere o modelo, desenvolve o

método qualitativo e/ou quantitativo, aplica um experimento, mede, analisa e avalia o modelo.

Segundo ele é o ideal para se lidar com a engenharia, pois agrupa “a proposição e a avaliação

do modelo com estudos experimentais”.

Para Mendonça (2008), deve-se pensar a engenharia de software de forma

experimental para melhor aproveitar seus recursos, podendo utilizar as seguintes abordagens:

20

Realizar uma revisão sistemática: agrupar, selecionar e sumarizar as

idéias de um conjunto de autores sobre um determinado assunto

gerando resultados repetíveis;

Fazer um levantamento de campo (survey): são coletadas amostras

com intuito de melhor entender o ambiente ou população de onde as

amostras foram retiradas e os dados obtidos facilitam a aplicação do

pensamento lógico (BABBIE, 2001);

Executar um estudo de caso: consiste na “observação detalhada de

um contexto ou indivíduo, de uma única fonte de documentos ou de um

acontecimento específico” (BODGAN e BIKLEN et al., 1994);

Desenvolver um experimento controlado: A idéia de um

experimento científico controlado é reproduzir as condições necessárias

por uma teoria e manipular as variáveis relevantes com objetivo de

medir e proporcionar análise de parâmetros dessa teoria (MONTILIVI,

2003).

Wohlin (2004) apud Mendonça (2008) defende que a abordagem científica

para a realização de experimentos deve responder a três questionamentos:

a) Quais são seus objetivos e qual é o seu problema?

b) Existe evidência na literatura e como esta se aplica ao seu problema?

c) Se não existe a evidência suficiente, que tipo de avaliação experimental se

deve fazer?

A esta abordagem científica dá-se o nome de Engenharia de Software

Experimental.

Barros (2007) afirma que “Um estudo experimental tem como objetivo colher

dados, em um ambiente controlado, para confirmar ou rejeitar a hipótese”.

21

Experimentos são definidos por Kerlinger (1973) como:

“Um experimento é um tipo de pesquisa científica na qual um pesquisador manipula e

controla uma ou mais variáveis independentes e observa a variação na variável ou

variáveis dependentes concomitantemente à manipulação das variáveis

independentes”.

Para o entendimento da forma de utilização da experimentação na Engenharia

de Software, deve-se compreender o paradigma experimental proposto por Travassos (2002)

que fala:

Para entender uma disciplina é necessária a construção de modelos, não

só de produtos, mas também de processos e domínios de aplicação;

Para testar se nossa compreensão está correta precisam-se testar estes

modelos, isto implica em experimentação;

Ao se analisar resultados experimentais aprendem-se e encapsula-se

este conhecimento em modelos mais evoluídos;

Segundo o autor esse paradigma pode ser utilizado nas mais diversas áreas de

conhecimento, e é definido pelo ciclo: “modelar, experimentar, aprender”.

Propõe-se ainda nesse trabalho que seja acrescentado mais um passo ao ciclo

que é reusar. Acredita-se que o reuso das informações aprendidas com o experimento bem

como o reuso das técnicas utilizadas para o desenvolvimento do próprio experimento,

possibilitam não somente a reutilização do aprendizado como a possibilidade de refazer o

experimento gastando um esforço inferior ao da primeira realização.

Existem dois tipos de estudos possíveis na ESE o estudo observacional, no

qual não ocorre qualquer intervenção do pesquisador e o estudo experimental, voltado ao teste

de hipóteses com abordagem quantitativa gerando experimentos controlados.

Este trabalho segue o modelo de estudo experimental através da análise

quantitativa que possui medição controlada, objetividade orientada à verificação, e pela

22

avaliação do processo de teste e dos produtos de software gerados em dois projetos que

constituem o cenário laboral.

1.2 Testes de Software

1.2.1 Conceitos e Importância de Testes

O teste do software é um processo realizado pelo testador que tem como

insumo outros processos como a especificação de requisitos, a modelagem e codificação, até

que se chegue à execução do teste propriamente dito.

Geralmente entende-se que a atividade de teste serve para demonstrar o correto

funcionamento de um programa, mas na verdade ele é utilizado como um processo que busca

identificar defeitos (RIOS, 2007).

Um defeito em um produto pode trazer muitas conseqüências indesejadas,

dentre as quais a própria inutilização do produto. Isso gera perda de esforço, de tempo e

dinheiro para a instituição que o produziu e para o cliente que a solicitou. Rios (2007) defende

que, no mundo do software quanto mais cedo se identifica um problema mais rápido e mais

barato é sua solução. (Gráfico 1 – Regra de 10 de Myers).

Gráfico 1 – Regra de 10 de Myers. Fonte: Rios (2007 p.19)

Como vimos no gráfico 1 a Regra de 10 Myers afirma que quanto mais tarde o

defeito é identificado mais cara será sua correção. Portanto, os ciclos de teste que compõem a

23

execução de todo o processo em cada nova versão da aplicação têm um papel fundamental na

garantia da qualidade do produto e redução do custo.

Como se entende claramente que um produto defeituoso não pode ser

considerado de boa qualidade é extremamente importante que após a codificação exista a

execução de baterias de teste visando identificar os problemas, para que estes possam ser

corrigidos, melhorando a qualidade do produto e mantendo-se positivo o grau de satisfação do

cliente.

1.2.2 Tipos de Teste

O teste é uma forma de buscar melhorar a qualidade de um software. Para

tanto, existem diversas formas de se testar um produto (RIOS, 2007).

A macro divisão dos tipos de teste se dá em duas categorias: os testes caixa

branca em que se pode observar o código (Ex: testes de unidade), e os testes caixa preta nos

quais se observam apenas, a aplicação e a base de dados (Ex: testes sistêmicos) (ROCHA,

2007). A Tabela 1 ilustra essa classificação para cada tipo de teste:

Tabela 1 - Tabela que representa a macro divisão dos tipos de teste

Testes Tipos de Testes

Teste de Unidade Caixa-Branca

Teste de Integração Caixa-Branca e Preta

Teste Funcional Caixa-Preta

Teste de Aceitação Caixa-Preta

Teste de Regressão Caixa-Branca e Preta

Teste de Cobertura Caixa-Branca e Preta Fonte: Rocha (2007)

Rios (2007 p. 255-258) define os principais tipos de teste como sendo:

Teste de Unidade: Estágio mais baixo da escala de testes. Eles são

aplicados aos menores componentes de código criados, visando que

esses atendam as especificações de características e funcionalidade.

24

Teste de Integração: É executado em uma combinação de

componentes para verificar se, integrados, eles funcionam

corretamente, ou seja, para assegurar que as interfaces funcionam

corretamente e que os dados são processados conforme o especificado.

Teste Sistêmico Funcional: É realizado pelos testadores para verificar

se o sistema está fazendo exatamente o que foi especificado.

Teste de Aceitação: Teste feito pelo cliente para validar a liberação do

software para produção.

Teste de Regressão: Retesta partes já testadas em ciclos anteriores e

objetiva garantir a integridade da aplicação após a adição de novos

componentes. Essa regressão pode ser total onde será retestado todo o

software, ou apenas parcial em que parte do produto será retestada.

Existem ainda, segundo Rios (2007), dois testes utilizados em domínios de

aplicação em que o volume de dados é elevado e necessita-se garantir esse requisito na

aplicação. São os testes de desempenho e de volume. No de desempenho, visa-se mostrar se o

produto consegue manter seu tempo de resposta, mesmo com um grande volume de dados.

No caso do de volume, a aplicação é submetida ao limite de dados especificados em seus

requisitos e é analisado seu comportamento.

Os tipos de teste a serem utilizados dependem diretamente do domínio de

aplicação a ser testado e do processo de teste definido na instituição.

1.3 Qualidade do Produto de Software

1.3.1 Conceitos e Estratégias Principais

Os conceitos de Qualidade têm evoluído por mais de cinqüenta anos, criando

um sentido mais amplo, dependente do ambiente onde é analisado. Tais conceitos continuam

com sua validade e são utilizados mundialmente como direcionadores de projetos de

25

Qualidade nas organizações (DANIELEWICZ, 2006). Alguns dos principais conceitos de

Qualidade são:

"Qualidade é a totalidade das propriedades e características de um produto ou serviço

que lhe conferem habilidade para satisfazer necessidades explícitas do cliente"

(Norma ISO 8402 - Vocabulário da Qualidade).

"Qualidade é adequação ao uso" (JURAN, 1992).

Segundo Juran (1992), a gerência da qualidade é realizada através de três

processos, que constituem a chamada “Trilogia Juran”:

Planejamento da Qualidade: consiste na atividade de desenvolver

produtos e processos exigidos para satisfazer as necessidades dos

clientes. Compreende uma série de passos, que resumidamente são:

estabelecer metas de qualidade; identificar os clientes; determinar as

necessidades dos clientes; desenvolver características do produto que

atendam às necessidades dos clientes; desenvolver processos que sejam

capazes de produzir aquelas características do produto; estabelecer

controles de processos e transferir os planos resultantes para forças

operacionais.

Controle da Qualidade: consiste nos passos de avaliar o desempenho

real de qualidade; comparar o desempenho real com as metas da

qualidade; agir a respeito da diferença.

Melhoramento da Qualidade: é o meio de elevar o desempenho da

qualidade a níveis sem precedentes. Consiste nos passos: constituir

uma infra-estrutura suficiente para garantir o melhoramento anual da

qualidade; identificar as necessidades específicas de melhoras;

estabelecer, para cada projeto, uma equipe com responsabilidades bem

definidas para levá-lo a uma conclusão de sucesso; prover recursos,

motivação e treinamentos de que as equipes necessitam para

diagnosticar causas, estimular os estabelecimento de remédios e

estabelecer controles para manter os ganhos.

26

A Tabela 2 mostra as atividades desenvolvidas durante as etapas de cada um

dos três processos para alcance da qualidade do produto através da trilogia Juan.

Tabela 2 - Processos da qualidade compreendidos pela trilogia Juan

Gerência para a Qualidade

Planejamento da Qualidade Controle da Qualidade Melhoramento da

Qualidade

Estabelecer metas de qualidade.

Identificar quem são os clientes.

Determinar as necessidades dos

clientes.

Desenvolver as características

do produto que atendem às

necessidades dos clientes.

Desenvolver processos capazes

de produzir as características do

produto.

Estabelecer controles do

processo; transferir os planos

para as forças operacionais.

Avaliar o desempenho real.

Compara o desempenho real

com as metas de qualidade.

Agir sobre a diferença.

Provar a necessidade.

Estabelecer a infra-estrutura.

Identificar os projetos de

melhoramento.

Estabelecer as equipes do

projeto.

Prover as equipes com

recursos, treinamento e

motivação para:

Diagnosticar as

causas

Estimular os

remédios

Estabelecer controles para

manter os ganhos.

Fonte: Trilogia Juan (1992)

Um Produto de Software é definido pela norma ISO/IEC 9126-1 [ISO9126-1

1997] como "uma entidade disponível para liberação a um usuário". Também segundo essa

norma, Qualidade de Software é definida como "a totalidade das características de um produto

que lhe confere a capacidade de satisfazer necessidades explícitas e implícitas". Tais

necessidades explícitas são expressas na definição de requisitos elaborados pelo produtor e as

necessidades implícitas são aquelas que podem não estar expressas nos documentos do

produtor, mas que são necessárias ao usuário (GLADCHEFF, 2001).

27

Segundo Jimenez (1999), produtos de software são largamente utilizados pela

comunidade nos mais diversos setores, que envolvem desde aplicações simples até sistemas

críticos e complexos, tais como sistemas de segurança militar, sistemas de controle aéreo e

sistemas de controle financeiro. Com isso, a qualidade de um produto de software é uma

questão fundamental, pois estes produtos têm um impacto significativo sobre a sociedade.

Jimenez (1999) afirma que:

“Os objetivos da engenharia de software estão centrados na melhoria da qualidade

dos processos e produtos de software, bem como na redução dos esforços e custos da

produção de software. A reutilização de componentes é uma técnica importante neste

contexto, uma vez que permite a construção de software através de módulos bem

especificados e testados”.

Baseados nos autores citados pode-se compreender que a garantia da qualidade

do produto de software é relevante durante o seu processo de produção, principalmente em se

tratando de domínios de aplicação críticos para a sociedade como: sistemas financeiros, de

saúde e de controle de trânsito (aéreo ou terrestre, dentre outros).

É possível perceber ainda que o controle da qualidade do software ao longo do

processo de produção minimiza os custos, os riscos e favorece a manutenção contínua do

produto.

28

2 PRETESTE

Este capítulo objetiva exibir as informações necessárias para a compreensão do

ambiente onde foi realizado o experimento, descrever o experimento proposto, denominado

Preteste – principal contribuição deste trabalho e apresentar os aspectos envolvidos em sua

aplicação.

2.1 Caracterização do domínio de experimentação

2.1.1 Campo Laboral

O campo laboral selecionado está situado na cidade de Fortaleza no estado do

Ceará. É uma instituição voltada para o trabalho de Pesquisa e Desenvolvimento (P&D) e tem

como missão “agregar valor ao negócio do cliente através de funcionários capacitados e

melhoria contínua dos seus processos” (CISNE, 2008).

A empresa é aderente ao método de maturidade organizacional Capability

Maturity Model Integration (CMMI) nível 5, International Organization for Standardization

(ISO) 9001:2000, Seis Sigma e tem como um dos seus pilares suas políticas institucionais, na

qual está inserida a política relacionada à qualidade. Para atingir essa excelência, a instituição

aposta na melhoria contínua de seus processos de trabalho (DONEGAN et al, 2005).

Por ser uma organização de P&D, o desenvolvimento de projetos de inovação

é bastante comum, gerando uma cultura voltada ao favorecimento da realização de novas

experiências na instituição.

29

2.1.2 Políticas de Qualidade da Organização Estudada

Na organização, a qualidade dos produtos gerados tem grande relevância para

a instituição. A garantia da qualidade é feita através da análise de indicadores e de políticas

organizacionais que regem a forma de trabalho de seus funcionários.

As políticas institucionais de qualidades são definidas pelo grupo de qualidade

institucional composto pelos Quality Assurances em resposta às necessidades apontadas pelos

outros grupos da instituição. Essas diretrizes podem ser observadas nos documentos internos

que orientam os funcionários sobre as políticas de qualidade.

Nesses documentos, pode-se encontrar a missão da instituição que é focada em

proporcionar agregação de valor ao negócio do cliente através de melhoria contínua. (RUP,

2002; DONEGAN et al, 2005).

Para manter o seu padrão de qualidade a empresa é aderente à metodologia de

maturidade organizacional Capability Maturity Model Integration (CMMI) nível 5 e a

metodologia Seis Sigma. É regido ainda pela norma International Organization for

Standardization (ISO) 9001:2000 e desenvolveu diversos instrumentos de trabalho que estão

disponíveis a todo funcionário da instituição no repositório de documentos na intranet. Esses

instrumentos são descritos através quatro principais categorias que são:

Processos: mantidos pelo grupo de Suporte ao Processo de

Desenvolvimento e definidos com ajuda dos colaboradores da empresa;

está de acordo com a norma ISO 9001:2000 e com o modelo CMMI.

Procedimentos Institucionais: mantidos pelo grupo de Suporte ao

Processo de Desenvolvimento e definidos com ajuda dos colaboradores

da empresa; estão de acordo com a norma ISO 9001:2000 e com o

modelo CMMI. Os Procedimentos Institucionais estabelecem as

práticas obrigatórias para a organização.

Orientações: Os documentos de orientações estabelecem guias e

roteiros de trabalhos para os projetos, complementando as práticas

30

institucionais obrigatórias estabelecidas nos Procedimentos

Institucionais.

Registros: constituem todos os demais documentos utilizados pela

organização: modelos, planos, planilhas que registram as informações

de cada projeto e dos grupos institucionais sobre a realização de suas

atividades, de acordo com o estabelecido institucionalmente.

As políticas para a garantia da qualidade são direcionadas para cada setor de

trabalho institucional.

2.1.3 Principais Atividades do Processo de Teste da Empresa Estudada

O processo de teste é composto por Procedimentos, Listas de

Verificação, orientações e Modelos. A execução do processo pode ser divida em ciclos e

iterações, onde um ciclo agrupa diversas iterações e é iniciado na primeira iteração de testes e

concluído quando é realizada a entrega para o cliente onde são executados os testes de

aceitação. A iteração é realizada pela equipe de testes de forma manual onde é testado um

escopo definido em uma determinada versão liberada pela de desenvolvimento.

O processo é definido pelas principais etapas:

Planejar as atividades de teste: Nesta atividade é elaborado o plano

de testes do projeto, definida a liderança de teste responsável e

definidos os critérios de aceitação do projeto pelo cliente;

Elaborar especificações de testes: Nesta etapa são especificados pelo

analista de testes, os testes que cobrem o escopo de testes da iteração e

serão executados fielmente pelos testadores;

Executar testes: são executados os scripts de testes planejados na

atividade Elaborar Especificações de Testes;

31

Reportar falhas: o reporte e gestão de falhas ocorrem paralelamente à

atividade de Executar testes podendo depois ser restados apenas os

casos de testes que deram problemas. Nesta etapa também são gerados

os relatórios de testes contendo os resultados da iteração.

Durante a etapa de planejamento é elaborado o plano de testes do projeto, e são

realizadas as solicitações de alocações de recursos do Grupo de Teste para a fase de execução

dos testes. Ambos são baseados no cronograma de trabalho definido para o projeto.

Na etapa de elaborar especificações de teste são criadas especificações de teste

baseadas em modelos, tendo como insumos os casos de uso do projeto. As especificações

deverão conter as informações necessárias para os testes e serem seguidas fielmente durante a

realização da atividade de execução.

A realização da execução dos testes e registro de falhas ocorre em paralelo. É

liberada uma versão da aplicação para teste e à medida que o testador realiza os testes,

identificam-se os possíveis defeitos, que são registrados imediatamente em uma ferramenta

web para gestão de pendências denominada JIRA. Deste modo, suas correções já podem ser

iniciadas pelo time de desenvolvimento em paralelo a execução do restante dos testes.

Entende-se por pendência o registro na ferramenta de gestão indicada,

enquanto defeito corresponde à falha observada no produto de software durante a execução

das atividades de teste.

Existem 5 (cinco) tipos de testes realizados atualmente na instituição: o teste

de unidade que é realizado pelo time de desenvolvimento; o teste de integração, feito pelo

time de desenvolvimento em parceria com o grupo de teste; o teste sistêmico, que é executado

pelo grupo de teste e o reteste, que visa apenas os testes dos problemas identificados e

corrigidos durante o teste sistêmico executado também pelo grupo de testes.

Estes passos são repetidos até que se chegue a uma versão estável da aplicação

que possa ser entregue ao cliente. Este realiza uma última bateria de testes denominada de

testes de aceitação. Caso sejam identificados problemas nestes testes, a aplicação volta à

empresa para correções ou, caso contrário, emite-se o documento de aceitação do produto.

32

2.2 Detalhamento do Cenário do Preteste

2.2.1 Introdução

Este tópico recebe destaque por ter sido o Presteste uma contribuição adquirida

com a execução desta pesquisa e ter sido metodologia relevante na construção dos resultados

obtidos.

2.2.2 Caracterização do Cenário do Experimento

Por motivo de sigilo industrial, informações confidenciais como os nomes dos

clientes, da organização e dos projetos são omitidas. Deste modo, designam-se os projetos em

questão pelas letras A e B para facilitar a distinção das informações contidas.

O experimento foi aplicado a um incremento do projeto A. O projeto A tem

como objetivo o desenvolvimento de uma solução de inovação para um cliente internacional

desenvolvida nas linguagens C# da Microsoft, Java da empresa SUN Micro Systems e

interfaces em Adobe Flex da empresa Adobe. O projeto conteve o agrupamento de

plataformas de desenvolvimento WEB e Mobile e envolveu a utilização de RFID (Radio

Frequency Identification – Identificação por fequência de rádio) como meio de identificação

de produtos gerando ainda o desenvolvimento de dois novos dispositivos de hardwares.

O projeto B teve como objetivo a criação de uma aplicação WEB utilizando à

linguagem C# que foi desenvolvida para o mesmo cliente do Projeto A. A aplicação visa

modelar o fluxo de trabalho de um determinado setor da empresa e gerar relatórios de

produção.

O projeto B possui complexidade de tecnologia inferior ao projeto A. Em

contrapartida, a complexidade de negócio é consideravelmente superior a do projeto A. O

ambiente e os requisitos de negócio complexos desses projetos geram muitas dificuldades ao

longo do desenvolvimento, o que resulta na construção de hardwares específicos, um para

servir de interface entre a aplicação móbile e a aplicação WEB possibilitando a comunicação

33

via RFID e outro para servir como tag de identificação dos produtos que serão mantidos pelo

sistema, possibilitando a identificação dos produtos. Devido a esse grau de complexidade foi

necessária a criação de uma equipe de testes específica para os projetos.

2.2.2.1 Equipe Envolvida

Tabela 3 – Equipe Participante do Experimento

Perfil Projeto Contribuição

Coordenador de Projetos A Acompanhamento do projeto e dos resultados

obtidos no Preteste.

Desenvolvedor A Resolução dos defeitos e implantação de

melhorias identificadas durante o ciclo de teste.

Desenvolvedor A Resolução dos defeitos e implantação de

melhorias identificadas durante o ciclo de teste.

Analista de Requisitos A Resolução de problemas de requisitos

identificados e suporte ao Testador.

Analista de Teste e

Coordenadora do

Experimento.

A e B Identificação de problemas na aplicação através

do Preteste e gestão de problemas.

Desenvolvimento do modelo Preteste. Coleta e

análise de resultados do experimento.

Desenvolvimento da ferramenta

PretesteResults.

Coordenador de Projetos B Acompanhamento dos resultados obtidos no

Preteste e sugestão de melhorias.

Desenvolvedor B Resolução dos defeitos e implantação de

melhorias identificadas durante o ciclo de teste.

Desenvolvedor B Resolução dos defeitos e implantação de

melhorias identificadas durante o ciclo de teste.

Desenvolvedor B Resolução dos defeitos e implantação de

melhorias identificadas durante o ciclo de teste.

Desenvolvedor B Resolução dos defeitos e implantação de

melhorias identificadas durante o ciclo de teste.

Testador B Identificação de defeitos na aplicação através

da realização do Preteste.

Fonte: Cronograma dos Projetos A e B

34

2.2.2.2 Objetivos/Aplicações

A equipe de Testes dos projetos estudados tem como função reverter o

contexto de baixa produtividade nas atividades e o alto índice de defeitos identificados que

podem estar relacionados à complexidade de negócio ou de ambiente das aplicações

desenvolvidas e minimizar o tempo gasto com ciclos de testes nos projetos. Com isso, foi

aplicada à Engenharia de Software Experimental na busca de alternativas para contornar essa

situação. A aplicação de experiências resultou no desenvolvimento de um processo de

trabalho denominado Preteste, que tem como objetivo validar a estabilidade do build (versão

compilada da aplicação) após ter sofrido alterações e possibilitar a identificação da liberação

da aplicação ou não para o início dos testes sistêmicos.

O Preteste foi proposto objetivando-se a melhoria da produtividade da equipe

de testes e a buscar da redução da densidade de defeitos que interferem em métricas que são

coletadas pelo controle de qualidade da organização para cada projeto.

2.2.2.3 Ferramentas e Materiais

Foi utilizada a ferramenta Microsoft Excel para criação do modelo de planilha

para registro de defeitos. O sistema operacional no qual o Preteste foi aplicado é servidor de

integração dos projetos composto de uma máquina desktop que possui o Windows XP. Como

complementações a esse ambiente, e para paralelizar o Preteste de diversos casos de uso, são

utilizadas também as máquinas desktop de dois testadores, em que o acesso ao ambiente de

integração foi disponibilizado para que se pudesse ter acesso à aplicação.

O registro e acompanhamento dos defeitos foram realizados, inicialmente,

utilizando-se a ferramenta Microsoft Office Excel. A inexistência de uma ferramenta

específica para gerência das alterações de estado e a construção manual de relatórios torna

este trabalho mais lento e sucetível a erros. Pelos motivos expostos, decidiu-se construir uma

ferramenta denominada de PretestResults que soluciona estes problemas.

35

2.3 Análise do Processo de Testes da Organização Selecionada

Com objetivo de se identificar quais eram os pontos fracos que estavam

favorecendo a alta densidade de defeitos nos projetos e a baixa produtividade de trabalho da

equipe de testes, foi realizada uma análise do processo de testes da organização estudada a

fim de se identificar pontos que pudessem contribuir para a melhoria desses fatores. Um dos

principais pontos identificados foi à tardia identificação de defeitos de alta gravidade, gerando

um elevado retrabalho da equipe de testes e a necessidade de execução de diversos ciclos de

testes.

2.3.1 Relação do Preteste com a ESE

Durante o desenvolvimento deste trabalho foram aplicadas 3 (três) das 4

(quatro) principais abordagens da engenharia de software experimental já citada

anteriormente, sendo elas:

Fazer um levantamento de campo (survey): essa abordagem foi

utilizada para levantamentos dos dados dos indicadores para que se

conhecesse a realidade atual dos projetos e se pudesse traçar uma meta

de melhoria a ser atingida;

Executar um estudo de caso: a execução de um estudo de caso foi

necessária para que se tivesse um universo onde se pudessem

desenvolver experimentos na busca de soluções para a melhoria da

densidade de defeitos e da produtividade da equipe de testes. O estudo

de caso envolveu as fases 3 (três) e 4 (quatro) do projeto A e fase 2

(dois) e 3 (três) do projeto B.

Desenvolver um experimento controlado: o experimento foi

realizado de forma controlada no incremento 1 da fase 3 do projeto A.

Objetiva-se validar as hipóteses de que a produtividade estava baixa

devido ao grande volume de defeitos identificados e/ou grande

ocorrência de defeitos de criticidade bloqueadora e ainda de que a

36

densidade de defeitos estava alta devido à aplicação está sendo

preparada para testes sem a liberação a estabilidade mínima necessária.

Esse experimento deu origem ao Preteste.

2.4 Aplicação do Preteste no Campo Laboral

2.4.1 Identificação da Necessidade

O Preteste surgiu na organização em meio a um desafio proposto pelo

coordenador do projeto A de que a equipe de teste buscasse alternativas para que se pudessem

melhorar os indicadores de produtividade principalmente para a disciplina de testes e a

densidade de defeitos identificados em testes sistêmicos que tiveram resultados ruins durante

a primeira e segunda fase do projeto.

Como tentativa de melhorar o indicador de produtividade foram levantados e

organizados por criticidade os fatores que se acredita ter contribuído para a baixa

produtividade da equipe de testes do Projeto A. As criticidades foram definidas de acordo

com o impacto inferido hipoteticamente que o fator produziria no resultado da produtividade

atual da disciplina de testes, sendo dividas em 1 (leve), 2 (Moderada) e 3 (Grave). O objetivo

desta divisão era que se pudesse analisar a gravidade e influência direta dos problemas

identificados para o resultado da produtividade. Os problemas identificados podem ser

observados na Tabela 4.

Foram observados também os fatores que impactavam na alta densidade de

defeitos do projeto e identificou-se serem fatores semelhantes aos de produtividade.

37

Tabela 4 – Principais Problemas que Interferem na Produtividade da Equipe de Testes

Problemas Criticidade Influência

Grande ocorrência de defeitos com

criticidade Bloqueadora

Grave Gera desperdício de tempo do testador,

pois é preparado o início do ciclo de

testes, feita a alocação da equipe, a linha

de base é passada e no início dos testes o

aparecimento de um defeito Bloqueador

impede o restante do teste do caso de

uso bloqueado. Isso gera o desperdício

do tempo gasto até o momento, pois, o

caso de uso obrigatoriamente deverá ser

testado todo novamente. Aumentando a

densidade de defeitos do projeto.

Dificuldades de Compreensão do

contexto de Hardware e Software da

aplicação.

Moderada Gera demora na execução dos testes

principalmente nos testes que não

utilizam comunicação via ethernet. A

execução via GRPS tem demandado

diversos problemas de funcionamento.

Gerando várias interpretações de

defeitos do sistema que na verdade não

eram propriamente defeitos reais e sim

problemas de infra-estrutura.

Não aplicação da planilha de testes

pelos desenvolvedores antes da

liberação do código.

Moderada Gera elevado número de defeitos que

poderiam ter sido filtrados

anteriormente. Este fator ocasiona muito

tempo gasto para o cadastro de feitos no

JIRA. Aumentando a densidade de

defeitos do projeto.

Fonte: Relatório de Preteste

O indicador de qualidade relacionado à produtividade é controlado

estatisticamente pela organização e possui relevância na calibração dos da meta de

produtividade organizacional. Esse hoje é calculado seguindo-se fórmula matemática na qual

a instituição pesquisada não permitiu divulgação pública e é coletado nos projetos.

O indicador de qualidade relacionado à densidade de defeitos identificados é

controlado estatisticamente pela organização e possui relevância na calibração da meta

organizacional de qualidade do produto. Esse hoje é calculado seguindo-se fórmula

38

matemática e forma de coleta na qual a instituição pesquisada não permitiu divulgação

pública.

Os dados coletados para os indicadores são registrados na ferramenta de

controle do projeto e posteriormente são enviados para popular a base histórica

organizacional.

Com a avaliação negativa desses indicadores esses dados passam a influenciar

os indicadores organizacionais e retratam uma visão de baixa produtividade e alta densidade

de defeitos a nível organizacional. Essa realidade gera gastos de recursos com ações de

melhorias podendo chegar até a reformulação de equipes dos projetos envolvidos. Com isso, é

de extrema relevância que se mantenha esses indicadores dentro dos limites de tolerância

aceitos pela organização.

Após a análise dos fatores decidiu-se desenvolver uma etapa de testes

complementar mais ágil, mais efetiva na verificação de se a versão liberada está realmente

pronta para testes sistêmicos evitando-se assim desperdícios de recursos para o projeto A.

Surgiu então o Preteste que posteriormente foi aproveitado para o projeto B.

2.4.2 Etapas do Preteste

Para concepção do Preteste buscou-se orientação através pesquisas sobre

metodologias já existentes no mercado.

As etapas para a construção do Preteste tiveram atividades definidas por etapas

conforme listadas abaixo:

Definir: nesta etapa foi definido o escopo do projeto onde inicialmente

se aplicaria o Preteste e foi definida a primeira versão do processo

como vemos na Figura 1.

39

Fig.1 – Primeira Versão do Processo Preteste

Medir: nesta etapa foram levantados dados referentes aos valores dos

indicadores alvo naquele momento. Identificados os principais pontos

que contribuíram para o desempenho abaixo da média desses

indicadores (Ver Tabela 4). Analisamos a forma de coleta definida em

ferramenta institucional e o armazenamento, revisamos as coletas com

intuito de observar a confiabilidade dos dados.

Analisar: Analisamos os dados coletados e sua fonte, ou seja, quem

era responsável pela geração daqueles dados. Foram observadas

também as causas para os principais problemas identificados conforme

visto na Tabela 5.

40

Tabela 5 – Principais Problemas que Interferem na Produtividade da Equipe de Testes e geram Aumento

da Densidade de Defeitos.

Problemas Causa

Grande ocorrência de defeitos com

criticidade Bloqueadora

Pouco tempo para a codificação de itens novos

devido ao retrabalho com correções de problemas

de iterações anteriores.

Dificuldades de Compreensão do contexto

de Hardware e Software da aplicação.

Falta de treinamento de contextualização do

projeto para a equipe de testes.

Não aplicação da planilha de testes

pelos desenvolvedores antes da

liberação do código.

Falta de tempo e compromisso para a execução

desta tarefa.

Melhorar: nessa etapa foi verificada a necessidade de se manter os

dados do Preteste em um relatório e realizar o registro de defeitos

identificados em algum tipo de ferramenta, pois, como era algo

experimental, a organização não permitiu o registro dos defeitos em sua

ferramenta padrão. Com isso, foi alterado o fluxo do processo de

Preteste para englobar a atividade elaborar relatório (Ver Figura 5) e

foram criados os modelos de Relatório de Preteste e o Registro e

Acompanhamento de Defeitos que estão incluídos em um mesmo

arquivo. (ANEXO 1)

Controlar: nessa etapa foi verificada a necessidade de se acompanhar

a evolução dos indicadores alvo a fim de perceber se a aplicação do

Presteste estava trazendo benefícios ao projeto.

2.4.3 Objetivo do Preteste

O objetivo principal do Preteste foi prover uma forma de se executar a

disciplina de testes de software de maneira produtiva, com redução de problemas e

desperdício de esforço.

41

2.4.3.1 Processo

O processo Preteste é composto por seis principais etapas que são definidas

como macro-atividades, como se pode ver na Figura 2. A Figura 2 contempla a evolução do

processo para versão 1.1 onde dói englobada a elaboração de um relatório após a realização

do Preteste.

Fig. 2 – Fluxo do Processo Preteste Versão 1.1

Planejar Preteste: Etapa em que é definido o escopo a ser aplicado o

Preteste, o esforço a ser utilizado e o cronograma.

Executar Preteste: Etapa em que é realizada a aplicação do Preteste.

São executados testes exploratórios, que é um tipo de teste “... indicado

quando existe pouca documentação para orientar a elaboração dos

testes ou quando o prazo é tão curto que não é possível preparar um

teste mais formal. É um teste executado a partir da experiência do

42

testador” (RIOS, 2007). O escopo é predefinido e o principal objetivo

é verificar a existência de defeitos que impedem a execução do fluxo

principal/fluxo básico de um determinado caso de uso.

Registrar Defeitos: O registro de defeitos identificados foi feito de

forma manual, utilizando-se um modelo construído através de planilha

Excel (Anexo I). O artefato possui como pontos relevantes a

possibilidade do registro das pendências identificadas, a definição de

sua criticidade e o registro da situação de acompanhamento de sua

correção.

Analisar Resultados: A análise dos resultados foi baseada na

quantidade de defeitos identificados a cada ciclo do Preteste e na

criticidade definida para os mesmos.

Acompanhar Defeitos: O acompanhamento dos defeitos foi realizado

através da própria planilha de registro que era atualizada no repositório

sempre pela mesma pessoa. Esse processo dificultava o paralelismo de

correção, pois, as atualizações feitas por várias pessoas no mesmo

arquivo poderiam gerar perdas.

Gerar Relatório: Ao final da execução um relatório era gerado para

informar se a aplicação possuía estabilidade suficiente para que fosse

submetida ao processo de teste formal da instituição. Caso o resultado

fosse negativo a aplicação retornava a disciplina de codificação ou para

a disciplina de requisitos para os devidos ajustes.

2.4.3.2 Aplicação do Preteste

O Preteste foi aplicado como experimento primeiramente no Projeto A, a partir

do incremento 1 da Fase 3 de desenvolvimento do projeto e perdurou como estudo de caso até

a finalização do projeto na Fase 4. A execução ocorria após a finalização da disciplina de

codificação e implementação dos testes unitários de um determinado caso de uso. Não era

necessário que todos os casos de uso do incremento estivessem concluídos para que se

43

iniciasse o Preteste, ele ocorria após a finalização dos testes unitários de algum caso de uso

pertencente ao escopo do incremento. Para execução eram seguidos os seguintes passos

definidos no planejamento do experimento:

Definição do responsável pela aplicação do Preteste;

Envio de email do desenvolvedor informando que já finalizou a

implementação do caso de uso;

Testador realiza o teste do fluxo básico do caso de uso;

Testador reporta os defeitos na planilha modelo Registro e

Acompanhamento de Defeitos;

Testador insere a planilha no repositório do projeto;

Desenvolvedor realiza a correção dos defeitos identificados no caso de

uso;

Desenvolvedor atualiza os estados dos defeitos encontrados para

corrigido;

Desenvolvedor insere a planilha atualizada no repositório do projeto;

Desenvolvedor informa ao testador que finalizou as correções;

Testador realiza reteste dos problemas identificados;

Testador elabora relatório recomendando ou não o caso de uso ser

disponibilizado para testes sistêmicos.

No intuito de realizar o experimento de forma controlada executou-se a

aplicação do Preteste no incremento 1 da Fase 3 do projeto em apenas 50% dos casos de uso.

O objetivo foi manter como variáveis controladas e aleatórias para que se possa observar a

efetividade do Preteste na redução do tempo de execução dos testes sistêmicos aumentando

44

assim a produtividade e objetivando analisar a ocorrência de melhoria na densidade de

defeitos identificados.

A escolha deste incremento para realização do experimento se justifica por ele

ser composto de 6 (seis) casos de uso do tipo CRUD (CRUD é a sigla da expressão em língua

Inglesa Create, Retrieve, Update e Delete) que possuem exatamente o mesmo tamanho,

complexidade e esforço para realização dos testes.

Com o objetivo de analisar o efeito do Preteste, este foi aplicado apenas em 3

(três) dos casos de uso pertencentes ao incremento, enquanto os demais seguiram o processo

de testes anteriormente utilizado. Mesmo que a comparação ocorra sobre grupos distintos,

considera-se esta base de comparação adequada devido à semelhança entre os casos de uso,

conforme exposto anteriormente.

Com o efetivo desenvolvimento do Preteste no projeto A o coordenador do

projeto B interessou-se pela proposta e resolveu adotar em seu projeto. No projeto B o

Preteste foi executado na Fase 2 e 3.

É importante ressaltar que no projeto B problemas de Requisitos e não apenas

de codificação passaram a ser identificados e registrados durante o Preteste. O analista de

requisitos seguia os mesmos passos do desenvolvedor para solução do problema. Este fato

demonstrou que o Preteste pode também ser utilizado para validação lógica de documentos de

caso de uso somando-se o protótipo de tela. Foram identificados ainda problemas nas

especificações de testes sistêmicos que são utilizadas para a aplicação do Preteste,

fortalecendo a hipótese de que o Preteste, não necessariamente valida apenas o sistema mais

também produtos de documentação produzidos que são insumos para a disciplina de testes.

Porém essa análise não fez parte do escopo deste trabalho.

Após a execução do Preteste eram avaliados alguns critérios pelo testador e

documentados no relatório com objetivo de indicar a liberação ou não do caso de uso para

testes sistêmicos. São eles:

A) Foi identificada algum defeito do tipo bloqueadora?

45

B) O total de defeitos identificados é igual ou superior a quantidade de

transações do caso de uso?

C) Foi identificada falta de implementação de algum passo do fluxo

básico?

Respondendo SIM a um dos questionamentos o caso de uso está

automaticamente não recomendado para a etapa de testes sistêmicos, devendo esse ser

devolvido à disciplina de codificação para revisão. A recomendação inapropriada de um caso

de uso para testes sistêmicos pode gerar desperdício de alocação e elevado número de defeitos

que deveriam ter sido eliminados em etapas anteriores. Respondendo NÃO aos 3 (três)

questionamentos o caso de uso é liberado para os testes sistêmicos.

3 ANÁLISE DOS RESULTADOS

Neste capítulo são apresentados os resultados obtidos ao longo da aplicação do

Preteste no Projeto A e no Projeto B. Os resultados dos experimentos (seção 3.1) estão

organizados em dois grupos principais, sendo que o primeiro enfatiza a evolução dos

indicadores de produtividade da disciplina de testes (seção 3.1.1) e o segundo da densidade de

defeitos (seção 3.1.2).

Para a realização da análise dos resultados foi desenvolvida uma nova

ferramenta, denominada PretestResults, cujas características são apresentadas na seção 3.2.

Finalmente, a seção 3.3 apresenta as principais lições identificadas durante a execução dos

experimentos.

3.1 Resultados dos Experimentos

3.1.1 Evolução de Indicadores de Produtividade Sem Preteste

O gráfico 2 apresenta os valores da produtividade do projeto A antes da

implantação do Preteste. A linha azul indica a meta organizacional que é controlada através

de linhas de base de desempenho lançadas periodicamente após a análise de uma amostra de

projetos decorridos durante cada semestre do ano. A linha vermelha indica a produtividade

alcançada durante os dois primeiros ciclos de testes do projeto. A linha verde indica que a

produtividade se mantinha estável.

Com o lançamento da nova linha de base de produtividade organizacional que

reduziu a meta para 20h antes do início do segundo ciclo de testes do projeto a produtividade

da equipe de testes ficou acima da meta da instituição. Ressaltando-se que para a

produtividade quanto menor o valor de horas melhor para a organização, pois indica uma

equipe mais produtiva.

O cálculo ocorre dividindo-se quantidade de horas gastas para realização do

testes pelo tamanho do escopo a ser testado. Sendo , em que significa a

47

produtividade, em horas por TUCP; , o esforço de um ciclo de testes, medido em horas, e ,

o esforço do escopo de testes. Onde o esforço é medido em horas gastas para realização da

atividade e o tamanho em TUCP (Pontos de Caso de Uso Técnicos).

Gráfico 2 – Evolução da Produtividade no Projeto A Anterior ao Preteste. Fonte: Ferramenta de Controle e

Acompanhamento do Projeto A

Notamos que a meta inicial do projeto era 24h e o projeto possuía uma

produtividade de testes de 22h mantendo-se, portanto dentro da meta. Com a evolução

contínua dos indicadores os projetos na organização a nova meta institucional passou a ser

20h a partir da segunda fase do projeto. Este fato levou o projeto a ficar fora acima da meta no

incremento 1 (um) da Fase 3 (três). Observando esse problema a coordenação do projeto

decidiu investir esforço em ações de melhoria visando atingir a meta de produtividade

organizacional. Essa necessidade abriu espaço para o desenvolvimento desta pesquisa.

O gráfico 3 apresenta os valores da produtividade do projeto B antes da

implantação do Preteste.

Gráfico 3 – Evolução da Produtividade no Projeto B Anterior ao Preteste. Fonte: Ferramenta de Controle e

Acompanhamento do Projeto B

24

20 20,0

22 22

1819202122232425

1 2 3

Planejado

Realizado

Evolução da Produtividade no Projeto A Anterior ao Preteste

Pro

du

tividad

e

20,00 20,0 20,020,00

22,0

23,7

18,00

19,00

20,00

21,00

22,00

23,00

24,00

1 2 3

Planejado

Realizado

Evolução da Produtividade no Projeto B

Pro

du

tividad

e

48

É observado no gráfico 3 que o projeto B estava na sua fase 1 (um) dentro da

meta organizacional de produtividade mantendo o valor de 20h gastas por unidade de

tamanho. Porém no primeiro incremento da fase 2 a produtividade em testes do projeto subiu

2(dois) pontos e posteriormente mais 1,7 pontos, passando a apresentar uma linha de

tendência de possibilidade de subida. Lembrando que quanto menor a produtividade melhor

para a organização. Com objetivo de voltar aos limites da meta organizacional a coordenação

do projeto resolveu abrir espaço para inovações que trouxessem melhorias na produtividade

da equipe de testes. Esta situação levou o projeto a fazer parte do escopo desta pesquisa.

3.1.2 Evolução de Indicadores de Densidade e Defeitos Sem Preteste

O gráfico 4 apresenta os valores da densidade de defeitos do projeto A antes da

implantação do Preteste. A linha azul mostra a linha de base da meta organizacional. A linha

vermelha demonstra a evolução da densidade de defeitos identificada nos 3 (três) primeiros

ciclos de teste do projeto. Ressaltando que a densidade de defeitos é calculada dividindo-se a

quantidade de defeitos identificada pelo tamanho do escopo de testes testado. Onde

. Em que significa a densidade de defeitos identificada no ciclo de testes, a

quantidade de defeitos observadae o tamanho em TUCP do escopo de testes..

Gráfico 4 – Evolução da Densidade de Defeitos no Projeto A Anterior ao Preteste. Fonte: Ferramenta de

Controle e Acompanhamento do Projeto A.

É notório através da observação do gráfico 4 que o projeto está bem distante da

meta organizacional, mantendo uma média de 0,78 defeitos/TUCP enquanto que a meta é

0,18 0,18 0,18 0,18 0,18

0,87

0,64

0,82

00,10,20,30,40,50,60,70,80,9

1

1 2 3 4 5

Meta

DD Real

Evolução da Densidade de Defeitos no Projeto A Anterior ao Preteste

Den

sidad

ed

e Defeito

s

Iterações de Teste

49

0,18 defeitos/TUCP. A necessidade de uma ação urgente levou a melhoria da densidade de

defeitos a ser o principal alvo deste trabalho.

O gráfico 5 apresenta os valores da densidade de defeitos do projeto B antes da

implantação do Preteste. Lembrando que quanto menor a densidade de defeitos melhor a

qualidade do produto produzido.

Gráfico 5 – Evolução da Densidade de Defeitos no Projeto B Anterior ao Preteste. Fonte: Ferramenta de

Controle e Acompanhamento do Projeto B

É visivelmente percebível a partir da observação do gráfico 5 que a densidade

de defeitos no projeto B está em estado crítico, bastante distante da meta com uma média de

0,68 defeitos/TUCP e possível tendência de subida. A melhoria desse indicador era essencial

para o projeto, pois, organizacionalmente ele está diretamente ligado a qualidade do produto

que está sendo gerado. A coordenação do projeto abriu espaço para esta pesquisa visando

conseguir alternativas de reverter este quadro.

0,18 0,18 0,18 0,18 0,18 0,18

0,63

0,52

0,74

0,87

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

1 2 3 4 5 6

Meta

DD Real

Evolução da Densidade de Defeitos no Projeto B Anterior ao Preteste

Den

sidad

ed

e Defe

itos

Iterações de Teste

50

3.1.3 Resultados da Execução do Experimento Preteste

Tabela 6 – Resultados do Experimento Preteste

Projeto Fase

Incremento

Caso de

Uso

Quantidade

de Defeitos

Identificados no

Preteste

Quantidade

de Defeitos

Identificados no

Teste Sistêmico

Esforço

em horas

Preteste

Esforços em

horas Testes

Sistêmicos

Recomendado

para Testes

Sistêmicos?

Com Preteste

Proj_A/Fase 3_Inc_1

UC10 10 19 1,5h 6h Não

UC11 15 11 2h 8h Sim

UC12 12 13 1h 4h Sim

Sem Preteste

Proj_A/Fase 3_Inc_1

UC13 0 27 0h 12h -

UC14 0 19 0h 11h -

UC15 0 22 0h 8h -

Fonte: Relatório de Preteste do Experimento

(a) Esforço sem Preteste (b) Esforço com Preteste Gráfico 7 – Esforço para a realização de testes (a) sem Preteste e (b) com Preteste.. Fonte: Relatório e Relatório

de Testes do Projeto

Ao analisar o gráfico 7, percebe-se que apesar de se ter uma atividade adicional, que

consiste na execução do Preteste, a duração total do processo é reduzida. Totalizando-se as

horas de testes dos casos de uso considerados, tem-se 31h (trinta e uma) horas para realização

dos testes sem Preteste e 22,5h (vinte e duas horas e 30 minutos) com Preteste. Deste modo,

observa-se uma redução de 8,5 (oito e meia) horas, ou seja, 26% (vinte e seis por cento). Esta

redução é uma conseqüência direta da realização do Preteste.

A redução do total de horas pode ser explicada por duas razões principais, sendo a

segunda uma conseqüência da primeira: (i) os defeitos são identificados antecipadamente, e

(ii) a antecipação da detecção de problemas graves como vemos no gráfico 6, que iriam

51

interferir na execução do ciclo de testes, favorece a resolução destes se eliminado o retrabalho

(repetição de ciclos de testes e correção de defeitos).

Adicionalmente, problemas como o início do ciclo de testes sem que os casos de uso

tenham pelo menos seu fluxo básico funcionando são evitados, elevando-se a produtividade

do testador.

Gráfico 8 – Quantidade de Defeitos Antecipados com o Preteste. Fonte: Relatório de Preteste

Como pode ser observado no gráfico 9 à realização do Preteste antecipou para

o UC10, UC11 e UC 12 a quantidade de 10,15 e 12 defeitos respectivamente para a etapa de

desenvolvimento onde o custo para correção é consideravelmente mais barato de acordo com

a regra de 10 Myers. Mostrando que é possível a identificação prévia de defeitos mesmo após

a revisão do desenvolvedor.

Gráfico 9 – Quantidade de Defeitos Identificados. Fonte: Relatório de Preteste

0

5

10

15

UC10 UC11 UC12

UC10

UC11

UC12

Quantidade de Defeitos Antecipados com Preteste

30

40

50

60

70

80

Com Preteste

Sem Preteste

Quantidade de Defeitos Identificados

52

No gráfico 9 fica claro que a etapa do Preteste favorece a identificação de mais

defeitos em relação à execução de apenas os testes sistêmicos tradicionais. Com a execução

do Preteste foram identificados 80 (oitenta) e sem o Preteste 68 (sessenta e oito). Esse fato é

relevante, pois a identificação de mais defeitos aliados a sua correção favorecem a melhoria

da qualidade do produto entregue ao cliente.

3.1.4 Evolução de Indicadores de Produtividade com a Aplicação do Presteste

O gráfico 10 apresenta a evolução da produtividade da disciplina de testes no

projeto A após a aplicação do Preteste. A linha verde demonstra o aumento da produtividade,

através da redução do fator do total de horas pelo esforço do projeto, medido em TUCPs, após

a aplicação do Preteste.

Gráfico 10 – Evolução da Produtividade da Disciplina de Testes no Projeto A. Fonte: Ferramenta de Controle e

Acompanhamento do Projeto A

No gráfico sete é visível que no ponto 3 (três) da linha do realizado houve uma

piora na produtividade de 0,3h. Esse fato se justifica devido ao esforço demandado para

definição e execução do experimento Preteste. No ponto 4 (quatro) que representa a fase 4 de

desenvolvimento do projeto notamos uma melhoria significativa de 7,83h (sete e oitenta e

três), gerando uma evolução de 35,11% (trinta e cinco e onze por cento). Essa melhoria se

justifica devido à aplicação do Preteste ter eliminado ciclos de testes desnecessários e/ou

improdutivos evitando o gasto de esforço de forma improdutiva.

24

20 20,0 20,0022 22 22,3

14,47

0

5

10

15

20

25

30

1 2 3 4

Planejado

Realizado

Evolução da Produtividade no Projeto A

Pro

du

tividad

e

Ciclo de Teste

53

O gráfico demonstra que foi efetiva a melhoria da produtividade para o projeto

A após a implantação do Preteste. Não foi possível a aplicação do Preteste por um período

maior no universo do projeto devido ao mesmo ter sido finalizado antecipadamente pelo

cliente.

O gráfico 11 apresenta a evolução da produtividade da disciplina de testes no

projeto B após a aplicação do Preteste. A linha verde demonstra o aumento da produtividade

após a aplicação do Preteste que significa uma equipe mais produtiva para a organização.

Gráfico 11 – Evolução da Produtividade da Disciplina de Testes no Projeto B. Fonte:

Ferramenta de Controle e Acompanhamento do Projeto B

No gráfico 11 é possível observar que no ponto 3 (três) da linha vermelha do

realizado houve uma melhora significativa na produtividade de 7h(sete). Esse fato se justifica

devido execução do método Preteste no projeto. No ponto 4 (quatro) que representa a fase 3

de desenvolvimento do projeto notamos uma piora 1,9h (um e nove) na produtividade da

equipe de testes, Esse fato pode ser justificado pelo fato do cliente solicitar testes de

usabilidade que não estavam previstos anteriormente e, portanto estavam fora do

planejamento. Mesmo com essa situação adversa o projeto permaneceu dentro da nova meta

estabelecida pela organização de 0,18h (zero e dezoito). Esse resultado mostra que o Preteste

foi efetivo também para o projeto B na melhoria da produtividade.

20,00 20,0 20,018,0

20,0022,0

23,7

15,016,9

0,00

5,00

10,00

15,00

20,00

25,00

1 2 3 4 5

Planejado

Evolução da Produtividade no Projeto B

Pro

du

tividad

e

Evolução da Produtividade no Projeto B

54

3.1.5 Evolução dos Indicadores de Defeitos com a Aplicação do Presteste

O gráfico 12 apresenta a evolução da densidade de defeitos no projeto A após a

aplicação do Preteste. A linha verde demonstra que a densidade de defeitos tende a zero após

a aplicação do Preteste.

Gráfico 12 – Evolução do Indicador de Densidade de Defeitos no Projeto A. Fonte: Ferramenta de Controle e

Acompanhamento do Projeto A

No gráfico 12 é clara a melhoria na evolução do indicador de densidade de

defeitos. No ponto 4 (quatro) que representa a fase 3 de desenvolvimento do projeto notamos

uma queda de 0,69 defeitos/TUCP (zero e sessenta e nove) na densidade de defeitos levando o

projeto a ficar abaixo da meta pela primeira vez desde seu início. Esse fato pode ser

justificado por a identificação prévia de defeitos, a eliminação de defeitos em fases anteriores

e a redução dos ciclos de testes terem contribuído para a diminuição dos defeitos encontrados

por tamanho de caso de uso, ou seja, redução na densidade de defeitos. Podemos notar ao

observar a linha de tendência que a densidade tende à zero no projeto. No ponto 6 da linha de

DD real podemos observar um aumento de 0,7 defeitos/TUCP com relação ao incremento

anterior. Isso se justifica pelo fato de neste período ter havido testes de regressão gerando um

tamanho maior do escopo de testes e consequentemente o aumento da densidade de defeitos.

0,18 0,18 0,18 0,18 0,18

0,37 0,37 0,37

0,87

0,64

0,82

0,13

0,020,09

0,03

-0,2

0

0,2

0,4

0,6

0,8

1

1 2 3 4 5 6 7 8 9

Meta

DD Real

Evolução da Densidade de Defeitos no Projeto A

Den

sidad

ed

e Defe

itos

Iterações de Teste

55

Podemos concluir então que foi relevante a aplicação do Preteste no projeto

para a melhoria da densidade de defeitos durante a execução do projeto.

O gráfico 13 apresenta a evolução da densidade de defeitos no projeto B após a

aplicação do Preteste.

Gráfico 13 – Evolução do Indicador de Densidade de Defeitos no Projeto B. Fonte: Ferramenta de Controle e

Acompanhamento do Projeto B

No gráfico 13 é clara a melhoria na evolução do indicador de densidade de

defeitos a partir do ponto 8(oito). No ponto 5 (cinco) nota-se uma queda discreta de 0,6

defeitos/TUCP da densidade de defeitos. Devido à complexidade de desenvolvimento do

projeto a densidade de defeitos permaneceu alta mesmo depois da implantação do Preteste. O

projeto necessitou de mais tempo que o projeto A para que o Preteste fosse efetivo.

A partir do ponto 7 é possível verificar uma queda significativa na densidade

de defeitos de 0,57 defeitos/TUCP. Esse fato se justifica devido ao Preteste está sendo

executado em todos os casos de uso do incremento e problemas graves que eram comuns ser

identificados em testes sistêmicos terem sido registrados no Preteste e rapidamente

solucionados.

Nota-se a partir do ponto 7 (sete) uma tendência de queda e posteriormente um

atingimento da meta organizacional. A densidade passa a tender a zero também neste projeto.

0,18 0,18 0,18 0,18 0,19 0,19 0,19 0,19 0,19 0,19 0,19

0,63

0,52

0,74

0,870,81

0,870,81

0,24

0,03 0,01

-0,2

0

0,2

0,4

0,6

0,8

1

1 2 3 4 5 6 7 8 9 10 11

Meta

DD Real

Evolução da Densidade de Defeitos no Projeto B

Den

sidad

ed

e Defe

itos

Iterações de Teste

56

Com isso observamos que o Preteste tanto foi efetivo para a melhoria da Produtividade em

testes como na densidade de defeitos de ambos os projetos. Ressaltamos ser relevante uma

amostra maior de projetos para tornar o Preteste aplicável para outras realidades de projetos.

É importante ressaltar também que as melhorias foram comprovadas apenas para o escopo

estudado.

3.2 Ferramenta PretestResults

3.2.1 Objetivo

O principal objetivo da construção da ferramenta veio da necessidade de

acompanhamento dos defeitos de forma mais eficaz e da geração automática de relatórios. É

relevante ainda que os resultados dos Pretestes realizados nos projetos são guardados em uma

base de dados para consultas futuras. A ferramenta também torna transparente o processo de

comunicação entre o testador e restante da equipe.

3.2.2 Apresentação da Ferramenta

Com a utilização da ferramenta PretestResults desenvolvida durante esta

pesquisa podemos eliminar da utilização dos modelos Relatório de Preteste e a planilha do

Registro e Acompanhamento de Defeitos. Essa solução favorece à execução do processo,

automatiza a geração do relatório, unifica a base de dados do Preteste, facilita a comunicação

entre a equipe e garante a integridade dos dados, comprometida pela alteração de um mesmo

artefato por diferentes pessoas.

Como principal contribuição da ferramenta está o Relatório de Confiabilidade

do Build mostrado na 4 que exibe a quantidade de defeitos de um projeto e calcula o grau de

confiabilidade do build, através dos critérios atribuídos para classificação da estabilidade do

caso de uso do sistema implementado.

57

Fig. 3 – Tela da funcionalidade Relatório de Confiabilidade da ferramenta PretestResults.

Fonte: Ferramenta PretesteResults

3.2.3 Principais Dificuldades e Lições Identificadas

Assim como os testes sistêmicos o Preteste não é efetivo quando

aplicado pelo desenvolvedor;

A gestão de defeitos via planilha Excel é bastante desgastante e

improdutiva;

58

A geração de relatórios manuais para um processo rápido como o

Preteste gera um aumento no esforço do processo como um todo;

O Preteste não é efetivo quando aplicado para aplicações estáveis ou

que já tenham sido testadas sistemicamente anteriormente;

O Preteste minimizar os defeitos identificados em testes sistêmicos e

reduz o custo de correção por antecipar essa correção.

4 CONTRIBUIÇÕES E FUTURO

Este capítulo visa exibir as principais contribuições e lições aprendidas com o

desenvolvimento da pesquisa.

4.1 Principais Contribuições

Aplicação dos princípios da ESE na busca de soluções para melhoria de

um indicador de qualidade institucional.

Criação de um modelo de processo de testes simplificado, ágil e que

realizava a validação da estabilidade da aplicação antes de ser

empregado o esforço do início de um ciclo de testes formal.

Melhoria do indicador de densidades de defeitos através da utilização

do Preteste.

Criação da ferramenta de gestão de defeitos e validação PretestResults.

4.2 Sugestões de Trabalhos Futuros

Evolução do modelo do processo e adequação a novas instituições.

Aplicação do Preteste em outras empresas de software com outros

nichos de mercado para realizar uma análise comparativa com a

empresa de P&D.

Evolução da ferramenta PretestResults para englobar mais

funcionalidades e fornecer mais informações sobre o Preteste.

60

Aplicação do Preteste no âmbito da metodologia ágil unindo-se seus

resultados aos de testes unitários e verificando o grau de confiabilidade

dos testes. Podendo posteriormente substituir-se os testes sistêmicos

para essa aplicação.

Aplicação do Preteste de forma controlada estatisticamente através da

utilização da abordagem Seis Sigma como implantação de um projeto

de melhoria em uma instituição com alto grau de maturidade.

5 CONCLUSÃO

Que o Preteste foi efetivo na melhoria da produtividade e da densidade

de defeitos em testes sistêmicos do campo laboral estudado por ter

melhorado os indicadores nos cenários dos dois projetos;

Que o processo de Preteste não substitui a necessidade de aplicação de

testes sistêmicos, pois objetiva identificar os defeitos no fluxo básico

dos casos de uso;

Que com uma evolução o modelo desenvolvido pode ser aplicado a

outras disciplinas do desenvolvimento de software;

Que a ferramenta PretestResults oferecida como melhoria ao processo

de realização do Preteste pode agilizar o desenvolvimento das

atividades e melhorar a comunicação entre a equipe participante

processo de testes.

62

6 REFERÊNCIAS

1 ABREU, Fernando Brito. O ensino da engenharia de software experimental.

Jornada de Informática. Universidade de Minho; Braga, Portugal. Disponível em

<http://natura.di.uminho.pt/join2005/out/programa_pt.html>, <Acesso em: 13 de

outubro de 2008>, 2005.

2 ATLANTICO Instituto, 2008. Manual da qualidade. Documento interno.

3 BABBIE, Earl. Métodos de pesquisas de survey. Belo Horizonte: Editora UFMG,

2001, 519 p.

4 BARROS, M. O. ; ARAÚJO, M.A.P.; TRAVASSOS, Guilherme Horta; MURTA, L.

G. P. Métodos Estatísticos para a Engenharia de Software Experimental.

Universidade Federal do Estado do Rio de Janeiro – UNIRIO. Rio de Janeiro, 2006.

5 BOGDAN, Robert e BIKLEN, Sari. Investigação qualitativa em educação: uma

introdução à teoria e aos métodos. Porto, Portugal. Porto Editora, 1994.

6 CISNE, Raul Ivana Bezerra. LIMA, Sandra Freitas F. O gerenciamento de projetos

na área de pesquisa e desenvolvimento (p&d) incentivados pela lei de

informática: um estudo de caso no instituto atlântico. Biblioteca do Instituto

Atlântico, Fortaleza-Ce; 2008.

7 DANDOLINI, Jaison. Ferramenta de apoio a experimentos em engenharia de

software. 2006. 80f. Monografia (Graduação em Ciência da Computação) –

Universidade Regional de Blumenau – FURB. Blumenal, SC. <Disponível em:

http://campeche.inf.furb.br/tccs/2006-II/2006-2jeisondandoliniap.pdf>, <Acesso em:

23 de novembro de 2008>, 2006.

8 DANIELEWICZ, Marcio. Procedimentos para rastreabilidade das não-

conformidades no processo produtivo. Dissertação (mestrado) - Universidade

Federal de Santa Catarina, Centro Tecnológico. Programa de Pós-Graduação em

Engenharia de Produção. Florianópolis, 2006.

9 DAVIES, Paul. Pode-se confiar nos cientistas?. Revista Super Interessante. Edição

032 Maio de 1990, p. 47 e 48.

63

10 DESCHAMPS, Alexandro. Engenharia de software. Projeto eleva. Blumenau, Santa

Catarina. 2008.

11 DONEGAN, Paula. BANDEIRA, Liane. et al. Aplicabilidade da automação de

testes funcionais – A experiência no instituto atlântico. Biblioteca do Instituto

Atlântico, Fortaleza-Ce; 2005.

12 ESCOBAR, Jefferson. DMAIC. <Disponível em: http://br.kaizen.com/artigos-e-

livros/artigos/dmaic.html>, <Acesso em: 20 de Junho de 2010>, 2008.

13 FUNKS, H; RAPOSO, A.B. & Gerosa, M.A. Engenharia de groupware:

desenvolvimento de aplicações colaborativas. XXI Jornada de Atualização em

Informática, Anais do XXII Congresso da Sociedade Brasileira de Computação, V2,

Cap. 3, ISBN 85-88442-24-8. Ano 2002.

14 GALILEI, Galileu. Dialogue concerning the two chief world systems. Ano 1632.

Traduzido por Stilman Drake, Adaptado para Dartmouth College, MATC, On-line

reader. <Disponível em: webexhibits.org/calendars/year-text-Galileo.html>, <Acesso

em: 20 de Janeiro de 2008>, 2008.

15 GATTAZ, Fuad. Processo – a máquina contextual nos negócios. O mundo em

processo. <Disponível em: www.labp3.org.br>, <Acesso em: 20 de Janeiro de 2008>,

2000.

16 GIMENES, Itana M. S et al. Um padrão para definição de um gerenciador de

processos de software. Universidade Estadual de Maringá,1999.

17 GLADCHEFF, A.P.; ZUFFI, E.M.; SILVA, D.M. Um Instrumento para Avaliação

da Qualidade de Softwares Educacionais de Matemática para o Ensino

Fundamental. In: VII WORKSHOP DE INFORMÁTICA NA ESCOLA, Fortaleza,

CE, Brasil, julho/agosto, 2001. Anais.

18 JURAN, Joseph. M. 1904. A qualidade desde o projeto: novos passos para o

planejamento da qualidade em produtos e serviços / J. M. Juan; tradução Nivaldo

Montingelli Jr. São Paulo: Pioneira Thomson, 1992.

19 MATTAR, Fauze N. Pesquisa de Marketing. São Paulo, Atlas, 1999.

20 MENDONÇA, Manuel. Engenharia de software experimental. 2008.Universidade

de Salvador, Bahia. 2008.

21 PINHEIRO, Lívia Figueredo Rodrigues. Modelagem do domínio daa utilizando a

tecnologia p3tech©. 2007. 196f. Monografia (graduação) – Curso de bacharelado em

ciência da computação, Faculdade Farias Brito, Fortaleza, 2007.

22 PRESMAN, Roger. Software engineering: a practitioner’s approach”. 5. ed. McGraw

Hill, 2003.

23 PURRI, Marcelle Cristina M. e S. Estudo e propostas iniciais para a definição de

um processo de desenvolvimento para software científico. Dissertação (mestrado) -

64

Mestrado em Modelagem Matemática e Computacional (MMC), Centro Federal de

Educação Tecnológica de Minas Gerais, Belo Horizonte; 2006.

24 RATIONAL. Rational unified process – RUP. RSoftware Corporation; 2002.

25 RIOS, Emerson; CRISTALLI, Ricardo, MOREIRA, Trayahú; e BASTOS, Aderson.

Base de conhecimento em teste de software. Editora Martins Fontes, São Paulo;

2007.

26 ROCHA, Anne. Grupo de Testadores de Software. 2007. (Desenvolvimento de

material didático ou instrucional - Blog Científico).

27 SOMMEVILLE, Ian; Engenharia de software. 6.ed. São Paulo: Addison Wesley,

2003.

28 TRAVASSOS, Guilherme Horta. Introdução à engenharia de software

experimental. Relatório Técnico RT-ES-590/02, Universidade Federal do Rio de

Janeiro, Rio de Janeiro, 2002.

29 WOHLIN, Claes. Are individual differences in software development performance

possible to capture using a quantitative survey?. Massassuchets USA: Empirical

Software Engineering, Volume 9, September 2004. Disponível em

<http://portal.acm.org/citation.cfm?id=990392>, <Acesso em: 10 de outubro de

2008>.

65

ANEXOS

66

Anexo 1