DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL
ou para quem possui Créditos DevMedia.

Clique aqui para saber como acessar este post

1) Torne-se um assinante MVP e por apenas R$ 59,90 por mês você terá acesso completo a todos os posts. Assinar MVP

2) Adquira Créditos: comprando R$ 180,00 em créditos esse post custará R$ 1,20. Comprar Créditos

post favorito     comentários

Revista MSDN Magazine Edição 09 - TEST-DRIVEN C# (CSharp)

Este artigo explica como você pode obter e usar o NUnit para praticar o TDD durante o desenvolvimento com C# (ou de qualquer linguagem baseada no Microsoft® .NET Framework).

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

msdn09_capa.JPG

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

 

TEST-DRIVEN C#

Melhore o design e a flexibilidade de seu projeto com técnicas de Extreme Programming
por Will Stott e James Newkirk

 

Você não adoraria criar um código que se tornasse cada vez mais fácil à medida que o projeto amadurecesse, em vez de o contrário? Parece que, independentemente de quanto cuidado você tome, mais cedo ou mais tarde seu código se tornará um tanto confuso. Quanto maior o projeto, pior se torna o problema. Quantas vezes você iniciou um projeto com um design quase perfeito apenas para ver ele se desfazer após o início da codificação?

  O TDD (Test-driven development) altera o processo de escrita de código de modo que a alteração do projeto não somente seja possível, como desejável. O desenvolvimento gira em torno de três atividades básicas: escrever um teste, escrever o código a ser passado ao teste e reescrever o código para banir duplicações e torná-lo mais simples, flexível e fácil de ser compreendido.

  Este ciclo é repetido várias vezes e, a cada vez, ele executa todos os testes para assegurar que o produto seja mantido em um estado funcional. Acabaram-se os longos intervalos entre as fases de design, codificação e teste, o que possibilita um ambiente de desenvolvimento muito melhor. Desse modo, seu design (e código) na verdade melhoram cada vez mais à medida que o projeto amadurece, e não o contrário.

  O que torna o TDD tão eficaz é a automação de seus testes (unit testes) de programação, e a melhor notícia é que as únicas ferramentas de que você precisa estão disponíveis gratuitamente na Internet. Elas não são versões de um produto comercial com funcionalidade reduzida, mas sim softwares de alta qualidade disponibilizados por colegas desenvolvedores. Este artigo explica como você pode obter e usar o NUnit para praticar o TDD durante o desenvolvimento com C# (ou de qualquer linguagem baseada no Microsoft® .NET Framework). Observe que existem ferramentas similares disponíveis para desenvolvedores em C++ e Java, bem como para muitas outras linguagens e sistemas operacionais. A pronta disponibilidade dessas ferramentas fornece ao TDD um atrativo universal, o qual, combinado com sua íntima associação com o extreme programming, contribuiu muito para encorajar seu uso.

 

Por que os designs degradam

A maioria dos processos de software parte do princípio de que você pode conseguir todo o design desde o início e apenas conduzi-lo pela máquina de desenvolvimento para gerar um produto perfeito. Essa é uma mentalidade de linha de produção, que valoriza a uniformidade e minimiza a variação. Tais processos não valorizam a comunicação e o feedback da mesma maneira que o TDD faz, e por isso são menos eficientes tanto para gerar informações (testes de falha) como para permitir que as pessoas aprendam com elas (consertando o design).

Por que você não consegue obter o design correto desde o início? Porque no início do projeto você ainda não tem um conhecimento perfeito a respeito do software que está desenvolvendo. O desenvolvimento interativo reconhece esse fato e o ajuda a identificar problemas significativos no início do projeto, em vez de deixar que sejam descobertos no final. No entanto, a interação não será cancelada para permitir que você retorne à fase do design e resolva um problema simples como uma classe pública nomeada de forma incorreta. Ninguém quer escutar essas preocupações menores e, infelizmente, o processo é geralmente projetado para suprimi-las, devido ao alto custo de movimentação entre as fases.

