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!
