Capítulo 3: O Testador também necessita saber programar?

De Dftestes

Autores: Karine Birnfeld e Fabrício Ferrari de Campos
Revisora: Anna Carolina Rocha

Tabela de conteúdo

Introdução

Uma visão comum do Teste de Software é de que ele consiste apenas na execução do sistema, e devido a isso, existe a dúvida se realmente é necessário que um testador de software possua um conhecimento aprofundado de programação para executar suas tarefas.

Quando procuramos na bibliografia pelas tarefas típicas de um profissional da área de teste de software, encontramos atividades que vão desde o planejamento dos testes, especificação, configuração do ambiente, criação da massa de dados, execução manual e automatizada até o registro dos resultados obtidos.

Na verdade o que acontece é que algumas empresas não possuem bem definidas as diferentes especialidades existentes na área de testes de software. Caso um mesmo profissional seja responsável pela execução de todas as atividades de testes, pode-se concluir que este profissional necessita ter bons conhecimentos de gestão de projetos, análise de requisitos, especificação de testes, banco de dados e inclusive bons conhecimentos de programação.

Especialidades da Área de Teste de Software

Este tópico tem como objetivo principal apresentar as diferentes divisões (especialidades) que existem na área de Teste de Software. Para cada especialidade são apresentadas as principais atividades bem como os conhecimentos necessários.

É possível encontrar cinco especialidades diferentes na área de Testes de Software, conforme segue:

Conhecimentos de Programação

Este tópico visa tratar especificamente da necessidade de saber programar para cada especialista da área de testes.

Começando pelo líder de teste, este profissional deve ser capaz de auxiliar sua equipe na resolução de problemas. Para isso, é fortemente recomendável o conhecimento de linguagens de programação para auxiliar sua equipe. Além disso, este profissional precisa saber utilizar ferramentas de gerenciamento de projeto, bem como testwares e ainda ter boas habilidades na gestão de pessoas.

O engenheiro de teste necessita saber programar, pois ele precisa ser capaz de coletar informações no código fonte do programa para realizar as configurações e parametrizações necessárias no ambiente de teste, além disso, ele também necessita de conhecimentos de programação para entender a arquitetura do software e, com isso, conseguir disponibilizar um ambiente mais próximo possível do ambiente de produção.

Já o analista de testes não precisa ter excelentes conhecimentos de programação, mas necessita ter bons conhecimentos de lógica de programação para inferir sobre os testes que deverão ser realizados. Este conhecimento em lógica de programação auxiliará o analista de testes na identificação dos principais pontos em que uma falha pode ocorrer. Além disso, o analista de testes necessita saber analisar os requisitos do cliente, visando extrair o máximo de cenários de teste possíveis.

Para o automatizador de teste, sem sombra de dúvidas, é exigido excelente conhecimento em programação, visto que sua atividade gira em torno da criação e execução de scripts de teste em diferentes linguagens de programação, dependendo da ferramenta de automação utilizada.

Referente ao testador, cujas atribuições incluem a execução dos testes manuais e registro dos resultados obtidos, não é obrigatório possuir conhecimentos de programação. Este profissional pode tanto ser um profissional da TI como um profissional que tenha bons conhecimentos do negócio a ser validado no sistema. Porém, isso depende muito do nível em que o teste é especificado e do tipo de projeto. Caso existam profissionais que não sejam da área da TI, ou seja, não possuam conhecimentos em lógica de programação, banco de dados e sistemas operacionais, por exemplo, a especificação dos testes a serem executados deverá chegar ao nível de detalhe dos procedimentos de teste, fornecendo a este testador cada passo que ele deverá realizar para executar os testes.

Como é trabalhoso realizar a especificação de teste até o nível dos procedimentos, é mais fácil para as empresas contratarem profissionais que já tenham essa base de conhecimento de TI, podendo ser utilizada uma especificação de testes num nível mais alto, visto que um profissional da área de TI saberá realizar uma validação em banco de dados ou realizar operações em diferentes sistemas operacionais.

Programação a serviço do Teste de Software

Como vimos, o conhecimento de programação se fará necessário dependendo da especialidade que o profissional pretende seguir, sendo que em algumas delas conhecimentos de programação são essenciais. Além disso, há outros fatores que poderão influenciar na necessidade do profissional de teste saber ou não programar, dentre os quais os principais são:

Além disso, o conhecimento de programação pode agregar muito ao profissional e tornar o seu trabalho mais efetivo, tanto no planejamento de um teste, uma vez que se ele tiver conhecimentos de programação, poderá ter insights mais específicos (por exemplo, fazer "injeções SQL"), como também poderá utilizar esse conhecimento para automatizar testes de regressão ou criar massa de dados, e assim poupar o seu tempo com tarefas repetitivas.Ou seja, mesmo se o profissional não for usar na prática o seu conhecimento sobre programação, ele poderá ser muito útil para a execução das tarefas habituais de um profissional de Teste de Software, uma vez que ele terá uma percepção mais afinada, sob uma perspectiva técnica, quanto ao comportamento do sistema. Deste modo, poderá fazer asserções mais pertinentes e elaborar casos de testes mais complexos.Quando falamos em automação na área de Teste de Software, dificilmente poderemos abdicar de profissionais com conhecimento de programação, por mais que existam ferramentas que sejam fáceis de serem utilizadas para automatizar os testes, como por exemplo o Selenium IDE. Isso porque, geralmente, há certos cenários de testes mais complexos, que demandarão um uso mais avançado da ferramenta, o que muitas vezes, envolve o desenvolvimento de algum script.Dentre as vantagens que podemos ter quando sabemos programar, citadas pelo Shmuel Gershon, estão:

Conclusão

O Teste de Software já passou por grandes evoluções e tende a continuar evoluindo. Caso o profissional de testes não acompanhe esta evolução, no sentido de se interar de novas tecnologias e aprender a arte da programação, será sempre apenas um testador de software, visto que para todas as demais especialidades é exigido ou fortemente recomendado este conhecimento.

<- Voltar para o capítulo anterior | Ir para o próximo capítulo ->

Referências Bibliográficas

[1] Spillner, A., Linz T., Schaefer H. (2007) Software Testing Foundations. Santa Barbara, Rocky Nook, 2nd Edition.