Como vocês aprenderam a programar especificamente para testes?
Eu, particularmente, fui programador comercial no início da minha carreira em TI, porém não há uma diferenciação entre programar para "testes" e programar comercialmente.
Não deixe de ler depois o post Como obter conhecimento técnico em Teste de Software (de forma gratuita)
Em testes, basicamente, precisamos aprender o básico dos dois itens abaixo:
- Aprender o básico de alguma linguagem de programação
- Aprender sobre a ferramenta de automação de teste funcional escolhida
Como aprender o básico de alguma linguagem de programação?
Eu sempre falo que para ser um automatizados o profissional de testes não precisa ter grandes skills de desenvolvimento, apenas saber, entender e aplicar o básico de uma linguagem de programação.
Mas Elias, o que é o básico de uma linguagem de programação?
Para ser mais assertivo com essa resposta fiz uma pesquisa nos principais cursos de desenvolvimentos das principais empresas de treinamento do Brasil. Foquei nas linguagens Java, .NET e Ruby por serem as comercialmente mais usadas. Eis o resultado:
- Sintaxe básica de linguagem
- Fundamentos da linguagem
- Variáveis (tipos, escopo)
- Operadores (aritméticos, comparação e lógicos)
- Fluxo de controles (if/else, switch, while, do/while, for)
- Arrays (bidimensionais, multidimensionais)
- Orientação a Objetos
- Classes
- Encapsulamento
- Associação
- Herança
- Polimorfismo
Os itens acima são muito básicos em qualquer linguagem, e especificamente para o item 2 - Orientação a Objetos para as linguagens orientadas a objetos (todas as tres citadas).
Quem fez ou está fazendo faculdade olhe com carinho a lista acima e responda: Há algum destes itens que você não viu na faculdade?
Geralmente todos estes pontos são abordados por qualquer disciplina de programação na faculdade e não nos damos conta da importância dos mesmos :-)
Como aprender sobre uma ferramenta de automação de teste funcional?
Ai vem o segundo ponto. Posso dizer que uma ferramenta tem dois segmntos:
- Aplicação estilo IDE - Ambiente Integrado de Desenvolvimento
- Aplicação estilo API - Interface de Programação de Aplicativos
Em uma aplicação estilo IDE a ferramenta é um software capaz de gravar os passos que executamos sobre o sistema. Após podemos editar o código-fonte gerado para melhorar o teste. Este código-fonte pode ser apresentado em diversas linguagens diferentes, porém geralmente uma única é utilizada pela ferramenta. A ferramenta também dispôe de funcionalidades prontas para o uso no script de teste, como checkpoints/asserções automáticas, conexão com banco de dados, etc...
Para o aprendizado desta ferramenta há três caminhos:
- Leitura da documentação básica da ferramenta (telas, como gravar e executar testes, etc...)
- Entendimento das principais funcionalidades "prontas" da ferramenta
- Aprendizado da linguagem de programação adotada pela ferramenta
Exemplos deste tipo de aplicação são: TestComplete, HP QuickTest Professional, IBM Functional Tester entre outras.
Exemplo de uma aplicação estilo IDE - TestComplete |
Em uma aplicação estilo API um ou vários arquivos (geralmente chamados de bibliotecas) são disponibilizados para que o profissional utilize métodos daquela API, ou seja, um conjunto de métodos/funções para teste são utilizados para que possamos escrever um script de teste.
Neste modelo os profissionais importam esses arquivos (bibliotecas) para uma IDE de Desenvolvimento (diferente da aplicação estilo IDE que mencionei acima) como Eclipse, Visual Studio, Netbeans entre outras.
Durante a programação do script de teste o profissional vai escrevendo os testes, condições e quaisquer tipos de funções que não estejam presentes, como o acesso ao banco de dados.
Para o aprendizado desta ferramenta há três caminhos:
- Leitura da documentação básica da ferramenta
- Leitura de sua API
- Exercitar as funções da API na utilização da ferramenta
Exemplos deste tipo de aplicação são: Selenium, Watir, Robot Framework entre outras.
Estilo de uma aplicação estilo API usando Eclipse IDE - Selenium |
Aplicações estilo API exigem uma capacidade/conhecimento de programação maior do que as aplicações estilo IDE
Adendo
É claro que atualmente existem vagas que não exigem somente o básico de programação para trabalhar na área de teste, como as vagas de SDET - Software Developer in Teste que são posições de desenvolvedores que também trabalham em testes com o intuito de criar sistemas (frameworks) para testar aplicações, além de também conhecer desenvolvimento muito bem.
Vamos encontrar este tipo de vaga em grandes empresas como Google, Microsoft, Amazon, Facebook entre outras.
Infelizmente isso não é uma realidade no Brasil, mas isso dá outro post depois...
Dica
Pela internet é faci encontrar diversos materiais sobre como aprender determinada linguagem de programação. Eu recomendo ler os links abaixo para quem quer começar a estudar por conta com um material confiável:
Abraços!