O acúmulo desses pequenos problemas é responsável pelas dificuldades reais em muitos processos de desenvolvimento tradicionais. Você sempre terá prioridades mais importantes do que fazer alterações que não ofereçam nenhuma vantagem funcional. No entanto, quanto mais tempo a classe nomeada incorretamente permanecer na base do código, mais predominante se tornará seu uso e mais trabalhosa será a tarefa de alterá-la. Depois de um tempo, a equipe começará a corrigir esses tipos de problemas extra-oficialmente durante a codificação, o que significa que logo você estará planejando uma versão completa com poucas diferenças em relação à original além de tentar fazer com que o código corresponda à documentação do design, ou vice -versa. Nesse estágio, seu design feito anteriormente será inútil — é o código que manda.

O TDD permite que você adie as decisões até que compreenda melhor o problema. Você não precisa produzir um design de arquitetura perfeito desde o início, quando tem pouco conhecimento sobre como o produto será desenvolvido. Isso desafia a maioria das idéias estabelecidas sobre desenvolvimento de software e é até certo ponto antiintuitivo, por isso sugerimos que você tente o TDD com uma mente aberta e descubra seu poder por conta própria.

Os benefícios do TDD também são muito mais fáceis de compreender. Ele estimula a comunicação ao tornar seus programas autodocumentáveis — o conjunto de testes que você desenvolve mostra o funcionamento do código de uma maneira impossível de ser mostrada por um manual. Ele encoraja o feedback ao solicitar que você visualize seu código pela perspectiva de alguém que esteja escrevendo um teste para ele, o que ajudará você a criar objetos e componentes que sejam mais pouco acopladas (loosely coupled) e coesos. Ele incentiva a simplicidade ao permitir que você adie grandes decisões para se concentrar primeiro nas pequenas decisões. Por fim, ele lhe dá coragem para ultrapassar os limites de seu código, fornecendo-lhe um conjunto de testes que informam imediatamente quando alguma coisa falha.

 

Uma introdução simples

A única maneira de realmente compreender o TDD é fazendo, por isso vamos começar com um exemplo bastante simples, que não requer nenhuma ferramenta especial. Vamos escrever um pequeno programa que nos ajudará a planejar um terreno retangular para uma casa, mas antes de iniciarmos, existem duas coisas que queremos testar: calcular a área como 6 unidades, onde o comprimento é 3 unidades e a largura é de 2 unidades, e calcular também o perímetro como 10 unidades, para um comprimento de 3 unidades e largura de 2 unidades.

Anotar essas etapas ajudará a concentrar sua atenção no que é importante em nosso programa. Neste caso, parece razoável desenvolver um objeto que ajudará a dar forma ao domínio do problema, então criaremos uma classe chamada Quad, nomeada para o terreno quadrangular que estamos tentando construir, e a instanciaremos como um objeto em uma simples aplicação de Console. Veja aqui as etapas a seguir:

1.                Inicie o Visual Studio®, selecione o menu File | New | Project e, em seguida, escolha "Console Application" na lista de tipos de projeto em C#. Digite "QuadApp" na caixa Project Name e pressione OK.

2.                Na função Main, digite algumas linhas de código para criar uma instância de Quad e, em seguida, declare que quando o método Area do objeto receber um comprimento 3 e uma largura 2, ele retorne o valor 6:

 

{}  static void Main(string[] args)

 {

     Quad q = new Quad();

     System.Diagnostics.Debug.Assert(q.Area(3,2) == 6);

 }

 

3.                Selecione Project | Add Class, digite o nome "Quad.cs" na caixa de diálogo e pressione Open para criar a classe.

4.                Digite o código necessário para dar a Quad uma função Area conforme solicitada pelo seu uso em Main:

 

public class Quad

 {

     public int Area(int length, int width)

     {

         return 0;

     }

"

A exibição deste artigo foi interrompida

Este post está disponível para assinantes MVP.



Will Stott (wstott@exoftware.com) é consultor freelance e mora em Zurique, Suíça. É também sócio da Exoftware, empresa de software baseada em Dublin e especializada na introdução de extreme programming em organizações.

O que você achou deste post?
Publicidade
Serviços

Mais posts