No último dia 10/02, tivemos a oportunidade de promover uma palestra com o gerente da fábrica de testes da RSI em Brasília, Emílio Castro. O Emílio apresentou sua visão sobre a organização de uma fábrica de testes, abordando a especialização de papéis e a utilização de ferramentas. A palestra fez parte de um evento sobre automação de testes, organizado para as equipes de teste do Banco do Brasil, que ocorreu entre os dias 01 e 12 de fevereiro.
Conceitos Gerais - Inicialmente, foram revisados conceitos gerais de testes de software, ressaltando que vivemos um momento de rápida evolução tecnológica e que o controle de qualidade de software deve acompanhar esta evolução. Softwares mais complexos e usuários mais exigentes obrigam que um processo de controle de qualidade eficiente seja estabelecido, para que os riscos dos projetos sejam minimizados. "Teste é o único meio de controlar a complexidade da tecnologia".
Perfil dos Testadores - Os testadores são críticos e têm um perfil diferente dos desenvolvedores. Mas um fator essencial para sucesso dos testes é o testador se enxergar como parte da equipe de projeto, com uma visão crítica, porém profissional. Saber reportar os problemas é fundamental para se garantir que os apontamentos sejam bem recebidos. O testador é um "portador de más notícias, mas deve ser também sempre um otimista".
O custo de um defeito - Quanto mais tarde se identifica um defeito, mais caro será para corrigí-lo (Regra 10 de Myers). Por isso, testes devem ser executados desde o início do desenvolvimento de um software. Os produtos de software devem passar por um processo produtivo e o teste é uma parte que acompanha toda essa "esteira produtiva", representando o controle de qualidade. Encarado desta forma, o teste poupa muito tempo e recursos, pois permite que os defeitos sejam identificados mais cedo dentro do processo de desenvolvimento.
Fatores que influenciam a formação de uma equipe de testes - O escopo e o objetivo dos testes, bem como a sua abrangência, influenciam fortemente na identificação das habilidades necessárias e no perfil das equipes. Por exemplo, para verificar documentos de requisitos, é preciso ter profissionais que conheçam esses documentos e sejam capazes de reportar com propriedade os problemas identificados.
Visões da Qualidade - Foram apresentadas as visões da qualidade sob a ótica de usuários e de desenvolvedores. O usuário entende que um produto tem qualidade se atende as suas necessidades, enquanto o desenvolvedor tem sua visão da qualidade relacionada à aderência aos requisitos estabelecidos para o software. A qualidade entregue, normalmente, é diferente dessas duas perspectivas. O objetivo dos testes é minimizar os gaps da qualidade, considerando essas duas visões e a qualidade efetivamente entregue, conforme ilustrado pelo QAI.
Fonte: QAI - Quality Assurance Institute
Perfis para composição de uma equipe de testes - Considerando os objetivos do teste, com foco nos Níveis de Teste, o perfil ideal dos testadores seria:
- Para os níveis unitário/componente/integração - Programadores, Admins BD/Rede/Sistema, Engenheiros Elétricos/Mecânicos.
- Para o nível de sistema - Engenheiros de teste, Técnicos de teste, alguns Programadores.
- Para o nível de aceitação - Analistas de Negócio e Usuários, Suporte Técnico/Help-Desk, Vendas/Marketing.
Uma importante observação feita nesse ponto da palestra, foi sobre a utilidade de se ter nas equipes de teste profissionais com conhecimentos em desenvolvimento de software. Essa idéia já foi tema de uma boa discussão que ocorreu no DFTestes no mês de janeiro deste ano.
Considerando os objetivos do teste, sob a visão de técnicas utilizadas, o perfil ideal dos profissionais de teste seria:
- Para testes Caixa-Branca - perfil mais técnico - desenvolvedor.
- Para testes Caixa-Preta - perfil mais negocial - usuário/gestor.
Mas qual seria a composição ideal de uma equipe de testes? Tentando responder esta questão, foram apresentados os principais papéis e conhecimentos necessários:
- Gerente de Testes - Gerência de Projetos, Engenharia de Software e Testes Avançado. O relacionamento da equipe de testes com a equipe de desenvolvimento se dá, normalmente, através do Gerente de Testes.
- Engenheiro de Testes - Fundamentos de Teste, Processo de Desenvolvimento, Negócio. Foi destacada a importância de se ter equipes de engenheiros especializados por área de negócio, para que o conhecimento não seja perdido entre um projeto e outro da mesma área negocial. As documentações dos sistemas não conseguem preservar todo o conhecimento necessário ao design e execução dos testes.
- Executor de Testes - Fundamentos de Teste, Negócio, Ortografia e Gramática.
- Revisor - Revisões, Ortografia e Gramática.
- Automatizador - Programador, Lógica de Programação e Melhores Práticas de Codificação.
- Técnico - Ambiente (Plataforma, SO, Redes, Segurança, SGBD, Servidor de Aplicação).
Observações sobre o Teste de Sistemas Legados - O objetivo de se testar e documentar um sistema legado é permitir a execução de testes de regressão quando alterações nesse sistema ocorrerem, buscando garantir que essas alterações não comprometam o funcionamento geral do sistema. Isso traz mais segurança às manutenções. A idéia é entender o sistema e documentá-lo, com foco em sua "espinha dorsal", ou seja, em suas principais funcionalidades. O objetivo não é esgotar todas as funcionalidades, pois isso seria muito caro. Assim, normalmente, apenas a parte principal do sistema é documentada e homologada, sendo que para isso, pode ser preciso entrevistar gestores e usuários finais, além de eventuais consultas ao código-fonte para um maior detalhamento.
Considerações sobre automação:
- A automação deve ser consciente - Ferramentas são um apoio e não a solução de todos os problemas.
- Investir na automação somente se o investimento puder ser recuperado.
- Classificação das ferramentas - definida pelos objetivos dos testes e pelas técnicas utilizadas.
Principais tipos de ferramentas:
- Apoio ao teste de regressão (Execução)
- Gerenciamento do Teste
- Performance
- Apoio ao Teste Manual (Revisões)
- Rastreabilidade
- Cobertura de Código
- Análise Estática ...
Principais Benefícios da Automação:
- Reduzir o trabalho repetitivo
- Consistência e capacidade de repetição melhoradas
- Avaliação objetiva, especialmente sobre cobertura e desempenho
- Relatos simplificados e padronizados
Principais Riscos da Automação:
- Expectativas não realistas
- Subestimar o esforço de implantação/implementação
- Uso de ferramentas para testes inadequados
Fatores Críticos de Sucesso:
- São as pessoas que merecem a maior atenção
- Teste deve ser encarado como uma oportunidade de melhoria
Muitas outras experiências foram relatadas na palestra e um vasto conhecimento foi compartilhado com todos os presentes. Nosso agradecimento ao Emílio, por sua importante participação no evento e por sua constante contribuição na construção e disseminação de conhecimentos em Testes e Qualidade de Software.



