Desenvolvimento Orientado a Testes
O artigo aborda a prática do desenvolvimento orientado a testes, descreve seus conceitos e apresenta um exemplo introdutório para ilustrar. Alem disso, discute seus benefícios, implicações e alguns outros aspectos relevantes.
O artigo aborda a prática do desenvolvimento orientado a testes, descreve seus conceitos e apresenta um exemplo introdutório para ilustrar. Alem disso, discute seus benefícios, implicações e alguns outros aspectos relevantes.
Para que serve:
O desenvolvimento orientado a testes sistematiza o processo de concepção, escrita e verificação do código de forma integrada e simultânea. A prática ajuda o programador a ter controle sobre o design de seu código e a mantê-lo com um nível de qualidade ótimo ao longo de todo o processo.
Em que situação o tema útil:
É útil em qualquer tipo de desenvolvimento de software, especialmente para equipes e projetos sobrecarregados por gambiarras e bugs recorrentes, onde as equipes gastam mais tempo consertando problemas que gerando valor real para seus usuários.
Desenvolvimento Orientado a Testes:
A prática do Desenvolvimento Orientado a Testes é um dos pilares fundamentais da metodologia XP e, portanto uma das fundações do movimento ágil como um todo. Esse artigo aborda de forma introdutória a prática, apresentando seus conceitos, desenvolvendo um exemplo e discutindo seus principais efeitos e desafios. A intenção aqui é apenas apresentar a prática, criar interesse e abrir as portas do leitor para a pesquisa mais aprofundada sobre o assunto.
Saber programar, conhecer as tecnologias, frameworks e ferramentas, é apenas uma pequena parte do que é necessário para transformar boas ideias em grandes softwares. Entendimento do problema, planejamento, coordenação, projeto técnico, implementação, testes e suporte são alguns dos aspectos observados pela disciplina da Engenharia de Software.
Essa disciplina, em seus pouco mais que 40 anos de desenvolvimento, partiu das fases iniciais de desestruturação completa e chegou à época dos grandes processos, bem definidos, estruturados e orientados por modelos formais de qualidade. Pulando de um extremo para o outro, baseou-se em processos tão pesados e burocráticos que fizeram emergir a mudança de paradigmas pelo qual estamos passando nesse exato momento.
O movimento das Metodologias Ágeis de Desenvolvimento de Software vem ganhando força nos últimos anos, buscando o equilíbrio por meio da reformulação de seus princípios fundamentais. Relações humanas, colaboração, pragmatismo e adaptabilidade são algumas palavras chave dessa mudança, muito bem expressa pelos dizeres do que seria a pedra fundamental do movimento: o manifesto ágil, reproduzido na Figura 1.
Figura 1. O manifesto ágil.
Extreme Programming (XP) é uma das mais características metodologias dessa família, foi popularizada por Kent Beck durante a década de 90, e fundamenta-se sobre cinco grandes valores: Simplicidade, Comunicação, Feedback, Respeito e Coragem.
A prática do Desenvolvimento Orientado a Testes (Test-Driven Development) é a mais minuciosa das técnicas que compõem o XP. Ela expressa os princípios ágeis no nível das microtarefas do processo de criação de código, a cada linha de código escrita. Além disso, TDD induz o design incremental sustentável do código, que é o que viabiliza tecnicamente a abordagem iterativa e adaptativa do planejamento como um todo – um dos pontos mais característicos nos métodos ágeis.
Em seguida serão apresentados os conceitos básicos da automação de testes e o processo de desenvolvimento baseado neles. Logo após, veremos um exemplo introdutório, para ilustrar o processo mais de perto, e então serão discutidos os benefícios e as implicações da técnica.
Testes pra quê?
Sendo a prática do TDD baseada no conceito de testes, podemos começar refletindo sobre sua função no processo de desenvolvimento. Classicamente, testes de software são escritos com a finalidade de avaliar a qualidade do software final produzido e de encontrar defeitos.
O Desenvolvimento Orientado a Testes amplia essa interpretação e dá aos testes outras funções: especificar o comportamento do software a ser criado, orientar as atividades de programação e dar feedback rápido sobre cada pequena decisão de design tomada.
Em outras palavras, os testes passam a ser instrumento de design, uma ferramenta de modelagem, cuja função agora passa a se assemelhar mais a elementos como UML e design patterns.
Testes automáticos
A automação é talvez a característica que mais diferencia os testes em TDD dos testes de software em sua concepção mais tradicional, como estamos acostumados a estudar.
Os testes passam a ser não mais uma atividade específica que alguém realiza, avaliando um programa manualmente usando um software e anotando eventuais anomalias. Um teste aqui se trata de um pequeno trecho de código (um método ou procedimento, por exemplo) que executa o programa sendo testado e avalia os resultados automaticamente, sem intervenção humana, como ilustrado na " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo