Gerência - Qualidade e Testes

Formando Equipes Eficientes de Teste de Software

Nesse artigo o autor mostra a importância de se formar equipes e times eficientes em teste de software, Qualificações e requisitos tanto técnicos como gerenciais básicos são necessário e completam o perfil ideal para trabalhar na área de teste de software.

por Fábio Martinho Campos



De nada adianta escrever sobre temas como: Análise de Valor limite (BVA - Boundary Value Analysis), Partição de Equivalência (EQP - EQuivalence Partitioning), Tabelas de Decisão, Teste de Transição de Estados, Use Case Testing, Control Flow Analysis, Data Flow Analysis, gestão de defeitos, testes exploratórios, estimativas de teste e outros temas da área, se um dos pontos mais importantes para que essas técnicas sejam utilizadas que é a presença de PESSOAS, ou seja, um time de teste de software deve ser formado.

Sem pessoas, nenhum projeto chega a lugar nenhum. Todos os projetos são dirigidos por um objetivo único e para que esse objetivo seja alcançado, pessoas devem ser motivadas, treinadas e tarefas devem ser específicas de cada pessoa.

No caso de uma organização que tenha o Teste de Software institucionalizado, a formação de equipes de teste deve ser uma tarefa muito importante, já que sempre procuramos trabalhar com pessoas qualificadas tecnicamente e que saibam trabalhar em equipes, aumentando as chances de sucesso dos projetos.

Sendo assim, ao se formar equipes eficientes de teste de software, alguns requisitos técnicos e gerenciais são necessários, como por exemplo:

Requisitos Técnicos

  • Conhecimentos gerais sobre as práticas e princípios de engenharia de software;
  • Conhecimento das práticas e princípios de Teste de Software;
  • Conhecimentos básicos sobre métodos e estratégias de teste;
  • Conhecimentos em Planejamento, Design e Execução de testes;
  • Conhecimentos de redes de computadores, banco de dados, sistemas operacionais;
  • Conhecimentos de gestão de configuração;
  • Conhecimentos dos vários tipos de documentação em teste de software;
  • Habilidades para definir, coletar e analisar medidas de teste de software;
  • Conhecimentos básicos em ferramentas de automação;
  • Noções sobre qualidade de software.

Requisitos Gerenciais

  • Organização e planejamento;
  • Motivação;
  • Saber trabalhar com clientes e usuários;
  • Saber trabalhar em equipe e resolver problemas de conflitos entre os membros da equipe;
  • Habilidades para uma boa comunicação.
Os requisitos listados acima fazem parte das habilidades mínimas que um profissional de teste de software deva possuir ou adquirir. (Existem outros requisitos, especificamente técnicos, que estarei listando ao final desse artigo que servirá como referência para a contratação de candidatos a vagas de teste de software).

Mas afinal, como funcional o processo de seleção para a formação de times de teste de software? A seleção dos candidatos se torna uma tarefa critica quando, por exemplo, empresas passam a ter em seu quadro de colaboradores uma fabrica de testes com mais de 200 analistas de testes, o que atualmente já é uma realidade no Brasil.

Abaixo segue os passos necessários para se formar um time de teste de software:

1. Suporte da Alta Gerência para a Atividade de Teste de Software: Como qualquer outra área ou departamento da organização, se a alta gerência não "comprar" a idéia de se criar uma organização de teste, nenhum avanço será feito. A atividade de teste de software tem um custo geralmente razoável, levando-se em consideração a contratação de pessoal, máquinas, ferramentas de automação, etc. Esses investimentos terão visibilidade ao longo do tempo, e não no curto prazo, como muitos pensam. Uma cultura precisa ser disseminada na empresa, desenvolvedores precisam entender a atividade de teste como algo que garante a qualidade e não o "grupinho" que faz as acusações, ou seja, recebendo o apoio da gerência, um planejamento para a criação de uma organização de teste precisa ser elaborado.

2. Estabelecer e Institucionalizar a Organização de Teste e Criar Modelo para se fazer Carreira na Área: Após o aceite e suporte da alta gerência, um grande passo é formalizar e institucionalizar a atividade de teste de software, ou seja, mostrar que existe para toda a empresa esse grupo de colaboradores que se dedicam única e exclusivamente para a garantia e controle da qualidade das soluções fornecidas.

