Primeiros passos utilizando o FEST framework para automação de testes com Swing

Publicado originalmente em De tudo um pouco - Luiz Henrique Feltes:

Recentemente estive em um workshop na TECNOPUC em Porto Alegre, realizado pela DBServer, sobre automação de testes utilizando o framework FEST. O evento demonstrou como é simples aplicar a automação de testes em janelas gráficas SWING, juntamente com o FEST.

Em poucas palavras, o framework utiliza as informações sobre os componentes (nome, visibilidade, etc) e não por suas coordenadas. A abordagem utilizando coordenadas (x,y) é ruim, pois se você trocar de máquina, resolução, sistema operacional, ou qualquer outra coisa que possa interferir nas coordenadas, o teste vai falhar. Desta forma, o FEST acaba com esse problema, pois ele encontra a posição desses componentes utilizando suas propriedades.

Vou demonstrar uma aplicação simples, com dois JLabel, dois JTextField e dois JButton. A interface tem duas funcionalidades: Botão “Salvar”, que persiste a informação e o botão “Limpar”, que remove as informações contidas nos campos. Abaixo uma imagem da janela SWING criada.

Para demonstrar…

Ver original 253 mais palavras

TDD: Mais uma tarefa ou um estilo de vida?

TDD

Test Driven Design não é mais uma tarefa que uma equipe de desenvolvimento é obrigado a fazer. Tudo que é forçado ou imposto no campo do comportamento humano acaba sendo mal feito. Ou seja, não funciona. TDD é um estilo de vida, é uma forma de viver a profissão, nesse caso, um estilo de trabalhar. O profissional precisa entender o que é isso e quais são os seus valores. É justamente o que eu tentarei passar neste post.

Responda a minha pergunta abaixo:

O que é mais importante para você: 1 ou 2? 

  1. Construir o código do teste do software?
  2. Construir o código do software propriamente dito?

Quando me deparei a primeira vez com esse dilema, a minha resposta foi imediatamente a 2. Mas depois de um tempo estudando foi então que um dia eu descobri uma coisa chamada “Dissonância Cognitiva” que mudou meus paradigmas. Você já ouvir falar?

Dissonância Cognitiva

Em 1971, em um livro chamado “The Psychology of Computer Programming de Gerald Weinberg” mostrou que o olho humano tem uma incrível capacidade de só enxergar aquilo que deseja e, naturalmente, ignorar aquilo que não quer ver. Ele diz o seguinte: “programadores, se deixados por conta própria, ignoram os erros mais gritantes, os quais qualquer pessoa seria capaz de detectar instantaneamente”. Isso se deve a um princípio bastante estudado na psicologia chamado dissonância cognitiva. Temos a tendência natural, como programadores, de acreditar que aquilo que escrevemos está certo. Inclusive, somos capazes de reler uma linha de código, que contém um erro de digitação e não enxergá-lo, mesmo depois de ler a mesma linha inúmeras vezes. Trata-se de uma fenômeno, uma pequena e desagradável peça que o cérebro nos prega. A dissonância cognitiva é potencializada ainda mais na profissão de desenvolvimento de software, uma vez que requer atividades mentais abstratas, lógicas, usando outros idiomas como inglês e automação de processos complexos.

Você já teve alguma experiência assim?

  • Ficou horas programando aquele código pensando consigo mesmo “Estou fazendo isso com extremo cuidado, tenho certeza que nem vai precisar testar, pois esta ficando 100%”. Só quando entra em produção é que você percebe os bugs.
  • Ficou programando com um amigo e viu que ele digitou algo errado que compila mas não funciona e ficou esperando ele corrigir. Depois de um tempo, você percebe que ele não se deu conta do bug?

O que isso quer dizer?

Quer dizer que você sendo “um ser humano” é naturalmente incapaz de programar sem acidentalmente introduzir bugs. Isso é inerente a natureza humana e principalmente a essa profissão. Ou sera que temos não seres humanos entre nós? Eu já ouvir falar de um cara ai chamado de Clark Kent, mas ele é repórter e não programador. Diante desse fato, quero te falar sobre uma premissa do desenvolvimento ágil de software: TODO CÓDIGO É CULPADO ATÉ QUE PROVE INOCENTE!

Teste de software é justamente a prova…

Se a ficha ainda não caiu, eu posso mastigar um pouquinho mais então: O teste é o que prova que aquilo que você programou realmente faz o que você se propôs a automatizar. O teste é o artefato de software que garante o termino e o sucesso da atividade de programação. Se um programador ficou horas programando mas não automatizou os testes de unidades, do ponto vista natural e sistêmico, esse pedaço de código esta com possíveis bugs. Se não existe provas reais e físicas que esse pedaço de sistema funciona, não temos como confiar. Ou seja, (complete com sua própria linha de raciocino)….

Responda a minha pergunta novamente:

O que é mais importante para você: 1 ou 2? 

  1. Construir o código do teste do software?
  2. Construir o código do software propriamente dito?

