domingo, 21 de fevereiro de 2010

Especialização de Papéis em Fábricas de Teste

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:
      1.  São as pessoas que merecem a maior atenção     
      2. 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.

    quinta-feira, 18 de fevereiro de 2010

    Gerenciamento do Tempo em Projetos de Teste

    Quando falamos sobre o gerenciamento do tempo em nosso último post, destacamos que algumas atividades podem nos ajudar a obter um maior controle sobre o tempo. Sob a visão de gerenciamento de projetos, essas atividades estão relacionadas principalmente à área de conhecimento de Gerenciamento do Tempo. Mas podemos perceber uma forte relação também com outras áreas, como  Gerenciamento de Custos, Riscos, Escopo, Qualidade e Integração.

    Um dos primeiros e principais insumos para o gerenciamento do tempo dos projetos é o seu escopo,  que pode ser representado pela  Declaração de Escopo do Projeto, pela Estrutura Analítica do Projeto (EAP) e pelo Dicionário da EAP. Além do escopo, o Plano de Gerenciamento do Projeto também é um importante insumo para que o líder do projeto possa identificar as atividades que devem ser executadas.

    Notem que quando falamos do projeto de teste, temos um escopo que é definido principalmente pelos requisitos do software, os quais serão validados através dos testes. Esses requisitos normalmente são entregues em pacotes, o que nos permite organizar as atividades de teste seguindo essa previsão de entregas. Mas atividades adicionais podem ser necessárias para cumprirmos os objetivos dos testes,  mesmo não sendo atividades de teste propriamente ditas e devem ser consideradas para um efetivo gerenciamento do tempo. Um bom exemplo disso, seriam atividades relacionadas à capacitação da equipe ou à aquisição e implantação de alguma ferramenta necessária à realização dos testes.

    Definidas as atividades necessárias ao cumprimento dos objetivos do projeto de testes, precisamos organizá-las no tempo, estabelecendo uma sequência lógica de execução. Para esta organização, além das técnicas de sequenciamento previstas na literatura para todos os tipos de projetos, nos projetos de teste devemos observar também a relevância e os riscos associados aos requisitos, para estabelecermos aquilo que merece maior atenção. Isso pode afetar as relações de precedência entre as atividades. Em seguida, deve ser identificado o que será necessário prover para que cada atividade possa ser realizada, incluindo pessoas, equipamentos e ferramentas. O quanto de cada recurso, quando será utilizado e por quanto tempo, são também definições que ocorrem nesse momento e impactam fortemente os custos do projeto.

    Todas essas definições são pré-requisitos para o desenvolvimento do cronograma de testes, que é um processo iterativo. Mas elas podem também ser afetadas pelo cronograma, o que pode exigir revisões sobre as estimativas de recursos e prazos já estabelecidos. É importante observarmos que o cronograma evolui  ao longo do projeto de teste, sensibilizado por mudanças no plano do projeto e em seu cronograma ou por ações decorrentes do gerenciamento de riscos associados ao projeto e seu escopo.

    Gerenciar o tempo de projetos e principalmente de um projeto de testes, exige um acompanhamento cuidadoso do andamento das atividades, das mudanças ocorridas e da evolução dos riscos e do escopo do projeto. Em muitas ocasiões pode ser necessário sacrificar determinadas atividades para que os prazos do projeto sejam cumpridos. Nestas situações, é importante termos total controle sobre o cronograma e sobre o escopo dos testes. Isso nos permitirá reportar com propriedade aos intervenientes do projeto, o que está sendo sacrificado e quais os prejuízos à qualidade dos testes, informações preciosas para a tomada de decisão.

    sábado, 13 de fevereiro de 2010

    Gerenciando o Tempo

    Há alguns dias eu estava discutindo a importância de se gerenciar adequadamente o tempo dos nossos projetos de teste. E apesar disso parecer tão óbvio, cheguei a conclusão que quase nunca conseguimos fazer isso muito bem, nem nos projetos, nem em nossa vida profissional ou mesmo na pessoal.

    Geralmente gastamos grande parte do nosso tempo em atividades que agregam pouco valor e nem percebemos isso. É um tempo enorme lendo um caminhão de e-mails, navegando na web sem muita direção, ou simplesmente sentados à frente de uma TV, ao final de um dia pesado de trabalho.

    É interessante sempre repensarmos a priorização que fazemos em nossas vidas, para que seja possível encontrar o equilíbrio entre as atividades que temos no dia-a-dia, conseguindo conciliar a vida profissional e pessoal, mantendo o prazer e a motivação nessas duas frentes.

    Quando conseguimos identificar com clareza as atividades que são mais importantes e as colocamos numa sequência adequada, temos mais chances de executar a maior parte delas, o que pode nos trazer grande satisfação e sentimento de realização. Sem esse cuidado em identificar claramente o que precisamos ou queremos fazer e sem uma priorização adequada, dificilmente realizamos muita coisa.

    Esse raciocínio é totalmente válido para as atividades de teste em nossos projetos, pois normalmente temos um escopo de teste muito maior que o tempo disponível para testá-lo adequadamente. Assim, se conseguirmos priorizar os nossos requisitos de teste, poderemos direcionar nossos esforços para aquilo que tem maior relevância. Não esqueçamos do Princípio de Pareto ao priorizarmos os nossos esforços.

    É importante lembrarmos sempre de estabelecer prioridades e não querermos fazer tudo ao mesmo tempo. Dê importância ao que é importante.

    domingo, 7 de fevereiro de 2010

    Falando sobre Automação de Testes

    Recebemos em Brasília no dia 05/02, em um evento direcionado aos profissionais de teste do Banco do Brasil, o consultor e instrutor na área de testes e qualidade, José Correia da Iterasys, que nos apresentou sua visão sobre o processo de testes e estratégias de automação.

    A palestra tratou dos desafios da automação de testes, dos aspectos positivos e das possíveis frustrações. Foi ressaltada a importância de um bom planejamento, por parte da organização, nessa fase de automação do seu processo de  testes, abordando muito além da simples execução automatizada de atividades com maior velocidade. É necessário também que os processos sejam efetivamente melhorados.

    Alguns aspectos abordados:

    "Testar mais é possível" - Um forte argumento utilizado em defesa da automação é o ganho de produtividade decorrente. Mas para que isso realmente aconteça, não basta apenas automatizar o processo atual. É necessário pensar na melhor forma de se implementar a automação. "Mais, não necessariamente é melhor". "Se um processo produz um produto com defeito, automatizar esse processo só servirá para produzir uma grande quantidade de produtos defeituosos em menos tempo".

    "Vai ficar pior antes de melhorar"- Ao automatizar os testes, possivelmente o processo ficará mais caro e lento, pois existe uma curva de aprendizagem. Somente depois de algum tempo é que os ganhos da automação serão percebidos.

    "Vocabulário de Testes" - É um grande desafio no mercado de testes brasileiro, pois cada empresa tem um vocabulário diferente. As certificações têm um grande papel na unificação desse vocabulário.

    "Testar melhor" -  Importante a utilização de uma metodologia de testes. Foi descrito o  Modelo V em sua representação mais conhecida e também como uma sequência de 8 peneiras (Requisitos, Análise, Arquitetura, Codificação, Testes Unitários, de Integração, Sistema e Aceitação), sendo que o profissional de testes pode participar em todas as fases do processo, pois qualidade deve ser uma preocupação em todas elas. Ao passar por todas essas peneiras, o produto possivelmente terá mais qualidade.

    "Ferramentas de Automação" - Foram citados os principais tipos de ferramentas que apóiam o processo de testes: Planejamento de Testes, Gerência de Configuração, Virtualização, Registro de Defeitos, Padrões e Práticas, Cobertura de Código, Testes Unitários, Performance, Segurança e Robôs.

    "ISO 9126 " - Características de Qualidade - Necessidade de se ampliar o escopo dos testes, utilizando o conjunto de características e sub-características de qualidade para direcionar os esforços da equipe.

    "Testar mais rápido" - Para que isso seja possível é preciso antecipar os testes, acompanhando o processo de desenvolvimento desde suas fases iniciais. É preciso também saber quando interromper os testes. O tempo das áreas de negócio pode ser diferente do tempo da qualidade. 

    "Testar a coisa certa" - Para se ter segurança do que se está testando, são necessárias ferramentas para Gerenciamento de Testes, Gerenciamento de Defeitos e Gerência de Configuração.

    "Testar no ambiente certo" - O ambiente de testes foi descrito como um conjunto de fatores , não apenas de hardware. Fazem parte do ambiente, por exemplo, as pessoas envolvidas nas atividades de teste, softwares como ferramentas de teste, documentações do sistema, além do próprio hardware e ambiente físico.

    "Virtualização" - Foi abordada a reprodução de ambientes de teste. No futuro os ambientes de produção também serão virtualizados, permitindo que os testes de uma aplicação sejam realizados compartilhando as mesmas condições de hardware e software disponíveis no ambiente produtivo.

    "Testar mais barato" - Quando os testes se iniciam mais cedo dentro do ciclo de desenvolvimento, tem-se menos retrabalho e menor tempo para a liberação das soluções.

    "Testar o que realmente importa" - Utilizar o gerenciamento de riscos para priorizar o que é mais importante, auxiliando no direcionamento dos esforços de teste. Uma estratégia de teste bem elaborada, considerando prioridades, é o que diferencia um teste produtivo de um teste improdutivo. Foram abordados também o Princípio de Pareto e o Diagrama de Causa e Efeito,ou Ishikawa, como ferramentas importantes para se priorizar o escopo de teste.

    Concluindo sua palestra, José Correia ressaltou que o grande desafio na introdução da automação de testes numa organização não é aprender a utilizar as ferramentas ou se escolher a melhor ferramenta do mercado. O maior desafio é ter um processo robusto, que dê o embasamento necessário às atividades de teste.

    Na sequência da palestra, foram abordadas as características das principais certificações em teste, especificamente a CSTE, a CBTS e a CTFL. Nessa exposição, foi ressaltada a grande oportunidade existente na área de testes e qualidade, onde temos uma carência enorme de profissionais e mesmo de conhecimentos sobre os temas da área. Os profissionais pioneiros certamente terão destaque nesse contexto.

    Ao José Correia, o nosso agradecimento por compartilhar sua experiência profissional e vasto conhecimento. Esperamos tê-lo novamente conosco em outros eventos, contribuindo para a disseminação da cultura de testes e para o fortalecimento da área de testes e qualidade.

    sábado, 6 de fevereiro de 2010

    O futuro do Teste de Software

    Aconteceu recentemente no DFTestes, uma boa discussão sobre o futuro do Teste de Software e gostaria de compartilhar com os leitores do Base de Teste a minha visão sobre esse tema.

    Vejo o mercado de testes de software crescendo com muita velocidade nos últimos anos.
    Há 3 ou 4 anos atrás, poucas empresas tinham equipes de teste independentes bem estruturadas. Hoje vemos essa estrutura se multiplicar, tanto em empresas que trabalham com desenvolvimento, como naquelas que utilizam os serviços de fábricas de teste para validar as aplicações desenvolvidas por terceiros.

    A terceirização de serviços de teste é uma forte tendência, complementando a capacidade de teste interna das organizações. A especialização conseguida com as estruturas de fábrica trazem muitos benefícios para o contratante, principalmente na escalabilidade no atendimento de suas demandas e na independência dos testes em relação ao desenvolvimento.

    Com esse mercado aquecido, as empresas investirão maior esforço na seleção de seus times, pois aquelas que estiverem melhor estruturadas, vencerão a corrida pelos melhores contratos. Por outro lado, os profissionais de teste também deverão investir mais em sua empregabilidade. Nesse aspecto, as certificações serão um grande diferencial, principalmente aquelas que conseguirem distinguir profissionais com maior conhecimento e experiência.

    Venho comentando há tempos com alguns colegas, que o teste é o carro chefe para a melhoria de muitos processos. É um processo que catalisa uma mudança cultural nas organizações, na direção de uma busca contínua pela qualidade.

    É bonito ver isso acontecendo com a nossa área e saber que fazemos parte desse movimento!