3. Definir os Níveis de Habilidades para os Cargos: Nesta fase serão definidos os requisitos de cada cargo do time de testes como, por exemplo, gerente de testes, líder de testes, engenheiro de testes, analista de testes. Cada um desses cargos deve exigir um requisito mínimo para serem preenchidos.

4. Elaborar as Descrições dos Cargos: Nesta fase será elaborada as descrições em nível de detalhes para cada cargo do time de teste.

4.1. Informações da Vaga em Aberto

  • Título: Descrição do título da vaga (Ex.: Gerente de Teste, Analista de Teste, etc.).
  • Salário: O Salário máximo para a vaga em questão(Já sabemos que sempre a empresa disponibilizará em qualquer cargo um valor($) até mesmo interessante para os candidatos, mas na realidade não é assim porque entrará no processo a negociação, ou seja, o valor tende a cair em alguns casos, seja CLT seja PJ).
  • Localidade: Deve ser determinado o local onde o profissional ficará alocado. Isso porque cada vez mais é comum projetos acontecerem em vários países, estados e cidades diferentes. Pode ser que tal vaga seja para outra cidade, talvez outro país.
  • Qualificações: Aqui será descrito em detalhes todas as qualificações que o profissional deverá possuir obrigatoriamente e outras qualificações desejáveis, como: certificações, anos de experiência no cargo, facilidade para se trabalhar em equipe, ferramentas de automação, etc.

5. Entrevistar Candidatos: Nesta fase duas entrevistas devem acontecer:

  • A primeira entrevista é feita por parte dos recursos humanos da empresa que é composta de pessoal qualificado e geralmente formado em psicologia. A intenção não fazer uma avaliação técnica profunda, sendo a captação do perfil técnico, perfil comportamental e pessoal, testes psicológicos e de grafologia os itens mais usados para avaliar no primeiro momento o candidato como um todo.
  • A segunda entrevista é feita, geralmente, por pessoas da área em que o candidato poderá trabalhar. Trata-se de gerentes de área, analista de sistemas e pessoal técnico em geral, aplicando provas e testes para avaliar o profissional tecnicamente e saber o grau de qualificação que o mesmo possui.
6. Selecionar o Time de Teste de Software: Feita as duas entrevistas mencionadas anteriormente, os candidatos são escolhidos, notificados e datas de início já são determinadas. A escolha dos candidatos é baseada nas qualificações exigidas para cada cargo e critérios de seleção da área de recursos humanos e pessoal técnico.

Hierarquia do Time de Teste de Software

Como qualquer outro projeto, um time de teste de software também possui sua hierarquia estabelecida. Um modelo básico e mais usado na comunidade brasileira de teste de software é:

  • Gerente de Teste de Software: O Gerente de Teste de Software tem como função primordial a iniciação do projeto de teste a ser realizado no produto a ser testado. Suas qualificações e competências se assemelham a um gerente de projetos típico: elaborar o plano do projeto de teste, aquisição de novos recursos, orçamento, riscos, prazos, elaboração de relatórios, limitações do escopo do projeto de teste e outras atividades gerenciais como constante comunicação com sua equipe, controle e monitoração das atividades, geração de métricas para alimentar indicadores, etc.

  • Líder de Teste de Software: É o profissional responsável pela condução dos testes e pela equipe de testes. Geralmente é um profissional com alto grau de conhecimento em ciclos de vida de testes, automação de testes, ambientes de testes. O Líder de Testes ajuda o gerente de Testes a elaborar 3 relatórios básicos para o acompanhamento do Projeto: Relatório de Status, Relatório de Progresso e Relatório de Desempenho.

  • Arquiteto de Teste de Software: É o profissional responsável por montar e garantir o correto funcionamento da infra-estrutura e ambientes de teste. É também a pessoa que cuida da instalação das ferramentas e que garante o correto funcionamento das mesmas.

  • Analista de Teste de Software: É o profissional responsável por traduzir os requisitos do sistema em modelagens, cenários e casos de teste. Os defeitos encontrados por este profissional são encaminhados à equipe de desenvolvimento e o mesmo deve garantir que os mesmos foram corrigidos através do Teste de Confirmação.
Os cargos, funções e qualificações mostrados acima podem se diferentes em muitas empresas. Procurei apenas fazer um resumo do que é mais usual no mercado de teste no Brasil.

