Cenários para Testes Automatizados com db4o

by alisson.vale 17/6/2008 21:43:00

Recentemente chegou às bancas a edição de número 09 da revista MundoDotNet. Essa edição conta com um artigo onde descrevo uma técnica interessante para administração de cenários de testes implementada com sucesso pelo meu colega Paulo Cesar Fernandes aqui na empresa. 

A técnica consiste em interceptar a execução de métodos de forma a armazenar objetos construídos durante a execução da aplicação em um banco de dados orientado a objetos. Assim, esses objetos podem ser carregados na memória no momento em que são necessários para o SetUp de testes unitários.

Na verdade, o artigo foi um pouco além de descrever a técnica. Grande parte do texto é dedicada a explicar as raízes e as várias formas em que técnicas de teste podem ser utilizadas para aumentar a qualidade do software no contexto de um projeto ágil.

Alguns tópicos e trechos do artigo

Uma nova visão para as atividades de teste de software:  A relação das atividades de teste com qualidade. Algumas das idéias de Deming que podem ser utilizadas em desenvolvimento de software. A relação de Deming com o estilo de administração japonês que levou ao Movimento Ágil e as técnicas que este movimento trouxe de forma a permitir a redução de inpeções no software.

Testes como oportunidades para aumentar a qualidade: Em projetos ágeis, testar significa criar oportunidades para que o produto absorva elementos de qualidade de forma permanente. "Um teste automatizado injeta qualidade dentro do software".

Quando testes automatizados podem aumentar a qualidade do processo:  Testes de aceitação automatizados criam as condições para melhoria do processo de desenvolvimento na medida em que estabelecem um instrumento de colaboração e de comunicação entre clientes e desenvolvedores. "o propósito de um teste de aceitação é aumentar a qualidade do processo de comunicação necessário para as atividades de análise e levantamento de requisitos, por meio de especificações executáveis".

Quando testes automatizados podem aumentar a qualidade do produto: Aqui a defesa é que o uso de TDD aumenta a qualidade interna do produto na medida em que cria as condições para a evolução sustentável do software. "o propósito do teste unitário é influenciar o design da aplicação, permitindo que ele evolua sem sofrer os danos causados pelo seu processo de degradação".

O artigo também oferece um rápido exemplo de como uma ferramenta como o Fitnesse pode criar especificações executáveis fáceis de ler e de produzir. Conforme imagem a seguir:

 




A abordagem Ágil oferece uma nova perspectiva para endereçar qualidade de software.
Acho que esse artigo dará ao leitor uma boa idéia do que isso quer dizer.

Posts relacionados

Comentários

2/7/2008 13:02:39

Thiago Ghisi

Bom dia Alison, venho há algum tempo estudando sobre processos de software agéis, XP e OpenUp, e modelos de qualidade de processo, tais como CMMi e Mps.br. Atualmente, estou estudando tipos e técnicas de teste de software, usando ferramentas open-source (JUnit, DBUnit, TestNG, Selenium, JMeter, Fit, Fitnesse) e adaptando-as, caso necessário, para alguns projetos. Uma das adaptações que fizemos, foi a tradução da ferramenta Fitnesse, e pretendemos adaptá-la ainda mais as nossas necessidades.

Conseguimos fazer uma simples integração do Selenium com o Fit, através do Wiki Fitnesse (Traduzido), em um projeto.

Porém, acredito que poderiamos desbravar melhor essas ferramentas e a integração entre elas, deixando mais usual para o cliente, por exemplo, como você e o seu colega Paulo César fizeram e futuramente integra-lá como parte de um processo de software. Algumas melhorias que pensamos em fazer no Fitnesse seria a geração de gráficos para o cliente do andamento real do projeto, ou da iteração, ao contrário de apresentar somente as famosas barrinhas verdes. Além de gráficos de porcentagem das funcionalidades da iteração que estão implementadas, implementadas com erro, ou nao implementadas até o momento.

Pesquisei, e alguns autores falam sobre AcceptanceTest-Driven Development (ATDD) com Fit/Fitnesse e StoryTest-Driven Development (STDD). Qual a sua opinião sobre isso? O que vocês fizeram foi alguma coisa a encontro dessas abordagens? Também gostaria de saber se sua empresa fez alguma adaptação na ferramenta Fitnesse para deixa-la mais usual para clientes ou analistas e se no processo de vocês, o cliente tem alguma interação com o Fitnesse ou se são somente os testers e desenvolvedores que o utilizam. Basicamente, como é o processo de vocês com o Fitnesse? É feita alguma integração com o Selenium? Você tem em mente, como poderiamos incluir essa abordagem em um processo mais tradicional ou adaptá-lo a alguma área de processo do CMMi? A Qualidade de processo garante a qualidade dos produtos, ou os dois são coisas totalmente distintas para esse modelo?


Parabéns pelo artigo.

Thiago Ghisi br

4/7/2008 11:50:25

Alisson Vale

Olá Thiago,

Obrigado pelo feedback.
Vamos lá...

