Archive for fevereiro \16\UTC 2009

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.

“Nós somos os gringos deles – O mundo é pequeno para os profissionais de talento”

fevereiro 8, 2009

Já faz um tempinho, que eu prometi (aqui) que ia fazer um post sobre essa palestra, ministrada pelo Luli Radfahrer, que assiste no Latinoware 2008. E como dizem: “promessa é dívida”.

Para começar esse post, vamos lembrar, de uma mania que nós brasileiros temos: a de achar que tudo que vem de fora é melhor do que o produzido aqui.

Why? Por qué? なぜ? 為什麼?

O motivo para esse pensamento arcaico, deve-se ao passado do Brasil. Um país que na maior parte da sua história, foi colônia de Portugal, e na época, tudo o que era de fora, acabava tendo mais valor e glamour, por exemplo, roupas.

E outro fato, foi a forte migração de pessoas de todo mundo (eu mesmo sou bisneto de italianos). E os estrangeiros, diferentes de nós, valorizam as tradições, culturas, produtos, etc de seus países. E isso acabou sendo passado para nós.

Hoje em pleno século XXI, para ser mais preciso, em 2009, ainda somos conhecidos por sermos os maiores exportadores de matérias primas, por exemplo, a laranja. E continuamos importando o suco de laranja em caixinhas. E quando vamos ao supermercado preferimos comprar um suco de caixinha de uma empresa estrangeira, do que o produzido 100% por um empresa nacional.

Mas vamos parar de falar da indústria e do passado e começar a falar sobre a tecnologia e o presente.

Para fabricar caixinhas de suco, é preciso de máquinas, que são formadas por peças importadas, por isso acabamos exportando a laranja, para outros países industrializarem na forma de caixinhas de suco de laranja.

Mas você não disse que ia parar de falar da indústria?

Calma.

E para desenvolver um software, o que é preciso?

Mão de obra qualificada?

Também, mas qual é a matéria prima de um software?

Hmmmm…a informação?

Isso mesmo! A informação é a matéria prima para podermos criar um software.

E hoje com a Internet, temos acesso a informação de formar muito fácil e abundante. Blogs, Youtube, sites, etc, são atualizados a cada minuto, por pessoas de todo o mundo. Assim sendo, eu que moro no Brasil tenho acesso a mesma informação, que uma pessoa dos E.UA., da Índia, do Japão, de Bangladesh…

Desta maneira, temos a mesma condição de construir um bom software, que outras pessoas do mundo tem. E nos brasileiros, temos ainda um diferencial, usamos demais o lado direito do cérebro.

Os dois lados do cérebro

O lado direito do cérebro é o responsável pela criatividade, que pode ser um diferencial no desenvolvimento de um software, se usada da maneira correta. E falo da maneira correta, pois quando falamos em criatividade no desenvolvimento de software, logo lembramos da POG (Programação Orientada a Gambiarras).

Antes de encerrar esse post, deixo uma frase do Luli Radfahrer, e para quem quiser saber mais sobre esse assunto, recomendo a excelente palestra do Luli, apresentada no Latinoware 2008 e que se encontra mais abaixo:

“Hoje chegamos num ponto, que nós somos tão gringos quanto os gringos. Que o mundo se tornou pequeno, próximo e rápido, que as ferramentas estão disponíveis e ao alcance de qualquer um. E que o que vai fazer a diferência é a idéia, aplicada num algoritmo e que seja evolutivo. Se eu pudesse realizar um único desejo hoje, eu queria ser o meu neto.” (Luli Radfahrer)

more about “Luli – Palestra OAH – “Nós somos os g…“, posted with vodpod

É 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.

Café Com Bits – Portabilidade Numérica

fevereiro 2, 2009
Café Com Bits - 30/01/2009

Café Com Bits - 30/01/2009

São Paulo – No último dia 30 ocorreu mais uma edição do café com bits. O tema desta vez foi portabilidade númerica, assunto de extrema importância para empresas que desenvolvem software para telecomunicações. Ao longo do bate-papo foram apresentados os possíveis modelos de portabilidade existentes no mundo, dando enfase no modelo adotado pelo Brasil: o “All Call Query”.

O modelo “All Call Query” possui uma base de dados central com informações dos usuários que portaram seu números. As operadoras devem manter uma base de dados locais sincronizadas com a base de dados central.

No Brasil esse banco de dados centrais é mantido pela ABR Telecom, uma empresa formada pelas grandes operadoras e que tem por trás uma empresa americana chamada Clear Tech que forneceu a solução técnica.

O banco de dados central é Oracle e possui redundancia física e de redes, o acesso a esse banco de dados se dá através de um link TCP criptografado. Porém acessar esse banco custa caro, e as operadoras de pequeno e médio porte precisarão usar de sua criatividade técnica para conseguir reduzir o número de acessos necessários a essa base de dados central.

Durante o café fez-se uma comparação do sistema de tarifação brasileiro com o americano, destacando-se que nos EUA o custo da chamada telefônica é compartilhado entre quem recebe e quem a faz, além das tarifas tanto da telefonia móvel quanto da fixa serem muito próximas justificando a existência lá de portabilidade tanto entre números fixo e de celular.

O café foi apresentado por Saulo Scarpina e Karen Volcano da equipe de Qualidade e Testes, sob orientação de Elcio Jovelli e contou ainda com importantes participações de Jefferson Zanardi de Freitas, que forneceu  informações sobre o modelo de portabilidade brasileiro, e Rodrigo Zenji, que explanou sobre o funcionamento do sistema de tarifação norte-americano.


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.