Por que alguns programadores não gostam de escrever testes automatizados?

Quebrar um paradigma de formação não é difícil, mas não é impossível.

Como tratamos de assuntos ligados as metodologias ágeis, vou abranger os testes automatizados e o que o mesmo poderá beneficiar o programador.

Os teste automatizados são uma maneira de garantir a qualidade de código, sendo assim, cliente e programadores ganham. O cliente vai ganhar um produto com qualidade melhor e o programador terá um aliado que são os testes automatizados para garantir que seu código tem qualidade.

Testes automatizados contribuem para princípios ágeis com software funcionando, adaptação a mudança, colaboração com o cliente e indivíduos em interações.

Problemas sem testes automatizados:

  • Muito tempo na depuração;
  • Erros encontrados tardiamente;
  • Difícil repetir testes;
  • Demorado;
  • Cansativo;
  • Executado poucas vezes.

Benefícios dos testes automatizados:

  • Segurança para mudanças de código e externa;
  • Aumento o tempo de vida útil do software;
  • Testes executados a qualquer momento;
  • Ajuda a encontrar erros;
  • Aumenta a velocidade de programação.

E como deve ser código do teste?

O código do teste merecem os mesmos cuidados que o código do sistema.

O código do teste sofre manutenção e também pode ter erros, portanto deve ser legível e simples.

Tipos de testes

O tipo de teste que o programador geralmente faz na metodologia ágil são os testes de unidade, que possuem as seguintes características:

  • Encontra muitos erros;
  • Tipo focando na funcionalidade(caixa-branca).

O demais testes são:

  • Aceitação;
  • Interface  do usuário;
  • Mutação;
  • Desempenho;
  • Estresse;
  • Segurança;
  • Integração.

Os demais testes o programador pode até fazer, mas necessita-se de um analista de teste, pessoal de infraestrutura ou arquiteto, conforme o teste e experiência requerida. Também existem diversos softwares (frameworks) para os demais testes, sendo um exemplo o JUnit e outros para testes de unidade.

Colegas programadores, com os testes automatizados você somente tem a ganhar na execução do seu trabalho e na formação profissional. Tendo uma visão focada nos negócios, além de tecnologias.

Qualquer funcionalidade que não possui testes automatizados simplesmente não existe.

Kent Beck

Os Melhores Podcasts de Tecnologia para Desenvolvedores

Post excelente escrito pelo André Faria Gomes. Muito bom mesmo! Podcasts sem dúvida são um dos meios mais indicados para adquirir conhecimento em tecnologia, ainda mais quando você está antenado no que Martin Fowler, Kent Beck, Rod Johnson entre outros estão falando. Retirado do andrefaria.com.

Um dos maiores problemas da sociedade moderna é a dificuldade de locomoção diária, a maioria das pessoas passa horas em seus carros, ou em meios de transporte públicos para irem de lugar a outro. Há alguns anos atrás quando morava na zona norte de São Paulo e trabalha na zona sul, essa era minha realidade. Uma vez que naquela época passar por isso era inevitável procurei formas de fazer com esse tempo pudesse de alguma forma torna-se produtivo, foi então que comecei a ouvir à podcasts.

iPod FM radio remote por dan taylor
iPod FM radio remote por dan taylor

De acordo com a Wikipedia, Podcasting é uma forma de publicação de arquivos de mídia digital (áudio, vídeo, foto, etc.) pela Internet, através de um feed RSS, que permite aos utilizadores acompanhar a sua atualização. Assim, é possível o acompanhamento e/ou download automático do conteúdo de um podcast.

Neste post apresentarei os podcasts aos quais escuto e os episódios principais para que você ouça. Sugiro que você utilize o iTunes para inscrever-se nos podcasts e sincronizar com seu iPod.

Desenvolvimento Ágil

por pcalcado
por pcalcado

Podcast da ImproveIt

por Vinícius Teles
http://improveit.com.br/podcast
Português

AgilCast

Por AgilCoop
http://agilcoop.incubadora.fapesp.br/portal/agilcast
Português

Agile Toolkit Podcast
http://agiletoolkit.libsyn.com
Inglês

ThoughtWorks Podcast

http://www.thoughtworks.com/what-we-say/podcasts.html
Inglês

Open Source

FLOSS Weekly

por Leo Laport, Jono Bacon e Randal Schwartz
Inglês

Java

HorecaExpo - Java por bramloquet
HorecaExpo – Java por bramloquet

JavaPosse

Por Tor Norbye, Carl Quinn, Dick Wall e Joe Nuxoll
Inglês
http://www.javaposse.com

Java Technology Insider

Inglês
http://www.javaworld.com/podcasts/jtech

Grails Podcast

Por Glen Smith e Sven Haiges
http://grailspodcast.com

Ruby

Ruby on Rails por Andrew*
Ruby on Rails por Andrew*

Rails Envy

Por Jason Seifer e Gregg Pollack
Inglês
http://railsenvy.com

Rails Podcast

por Geoffrey Grosenbach
Inglês
http://podcast.rubyonrails.com/

Rubiverse Podcast

Por Mike Moore
Ingles
http://rubiverse.com

JavaScript

jQuery Podcast

Português
http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/

Gadgets

GeekBrief TV

por Cali Lewis
Inglês
http://www.geekbrief.tv

Software

Desk por Guillermo Esteves
Desk por Guillermo Esteves

Pragmatic Podcasts

por Pragmatic Bookshelf
Inglês
http://www.pragprog.com/podcasts