2008/7/3 Thiago Ghisi <thiago.ghisi@gmail.com>:
> Bom dia Alison, venho há algum tempo estudando sobre processos de software
> agéis, XP e OpenUp, e modelos de qualidade de processo, tais como CMMi e
> Mps.br. Atualmente, estou estudando tipos e técnicas de teste de software,
> usando ferramentas open-source (JUnit, DBUnit, TestNG, Selenium, JMeter,
> Fit, Fitnesse) e adaptando-as, caso necessário, para alguns projetos. Uma
> das adaptações que fizemos, foi a tradução da ferramenta Fitnesse, e
> pretendemos adaptá-la ainda mais as nossas necessidades.
>
> Conseguimos fazer uma simples integração do Selenium com o Fit, através do
> Wiki Fitnesse, em um projeto.

Muito legal! Parabéns pela iniciativa... tem alguns links pra eu dar uma olhada?

> Porém, acredito que poderiamos desbravar melhor essas ferramentas e a
> integração entre elas, deixando mais usual para o cliente, por exemplo, como
> você e o seu colega Paulo César fizeram, e futuramente integra-lá como parte
> de um processo de software.

Não foi bem isso que nós fizemos. O que fizemos e está descrito no
artigo foi uma implementação para gerenciamento de cenários de testes
com o db4o. O objetivo foi facilitar o trabalho do desenvolvedor e não
dos clientes. Estes continuariam a usar o Fitnesse como ele é, sem
alteração. No entanto, o desenvolvedor seria capaz de reaproveitar os
cenários e com isso, ter mais produtividade no processo de automação
dos testes (tanto os unitários quanto os de aceitação).

> Pesquisei, e alguns autores falam sobre AcceptanceTest-Driven Development
> (ATDD) com Fit/Fitnesse e StoryTest-Driven Development (STDD). Qual a sua
> opinião sobre isso?

Acho que se trata da mesma coisa. O que se pode diferenciar é
"Acceptance Test" de "Acceptance Test-Driven Development". Quando você
fala só em "Teste de Aceitação" você está se referindo a qualquer
processo em que o passo final é uma aceitação de uma área de qualidade
ou do cliente final. Quando você coloca o "Driven" aí você inverte o
modelo, fazendo com que o processo de desenvolvimento seja orientado
por critérios de aceitação, ou seja, tais critérios são escritos de
forma a moldarem o comportamento dos desenvolvedores. Não são dois
momentos separados, é um momento só. Se você usa o termo Story ou
Acceptance é só uma questão de semântica.

> O que vocês fizeram foi alguma coisa a encontro dessas
> abordagens?

Não. Como eu te falei o artigo tem outro enfoque. O enfoque é
facilitar o uso dessas abordagens no dia-a-dia, especialmente em
sistemas maiores.

> Também gostaria de saber se sua empresa fez alguma adaptação na
> ferramenta Fitnesse para deixa-la mais usual para clientes ou analistas e se
> no processo de vocês, o cliente tem alguma interação com o Fitnesse ou se
> são somente os testers e desenvolvedores que o utilizam. Basicamente, como é
> o processo de vocês com o Fitnesse? É feita alguma integração com o
> Selenium?

Não fizemos nenhuma adaptação, nem integração. Nosso produto tem
muitos clientes, então precisamos de representantes na equipe que
fazem o trabalho de aceitação das features.

> Você tem em mente, como poderiamos incluir essa abordagem em um
> processo mais tradicional ou adaptá-lo a alguma área de processo do CMMi?

O CMMi não combina com essa abordagem. Pra mim, misturar as duas
coisas pode atrapalhar mais que ajudar.

> A Qualidade de processo garante a qualidade dos produtos, ou os dois são
> coisas totalmente distintas para esse modelo?

Não garante, muito pelo contrário. Muitas vezes o foco na qualidade do
processo gera um produto ruim, apesar de gerá-lo em conformidade com
suas especificações. Esse é o problema de se criar um processo que
procura isolar
"quem usa" de "quem faz". São os níveis de qualidade esperados para o
produto que devem orientar a formação do processo, e não o contrário.
Ou seja, o processo é escravo do produto. Dois produtos diferentes
devem ter processos diferentes. Um dos problemas do CMMi é trabalhar
com a idéia de que um bom processo vai gerar qualidade em qualquer
produto. Cada produto tem sua história e seus desafios. Um processo
que não se adapte a seu produto, certamente o afetará criando
distorções de qualidade indesejáveis.

> Parabéns pelo artigo.
Obrigado e um grande abraço,

Alisson Vale br

8/8/2008 21:14:12

Thiago Ghisi

Alisson, mais uma coisa, como vocês fizeram para "comentar" algumas tabelas, como no exemplo que apresentasse?
Utilizei na primeira linha de cada tabela a "palavra" Comment, até funcionou, só que nos Assertions dos Tests Results, ficam como Ignoreds cada linha das tabelas comentadas, além de o cliente vizualizar a palavra Comment encima de cada tabela.
Pode me ajudar?

Thiago Ghisi br

Comentar


(Vai mostrar seu Gravatar)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Pré-visualização

5/9/2008 19:13:04

Sobre o Autor

Alisson Vale Alisson Vale
Líder de Projeto da Phidelis Tecnologia.


E-mail me Send mail
      Sign in

Últimos posts

Últimos comentários

Termo de Responsabilidade

Este site apresenta apenas opiniões pessoais. Não necessariamente representa as opiniões ou práticas da Phidelis Tecnologia.

© 2008