Um pouco sobre cucumber!

Hoje eu vou falar um pouco sobre o Cucumber.

Para quem ainda não sabe, o Cucumber é uma ferramenta que, digamos, dá suporte a testes automatizados. Eu digo suporte, porque ela não faz, e nem se propõe a isso, a realmente fazer os testes. A grande jogada é que ela depende de um outro framework de testes, ela faz só a interface com a vida real. É baseada em um conceito relativamente novo, que é o teste orientado a comportamento, um teste de nível mais alto e muitas vezes mais verboso. Mas de uma compreensão mais clara, principalmente por ser mais legível e fácil de entender pelo cliente e usuário não técnico.

 

Será??

 

Claro que não! O objetivo da ferramenta é esse… Mas isso, eu devo dizer, pois eu mesmo levei anos entendendo realmente como a ferramenta funcionava, e como era o fluxo de informação da coisa. Em um primeiro momento, ele realmente parece uma coisa de outro mundo! Um overhead completamente desnecessário para qualquer programador acostumado com RSpec, ou TestUnit. Eu já ouvi falar (por pessoas mundialmente conceituadas), que era uma ferramenta extremamente desnecessária e inconveniente, que exigia conhecimentos não triviais a um ser-humano comum. É um tal de aprender Expressões Regulares pra lá, e entender o fluxo de teste pra cá, e uma chuva de gente dizendo que “você está fazendo o teste errado” que fica difícil entender a ferramenta.

Mas e daí? E daí que eu não concordo com isso! Eu acho que é uma ferramenta simples e funcional! Que uma vez que você entende o significado da coisa, tudo se encaixa e se desenvolve de uma maneira assustadoramente boa!

 

E você, ó caro Amiguinho, me pergunta: Mas que m3#&@ é essa que você está falando se você levou anos pra aprender??? A grande sacada é que estamos usando a ferramenta para justificar os nossos problemas!

 

Vou assumir que você, Amiguinho, assim como eu, é um desenvolvedor Rails. A essa altura do campeonato, o Cucumber já está disponível em quase qualquer linguagem que você queira, mas o seu uso ainda esta mais difundido na comunidade Rails. Sendo assim, você é provavelmente um usuário de Linux/Unix ou Mac (você tem uma chance de sobrevida se for ainda um Solaris, ou Android [vai saber...] mas windows….  ^^). Sendo assim, se eu não estou muito enganado… me corrijam os mais entendidos do assunto, mas você está usando um sistema POSIX, que tem os mais antigos programas de Expressões Regulares conhecidos. Ele ainda especifica e faz uso massivo de expressões regulares em diversos comandos e utilitários do dia-a-dia. Sendo assim, como um bom profissional, e usuário deste sistema, eu espero que você saiba minimamente dar um grep, talvez um sed ou awk, sem medo de ser feliz. Com isso, não há o que se reclamar do uso de expressões regulares como sendo uma barreira ao desenvolvimento. Muitos projetos que tinham como o objetivo principal abolir as ERs do cucumber, caíram na falta de reusabilidade, como por exemplo o nosso amigo Spinach ou o Turnip, em que o próprio criador disse ter ficado difícil de manter. Se você ainda não sabe, já passou da hora de aprender! Isso é como usar Windows sem saber Ctrl+Alt+Del.

 

Tendo passado esse momento turbulento de informações, caímos no “Declarative vs. Imperative“. Nosso amigo Aslak vai dizer que se você não está fazendo Cucumber declarativo “you are doing it wrong“, mas eu seria mais otimista nesse ponto. Seguindo a idéia do nosso MPS.BR, o jeito brasileiro de fazer a coisa é o jeito que dá certo. Independentemente de seguir a regra sem nem tentar entender onde ela se aplica, eu acho que o nosso cucumber deveria ser o que o nosso cliente entende! Afinal de contas foi pra isso que ele foi criado! Se o seu cliente entende melhor um manual imperativo, use-o! Já que a idéia por traz do cucumber é ser uma “documentação viva” do sistema, ele deve se comportar do modo que o seu cliente entenda. Imagine se o seu video-cassete (fui longe heim???) viesse escrito no manual: “Para ajustar a data do seu video-cassete, basta apertar as teclas correspondentes às funcões de entrar nos menus corretamente e corrigir os valores.” Uhhhh!! Grande informação!!!! Jura??? Espera um pouco que eu preciso digerir esse conteúdo todo!!! Para isso não precisava de manual! Sendo assim, eventualmente, um testezinho mais imperativo aqui ou ali, um testezinho que se repete UMA UNICA VEZ (e nunca mais do que isso!) não faz mal a ninguém! Aumenta a legibilidade, a precisão dos testes e principalmente a felicidade do nosso cliente!

 

Sei que neste momento, Amiguinho, se a sua expectativa era saber realmente como funciona o cucumber, você está um pouco decepcionado. Mas a minha primeira intenção aqui, é abrir uma  porta, colocar uma pulga atraz da orelha, de que talvez essa parada verde aí não seja um bicho de sete cabeças. Talvez so falte um empurrãozinho, pra gente entender como é que a coisa funciona. Nas “cenas dos próximos capítulos” teremos mais informações sobre o Cucumber e como é o seu uso no dia-a-dia, boas práticas, e assuntos mais técnicos. Até breve!

Ostracismo!

Ostracismo… Ahhhh.. Velho e querido ostracismo!

 

