capnet43.jpg

Clique aqui para ler todos os artigos desta edição

Projeto/Análise

nUnit e nCover

Teste unitário e de cobertura para .NET

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·       Testes unitários;

·       Testes de cobertura;

·       NUnit;

·       NCover;

·       NCoverExplorer

Visual Studio 2005, C#.

 

Uma atual preocupação no processo desenvolvimento de software é a qualidade do produto final e a sua estabilidade no ambiente de produção. Falhas podem ocasionar inúmeros problemas, desde prejuízos financeiros, comprometimento de cronogramas de projetos, até perda de vidas humanas, dependendo da criticidade da aplicação. Em sistemas embarcados, como em equipamentos de suporte à vida, o risco envolvido é muito grande e uma falha fatalmente poderá resultar em mortes.

Vários são os casos relatados de falhas de software que resultaram em perdas de vidas humanas. Um deles foi o problema em um equipamento de radioterapia chamado Therac-25. O equipamento era totalmente controlado por software e realizava aplicações de diferentes faixas de radiação nos pacientes.

Pelo menos cinco mortes aconteceram devido aos acidentes provocados por uma falha no software do equipamento. Problemas desse tipo denotam a importância da utilização de um processo de desenvolvimento de software formal e, principalmente a utilização de alguma abordagem baseada em testes para aferição do sistema desenvolvido.

O custo gerado pela manutenção, em um projeto de software, é um dos mais altos em todo o processo de desenvolvimento, seja ele custo financeiro ou custo de re-trabalho. Ao identificar uma falha no início do processo, esse custo é minimizado e otimizado. Modelos que definem padrões de maturidade para o desenvolvimento de software também apresentam a abordagem de testes, sendo o caso do CMMI (Capability Maturity Model Integration) e do MPS.BR (Melhoria de Processos do Software Brasileiro) onde, para ambos, a utilização de testes é um item essencial afim de garantir a qualidade dos sistemas.

Nesse sentido, o processo de desenvolvimento deve considerar etapas de verificação da qualidade dos produtos de software, antecipando-se às falhas de forma a minimizar o número de defeitos nos sistemas. A prática de teste manual de aplicações não garante a execução de todas as funcionalidades de um sistema.

Sabe-se também que é impossível garantir que todos os defeitos de um sistema sejam eliminados, uma vez que os testes necessários para essa avaliação são normalmente em quantidade extremamente elevada, inviabilizando a sua aplicação de forma manual. Com isso, torna-se imprescindível a utilização de um ambiente de testes automatizados.

Existem diversos tipos de testes de software, dois deles são os testes de unidade e o de cobertura, apresentados neste artigo. O teste de unidade é baseado na estrutura lógica do código e é responsável por testar a unidade de codificação da aplicação. Em um sistema Orientado a Objetos essa unidade pode ser representada pelos métodos das classes, ou qualquer outro nível de agrupamento, da complexidade do que deve ser testado.

Dada uma entrada, o teste unitário deve aferir o resultado, levando em consideração os possíveis caminhos do algoritmo. Já o teste de cobertura é responsável por verificar a quantidade de caminhos executados pelo teste unitário, apresentando a porcentagem de cobertura de um teste unitário sob um determinado método. O objetivo é ter a maior cobertura possível.

Nesse contexto, o nUnit se apresenta como uma ferramenta para automatizar os testes unitários no ambiente de desenvolvimento .NET. Já o nCover é uma ferramenta para execução dos testes de cobertura. Ambas as ferramentas têm seu funcionamento em qualquer ambiente ou linguagem do .NET.

Configuração do ambiente de desenvolvimento

Tanto o nUnit quanto o nCover são ferramentas independentes do ambiente de desenvolvimento, como o Visual Studio 2005. No entanto, existe uma grande diversidade de add-ins que integram essas ferramentas com o ambiente do Visual Studio.

Existe inclusive um pacote com várias ferramentas de teste de software para o .NET com esses add-ins que fazem a integração. Basta instalar o pacote que as ferramentas de teste estarão devidamente integradas com o ambiente.

Esse pacote chama-se TestDriven .NET (veja o endereço seção Links) e apresenta uma versão gratuita para download no seu site.

 

Nota: O TestDriven .NET contém além do nUnit e o nCover, outras ferramentas para teste de software, entre elas o Reflector, TypeMock, dotTrace, MbUnit, ZaneBug, MSBee & Team System.

Dentre essas, será também apresentado o nCoverExplorer, responsável por visualizar de forma gráfica os resultados do nCover.

 

Com esses add-ins de integração, é possível chamar as ferramentas nUnit e nCover diretamente da interface do Visual Studio, sem a necessidade de nenhuma outra configuração.

Após a instalação do pacote TestDriven .NET, um passo importante para a utilização do nUnit em qualquer projeto é adicionar a sua referência ao projeto do Visual Studio. Com isso, o projeto torna-se capaz de acessar as funcionalidades disponibilizadas pelo nUnit para a criação de testes unitários. O nCover não requer nenhuma configuração adicional no projeto.

Para executar essa tarefa, clique com o botão direito no Solution Explorer e selecione a opção ...

Quer ler esse conteúdo completo? Tenha acesso completo