Qualificações para Contratar e Ser um Bom Analista de Testes de Software

Existem alguns muitos requisitos necessários para se contratar e ser um bom analista de teste, dependendo do nível em que este se encontra, por exemplo, o profissional Júnior, Pleno ou Sênior.

Entretanto muitas dessas qualificações ou requisitos são comuns para os profissionais desta área. Conforme mencionei no começou deste artigo, estarei agora listando e mais detalhes outras classificações para a atividade de teste de software, sendo essas descrições "entradas" para se contratar um bom profissional da área teste de software:

Qualificações Técnicas

  • Engenharia de Software e Gerenciamento de Projetos;
  • Metodologias de Desenvolvimento de Software;
  • Qualidade de software;
  • Análise de sistemas, dados, requisitos;
  • Documentação de sistemas;
  • Habilidades para definir e executar estratégias de teste;
  • Experiência com verificações e validações;
  • Habilidade para liderar o projeto de teste de software desde a sua concepção até o release;
  • Rastreamento e monitoração dos defeitos;
  • Estabelecer e garantir o correto funcionamento do processo de teste de software;
  • Coordenação e execução de revisões;
  • Elaboração de relatórios técnicos e gerenciais;
  • Coleta de medidas que alimentarão métricas e que por fim serão gerados os indicadores;
  • Experiência no planejamento e estratégia de teste, de acordo com a norma IEEE 829(Documentação de Teste de Software);
  • Habilidades para supervisionar, gerenciar e motivar equipes de teste promovendo um ambiente de trabalho positivo;
  • Gerenciamento de defeitos;
  • Conhecimentos da norma ISO 9126-1(Características da Qualidade);
  • Conhecimentos da norma IEEE 1044(Classificação para Anomalias de Software);
  • Teste de Software baseado em Riscos;
  • Teste Exploratório;
  • Testes de Carga, Stress, Performance e Volume;
  • Gerenciamento de Teste de Software;
  • Habilidades para liderar, analisar, desenvolver e executar Testes Unitários, Testes de Integração(Testes de Integração "in the large" e "Testes de Integração "in the small"), Testes de Sistema, Testes Funcionais e Não-Funcionais, Testes de Aceite(Teste Alpha e Teste Beta), Testes de Regressão;
  • Automação de Teste de Software;
  • Aplicação das melhores práticas em Teste de Software;
  • Planejamento, execução, controle/monitoramento de todas as atividades relacionadas a teste de software bem como seus recursos desde o começo do projeto até o Aceite Final do Cliente;
  • Especificações de casos e cenários de teste;
  • Ambientes de Teste de Software;
  • Aplicação das técnicas de white-box(Control-Flow, Data Flow, Loop Testing e Mutation Testing) e black-box(Boundary Value Analysis(BVA), Equivalence Partitioning(EQP, Tabelas de Decisão, Pairwise Testing, Teste de Transição de Estados, Teste de Análise de Domínio, Use Case Testing, Gráfico de Causa-Efeito, Random Testing, Error Guessing);
  • Gestão de Configuração(gestão de release);
  • Conhecimentos de linguagens de programação, banco de dados, redes de computadores e arquitetura de software.
  • Preparação e busca de certificações profissionais em teste de Software(CBTS(ALATS), IBQTS, CST, CSTE(QAI), ISTQB(Foudation e Practioner), CSTP(IIST), CMST(QAI - Avançado), CTM(IIST - Avançado));

Qualificações Pessoais e Profissionais

  • Participação constante de fóruns, palestras, listas de discussões e ambientes onde o profissional possa atualizar-se constantemente e trocar informações/experiências com outros profissionais da área e até mesmo o estabelecimento de novos pontos de contato(networking);
  • Força de vontade;
  • Facilidade de relacionamento interpessoal;
  • Facilidade para se trabalhar em times;
  • Pró-atividade;
  • Capacidade de motivação;
  • Dinamismo;
  • Facilidade de aprendizagem;
  • Capacidade de organização;
  • Facilidade de adaptação;
  • Facilidade de comunicação e expressão;
  • Liderança.

Todas as qualificações mencionadas acima são partes de um profissional de teste de software. Isso se mostra cada vez mais importante já que nosso mercado está a cada ano e pleno crescimento e muitas vagas de teste de software estão surgindo.

Em Qualificações Técnicas, não mencionei mais itens senão a lista ficaria muito grande. Entretanto, caso necessário poderá ser solicitado que estarei disponibilizando mais qualificações e descrições.

Formando equipes com profissionais qualificados e todos saem ganhando: a empresa, os profissionais, clientes e a própria equipe.

Fazendo Carreira na Área de Teste de Software

Um dos grandes problemas enfrentados pela área de tecnologia da informação é a alta rotatividade das equipes de projetos. Seja em redes de computadores, banco de dados, programação, a cada dia que passa novas propostas aparecem e profissionais mudam constantemente de empresas fazendo desta realidade até mesmo um risco dependendo do projeto, já que alguns profissionais possuem um grau de especialização tão alto, que achar outro no mercado se torna praticamente impossível.

Para que esta realidade mude, programas de carreira dentro das empresas podem ser um diferencial, pois o profissional estará "preso" através de um programa de crescimento em uma faixa de tempo em que a própria organização que define.

Esse crescimento no cargo através do tempo, também está vinculado a outras variáveis como: desempenho, liderança, resultados obtidos, feedback de clientes, etc.

Um grande exemplo de programa de carreira em empresa é a chamada "Carreira em Y". Este programa é mundialmente usado e aqui no Brasil inúmeras multinacionais também adotaram esse modelo.

Abaixo, podemos ver esse modelo de carreira:

1. Início da Carreira: No início da carreira é aonde praticamente todos os profissionais se encaixam. Obviamente que o profissional estará na sua área de formação e especialização. Com o passar do tempo nessa carreira, o grau de conhecimento, experiência, lições aprendidas o profissional começa a subir e em determinado ponto já alcança até mesmo um cargo inicial de liderança, coordenação. Durante todo esse tempo ele é avaliado, seu desempenho medido e avaliações são feitas para traçar o perfil profissional em que se mais encaixa(Carreira Técnica ou Carreira Executiva).

2. Tomada de Decisão: É nesse ponto que profissional terá que fazer a "escolha da sua vida". Geralmente ao chegar nesse ponto, a maioria das pessoas já sabe que caminho vai seguir. É importante lembrar que não é de autoridade do profissional tomar a decisão de qual caminho seguir. Conforme mencionado anteriormente, durante todo o tempo da escalada até chegar a "Tomada de Decisão", muitas avaliações foram feitas e cabe a empresa deixar o profissional decidir ou não que caminho seguir. A escolha geralmente é feita com base nessas avaliações durante o tempo e expectativas profissionais de cada um. Não adianta a empresa forçar uma pessoa a ser um gerente executivo se gosta de programar. Sempre existirá um equilíbrio das vontades profissionais com o aconselhamento por parte da empresa que carreira seguir.

3. Carreira Gerencial Técnica: Não é porque um profissional escolhe a carreira gerencial técnica que nunca vai ser um gerente de alto nível na empresa. Geralmente as pessoas associam Gerente com o profissional somente de negócios da empresa, a pessoa que faz as estratégias corporativas e que toma as decisões finais. Não! É possível sim ser um grande Gerente de alto nível na empresa, sendo que o único diferencial é o foco. O Gerente Técnico participa do "mão na massa" dos projetos, tem conhecimentos excelentes de gestão de pessoas e um profundo conhecimento técnico, seja qual for a área, por exemplo, banco de dados, programação.

4. Carreira Gerencial Executiva: Este é o profissional responsável pelo business direto da empresa. Gerentes executivos estão sempre empenhados no crescimento e lucratividade da empresa ano após ano. A conquista de novos clientes e a preocupação de sempre "ganhar" mais projetos são características dessa função. Esses profissionais estão também ligados diretamente com os diretores, ajudando os mesmos a traçarem a estratégia corporativa e fornecendo informações e relatórios gerenciais dos projetos da empresa.

O modelo de carreira em Y tem suas vantagens e desvantagens, as quais não entrarei em detalhes. Entretanto, pode-se notar facilmente uma vantagem e uma desvantagem: a vantagem é que é "garantido" o crescimento e carreira do profissional, de acordo é claro, com os resultados obtidos no tempo. Uma grande desvantagem é que no momento da Tomada de Decisão a escolha for feita errada e após um dado período de tempo se o profissional quiser voltar e trocar a área de especialização da sua carreira(técnica ou executiva), este procedimento quase sempre é visto como indecisão e pode prejudicar a carreira, fazendo com que muitas vezes o profissional volte para a linha abaixo da "Tomada de Decisão".

Um modelo de carreira corporativo para teste de software, também pode ser estabelecido uma vez que o departamento de teste de software for oficializado e institucionalizado. Isso porque de nada adianta ter um programa de carreira em teste de software se nem mesmo a organização de teste foi realmente aceita pela alta gerência, ou seja, a decisão de se criar carreiras de teste de software deve ser refletida na Política de Teste Organizacional.

Isso se torna importante já que investimentos serão necessários nessas carreiras como cursos de aperfeiçoamento, treinamentos, constantes participações dos recursos humanos da empresa para avaliar os profissionais, etc. Enfim, o programa para se fazer carreira deve também ser aprovado e reconhecido por toda a empresa.

Conforme já nesse artigo, um grande problema é a rotatividade das equipes em projetos de teste de software. Para mantermos e garantirmos a permanecia de pessoal altamente qualificado, é necessário um programa de carreira, tanto para motivação e agregação de valor do profissional quanto para a própria realização pessoal de cada um.

Um modelo de "Programa de Carreira Corporativo" para Teste de Software é mostrado abaixo:


Copyright® 2007 - Todos os Direitos Reservados desde modelo para Fábio Martinho Campos

1. Aprendizado e Início da Carreira em Teste de Software: Nesta primeira fase acontecerá a formação de novos profissionais em teste de software. A organização poderá desenvolver um programa de novos aprendizes em teste de software e oportunidade de crescimento nessa área. Muitos treinamentos, palestras, workshop são ministrados para esses novos profissionais e a participação inicial em projetos como Analista de Testes Júnior é crucial para o começo da vivência em projetos de teste de software. Consideramos também um profissional júnior não somente aqueles novos na área, mas também aqueles que estão trocando de área, por exemplo, programação por teste de software e que já estão na área a mais tempo. Estagiários são a grande maioria do staff nesse primeiro momento.

2. Especialização em Teste de Software: No grau de especialização, os profissionais já são mais experientes e já possuem grande conhecimento em teste de software. Geralmente possuem uma ou mais certificações profissionais em teste de software e já se tornam referência para os Analistas de Teste Júnior. Nesta etapa o profissional escolhe que carreira de especialização seguir: ser um arquiteto de testes(responsável pelo ambiente de infra-estrutura dos projetos de teste), um analista de teste(análise, especificação e execução de casos e cenários de teste ou automatizador de teste de software(responsável por criar scripts de teste de forma automatizada usando ferramentas CAST(Computer Aided Software Testing)).

3. Liderança em Teste de Software: Os profissionais com mais destaque e jeito pra liderar pessoas e projetos são escolhidos e previamente avaliados. Esse profissional será o porta-voz da equipe do projeto de testes e levará para o gerente de testes todas as necessidades da equipe. Esse líder ou coordenador ainda não perdeu contato total com a área técnica, ou melhor, ainda, ele é um coordenador ou líder da equipe sendo então um técnico muito especializado porem com facilidades e habilidades para coordenador e conduzir equipes de projetos.

4. Gerência em Teste de Software: Ao formar líderes e coordenadores na fase anterior, geralmente não muitos, são escolhidos para o cargo de Gerente de Teste de Software. Nesse cargo o profissional tem pouca ou quase nenhuma responsabilidade técnica, ou seja, ele não irá executar scripts ou casos de teste. Este profissional está responsável por Iniciar, Planejar, Executar, Controlar e Monitorar e Encerrar o Projeto de Teste de Software. É também função dele gerar estimativas e garantir a qualidade do produto. Ele se torna a pessoa mais importante e responsável no que se diz respeito ao término do projeto de teste de software, uma vez que não se pode ficar executando os testes para sempre. Seu feeling é necessário para que se possa liberar o software para produção com uma margem segura e comprovada através de indicadores que a qualidade e a ausência de defeitos críticos estejam totalmente corrigidos.

5. Gerência Executiva em Teste de Software: Este é o ultimo nível na carreira de teste de software. Geralmente trata-se apenas de um só profissional, responsável por gerenciar todos os recursos humanos de teste de software: Gerentes, Líderes e Coordenadores, Arquitetos, Analistas e Profissionais Júnior. Este profissional é o homem de negócios da organização de teste, sendo o primeiro e único responsável. É também das suas funções de Gerente Executivo, trazer mais negócios e projetos para a área de teste de software da empresa, garantir que os profissionais estão com o grau de qualificações elevado e registrar crescimento do faturamento da área de teste seja pelos projetos em andamento ou novos projetos ou ainda pelo feedback dos clientes sobre a qualidade do software entregue para a alta gerência.

Este modelo de programa de carreira em teste de software não é o único e pode ser modificado de empresa para empresa. Como, particularmente, a área de teste de software ainda é nova no Brasil, muitas empresas ainda terão que criar esse programa e o mesmo deve ter o apoio da alta gerência e oficializado para os profissionais.

Na criação do programa de carreira para teste de software e em cada fase desse processo, muitas variáveis são levadas em consideração: tamanho das equipes de teste, investimentos financeiros, apoio da alta gerência, requisitos para cada cargo, avaliações de desempenho, critérios para subir na carreira. Ou seja, deve existir um planejamento e investimentos iniciais para essa atividade e um grupo de pessoas deve se disponibilizar durante um tempo para a criação e elaboração.

Cabe a empresa e uma força-tarefa inicial por parte dos recursos humanos da empresa, indicar em qual categoria o profissional está classificado. Decisões delicadas devem ser tomadas para cada profissional, até mesmo para não gerar desconforto, caso uma avaliação seja mal feita prejudicando e desmotivado o profissional, colocando o mesmo em alguma categoria que ele não deveria estar.

Conforme mencionado anteriormente, a idéia de todos os modelos de programas de carreira é "segurar" o profissional, deixá-lo especialista, prepará-lo para liderança e gerência fazendo com que a rotatividade das equipes de projetos sejam diminuídas impactando menos nos projetos e deixando de ser um risco em muitos casos.

Considerações Finais

  • Nesse meu primeiro artigo no TestExpert, tentei mostar a importância de se formar equipes e times eficientes em teste de software.
  • Qualificações e requisitos tanto técnicos como gerenciais básicos são necessário e completam o perfil ideal para trabalhar na área de teste de software.
  • Passamos também pelo Processo de Formação de Equipes de Teste de Software.
  • Mostrei também um modelo de hierarquia para projetos de teste de software.
  • Um guia "quase completo" para ser e contratar um bom Analista de teste de Software(Requisitos técnicos e requisitos Pessoais e Profissionais).
  • Apresentação do modelo de "Programa de Carreira em Y", utilizado em muitas empresas, especialmente as multinacionais.
  • E finalmente um modelo para "Programa de Carreira em Teste de Software".

Espero que tenham gostado do meu primeiro post e outros virão com certeza. Para mais informações, entre em contato comigo pelo e-mail fabio_noticias@yahoo.com.br.

Fábio Martinho Campos

Fábio Martinho Campos - Bacharel em Computação pela UNITAU (Universidade de Taubaté), MBA em Gestão de Projetos pelo IPT (Instituto de Pesquisas Tecnológicas-USP). Trabalhou no INPE-MCT (Instituto Nacional de Pesquisas Espaciais) em São José dos Campos como analista de sistemas e desenvolvedor web da Intranet e Internet por dois anos. Trabalhou na empresa alemã Liebherr Guindastes e Máquinas Operatrizes como analista de sistemas e desenvolvedor web, atuando também como analista de processos para o projeto de GED (Gerenciamento Eletrônico de Documentos) da empresa. Na IBM Brasil trabalhou por um ano como analista de teste no GTO (Global Test Organization) e SEA&T (System Engineer Architecture and Test) no projeto internacional Blue Horizon Configurator. Ainda na IBM trabalhou no Projeto CADU e SCFI do Banco Bradesco. Possui as certificações CBTS (Certificação Brasileira de Teste de Software), CQA (Certified Quality Assurance), CST (Certified Software Testing), COBIT(ISACA), ISTQB/ISEB(CTFL) e IBM Certified Specialist – Software Quality. É palestrante da disciplina de Teste de Software e Qualidade de Software, contribui para o crescimento do mercado de Teste de Software no Brasil através de palestras e eventos em universidades.