Software Engineering Radio

por Software Engineering Radio
http://www.se-radio.net
Inglês

Elegant Code

por Elegant Code Community
http://elegantcode.com
Inglês

Google Developer Podcast

http://code.google.com/p/google-developer-podcast/downloads/list
Inglês

Hearding Code

http://herdingcode.com
Inglês

Tecnologia

IT Conversations

http://itc.conversationsnetwork.org
Inglês

net@Night

por Amber MacArthur e Leo Laport
http://www.twit.tv/natn

Twit – This Week in Tech

por  Leo Laporte, Jeff Jarvis, Baratunde Thurston, e John C. Dvorak
http://www.twit.tv/twit

MacBreak Weekly

por Leo Laporte, Don McAllister, Paul Kent, and Andy Ihnatko
http://www.twit.tv/mbw

This Week in Google

por Leo Laporte, Gina Trapani, Jeff Jarvis e Mary Hodder
http://www.twit.tv/twig

SitePoint Podcast

inglês
http://www.sitepoint.com/podcast

Empreendedorismo e Negócios

37 Signals Podcast

por 37 Signals
Inglês
http://37signals.com/podcast

Max Gehringer (CBN)

por Max Gehringer
Português
http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm

Mundo Corporativo (CBN)

por Heródoto Barbeiro
Português em Áudio
http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm

The Startup Success Podcast

http://startuppodcast.wordpress.com
Inglês

TED Talks

por TED Talks
Inglês
http://www.ted.com

Revista Software Test & Performance Magazine – Agosto/2009

Caros colegas, Segue abaixo o link para a edição da revista Software Test & Performance Magazine deste mês de Agosto. Eis o link para download abaixo (clique na imagem):

Revista Software Test & Performance Magazine – Julho/2009

Caros colegas,

Segue abaixo o link para a edição da revista Software Test & Performance Magazine deste mês de Julho. Eis o link para download abaixo (clique na imagem):

CURSOS-SÃO PAULO-SP – Primeiro Ensina aí! Cursos Grátis

Pessoal,

Aqui na empresa, vamos iniciar uma sequência de cursos, que dentro do possível serão abertos a pessoas de fora também.

A idéia inicial é que os colaboradores da empresa (ensinadores) que tem conhecimento sobre determinada área/assunto compartilhe esse conhecimento.

Demos o nome a esta sequência de cursos de ENSINA AÍ!

Alguns cursos ainda não tiveram data confirmada. Mas se você deseja participar de um destes, informe que contatamos quando a data estiver certa.

Quem quiser participar ou dar algum curso é só falar (via e-mail: ensinaai@voicetechnology.com.br) .

Segue abaixo, maiores informações sobre o primeiro ENSINA AÍ!.

Primeiro Ensina aí! Cursos Grátis

Pessoal,

No banner principal do blog Ensinar,  desde sua criação consta a frase “Compartilhando Conhecimento”. E é isto que temos tentado humildemente fazer nos últimos tempos. E é justamente para dar mais um passo neste caminho, iremos fazer nos meses de julho e agosto, o primeiro Ensina aí!

O Ensina aí! é uma sequência de cursos e palestras feitas por amigos e funcionários da Voice Technology. O público destinado é qualquer pessoa que deseje participar. O calendário de cursos do Ensina aí! ainda está em fase final de preparação.

Todos os cursos estão relacionados a algum conhecimento que é utilizado na empresa.

O professor, é alguém da nossa empresa que conheça e trabalhe com o assunto abordado. Como não somos professores / instrutores profissionais, chamaremos de “Ensinadores”…

Os cursos já confirmados são:

1. Scrum: Gerenciando e planejando projetos de software (10 horas).

Descrição: abordar os conceitos do Scrum, sua utilização e alguns pequenos exemplos práticos.

Público-Alvo: interessados em metodologias ágeis e projetos de software.

Data: 20, 21 e 22 de julho. Das 19:00 às 22:30

Ensinador: André Pantalião


2. Introdução ao Teste de Software: uma abordagem prática (10 horas).

Descrição: aborda os conceitos básicos do teste de software utilizando exemplos práticos para ilustrá-los. Não é só teoria!

Público-Alvo: interessados em teste de software e iniciantes na área.

Data: 27, 28 e 29 de julho. Das 19:00 às 22:30

Ensinador: Fabrício Campos


3. Linux (10 horas) – Assuntos da certificação LPIC-1 (Prova 101)

Descrição: Abordar os assuntos da prova de certificação LPIC-1 (Prova 101).

Público-Alvo: interessados em Linux e certificação LPIC-1 (Prova 101)

Data: a ser confirmada, em setembro.

Ensinador: Adelson Junior



4. Oracle 11G – Fundamentos de SQL I (10 horas)

Descrição: Conteúdo do curso baseado na primeira prova da certifica ção para OCA-DBA.

Público-Alvo: usuários de banco de dados, sejam eles desenvolvedores, testadores, etc.

Data: a ser confirmada

Ensinador: Fabrício Campos

5. VoIP (8 horas)

Descrição: abordar conceitos básicos, componentes e arquitetura de soluções Voz sobre IP.

Público-Alvo: interessados em telefonia e Voz sobre IP

Data: a ser confirmada

Ensinador: Antonio Anderson


6. Utilizando Maven com Java (8 horas)

Descrição: mostrar a utilização do Maven, desde sua instalação até exemplos práticos.

Público-Alvo: programadores Java.

Data: a ser confirmada, em setembro.

Ensinador: Marcos Hack