Depois de passar 8 duros anos da minha vida entregando software sem testes automatizados, vendo os bugs pular para todos lados, vendo meus companheiros de equipe sempre dizendo “eu programei certinho e testei tudo, pode enviar para produção!!!” e receber muitos os bugs mesmo assim…a ficha caiu para mim. Foi a última gota!

Foi então que eu dei um basta na minha vida de amador de desenvolvimento de software e passei a considerar o teste o mais importante de tudo, por que ele é quem prova o que eu faço, do começo, do fim e da qualidade do trabalho que eu presto.

Para os interessados em subir esse nível na sua profissão de desenvolvedor de software, a FOR-J oferece o treinamento de TDD com Java. Até a próxima!

“Bendito o Deus e Pai de nosso Senhor Jesus Cristo, que, segundo a sua muita misericórdia, nos regenerou para uma viva esperança, mediante a ressurreição de Jesus Cristo dentre os mortos.” 1 Pedro 1:3

Treinamentos PHP – Nova Grade 2º Semestre de 2015

php

A plataforma PHP é uma das melhores e mais usadas plataformas para o desenvolvimento de soluções web. Sua versatilidade para ser usada em projetos pequenos como sites ou até em projetos grandes porte como portais, sistemas web, e-commerces e gerenciadores de conteúdo. PHP é um ecossistema em pleno crescimento, recheado de tecnologias com uma imensa comunidade ativa, contando com mais 4.500.000 de desenvolvedores ao redor do mundo. Robusta, orientada a objetos, fácil de aprender, suporte à programação estruturada, enorme comunidade, fóruns, vídeos, códigos e documentação de alta qualidade, fazem dessa plataforma uma ótima escolha para o desenvolvimento de produtos corporativos.

PHP M1 – PHP Básico: Objetivo deste curso é introduzir o participante a tecnologia PHP, tendo como foco principal formar uma base solida de conhecimentos iniciais. O curso aborda a montagem do ambiente de desenvolvimento, fundamentos linguagem de programação, conceitos de orientação a objetos, programação orientada… + informações

PHP M2 – Desenvolvedor CakePhp: Objetivo deste curso é adicionar ao participantes conhecimentos avançados no desenvolvimento de soluções web profissionais utilizando os recursos do framework CakePHP. [Em construção…]

“Agora também, quando estou velho e de cabelos brancos, não me desampares, ó Deus, até que tenha anunciado a tua força a esta geração, e o teu poder a todos os vindouros”. Salmos 71:18

Groovy In Action 2 – A última jornada…

20150821_095628_LLS

Começando hoje a última jornada em groovy. Para os interessados em comprar esse livro, gastei $47.99 em formato PDF –  http://www.manning.com/koenig2/

“Ensina a criança no caminho em que deve andar, e, ainda quando for velho, não se desviará dele.” Provérbios 22:6

eXtreme Programming: Práticas para o dia a dia no desenvolvimento ágil de software

MWv_cGrvQEiSB16qd6Qrr7_29jPyP0tUVVlSsQ2kAIQ_size_1024x768_size_mode_2_largePor que projetos falham? Comunicação insatisfatória com o cliente, um empurra a culpa para o outro, tempo desperdiçado, falta de testes e retrabalho… Estas são cenas corriqueiras em um time de desenvolvimento de software. E qual a solução? Neste livro, Daniel Wildt, Dionatan Moura, Guilherme Lacerda e Rafael Helm mostrarão que na verdade não se trata de um único método, mas de um conjunto de práticas que, se bem combinadas, complementam-se em uma sinergia que envolve tanto os membros de dentro do time como o contato destes com o cliente. Conheça práticas de eXtreme Programming e, tendo como base princípios ágeis, desenvolva seus principais valores: comunicação, feedback, simplicidade, coragem e respeito. Boa leitura para todos :D .

“Assim, já não sois estrangeiros e peregrinos, mas concidadãos dos santos, e sois da família de Deus,” Efésios 2:19

As distorções no papel de arquiteto de software

como-identificar-um-profissional-de-talento_Quando entrevisto candidatos à vagas de arquiteto de software, faço perguntas como: “Você acha que um arquiteto deveria programar?” Usualmente recebo uma destas duas respostas:

  • “Não, busco uma posição na qual eu não precise mais programar.”
  • “Eu adoraria continuar programando pelo menos um pouco mas, provavelmente, não terei tempo.”
  • “Já faz um tempo.”

Estas respostas são preocupantes. Desde quando evoluir profissionalmente em uma função da área técnica significa separar definições tecnológicas das atividades de desenvolvimento? Como alguém espera conseguir acompanhar o vasto cenário de opções em termos de tecnologia e compreender seu papel dentro das organizações, sem estar constantemente em contato com o time responsável pelo desenvolvimento destas tecnologias? Ou, ainda melhor, desenvolvendo ativamente as mesmas?

