Posts Tagged ‘Verão ágil’

Testes Automatizados

fevereiro 16, 2009

Na semana passada eu e o Daniel Sakuma, participamos de um curso de verão na USP: “Desenvolvimento de Software de Qualidade através de Testes Automatizados”. O curso teve duração de 5 dias e foi ministrado pelo pessoal da Agilcoop.

Para o post não ficar imenso, vou colocar uma síntese da cada dia, e no final uma conclusão. Espero que gostem.

1º Dia
Na primeira parte do dia o Fábio Kon fez uma apresentação sobre o curso e uma explicação introdutória sobre testes automatizados, enfatizando o quanto é importante os testes e principalmente os testes automatizados. Já na segunda parte, o palestrante Paulo Cheque fez uma apresentação sobre conceitos de testes, mostrando os vários tipos, níveis e termos de testes.

2º Dia
No segundo dia houve duas palestras uma sobre teste de unidade, na qual houve a apresentação na prática, usando a linguagem Scala e estando com o Junit. E a segunda foi sobre Padrões em Testes Automatizados, onde foram apresentados bons e mals padrões, tendo como referência o livro “xUnit Test Patterns, Refactoring Test Code“. Ambas as palestras foram ministradas pelo Paulo Cheque.

3º Dia
A primeira palestra do terceiro dia foi ministrada pela Mariana Bravo, sobre Objetos Dublês. Ela fez a sua palestra usando exemplos práticos em Java, cada um dos tipos de objetos dublês que podemos usar. E a segunda palestra foi sobre Testes de Interface de Usuário, onde foram apresentadas ferramentas para fazer testes automatizados na interface, utilizando o Selenium, FEST e WebDriver, essa palestra foi ministrada pelo Paulo Cheque.

4º Dia

Neste dia houve três palestras: a primeira sobre Testes com Banco de Dados, apresentada pelo Helves Domingues, que abordou as dificuldades e estratégias para testar banco de dados; a segunda sobre Testes de Aceitação ministra pelo Hugo Corbucci, que mostrou o que são ferramentas para testes de aceitação; e a última foi sobre Técnicas de Escrita de Testes Automatizados, ministrada pelo Paulo Cheque, que abordou refatoração, TAD, TFD/POUT, TDD, BDD, Padrões e Anti­padrões.

5º Dia
No último dia tivemos uma palestra muito legal sobre TDD (Test-Driven Development), onde o Fabrício Souza apresentou na prática como fazer testes antes do desenvolvimento, com exemplos em Ruby, uma linguagem que parece ser bem bacana. E a última foi sobre Métricas para Testes Automatizados, ministrada pelo Paulo Cheque, que mostrou algumas ferramentas e maneiras para medimos os testes automatizados.

Conclusão

Sempre quis aprender mais sobre Testes automatizados, confesso que mesmo após o curso, se você me pedir para fazer um teste no Junit agora, não saberei fazer de primeira. Mas acredito que mais importante do que decorar sintaxes ou ser “evangelizado” e sair falando que testes automatizados é a salvação e que teste manual é uma m#!$*, é entender a real importância e papel dos testes automatizados dentro do desenvolvimento de software.

É considerável a eficiência que os testes automatizados pode trazer para o código, com ele programar certo na primeira, se torna algo frequente e não raro. O código se torna mais limpo, e se precisarmos corrigir algo, ou implementar uma nova funcionalidade, não ficaremos inseguros, com medo de estragar algo, pois poderemos executar todos os testes automatizados, que irão cobrir todos os cenários e nos darão confiança de que nada irá quebrar.

Mas antes de partir para a automatização dos testes, necessitamos analisar se ela realmente é viável, e se a equipe e o nosso processo estão maduros para suportar essa mudança. Pois os resultados da implantação de testes automatizados só aparecem a médio e longo prazo, e é preciso esforço e boa vontade de todos para dá certo.

Para encerrar o post, um muito obrigado ao André Pantalião, por ter nos incentivado a participar do curso, e parabéns ao pessoal da Agilcoop pela iniciativa e qualidade do curso, que foi uns dos primeiros, senão até o primeiro sobre o tema, a ser realizado no Brasil.

Quem ficou interessado no assunto, visite o site da Agilcoop, lá se encontram os slides utilizados no curso, além de um ótimo material sobre metodologia ágil em geral.

É preciso treinar!

fevereiro 3, 2009

Depois que o Michael Phelps aprendeu a nadar, quanto tempo você acha que ele treinou? E depois que você aprendeu a programar, se você aprendeu algum dia, quanto tempo você treinou? E quando digo treino, é programar sem ter algo para entregar ou corrigir, somente com objetivo de exercitar o conhecimento.

A maioria dos programadores não treina, só programa quando é para “valer”.

Eu estava em um curso de verão no IME e fui apresentado a uma técnica de treino de programação chamada Dojo. Basicamente, esta técnica consiste em reunir pessoas para aprender sobre um determinado assunto. O grupo trabalha em torno de um problema e vai aprendendo junto. A idéia é ter um ambiente onde a pessoa se sinta à vontade para tentar e errar.

As reuniões podem se alternar entre dois formatos:

  • Kata: alguém resolve o desafio em casa e apresenta na reunião “ao vivo”, começando do zero.
  • Randori: o problema é resolvido “ao vivo” pelos participantes, usando TDD e Programação Pareada.

Eu não vou listar tudo aqui sobre o Dojo, ao invés disto, leia o post do Danilo Sato sobre o assunto. Leia, porque lá já fala tudo!

Lá no curso fizemos o Dojo de um projeto bem simples, mas o mais importante foi a troca de informações entre pessoas que conheciam muito, pouco ou nada sobre o assunto. Ao fim da sessão, todos pareciam satisfeitos com o que foi feito, mas fizeram algumas observações:

  • Como fazer se temos pessoas em diferentes níveis? O grupo segue o ritmo dos mais “lentos”, que não conhecem tanto. Desta forma, os mais experientes passam e exercitam o seu conhecimento.
  • Mas se o grupo for muito lento, como vai aprender? A idéia é que as pessoas em grupo aprendam mais rápido do que se estivessem sozinhas. E alguém que manja muito de um assunto, pode ser inexperiente em outro, por isso que a idéia é trocar idéias.

Na próxima segunda eu devo ir no Dojo lá no IME. Qualquer um está convidado, é só querer aprender sobre programação! Vai lá !

Onde:

IME – Instituto de Matemática e Estatística

Rua do Matão, 1010 – Bloco A – Sala 256 – Cidade Universitária

Quando: Todas as segundas-feiras, das 20:00 às 22:00

Saiba mais: visite a página do grupo no Google groups ou o Blog deles.