Ainda colocaremos mais palestras e cursos, se quiser participar de algum curso ou dar uma palestra.

Quer participar do Ensina aí? Mande e-mail para ensinaai@voicetechnology.com.br.

Segue abaixo, informações sobre o local do cursos:

Voice Technology
Rua Líbero Badaró, 293 – cj. 30 A
Centro – São Paulo

Revista Software Test e Performance – May/2009

Caros colegas,

Está disponível para leitura e download gratuito a revista Software Test & Performance (May/2009), voltada aos profissionais da área de Teste e Qualidade de Software. O conteúdo desta edição aborda:

May 2009 – Vol. 6, No. 5

Cover Story: Testing By The Numbers: Basics of Ajax Unit Testing

Feature Articles

  • Testing With Data Patterns
  • Load Testing To Avoid Unwanted Attention

Editorial: You learn from us, we learn from you, and we all enjoy a song or two. Isn’t that what a conference should be?

Conference News: Bonus coverage from the Software Test & Performance Conference in Silicon Valley.

ST&Pedia: An expanded look at unit testing and how its idioms can be harnessed to test larger chunks of code.

Best Practices: Static and dynamic analysis — they run separately but work together.

Future Test: Is testing a right-brain activity?

Eis o link para download.

Boa leitura!

P.S. : Créditos a Fábio Martinho Campos, que disponibilizou a informação na lista do grupo BSTQB.

(Atualizado as 12h01 de 29-06-09)

Já está disponível a versão do mês de junho através do link:

A seguir, os assuntos:

June 2009

Cover Story

A Build Management Study: Keep Your Dominos In a Row
A veteran of software development and testing takes you on a journey though his experiences fixing broken build systems. Read how he did it.
By Chris McMahon

Feature Articles

One Last Look at Data Patterns
Understand the data in your organization and improve quality assurance. This final installment covers data patterns of interaction, human error and those that trigger measureable results.
By Ross Collard

Pick The Best Players and Your Team Will Win
Interviewing for a job requires preparation regardless of which side of the table you’re on. Learn how to prepare your team to hire the best automation experts that come your way.
By Bernie Gauf and Elfriede Dustin

The Real and Perceived Business Processes
Things are not always what they seem. As a manager you might think you know how the job is getting done, but what goes on behind the scenes? Here’s how to find out.
By Robin Goldsmith

P.S. : Créditos a Marcos Diniz, que disponibilizou a informação na lista do grupo BSTQB.

Eis o link para download.

Boa leitura!

P.S. : Créditos a Fábio Martinho Campos, que disponibilizou a informação na lista do grupo BSTQB.

Automação de Testes de Aceitação – Teoria ou Prática

Mais um post esclarecedor e de bom conteúdo, relacionado a Qualidade de Software. Meus parabéns ao trabalho da Gisela Nogueira pelo trabalho de tradução e divulgação! Leia abaixo o texto retirado do InfoQ.

Existem relatos esporádicos do sucesso em escrever requisitos e automatizá-los como teste de aceitação (algumas vezes chamado de test driven requirements, story driven development, e – dependendo de quem você pergunta – behavior driven development).  Até agora essa prática é utilizada por uma minoria da comunidade. Alguns líderes dizem que é uma idéia ruim e um desperdício de esforço. A automação de testes de aceitação escritos no início de cada interação seria somente uma afirmação teórica que se mostrou ineficaz pela falta de utilização?

Primeiramente, vamos definir o que significa automação de testes de aceitação: são testes escritos geralmente no início de uma interação e são uma forma de execução dos requisitos. Eles são exemplos detalhados de como o sistema supostamente deve funcionar quando o requisito descrito está completo – uma resposta para “Como se parece quando está pronto?” Historicamente FIT and FITNesse são as ferramentas escolhidas, no entanto, atualmente existem novas ferramentas como cucumber e rspec.

Esse tipo de teste realmente não pegou. De fato, houve recentemente uma conversa chamada Is FIT Dead?. Também, em uma entrevista com a InfoQ no Agile 2008, Brian Marick fez seu registro:

InfoQ: Então isso parece interessante. Faz sentido para mim estes testes no nível de negócio em si, coisas que o cliente entende e pretende ver. E você fala sobre exemplos. Não sei se você está utilizando isso para simplificar, para se livrar da palavra teste. Mas você está realmente falando sobre testes para cliente, não está? Você pode nos falar mais sobre isso?

Brian: O que tenho notado de interessante é que isso não parece funcionar em nenhum ponto tão bem quanto o teste unitário do Test Driven Design, no seguinte sentido: quando você desenha um teste, você geralmente focaliza tudo o que significa, realmente, um ganho. E claro, os testes unitários fazem a mesma coisa que os testes unitários costumavam fazer. Mas a escrita real do código de teste, que é necessário para criar aquele exemplo, aquele teste automatizado para ser executado sem intervenção humana, com muita freqüência, não tem o mesmo resultado tipo “Oh! Estou realmente satisfeito de ter escrito este código, eu realmente aprendi algo, é meu, eu já escrevi um monte de códigos chatos, e não aprendi nada” então não há uma recompensa por ter escrito aquele código, você não tem um real benefício, além do benefício do próprio teste. E também, aparentemente, estes exemplos externos, não são testes de aceitação que realmente geram conseqüências estruturais profundas como uma refatoração faz em testes unitários. Então a pergunta que eu faço é se o valor está na criação do teste, e há um custo substancial para escrever todo esse código, vale realmente a pena gastar o nosso dinheiro automatizando estes testes? Porque se não compensar financeiramente, por que simplesmente não fazer os testes num quadro, com os programadores implementando-os, um de cada vez, checando-os manualmente, e até mesmo mostrando-os ao dono do produto, manualmente, e ao finalizarmos, simplesmente os apagamos e esquecemos? Porque temos esta necessidade de salvar estes testes e executá-los outra vez e mais e mais vezes, diversas vezes novamente?