Veja o artigo completo no site infoq = http://www.infoq.com/br/articles/architects-should-code-bryson?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global

Para os interessados no assunto, veja a nossa grade de treinamentos para novos aspirantes em arquitetos de software: https://fernandofranzini.wordpress.com/2015/01/12/treinamentos-arquitetura-de-software-2015/

“Dessarte, não pode haver judeu nem grego; nem escravo nem liberto; nem homem nem mulher; porque todos vós sois um em Cristo Jesus.” Gálatas 3:28

Treinamentos Java – Nova Grade 2º Semestre de 2015

advanced-java-logo

No 2º semestre de 2015, alguns cursos foram atualizados com suas novas API’s e outros novos cursos foram lançados:

GRV M1 – Desenvolvedor Groovy: Objetivo deste curso é oferecer aos participantes conhecimentos fundamentais referentes a linguagem de programação Groovy e seus recursos. O curso aborda as motivações de se adotar uma linguagem dinâmica e funcional, a montagem do ambiente de desenvolvimento, fundamentos e conceitos da programação dinâmica, funcional… + informações

JEE M1 – Web Básico: Objetivo deste curso é introduzir e oferecer aos participantes conhecimentos fundamentais referentes ao paradigma de desenvolvimento de aplicações web clássica dinâmica em Java, abordando a especificação de componentes da plataforma JEE – Servlets, JavaServer Pages, DataSources, Filtros e recursos gerais de apoio… + informações

JEE M3 – Web Services: Objetivo deste curso é introduzir e oferecer aos participantes conhecimentos básicos referentes ao desenvolvimento de web services usando a tecnologia Java… + informações

Invista no seu futuro, invista em você!

“Vinde, adoremos e prostremo-nos; ajoelhemos diante do SENHOR, que nos criou. Ele é o nosso Deus, e nós, povo do seu pasto e ovelhas de sua mão.” Salmos 95:6-7

Treinamentos Mobile – Nova Grade 2º Semestre de 2015

feature-mobile

A parcela da população que usa smartphones e tablets para assuntos profissionais e pessoais tem aumentado consideravelmente a cada ano. De acordo com o Internacional Data Corporation (IDC), entidade que realiza pesquisas de mercado em todo o mundo, esse mercado teve tido grande aumento no volume de smartphones vendidos nos últimos anos. O estudo revela que o mercado mobile tem crescido em torno mais de 80%, registrando um novo recorde para o setor. A popularização dos aparelhos móveis, a facilidade de acesso à internet e o uso crescente, quase viral, das redes sociais, tem despertado o interesse das empresas neste seguimento, pois representa um grande mercado para os negócios corporativos.

Respondendo a essa crescente demanda de profissionais qualificados, a FOR-J Consultoria e Treinamentos disponibiliza varios cursos presenciais que oferecem aos participantes capacitação nesse segmento de desenvolvimento de software:

Desenvolvedor Mobile

MOB M1 – Desenvolvimento Mobile Nativo  Android Básico: Objetivo deste curso é introduzir o participante a plataforma Android, tendo como foco principal formar uma base solida de conhecimentos iniciais. O curso aborda a história da plataforma, evoluções das versões, montagem do ambiente de desenvolvimento, fundamentos iniciais, criação de interfaces gráficas, banco de dados… + informações

MOB M2 – Desenvolvimento Mobile Nativo – Android Avançado: Objetivo deste curso é acrescentar ao participante conhecimentos avançados na plataforma Android, tendo como foco dar continuidade ao curso básico… + informações

MOB M3 – Desenvolvimento Mobile Web – JQueryMobile Básico: Objetivo deste curso é introduzir o participante ao desenvolvimento de aplicativos web mobile, tendo como foco principal formar uma base solida de conhecimentos iniciais…+ informações

“Nunca digas: Por que foram os dias passados melhores do que estes? Porque não provém da sabedoria esta pergunta”. Eclesiastes 7:10

Probe no Tomcat8 + JDK8

11680138Para quem já tentou usar psi-probe com JDK8 + Tomcat8 vai ver que ele não funciona por ser incompatível com essas novas versões. A solução descrita no site oficial é você baixar o projeto via git, fazer as alterações manualmente no código fonte e gerar um novo build customizado. Para que você não precise perder seu tempo fazendo isso, acesse o link desse build 2.4 já prontinho para uso – https://github.com/psi-probe/psi-probe/releases .

“Ó terra, terra, terra! Ouve a palavra do SENHOR.” Jeremias 22:29

Curso de Desenvolvedor de Relatórios Java – Sest Senat Londrina 10/08/15

IMG-20150810-WA0001

JSE M4 – Desenvolvedor de Relatórios Java

“Ninguém despreze a tua mocidade, mas sê um exemplo para os fiéis na palavra, no procedimento, no amor, na fé, na pureza”. 1 Timóteo 4:12

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 574 outros seguidores