Recentemente a discussão sobre a utilidade de testes automatizados tem vindo a tona. Alguns dizem que escrever testes são uma perda de tempo, alegando que o desenvolvedor gasta mais tempo escrevendo os testes do que a própria funcionalidade que está testando. Outros, especialmente os adeptos das metodologias ágeis de desenvolvimento como programação extrema, alegam que escrever testes automatizados é essencial para garantir a qualidade do software sendo produzido e para permitir o uso de técnicas mais agressivas como refatoração e aplicação de padrões. Esses chegam a incentivar os programadores a escrever os testes antes do próprio código a ser testado! Neste seminário iremos abordar esta técnica de desenvolvimento orientado por testes, mostrando um exemplo prático de "test-first development". Iremos ilustrar alguns dos padrões de testes mais comuns, mostrando como testar todo tipo de aplicações, e também como usar a maior parte dos arcabouços de testes disponíveis. Para finalizar iremos mostrar exemplos de testes funcionais de interfaces Web, usando o arcabouço JWebUnit.