Então, existem vários outros lideres na comunidade que ainda recomendam a utilização de testes de aceitação automatizados; entre eles incluem-se nomes como Robert C. Martin, Joshua Kerievsky, e James Shore, para mencionar alguns.

Chris Matts apresenta uma forma interessante de olhar o problema, como um problema de chegada das informações. Suponha que você tenha um processo de desenvolvimento de software (não necessariamente Ágil-específico) que não tem testes de aceitação escritos com antecedência. Os times de QA tipicamente executam seus próprios cenários de teste e quando o defeito é localizado é passado para os desenvolvedores. Esses defeitos são localizados randomicamente e, portanto, afetam a velocidade do time do software randomicamente porque um percentual da sua capacidade é utilizado para detectar esses defeitos. Novas informações chegam randomicamente para o time do desenvolvimento.

Agora, considere se o teste é escrito pelo departamento de QA antes que o desenvolvimento comece. A informação fornecida por esses cenários agora ocorrem no início da interação de forma previsível. Portanto, as incertezas são reduzidas, a velocidade se torna mais estável (menos interrupções randômicas), e isso significa mais previsibilidade.

Então, teste de aceitação automatizada é somente alguma coisa que a elite (ou sorte) consegue fazer funcionar? Existe uma falha interna, que não é vista, que causou a utilização menor do que a esperada? Ou é simplesmente difícil e com eficácia comprovada além de ser uma prática que todo time de desenvolvimento de software deveria adotar?

Minhas impressões – OpenTDC 2009 – 17-05-09

Amigos e leitores,

Vou escrever por meio deste post as minhas impressões do OpenTDC 2009, evento ocorrido no dia 17-05-09 na Universidade Anhembi Morumbi, local que está virando ponto de referência para os eventos organizados pela Globalcode. O evento foi voltado para desenvolvedores e entusiastas do Open Source e das tecnologias Java.

NOTA: Desculpem-me mais uma vez pela demora de publicação das informações (quase um mês…rs. E o mesmo se aplicará para a publicação das impressões do evento “Java@TVDigital“).

NOTA 2: Também postado no Blog do Ensinar.

Panorma Geral

OpenTDC 2009

Presenciei o OpenTDC desse ano juntamente com o colega de empresa Joemir Luchetta, que também esteve no evento do ano passado. É importante ressaltar que o evento foi gratuito (como o evento Java@TV Digital ), com sorteio de muitos brindes e coffee-break. A presença de palestrantes que eu já havia visto apresentar trabalhos me deixou seguro de que o evento seria em bom nível. E não foi diferente: palestras claras, algumas com conteúdo bem técnico, outras não, e interação dos palestrantes com o público fizeram do evento um sucesso. Abaixo irei passar os pontos mais importantes dos temas abordados nas palestras. Espero que gostem.

Palestras

Abertura: Java, Open Source e a Comunidade – Yara Senger e Bruno Souza

Abertura: Java, Open Source e a Comunidade - Yara Senger e Bruno Souza

Como de praxe nos eventos organizados pela Globalcode, Yara Senger fez a vez na abertura do evento, expondo os dados relacionados a comunidade Java ( JUG’s, SOUJava, divulgação e participação em eventos e número de profissionais ). Citou também os novos canais da Globalcode, Open4Education e do evento no twitter, por onde irão circular depoimentos e promoções relâmpago relacionadas a cursos da instituição, além de anúncios de novos eventos.

Após isso adentrou ao palco Bruno Souza, o “Java Man“, trazendo uma visão do que é o Open Source, baseada em sua larga experiência com o “ecossistema” Java. A frase base de sua apresentação foi: “Open Source é a forma natural de desenvolver software em um ambiente de rede”. A “rede” no caso pode ter contatos, membros de comunidade, projetos Open Source, networking, entusiastas e etc. É desenvolvendo software em rede que se aprende e evolui-se.

Ele fez um paralelo entre o Java e o Open Source com um fotógrafo: “Como se tornar um excelente fotógrafo? O que isso tem a ver com Java”. Vendo fotos de outras fontes e tirando muitas fotos é provável que se vire um grande fotógrafo. O mesmo acontece no Java: é preciso ver muito código de outras fontes e desenvolver muito código próprio. No mundo são apenas 1/4 de 1% da população que entende software. Para ser um bom desenvolvedor, fotógrafo ou outra coisa é preciso muito estudo e dedicação. De acordo com Bruno são cerca de 10000 horas ( cerca de 8 horas por dia, todos os dias, durante 3 anos e meio! ) para formar um bom profissional. É por meio do Open Source e da relação com o usuário, que é quem mais conhece o software, que o desenvolvedor pode inovar e evoluir. O software é arte e engenharia, e não fabricado, manufaturado, ou aprendido por SW privado.

Finalizando, Bruno deixou uma dica para as pessoas que irão participar do FISL10: ocorrerá no dia 23 de junho, um dia antes do evento oficial, o Javali FISL, organizado pelo SOUJava e que irá apresentar as palestras e o conteúdo presente no JAVA ONE ( 2 a 5 de Junho ), maior evento relacionando a Java no mundo. Deixo os meus parabéns ao trabalho feito pela Yara e pelo Bruno, “universalizando” o Open Source e unindo a comunidade Java e entusiastas, cada vez mais presentes nos eventos.

Robótica Open Source – Vinícius Senger & Paulo Carlos dos Santos

Robótica Open Source - Vinícius Senger & Paulo Carlos dos Santos

Essa era uma das palestras que me interessava, pois gosto bastante de hardware (já tinha ouvido falar de Arduino pelas minhas leituras da Revista INFO; em Fevereiro foi a primeira vez que ouvi falar). No caso, a palestra se deu em ritmo de “bate-papo” (diálogo), onde o Vinicius fez o papel do interessado (aluno) e o Paulo de facilitador da informação (professor). Paulo aliás que já foi aluno e professor do CEFET-SP, lugar onde fiz minha graduação (!).

O Arduino foi apresentado como “Hardware Open Source” ligado a “Physical Computing“, ou seja, trabalhando-se com o Arduino podemos introduzir, aplicar e aperfeiçoar conceitos de eletrônica (hardware, físico) e programação (seja do microcontrolador ou de uma linguagem específica aplicada).

O Arduino trabalha em cima de progração C (para gerenciamento de bibliotecas, I/O de informações sensorias, etc.) e é auxiado pelo Processing (linguagem de programação baseada em Java com IDE, para criar ambientes gráficos e facilitar a integração com projetos eletrônicos).

Assim, fazemos a programação da placa ( via C, com uso de USB, porta serial, WiFi, ethernet…) e visualizamos o resultado por meio de um conjunto de leds, pinos de saída ligados a motores ou sensores (pressão, ultrasom, etc.), auxiliados por interface gráfica (Processing). Portanto podem ser feitos os mais diversos tipos de projetos (sensoriamento de presença, controle de motor, automação residencial, telas touchscreen…), ficando a cargo do projetista a abrangência. “Arduino na mão e uma idéia na cabeça!”.

No Brasil já existe venda de kits do Arduino (saem por volta de 50 a 100 reais os kits mais básicos), sensores (por volta de 50 reais) e “shields” (placas de extensão – breadboards, que podem dar suporte a leitura de cartões SD, rede ethernet…). Geralmente são achados no MercadoLivre. Outros projetos realcionados a Arduino estão sendo criados, como o Arduino Nano, Arduino Severino e Paperduino.

Paulo ao decorrer da apresentação foi mostrando exemplos práticos, apresentados via vídeo no telão, mostrando a aplicabilidade de projetos usando o Arduino, como robôs, acelerômetros, sensores de presença, automação residencial com protocolo X10, entre outros.

Você me pergunta: “Ué, porque todo esse lobby de hardware em um evento de programação?”. Eu particularmente gostei e torço para que mais iniciativas sejam feitas (rs). Mas, o Arduino foi apresentado porque ambos os palestrantes iniciaram um curso intitulado “Academia do Programador” na Globalcode. Usarão o Arduino como instrumento de aprendizado na programação (uso de if, else…) , mas pretendem também criar mais cursos, incentivar a criação de projetos e aumentar a comunidade Arduino. No final das contas foi uma boa iniciativa, pela introdução do tema “desconhecido e voltado para hardware” para os presentes no evento.

Arquiteturas com JSF, JBoss Seam e Spring – Vinicius Senger e Alberto “Spock” Lemos

Arquiteturas com JSF, JBoss Seam e Spring - Vinicius Senger e Alberto "Spock" Lemos

Vinicius Senger e Spock fizeram um teste do que seria apresentado por eles no JavaOne 2009, sendo assim não tinha como não ser bastante técnico o conteúdo apresentado, fora o “show de siglas”. A mesma palestra apresentada no OpenTDC foi apresentada no JavaOne, portanto vemos que o conteúdo dos eventos só vem crescendo.

A idéia principal era mostrar as muitas opções que a plataforma Java EE apresenta para elaboração de projetos, e como montar opções de solução, seja com Struts, Shale, JSF, Wicket, EJB, Spring, Seam, entre outras. Para as empresas há muitos pontos importantes a serem levados em conta, geralmente  os “+ades” (escalabilidade, disponibilidade, manutenabilidade, etc.). Se a empresa busca um projeto de cunho experimental, a arquitetura assim pode também ser; se o projeto é corporativo a arquitetura deve ser conservadora. Frameworks devem ser acoplados a um projeto com inteligência, pois “o simples é bonito e fica bom com Java EE 5”, de acordo com Vinicius.

Uma coisa importante a ser pensada é que o preço de uma arquitetura não deve ser medido apenas com o trabalho do DEV, mas também com equipes de infra, manutenção, gerenciamento, QA e aprendizado. Os principais desafios para se criar arquiteturas corporativas são:

  • Fazer Java EE componentizado, visando reuso. Isso não é fácil;
  • Ter especificação “perfeita” é sonho. Ferramentas não (em termos de uso e aplicação);
  • Usar “+AR’s” é definitivamente difícil (JAR‘s, WAR‘s, EJB-JAR‘s, EAR‘s, etc.). Procure dosar;
  • Mudanças durante o projeto, mesmo que pequenas, aumentam o custo.

