Engenheiro de Software em Testes
Por Rafael da Silva
(crafards@gmail.com)
Conheça um pouco sobre a função do Engenheiro de Software em Testes. Um profissional muito valorizado dentro de grandes empresas na área de TI.

No mês de setembro, falamos sobre o Engenheiro de Testes, que é um profissional focado nos testes de software, e em segundo lugar, no desenvolvimento. Nesse mês, falaremos sobre o Engenheiro de Software em Testes, que tem um papel diferente do Engenheiro de Testes, embora o nome possa gerar certa dúvida.

Em linhas gerais, o Engenheiro de Software em Testes (ESTs) é o profissional que trabalha como um desenvolvedor de software focado na testabilidade do código e no desenvolvimento de ferramentas para aumentar a produtividade e a qualidade do software desenvolvido na empresa.

O papel de um Engenheiro de Software é muito claro: construir um produto que seja útil, funcione corretamente. Mas esse papel torna-se muito mais complicado do ponto de vista de testabilidade.

Os Engenheiros de Software em Testes (EST) precisam construir softwares robustos, e nesse âmbito, entender o propósito de negócio do cliente que solicitou o software. Os ESTs devem ser capazes de julgar o que será testado e como e quando será testado. Eles também devem ter grande entendimento sobre o que não será testado, para evitar atrasos na equipe de desenvolvimento.

O profissional deve conseguir entender o design do software já na sua fase de desenvolvimento. Devem estar constantemente em contato com os outros desenvolvedores, questionando a adoção de alguma estrutura de dados, algoritmo ou design no código, assegurando a qualidade do mesmo.

Numa equipe de desenvolvimento contendo Engenheiros de Software (ESW), Engenheiros de Software em Testes (EST), e Engenheiros de Testes (ET); ESTs acabam por se tornar uma interface entre o ESW e o ET. Ele garante a qualidade e a testabilidade do código, a fim de que a equipe em geral não perca muito tempo criando testes. Para fazer isso, o engenheiro focará nas plataformas de testes, fazendo com que as funções mais importantes do código sejam facilmente testáveis logo no início do desenvolvimento do software.

Um bom Engenheiro de Software em Testes deve ter as qualificações:

  • Boa predição para um comportamento futuro do software;
  • Muita experiência em linguagens populares como C, C++ e Java;
  • Boas habilidades em linguagens script (Python, Perl, Shell);
  • Conhecimento profundo em tecnologias de internet;
  • Possuir boa comunicação e ser extrovertido, já que precisará dirigir-se claramente à equipe de engenharia de software para discutir implementações;
  • Possuir muita experiência em padrões de design e frameworks de testes.

O Engenheiro de Software em Testes tem um mercado um pouco restrito à sua disposição, haja vista que não são todas as empresas que utilizam desenvolvimento visando a testabilidade e confiabilidade de seus produtos. Entretanto, as grandes empresas, como Amazon e Google, que estão focadas na experiência do usuário com o seu software, contratam e valorizam este profissional. Nesse âmbito, o profissional deverá tornar-se o mais completo possível em suas funções, gerando melhorias significativas no processo de desenvolvimento e consequentemente na qualidade do software.

Frente às novas tecnologias, o profissional deve estar sempre bem atualizado e à frente das inovações, de forma a garantir um software testável e de boa qualidade.

As principais atividades do Engenheiro de Confiabilidade de Software são:

  • Desenvolver o software focando na testabilidade;
  • Assegurar que o código esteja com boa qualidade e com baixo risco;
  • Implementar ferramentas (analisadores de código, framework de testes, plataformas de testes, sistemas de build, etc.) para aumentar a produtividade dos Engenheiros de Software;
  • Monitorar a qualidade dos testes;
  • Analisar e decompor sistemas de software complicados e criar estratégias para testá-los;
  • Garantir que os projetos sejam testáveis da maneira mais fácil possível;

A experiência também conta bastante na profissão. O EST deve ser bastante dedicado e experiente em suas funções para garantir um bom salário.

Segundo o site GlassDoor, um Engenheiro de Software em Testes ganha em média 100 mil dólares ao ano. Sendo o Google o melhor empregador, pagando em torno de 122 mil dólares ao ano aos seus engenheiros seniores.

Engenharia de Software em Testes é, com certeza, uma excelente área para pessoas que buscam desafios profissionais, têm facilidade para detectar erros e são experts em refatoramento. Quem é apaixonado por Engenharia de Software e tem um Refactoring do Martin Fowler como livro de cabeceira, certamente se sentirá apaixonado pela área.

Agradecimentos a Diego Cavalcanti , pela sugestão do tema, pelo apoio durante a elaboração da coluna e pela gentileza de nos fornecer uma entrevista. Ele estagiou duas vezes no Google, sendo a ultima como EST, e foi recentemente contratado para este cargo.

Antes do estágio no Google, você já tinha experiência trabalhando como EST?

Parte do trabalho de um EST é acompanhar a evolução do software e desenvolver ferramentas para aumentar a produtividade dos engenheiros, além do aspecto voltado às ferramentas e qualidade dos testes. Diante disso, posso dizer que, apesar de nunca ter tido, antes do estágio no Google, nenhuma experiência na indústria como EST, obtive uma boa base nos últimos anos, desenvolvendo no SPLab (antigo GMF) pesquisas na mesma linha de trabalho de um EST. Assim, foi possível relacionar muito do que aprendi no SPLab -- desde as minhas pesquisas de IC até o meu mestrado atual -- com o trabalho desenvolvido na empresa, como EST.

Você ajudou a desenvolver uma premiada ferramenta para auxiliar o refatoramento de código, o SafeRefactor. Essa ferramenta se mostrou útil durante seus estágios?

Durante meus estágios no Google, não utilizei nenhuma das ferramentas ou resultados de pesquisas desenvolvidas na UFCG. Entretanto, todo o aprendizado adquirido ao longo dos anos trabalhando no GMF/SPLab serviu de base para o bom cumprimento das tarefas na empresa. Até porque, no Google, pesquisa e desenvolvimento andam de mãos dadas no dia-a-dia de um engenheiro. Então, toda experiência nessas atividades é extremamente importante para o trabalho.

O que você acredita ser essencial a quem deseja se tornar um bom Engenheiro de Software em Testes?

Um bom EST é o cara que pensa sempre em como agilizar atividades que são "gargalos" no processo, além de ter um bom entendimento de testes e buscar sempre formas de melhorá-los. O EST é a pessoa que deve olhar para o trabalho dos demais engenheiros e criar meios de automatizar tarefas custosas. Além disso, é a pessoa que analisa um projeto de software e consegue melhorá-lo para torná-lo mais fácil de ser testado. Então, podemos dizer que o interesse por testes e por evolução de software, no geral, é um bom começo para a formação de um EST

Jornal PETNews - Edição: Jéssika Renally - Revisão: Tiaraju Smaneoto e Lívia Maria
Grupo PET Computação UFCG, 2012. All rights reserved.