É bom saber que eu não sou diferente de qualquer outro ser humano que já tenha tentado criar um blog na vida. É fato que ele vai acabar abandonado e jogado as traças como 90% dos blogs que existem (vegetam) ainda hoje. Mas vou tentar colocar alguma coisa interessante ainda aqui.

Não sei se já é hora de entrarmos em termos técnicos, ninguém me conhece ainda… E acho, sinceramente, que nem vai…

Vamos pensar em algo interessante para dizer… (Por causa do SEO [inexistente por falta de buscas], fica pro próximo post!)

Vamos falar de mim!

Olá amiguinhos,

 

É fato que à essa altura do campeonato, ninguém está lendo isso! (Pelo menos não com a frequência que um dia eu pretendo chegar…) Mas vou falar um pouco de mim e de como vai ser nossa jornada por essa coisa de postar notícias em blogs (mentira).

Meu nome é Everton Moreth, sou desenvolvedor web há uns 8, 9 ou 12 anos… Depende de quando eu quero começar a contar… Mas o importante é que eu passei muitos anos da minha infância tentando entender como funcionava de verdade o HTML 3.2 e o 4.0 (velho né???), não que eu soubesse a diferença real de cada coisa na época… Eu tinha aprendido a ler a relativamente pouco tempo! Junto com essa época, eram tempos de JavaApplets, <marquee> e FrontPage. Logo em seguida entrei pro mundo do mIRC e todas as coisas legais que ele traz pra vida das pessoas: comandos de canal, OPs, moderadores e coisas que nao serviam de nada na época mas eram muito divertidas.

Cansado de usar os mIRCs da época, resolvi fazer o meu, e foi aí que realmente aprendi o significado de CTRL+C e CTRL+V. Copiei e colei muito código de outros mIRCs e praticamente qualquer outra coisa que passasse na minha frente. Até hoje não sei exatamente qual linguagem era aquela, mas a parte importante é que essa coisa de programação foi entrando na veia logo cedo.

Com 14 anos eu ja tinha uma noção plena do que eram if … else …, for … e while …. O que me intrigava naquela época era o tal do JavaScript que sempre era muito problemático de copiar dos sites dos outros! (Ahh, esqueci de mencionar, eu estava fazendo um site também…).

Como qualquer jovem nerd, meu futuro estava marcado, e não foi diferente do esperado! Parti pra jogar RPG online, caí num servidor pirata, e em menos de 6 meses eu estava no comando do servidor, ajudando a desenvolver e manter fóruns, sites, NPCs e coisas do gênero. Daí pra frente, foi ladeira a baixo!

Com 3 anos de servidor, eu já estava velho, ranzinza, estranho, ninguém me entendia e já estava na hora de entrar pra faculdade! Ciência da Computação (nenhuma novidade aqui…).

Passei alguns anos de faculdade na esbórnia, com rendimento acadêmico muito baixo, devido à matérias infelizes como Cálculos, Equações, Fisicas, Geometrias e afins…

Pasei por algumas empresas nesse meio do caminho, acho que depois que entrei na faculdade cheguei a trabalhar de verdade em quatro empresas, duas delas, empresas privadas dentro da universidade. Sendo a última essa que eu estou agora, que na verdade é a propria universidade! (Obs: Neste momento se observa uma estranha tendência de trabalhar no que eu faço!)

A primeira empresa foi crucial! Tinha um chefe daqueles típicos, que cobra muito, e confere muito pouco! Mas foi de grande valia, pois tive (na verdade não tive… mas eu queria, daí falei que tinha… ^^) que estudar JavaScript realmente a fundo! Peguei um código legado, macarrônico de mais de 1000 linhas de Javascript com uma tendência de criar coisas que eu passei a chamar “variáveis de teclado“, ou seja os nomes das variaveis eram : asd, qwe, zxc, ert, sdf, cvb, etc… Depois de um ano tentando dar manutenção nesse inferno aí, sentei pra estudar Javascript de verdade! Refiz tudo do zero! Orientado a objeto, com classes, com padrão de código, com estilo, com legibilidade! E tá lá até hoje rodando na Petrobras (nem sei se posso falar isso aqui, espero que sim!). O importante é que eu aprendi muito Javascript! E isso abriu a minha mente pra outras coisas!

Depois dessa empresa (que me mandou embora por falta de verba), foi a vez o banco de dados! Eu e dois amigos meus começamos em uma empresa de controle de manutenção de aviões! Coisa de outro mundo! O mapeamento inicial do projeto era um banco de dados de ~90 tabelas (relacional). Pra fazer as tarefas a gente separava por setores do banco de dados! Tudo usando PHP! Nesse projeto também rolou muito Javascript, e muito php. Então foi realmente muito proveitoso!

No meio tempo dessa empresa, eu estava envolvido com a empresa júnior da faculdade, e começamos a fazer outro projetos menores para clientes privados, mas nada grande coisa!

A parte legal vem agora! Mudei pra STI e comecei a trabalhar com metodologias ágeis, Scrum e Ruby on Rails! Siiiiim! Finalmente!!!! Agora chegamos lá!!! Mas isso, ò ó caríssimo Amiguinho, são cenas dos próximos capitulos! ^^

 

Até qualquer outro dia sem sono!

Olá povo!

Depois de muito tempo querendo e pensando em montar um blog, eis que aqui estou!

Caí nas graças do WordPress mesmo, que está aí com milhões de anos de desenvolvimento contínuo!

Por agora não tenho mais muita coisa pra comentar, tenho que me entender com layouts, configurações de email e burocracias do gênero.

 

Esperem mais em breve!