O Java EE hoje está OK em muitos pontos (EJB 3.0, JSF, JMS), mas em outros não (questões de modularidade e alguns frameworks). Partindo desse princípio tivemos o nascimento de dois frameworks, Spring e JBoss Seam. O Spring nasceu como alternativa ao Java EE, e o Seam nasceu como modelo de integração dos próprios componentes Java EE. O Seam tem foco em Web 2.0 e promove alguma integração com framework; o Spring tem foco em integrar com outros frameworks e algum com Web 2.0. O antagonismo continua quando falamos de uso em servidores: muitas empresas rodam Spring em diferentes servidores. Poucas empresas rodam Seam em servidores diferentes de JBoss.

Após esse panorama bem abrangente e técnico Spock começou a abordar as soluções envolvendo Java EE, componentes e frameworks, sendo o centro da apresentação. Foram 5 modelos apresentados, com suas vantagens e desvantagens:

  • Java EE básico;
  • Java EE + EJB;
  • Spring;
  • Seam;
  • Seam + Spring.

Como a palestra era prevista para 50 minutos (tempo oficial que eles teriam no JavaOne), e eles só tinham 45 minutos disponíveis (fora 10 a 15 minutos de atrasos de palestras anteriores) fora o horário de almoço atrasado, ficou um pouco “corrido” o conteúdo apresentado nos tópicos de soluções e alguns pontos foram omitidos. Gostaria de especificar melhor os itens acima, mas o tempo e a abrangência não possibilitou. A apresentação não foi ainda disponibilizada no site da Globalcode, nem no site do JavaOne. Quando estiver disponível atualizo este post com a informação.

Para finalizar, o panorama do futuro do Java foi dado com base no Java EE 6, usando JSF 2.0, Web Beans e EJB 3.1. A especificação do Java EE 6 e as próximas serão cada vez mais “puras” e o uso de Spring com Java EE 6 será maior. Fora a omissão de alguns pontos relacionados as soluções, muito pelo tempo disponível, o conteúdo e desenvoltura dos palestrantes agradou.

Adotando Agile: o caminho das pedras – Cláudio Teixeira

Adotando Agile: o caminho das pedras - Cláudio Teixeira

Cláudio Teixeira trouxe um panorama bem legal das metodologias ágeis, muito pela sua experiência com desenvolvimento e arquitetura de projetos em Londres, onde a “onda ágil” está atuante a muito mais tempo. Para se entender melhor porque há novidades em termos de metodologia, foi feita a seguinte pergunta: “Qual a motivação para um novo approach?”. Resposta: “Projetos falham” (em todos os níveis). Com base nisso, e sabendo que o cliente é exigente, é imprescindível fazer com que os projetos sejam rápidos (em termos de tempo), pois a reposta do cliente é rápida e as chances de errar diminuem.

Peguemos como exemplo o RUP. O RUP busca a “perfeição no processo” (o bom é inimigo do ótimo). Onde era implementado RUP? Em sistemas governamentais e exército dos EUA (alto custo e baixa tolerância a falhas), sendo fortemente apoiado a contratos. Para esse cenário não poderia ser diferente.

Com o “boom da Web” e os “Startups! de empresas” houve uma alta demanda de software, mudando o foco para confiança na empresa e menos em contrato e “burocracias”. Se o RUP fosse adotado teríamos planejamentos proféticos e “quadrados” (muitos manuais e cronogramas de processos). Fora que as “metodologias tradicionais” não mostram a “saúde” do projeto (Gráficos ROI e Waterfall não são suficientes). Nesse panorama pensou-se em dois confrontamentos:

  • Funcionalidades X Utilização: quanto mais rápido o feedback do cliente final melhor (faz-se apenas o necessário);
  • Desenvolvimento de software X Manufatura: custo e tempo são essenciais. Podem ser iguais ou não.

Todo esse cenário motivou algumas pessoas (do meio empresarial) a criarem algo novo, mas que fosse compatível com a situação do mercado e desse opção de aproveitar a demanda deste. Daí nasceu a expressão “ágil”, o manifesto ágil e a criação da Agile Alliance. Em nível de metodologia ágil temos 3 tipos de aplicação do processo:

1. Extreme Programming (“XP – O processo dos geeks”):

  • Feedback rápido e simples;
  • Entregas incrementais;
  • “Abraça” mudanças;
  • Código de alta qualidade.

2. SCRUM (“O processo da sala de guerra”):

  • Processo promove acerto e erro;
  • Feedback rápido;
  • Entrega em pequenas iterações;
  • Saúde do projeto vísivel (gráficos Burndowns);
  • Gerente não é comando controle, mas facilitador.

3. Lean: Processo de desenvolvimento da Toyota e tem raízes do SCRUM. Não muito conhecido no Brasil.

As desvantagens dos 3 são (nem tudo é perfeito…):

  • Não funciona com equipes “júnior”;
  • O cliente deve estar “100% disponível”;
  • Adiciona muitas práticas novas para as equipes;
  • O processo é fechado e deve ser seguido a risca;
  • A história do “porco e o frango” (comprometidos e envolvidos).

Qual usar? Scrum ou XP? Scrum gerencia melhor os processos, mas XP fornece melhores práticas (TDD, Unit Tests…). Melhor usar os dois!

E como adotar? Há dois caminhos: Consultoria externa ou “in house”. Se a escolha for a segunda há algumas dicas:

  • SCRUM é mais fácil de adotar;
  • Estude Lean também;
  • Escolha um projeto piloto;
  • Educação para o pessoal de negócio é necessária.

Foi com certeza uma das melhores palestras do evento. O palestrante passou muito bem o conteúdo e foi bastante claro, fora as doses de humor, necessárias depois do almoço (rs).

