Engenheiro de Testes
Por Rafael da Silva
(carlos.rafael.silva@ccc.ufcg.edu.br)
A engenharia de confiabilidade cresce cada dia mais com o avanço da indústria. Conheça, nesta edição, suas aplicações no âmbito do desenvolvimento de software.

A Engenharia de Confiabilidade surgiu com a necessidade crescente da indústria de aumentar a confiabilidade dos seus sistemas, de forma geral, durante seu ciclo de vida. Um profissional da área de confiabilidade deve possuir uma visão geral dos campos de engenharia, visualizando o sistema como um todo.

Em um contexto histórico, uma série de erros processuais fez com que o profissional dessa área se tornasse necessário. Em 1997, um navio USS Yorktown ficou a deriva por 2h45min devido ao desligamento imprevisto da propulsão. Um membro da tripulação digitou “0” em um dos campos do banco de dados, causando uma divisão por zero no chip dos motores e, consequentemente, sua falha. Em 1999, o satélite Mars Polar Orbiter foi destruído devido a um erro de conversão de medidas. Enquanto a equipe na Terra fez uso do Sistema Imperial , o hardware do robô realizava cálculos no sistema métrico.

A Engenharia de Confiabilidade de software pode ser definida como o estudo quantitativo do comportamento de um software com respeito à confiabilidade dos requisitos dos usuários. De forma mais simples, a confiabilidade geralmente é definida como a probabilidade do software operar sem ocorrência de falhas durante um período especificado de tempo em um determinado ambiente.

A confiabilidade de software é um aspecto especial da Engenharia de Confiabilidade. A confiabilidade de um sistema, por definição, inclui todas as suas partes: software, hardware, suporte, infraestrutura, operadores e procedimentos. Por muitos anos, a Engenharia de Confiabilidade esteve focada no hardware de um sistema, mas com o avanço da tecnologia de circuitos integrados, o software tornou-se a parte do sistema mais propensa a erros.

Assim como no hardware, a confiabilidade de software depende de um bom levantamento de recursos, design e implementação. A equipe responsável deve manter um forte elo com a equipe de Engenharia de Software, a fim de antecipar e articular estratégias contra consequências não premeditadas durante o desenvolvimento de software.

Pode-se dizer que existe uma sobreposição entre a Engenharia de Software e a confiabilidade de software. Um bom plano de desenvolvimento de software é a chave no aspecto de confiabilidade do produto.

Uma métrica comum para a confiabilidade do software é o número de falhas que ele apresenta a cada mil linhas de código. Essa métrica, juntamente à execução do programa, estimando o número de falhas por tempo do software é uma chave para a maior parte dos modelos e estimativas de confiabilidade. Na teoria, a confiabilidade do software aumenta à medida que a densidade das falhas diminui.

Durante todas as fases de teste, as falhas são descobertas, corrigidas e são feitos novos testes. A confiabilidade é então estimada a partir da densidade de erros e de outras métricas. O resultado obtido por meio do modelo de confiabilidade é sempre de natureza probabilística e tenta especificar a probabilidade de falhas no software.

Em geral, os modelos podem ser utilizados para predizer o tempo e até a ocorrência da próxima falha ou o número esperado de falhas no próximo intervalo de tempo.

Um bom modelo de confiabilidade deve ter as seguintes características:

• Apresentar boa predição para um comportamento futuro;

• Ter forma funcional simples;

• Ter aplicação mais ampla possível;

• Ser baseado em suposições concretas.

O Engenheiro de Confiabilidade de software tem um mercado um pouco restrito à sua disposição, haja vista que não são todas as empresas que utilizam modelos de desenvolvimento visando à confiabilidade. Entretanto, as grandes empresas, que estão focadas na usabilidade do seu software, sempre irão contratar e valorizar este profissional. Nesse âmbito, o profissional irá apontar as falhas durante o desenvolvimento do software da empresa, a partir de modelos conhecidos, gerando melhorias significativas 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 diagnóstico de sistema eficiente.

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

• Medir a confiabilidade de software, incluindo a estimativa e previsão com o uso de modelos de confiabilidade de software;

• Estudar e aplicar atributos e métricas de projeto de produtos, processo de desenvolvimento, arquitetura de sistema, ambiente operacional do software e suas implicações sobre a confiabilidade;

• Aplicar o conhecimento desta engenharia na especificação do projeto da arquitetura do software do sistema, desenvolvimento, testes, uso e manutenção.

O Engenheiro de Confiabilidade deve ter as seguintes qualificações:

• Ser detalhista, perfeccionista e metódico;

• Possuir boa comunicação e ser extrovertido, já que precisará dirigir-se claramente à equipe de Engenharia de Software e realizar apresentações sobre seus resultados;

• Ser observador e planejador;

• Possuir raciocínio lógico e matemático apurados;

• Possuir muita experiência com as ferramentas de testes mais utilizadas no mercado.

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

Segundo a SalaryQuest um Engenheiro de Confiabilidade de software ganha em média 86 mil dólares ao ano, sendo o Google um dos melhores empregadores, pagando 107 mil dólares ao ano aos seus engenheiros.

Engenharia de Confiabilidade de software é, com certeza, uma excelente área profissional para pessoas que buscam desafios, gostam de resolver problemas acima da média e que têm facilidade para detectar erros.

Quem é apaixonado por Engenharia de Software e se interessa por controle da qualidade de software, certamente se sentirá atraído pela área. Afinal, cabe ao engenheiro de confiabilidade garantir a funcionalidade, usabilidade e manutenbilidade do software. E esta não é uma tarefa trivial

Jornal PETNews - Edição: Jessika Renally - Revisão: Tiaraju Smaneoto e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved.