Rodrigo Sendin

.NET Framework, C#, ASP.NET, Visual Studio, WPF, Silverlight, Expression Blend, Arquitetura de Sistemas, Desenvolvimento de Software e afins.

quinta-feira, 25 de fevereiro de 2010

Testar antes (TDD) ou depois?

Sei que esse assunto está mais do que batido, mas gostaria de colocar aqui minhas impressões sobre o tema.

Testes automatizados de software estão se tornando requisitos obrigatórios para qualquer projeto que tenha algum tipo de controle de qualidade. Assim como em qualquer ramo da industria, um controle de qualidade implica no aumento dos custos de produção. Para o consumidor isso é claro, e se resume naquela conhecida frase: "O Barato saí caro". O produto mais barato geralmente tem uma qualidade pior, o que significa um controle de qualidade inexistente ou tolerante à falhas.

Do lado de cá dessa controversa industria que é o desenvolvimento de software, há uma certa resistência quanto à necessidade de um controle de qualidade, principalmente aqui no Brasil.

Na minha visão sobre esse assunto, o problema está na forma como os projetos são gerenciados atualmente. Hoje, na maioria dos projetos, o custo de desenvolvimento de um software se resume à simples conta: ValorTotalDaHoraDoDesenvolvedor * QtdeHorasDoProjeto.

Levando em consideração que o desenvolvimento de uma rotina de testes (teste unitário), geralmente consome a mesma quantidade de tempo necessária para se escrever a própria rotina à qual o teste avalia, em alguns cenários, um projeto com 100% de cobertura de testes pode levar o dobro do tempo para ser desenvolvido. Isso se complica ainda mais se a equipe não está acostumada com a ideia de se escrever testes.

E é aí que o TDD faz o maior sentido do mundo. Assim como em qualquer indústria, bons gestores se esforçam para reduzir os custos nos processos de produção. Enquanto aqui no Brasil isso parece se refletir únicamente na redução direta do Valor/Hora citado acima, outras esferas procuram soluções mais efetivas e inteligentes.

No TDD (Test Driven Development), o teste unitário deve ser escrito antes da rotina que ele deve avaliar, e este geralmente reflete uma definição de como a rotina deve funcionar, servindo inclusive como uma especificação. Após escrito, o teste é então executado com a certeza de que irá falhar, já que a rotina não foi implementada ainda. Em seguida é escrita a rotina alvo do teste, que deve seguir a especificação definida no mesmo. Uma nova execução vai agora indicar se a rotina atende à especificação, e caso não atenda ela deve ser refatorada até que tenhamos um resultado positivo na execução do teste.

Mas qual é o motivo lógico de se criar um teste unitário antes da própria rotina? Ao longo do tempo, um desenvolvedor que adota TDD, se acostuma com esse "jeito de pensar", e passa a naturalmente pensar numa rotina de testes antes de pensar na própria rotina alvo. Isso, certamente agiliza o seu trabalho, já que passa a ser uma reação automática do desenvolvedor, assim como um motorista muda de marchas sem ter que raciocinar a respeito.

TDD é uma cultura, um mindset, uma sacada gerencial para reduzir o tempo gasto na escrita de testes unitários. Porém, TDD só dá resultados a longo prazo, depois de muita prática.

E note que TDD não é para todos, existem certamente casos em que ele não se aplica, como por exemplo quando temos um departamento ou pessoa responsável pelos testes do projeto. As responsabilidades neste cenário é dividida entre o desenvolvedor do teste e o desenvolvedor da rotina. E se o teste é escrito antes ou depois, não tem mais importância, já que não faz diferença em termos de redução de custos.

segunda-feira, 9 de novembro de 2009

Miguel Sendin

Na manhã do dia 6 de novembro de 2009 faleceu Miguel Sendin, meu avô.

Tenente Coronel da Policia Militar do estado de São Paulo, professor, vendedor (e consumidor) de livros, autodidata e poeta. Não havia uma única conversa com ele que não fosse uma aula.