Java e TV Digital – Dimas Oliveira

Java e TV Digital - Dimas Oliveira

As palestras e a participação do Dimas nos eventos já virou marca de atenção ao conteúdo falado e muitas perguntas ao final da palestra. Não foi diferente dessa vez. Ele praticamente deu algumas dicas e panorama sobre TV Digital com Java, material de referência, Ginga, especificações, etc. Abaixo irei enumerar em tópicos:

  • Compartilhe seu conhecimento e credite as fontes (um “lema” do próprio Dimas. Sempre repetido em suas apresentações);
  • Divulgou uma previsão de venda de 230 milhões de set-top boxes em 5 anos. Mercado de atuação haverá, e muito;
  • Java é um “ecossistema”, formado de usuários e desenvolvedores. Procure sempre saber o que os usuários necessitam;
  • Mostrou fotos do primeiro teste com Ginga no Brasil: ano de 2005 na Paraíba. Pertencemos a “vanguarda” da tecnologia relacionada a TV Digital no mundo;
  • SBTVD é inovação nacional;
  • Em 2012 o Brasil será o segundo maior mercado emergente em TV Digital;
  • TV interativa (TV + aplicações controlando áudio e vídeo) irá necessitar de profissionais e aplicações em Java;
  • Ginga-J faz parte dos padrões mundiais de TV Digital;
  • Java DTV é uma API/especificação Java para TV digital, Ginga-J contém Java DTV e é uma parte do Ginga. O Ginga (NCL/LUA & J) é o middleware;
  • Quem tiver mais curiosidade pode ler a especificação do Java TV (JSR 927);
  • Ginga integra widgets lwuit para melhorar a interface gráfica;
  • As padronizações devem ser seguidas para qualquer operadora;
  • Para quem deseja aprender sobre TV Digital: a curva de aprendizado é de 5% a 8% a mais de conhecimento Java.

Palestra esclarecedora, apesar de já ter visto muitas dessas informações em eventos anteriores (Profissão Java e Java@TVDigital). Ao fim dela, e na saída para o coffee-break, muitos participantes se aglomeraram na frente do palco para fazer perguntas a Dimas. Para quem deseja saber mais sobre TV Digital pode mandar um email para “tvdigital-subscribe@soujava.dev.java.net” e participar da lista de discussão do SOUJava, sendo que o próprio Dimas faz parte.

Painel: Java FX, Adobe Flex e GWT – Éder Magalhães, Maurício Leal e Rafael Nunes

Painel: Java FX, Adobe Flex e GWT - Éder Magalhães, Maurício Leal e Rafael Nunes

Esta última palestra do evento não era para ser um painel (“disputa” de qual a melhor) entre as 3 tecnologias ligadas a RIA, mas um comparativo do que elas podem fornecer. Java FX foi apresentada por Maurício Leal, GWT por Éder Magalhães e Flex por Rafael Nunes.

Sobre Java FX:

  • Rich clients estão mudando o jogo. É preciso ter mais clientes ricos, onipresentes e “projetados” pelo desenvolvedor. FX é a solução;
  • É preciso “extender” RIA em diversas telas. Java FX é a plataforma para criar e entregar RIA;
  • Gera aplicações únicas e completas para desktop, mobile e outras. É portável para qualquer dispositivo;
  • Runtime poderoso e desacoplamento da aplicação do browser;
  • A aplicação é independente do browser, pode ser arrastada para “fora” do mesmo;
  • Coisas a serem construídas com Java FX: vídeo player, efeitos 3D, Java Applets, etc. Todos podem ser “arrastados” para fora do navegador;
  • Existe plugin para Photoshop e Illustrator;
  • Curva de aprendizado rápida: 1 semana.

Sobre GWT:

  • Suporte a Web interativa (RIA);
  • Navegação rápida, agradável e fácil;
  • Produtividade na construção e manutenção de aplicações Web;
  • Web leve: HTML + CSS + Ajax;
  • Para fazer uso de GWT é preciso ter uma equipe com experiência em Java;
  • Ideal para quem conhece Swing;
  • MVC só com código Java;
  • Constrói aplicações Ajax c/ Java (voltada a Open Source);
  • Widgets (componente de uso de interface) que podem ou não ser customizados;
  • Compila código Java em JavaScript;
  • “Esconde” a complexidade do Ajax;
  • Resolve incompatibilidade de browser;
  • Suporta recursos do Java 5;
  • Chamadas são assíncronas e acessadas por GWT RPC (servlet) ou HTTP (retorna XML,JSON e/ou JSNI e é solução para REST ou WebService).

Sobre Adobe Flex:

  • Baseado em linguagem de marcação (MXML);
  • SDK Open Source;
  • Action Script (linguagem de programação orientada a objeto);
  • A proposta é fazer front ends;
  • Flex Builder (“Eclipse” para Adobe Flex): no Windows é pago, mas é completo; no Linux é gratuito, mas tem menos funcionalidades disponíveis;
  • É preciso ter Flash Player para rodar aplicações Flex ou Air (rodam em desktop);
  • Multiplataforma;
  • Curva de aprendizado suave;
  • Independe de backend (Java, PHP, outras);
  • No segundo semestre sairá a versão 4 (!);
  • Depende de fornecedor, runtime e IDE paga. Exige mais poder do cliente;
  • Integra com WebServices e gera cliente automático através de WSDL;
  • HTTP Service (XML ou JSON);
  • Integração AMF: BlazeDS e GraniteDS para Java (depende do backend);
  • Frameworks: Cairngorm, Pure MVC, Mate Flex, Swiz;
  • Flex Unit para testes unitários;
  • Case de sucesso: tour de Flex & flex.org/showcase.

