O teste de software é uma mistura de arte, engenharia aplicada, intuição e criatividade. Segundo Aristótoles, "Nós somos o que fazemos repetidamente. Excelência, não é uma ação isolada, mas um hábito". Stephen Covey, no seu livro "Os 7 Hábitos das Pessoas Altamente Eficazes" [1], afirma que os nossos hábitos estão intrínsicamente ligados ao nosso conhecimento, nossa habilidade e nosso desejo. A partir dessa perspectiva, para se tornar um mestre no seu ofício, é necessário ampliar os seus conhecimentos, aprimorar as suas habilidades e manter sempre inflamado o desejo de tornar-se um profissional melhor dia após dia (Figura 1).
Figura 1. "Nós somos o que fazemos repetidamente. Excelência, não é uma ação isolada, mas um hábito" - Artistóteles.
Em termos práticos, nas seções a seguir você descobrirá os sete hábitos que destacam os testadores altamente eficazes dos testadores comuns. Aproveite!
 |
Postura Pragmática
"Don't assume it - Prove it"
Andrew Hunt and David Thomas, the Pragmatic Programmers |
O teste de software é uma das atividades mais importantes realizadas no ciclo de vida de desenvolvimento de um software, senão a mais importante. Dito em outros termos, de que adianta projetar e implementar um software perfeito, sob o ponto de vista acadêmico; utilizando a tecnologia de ponta que estiver em evidência no mercado se o produto final não satisfazer as necessidades do usuário, não estiver apto para rodar nas plataformas alvo ou até mesmo não ser capaz de executar suas funcionalidades básicas. Neste cenário, destaca-se o testador, cujo principal papel é ajudar os usuários e o grupo de IT a convergir os pontos de vista sobre o que é qualidade [2]. Sob o ponto de vista de IT, qualidade significa satisfazer os requerimentos. Em contrapartida, a qualidade sob a perspectiva dos usuários significa que o produto final deve estar adequado ao uso, independente de satisfazer os requerimentos. Compete ao testador, dessa forma, reduzir a lacuna entre ambas visões, garantido que o produto final seja construído com consistência, satisfazendo tanto os requerimentos quanto às necessidades dos usuários, como pode ser visto na Figura 2.
Figura 2. As duas lacunas da Qualidade de Software.
Tendo em vista a evolução dos processos de desenvolvimento de software do modelo em cascata para modelos iterativos e ágeis, podemos notar que a abordagem tradicional utilizada para planejar e executar as atividades de teste de software não está seguindo a mesma tendência. Nos processos ágeis, o software é desenvolvido incrementalmente na tentativa e erro; quase sempre sem requerimentos concretos. Em termos práticos, quando não há requerimentos bem definidos, o planejamento e a execução dos testes são tarefas quase impossíveis.
Nessa condição, um aspecto fundamental para o sucesso do testador neste novo cenário é, sem dúvida, uma postura pragmática. O testador pragmático é realista e objetivo, as suas decisões são baseadas no seu conhecimento teórico e prático das técnicas de teste e nas ferramentas disponíveis no mercado. Por outro lado, o testador pragmático não se limita somente aos aspectos tecnológico; em contrapartida, o testador pragmático é um contador estórias, abordando os problemas por meio de metáforas e analogias compensando assim a falta de requerimentos formais.
Parafraseando Andrew Hunt e David Thomas, autores do livro "The Pragmatic Programmers from Journeyman to Master", todo testador pragmático apresenta as características destacadas abaixo:
Flexível - Forte inclinação para entender os pontos de vista dos outros e adaptar-se a uma nova realidade;
Incansável - Sempre interroga e investiga a causa raiz dos problemas e a razão das coisas;
Realista - Toma decisões baseadas em fatos;
Assertivo - Nunca pressupõe ou se baseia em informações contidas nas entrelinhas, todas as suas suposições são aferidas a fim de garantir a sua veracidade;
Metafórico - Acredita que uma boa estória vale mais do que mil requisitos ambíguos;
Diplomata - Foca o seu esforços nos problemas ao invés de focar nas pessoas que os causaram;
Perfeccionista - Cada detalhe conta na execução do seu trabalho, no entanto, não troca um ótimo resultado por um resultado perfeito (e provavelmente impossível);