Na minha infância/adolescência ele foi mais do que um Google para mim. Se ele não tinha uma resposta pronta para uma pergunta, logo ia buscar na sua biblioteca, no segunda andar da casa.

Quando eu tinha apenas 10 anos de idade (1989), ele me deu o seguinte livro:



Eu já sabia o que queria fazer da vida. Lembro de várias tardes digitando código BASIC em um CP 200 ligado em uma velha televisão Philips. Aprendi a programar com esse livro.

Visionário, já naquela época ele falava da importância que os computadores iriam ter no futuro. Além de me influenciar, também patrocinou vários cursos (BASIC, Dbase, Clipper, VB, etc) e os meus dois primeiros PCs (386, Pentium 166Mhz).

Aprendi muito com meu avô, e por influencia direta dele hoje eu sou programador.

Não basta achar a Verdade, e preciso ter:

Sabedoria para reconhecê-la

Humildade para aceitá-la

Coragem para vivê-la e

Caridade
para ministrá-la


Miguel Sendin

(14/12/1915 -- 06/11/2009)

segunda-feira, 19 de outubro de 2009

Visual Studio e TFS 2010 Beta 2 Lançado!

Hoje, dia 19 de outubro de 2009 a Microsoft lançou a versão Beta 2 do Visual Studio 2010 e do Team Foundation Server 2010. Para os assinantes do MSDN o download já está disponível. Para quem não é assinante, precisará esperar mais alguns dias aí.

Se quiser se inteirar de algumas novidades, principalmente da instalação destes produtos, assista ao vídeo do Brian Keller no Channel 9

Seguem os pontos que eu achei mais interessantes:

Instalação do TFS2010
1. Não tem mais toda a burocracia dos usuários. Podemos usar apenas um único usuário para toda a instalação.
2. Primeiro instalamos para depois configurar.
3. Existe uma configuração Basica que permite a instalação do TFS2010 em Cliente VISTA ou Windows 7 (com SQLServer Express). Essa é a grande novidade, pois permite montar um ambiente totalmente caseiro do TFS. As restrições são a inexistencia do Reporting Services e do SharePoint para este ambiente.
4. Temos agora um Console de Administração, que ajuda (E MUITO) o trabalho de configuração e gerenciamento do servidor.
5. Foi introduzido o conceito de "Team Project Collection" que aparentemente permite varios ambientes com configurações diferentes no mesmo servidor.
6. A Configuração do TeamBuild muito mais fácil também.


Resumindo, a Microsoft atendeu as preces de todos nós que já sofremos com a instalação do TFS2005 e TFS2008, e finalmente apresenta uma ferramenta de fácil instalação e configuração. Certamente o TFS vai ganhar muitos adeptos a partir de agora.

A instalação do VS2010 Ultimate não tem muito o que falar.
1. O Ultimate é o nome da edição mais completa do Visual Studio, equivalente ao Visual Studio Team System 2008.
2. NNF (Next, Next Finish) Total. Pode ir de olho fechado.
3. Assustou um pouco o espaço que ocupa = 5.1GB.
4. O Team Explorer já vem instalado junto.

Deu pra perceber um foco muito grande no TFS, tanto que na Start Page do Visual Studio, a primeira task sugerida é a conexão com o TFS.

Apesar de muita gente estar falando por aí que o Beta 2 já é uma versão estável, a ponto de entrar em produção, eu ainda tenho minhas dúvidas. O próprio Brian Keller, no vídeo acima, não fala nada disso, e ainda sugere a instalação em um ambiente virtual. Tenho a mesma opinião que a dele, instalem o Beta 2 (TFS ou VS) em máquinas virtuais, ou em equipamentos onde você pode correr riscos.

A medida do possível vou colocando mais novidades do Beta 2 aqui.

Grande Abraço e até a próxima.