Qual a melhor? A que melhor se aplica pra você, seu projeto e sua realidade.

Conclusão

Foi mais um evento importante do qual pude participar e adicionar conteúdo ao meu portifólio de conhecimento. O nível dos palestrantes, temas e assuntos abordados ficaram de acordo com a atualidade. Mais de 300 pessoas estiveram presentes no OpenTDC 2009. E o mais importante e motivo de parabéns a equipe da Globalcode: tudo isso gratuito. Portanto, indico fortemente a ida de pessoas interessadas em Java e outras tecnologias a esses eventos. Para os interessados na programação do evento ou mini-bio dos palestrantes, favor acessar o link do evento. Para acesso as fotos do evento, inclusive as deste post, podem acessar o Picasa da Globalcode.

Pontos positivos

  • Nível, conhecimento e desenvoltura dos palestrantes;
  • Networking e acesso a informações;
  • Gratuito.

Pontos negativos

  • Atraso nas duas primeiras palestras, motivo pelo qual impactou na apresentação da terceira, e quiçá, mais importante palestra do evento, pois era modelo daquilo que seria apresentado no JavaOne 2009.

Espero que vocês, caros leitores, tenham gostado da leitura de minhas impressões, coletadas durante o evento. Fiquem à vontade para comentar, criticar ou complementar. E aguardem a publicação das minhas impressões do Java@TVDigital, evento também organizado pela Globalcode e de boa repercussão.

Até a próxima!

Procedimento de Introdução ao Selenium

Nos últimos tempos, a equipe de Qualidade (da qual faço parte) da empresa está implementando o uso de ferramentas para execução de testes automatizados. Estamos trabalhando com duas frentes hoje: JMeter e Selenium.

O JMeter está sendo usada em conjunto com um plugin SIP, para execução de testes relacionados a call control, pois nossa empresa tem uma solução chamada Basix que é uma plataforma de telefonia IP. O Selenium serve para testar o uso da interface WEB ou para geração de massa de dados (colocamos um número x de vezes uma execução para fazer uma tal tarefa que gere conteúdo).

Essa semana estive lendo o TestExpert, um dos blogs referência da área de Qualidade, e achei material em português do assunto (!).

Apesar da maior parte do assunto (e a mais complexa) estar no idioma inglês, parabenizo a atitude do Antonio Geilson que fez a tradução.

Para os interessados em ler o material, podem fazer o download por este link.

E para ler o post escrito pelo mesmo, vide TestExpert.

Conforme as novidades venham a aparecer eu notifico vocês leitores. Pode ser que esse nosso “case” seja de interesse de outros que também venham passando pelo mesmo processo.

Top 10 Motivos para Amar Teste Ágil

“Guia” a ser seguido pelas empresas. Adoção de qualidade no processo é necessário, sem dúvida. Tradução feita por Gisela Nogueira e retirado do InfoQ.

Recentemente, Kay Johansen fez a pergunta “Porque você ama teste ágil?“. As respostas variaram das mais sérias às mais descontraídas.

  1. Não há mais teste manual de scripts! –Ao invés dos scripts serem executados automaticamente, disponibilizando mais tempo para o testador executar testes exploratórios.
  2. Desenvolvedores realmente gostam de mim! –Localizar problemas antes do final da interação e enquanto o código está fresco na mente dos desenvolvedores, facilita que eles encontrem o problema.
  3. Agora eu posso verificar os recursos antes deles serem escritos! (ambos Kay e Philip) – O testador pode evitar problemas ao iniciar o teste antes que os recursos sejam definidos.
  4. Os resultados do teste automatizado podem ser visto muitas vezes ao dia –fornecendo um feedback rápido após qualquer alteração.
  5. A atmosfera é fortemente orientada a equipe (John Overbaugh) – Cada membro da equipe se preocupa em terminar os testes e não somente o código (Lisa Crispin).
  6. O testador pode ocasionalmente ajustar o defeito (Lista Crispin) – Cada membro da equipe sente-se mais confortável já que o teste é automatizado.
  7. Fornece a oportunidade para revisar constantemente as práticas de teste (Adam Knight) – Ao invés de simplesmente repetir o que foi feito anteriormente, as práticas constantemente revistas. No caso de Adam os testes que costumavam levar 5 dias para serem executados manualmente foram reduzidos agora para 30 minutos.
  8. Eu gasto muito, muito menos tempo debugando (Adrian Howard) – Eu tenho o feedback quase ao mesmo tempo em que cometi um erro, por isso, geralmente é trivial localizar e corrigir.
  9. A chance de realmente impactar na qualidade ao invés de somente documentá-la! (Jonh Overbaugh) – quando os defeitos são corrigidos imediatamente ao invés de colocar numa pilha de defeitos.
  10. Sempre existe tempo para testar, porque o teste é feito primeiro – Josue Barbosa dos Santos contou a história de trabalhar num escritório do governo no Brasil onde a prática era testar no final do projeto. O desenvolvimento sempre atrasado no cronograma do projeto atingindo o prazo limite e sendo liberado para os usuários sem teste. Com a introdução do TDD e ATDD pelo menos algum teste era executado enquanto o software era desenvolvido.

A razão número um para Kay amar teste ágil: Eu posso ouvir as pessoas falando “esse é o melhor projeto que eu já trabalhei na minha vida!”