Prévia do material em texto
www.devmedia.com.br [versão para impressão] Link original: https://www.devmedia.com.br/processo-de-teste-de-software/23795 Processo de Teste de Software Nesta artigo vamos explicar como a utilização de um Processo de Teste pode melhorar a efetividade dos testes, controlando as atividades e garantindo mais credibilidade e valor ao produto. De que se trata o artigo: Explicar como a utilização de um Processo de Teste pode melhorar a efetividade dos testes, controlando as atividades e garantindo mais credibilidade e valor ao produto. Em que situação o tema é útil: Para evitar que o teste seja uma mera etapa do ciclo de desenvolvimento, a implantação de um processo relacionado a este garante um maior controle das atividades de teste e, consequentemente, mais qualidade ao software. Resumo DevMan: Nesse artigo apresentamos o Processo de Teste de Software com as suas principais etapas e respectivos artefatos gerados. Abordamos também os papéis e as responsabilidades de cada membro da equipe envolvida. Por fim, citamos algumas boas práticas que podem contribuir para obter sucesso na utilização de um Processo de Teste. Autores: Renata Eliza e Vivian Lagares Ao contrário do que muitos imaginam, testar um software vai muito além de executar testes explorando as funcionalidades de um sistema já desenvolvido. Na realidade, para que seja possível avançar diante desse estigma, o primeiro obstáculo a ser enfrentado é fazer com que o Processo de Teste e o Processo de Desenvolvimento sejam executados em paralelo, desde o início do ciclo de vida do software. Um Processo de Teste de Software tem como objetivo estruturar as etapas, as atividades, os artefatos, os papéis e as responsabilidades do teste, permitindo organização e controle de todo o ciclo do teste, minimizando os riscos e agregando valor ao software. A estruturação do processo tem o propósito de reduzir o número de erros apresentados no projeto. Mas para que isso seja possível, a definição dos objetivos do teste deve ser bem clara, as melhores técnicas devem ser selecionadas, e uma equipe de pessoas treinadas e qualificadas deve estar apta para desempenhar os respectivos papéis dentro do processo. Após estruturar os objetivos, o próximo passo é implantar o processo. A implantação permite que o teste deixe de ser tratado como uma atividade secundária, passando a ser um processo próprio, condutor do fluxo das atividades do teste e gerador de artefatos que tornam possível a avaliação da qualidade do software. Neste contexto, apresentaremos nesse artigo as principais fases do ciclo de vida do Processo de Teste, com os referentes artefatos gerados por cada uma delas. Abordaremos também a hierarquia e a definição dos papéis envolvidos no teste, com suas respectivas responsabilidades. Por fim, serão listadas algumas práticas que podem contribuir para a melhoria do software com a implantação do processo. Ciclo de Vida do Processo de Teste O ciclo de vida consiste em uma série de etapas dependentes, consideradas como o esqueleto do Processo de Teste, que visam estruturar as atividades definindo como os testes serão conduzidos no projeto. Essas etapas podem variar de acordo com a metodologia utilizada, e conforme apresentado na Figura 1, serão demonstradas nesse artigo as principais etapas do ciclo de vida de um processo de teste. Figura1. Ciclo de Vida do Processo de Teste de Software. Conforme indicado na Tabela 1, a execução de cada etapa do ciclo de vida tem um tempo estimado de duração. Assim, é recomendável seguir essa estimativa para que seja possível executar todas as fases do processo, minimizando riscos e consequentemente garantindo mais qualidade ao software. Etapa Do Processo de Teste Distribuição do Tempo Estimado Planejar Testes 10% Projetar Testes 40% Executar Testes 45% Entregar 5% Tabela 1. Estimativa de tempo para cada etapa do ciclo. A seguir, serão apresentadas as principais etapas do ciclo, juntamente com as suas respectivas responsabilidades dentro do Processo de Teste: a) Planejar: esta é a atividade inicial do processo, onde é definido o objetivo dos testes, registrado através do artefato Plano de Teste. Essa etapa também é responsável pela identificação das técnicas de teste que serão aplicadas ao projeto, como por exemplo: · Teste de Conformidade; · Teste de Contingência; · Teste de Desempenho; · Teste de Estresse; · Teste de Funcionalidade; · Teste de Integração; · Teste de Regressão; · Teste de Segurança; Durante o Planejamento são executadas as seguintes atividades: · Definição do Escopo dos Testes; · Definição dos Métodos e Técnicas de Teste; · Planejamento das Atividades de Teste; · Planejamento do Ambiente de Testes; · Designação dos Recursos envolvidos no Teste; · Definição dos Riscos do Projeto de Teste; · Definição das métricas para monitorar e controlar os Testes. b) Projetar: depois de realizado o planejamento, o próximo passo é colocar em prática tudo que foi especificado. É o momento de projetar os Casos de Teste, Roteiros de Teste e Procedimentos de Teste do Software. Durante a segunda etapa do ciclo são executadas as seguintes atividades: · Identificação dos requisitos planejados; · Elaboração (e revisão) dos Casos de Teste; · Elaboração dos Scripts de Teste; · Preparação do Ambiente de Teste; · Preparação da Gestão de Defeitos; · Refino das Estimativas de Teste; · Preparação da Massa de Teste; · Acompanhamento dos riscos do projeto de Teste. c) Executar: o objetivo dessa fase é colocar em prática tanto o que foi planejado quanto o que foi projetado no processo. É o momento de executar os testes. Um cuidado especial deve ser tomado antes de iniciar essa etapa. É preciso verificar se o ambiente está propício e estável, para que a execução dos testes seja possível. Conforme programado nas primeiras etapas do ciclo, utilizar uma ferramenta de Gestão de Defeitos durante a execução dos testes é fundamental. Afinal, ela possibilitará o registro coerente dos problemas encontrados, condizentes com a sua categoria (melhoria, erro ou sugestão), prioridade (baixa, normal ou urgente) e claro, gravidade (trivial, média ou obstáculo). Além disso, a Gestão de Defeitos proporcionará uma visualização completa de todo o escopo do projeto, permitindo que sejam extraídos indicadores e rastreadas todas as mudanças aplicadas ao software. Durante a terceira etapa do ciclo são executadas as seguintes atividades: · Execução dos Casos de Teste; · Execução dos Scripts de Teste; · Gestão de Defeitos; · Atualização da Massa de Teste; · Avaliação do Plano de Teste; · Avaliação dos Resultados do Teste; · Formalização da Evidência dos Testes. d) Entregar: o objetivo da última etapa é assegurar que os testes foram executados conforme projetado, permitindo assim que o sistema esteja apto para entrega e garantindo que os objetivos planejados foram alcançados. Essa etapa conta com a participação direta do cliente, que tem a função de executar os testes de aceitação, validando se o que foi desenvolvido realmente atende ao que foi solicitado. Nesse momento provavelmente surgirão defeitos, fazendo com que seja necessário continuar utilizando a ferramenta para controle de bugs. A Gestão de Defeitos nessa fase permitirá que os problemas encontrados pelo cliente sejam analisados e corrigidos por prioridade. Durante a última etapa do ciclo são executadas as seguintes atividades: · Elaboração e Análise dos Indicadores de Teste; · Elaboração do Sumário de Teste; · Entrega do Sistema para o Cliente; · Apoio ao Cliente na Execução dos Testes de Aceitação; · Gestão de Defeitos; · Momento de aprendizado para utilizar o conhecimento adquirido em novos projetos. Artefatos Os artefatos são produzidos durante a execução das respectivas etapas do ciclo de vida do processo, com o propósito de registrar e acompanhara evolução do projeto, e inclusive verificar se os resultados obtidos estão de acordo com o que foi especificado. A Figura 2 destaca os principais artefatos gerados por todas as etapas apresentadas do processo: Planejar, Projetar, Executar e Entregar. Figura 2. Artefatos de um Processo de Teste de Software. a) Planejar: a primeira fase do ciclo gera como artefato o Plano de Teste. Vejamos uma análise sobre ele: · Plano de Teste: é o documento que define o nível de cobertura, completo ou reduzido, que deverá ser alcançado pelos testes. Tem como finalidade fornecer uma visão geral do projeto, contendo as diretrizes que possibilitarão a execução do Processo de Teste. Ele é responsável pela definição de todo o escopo dos testes, possibilitando que os mesmos possam ser repetidos e controlados. Esse artefato representa todo o planejamento para a execução do teste, incluindo os recursos (pessoas, software, hardware), estratégias, cronograma das atividades e as funcionalidades que serão testadas. Ao passar dos anos algumas normas surgiram com o objetivo de definir padrões para a documentação de um Plano de Teste, estipulando a estrutura e as seções que este artefato deve conter, por exemplo: QAI, PMBOK e IEEE829. A mais utilizada é a norma IEEE829, que possui as seções relacionadas na Tabela 2. Seções da Norma IEEE829 1) Identificador 6) Introdução 11) Itens de Teste 2) Features a testar 7) Abordagem 12) Critérios de Liberação 3) Critérios de Suspensão 8) Entrega do Teste 13) Tarefas do Teste 4) Ambiente 9) Responsabilidades 14) Treinamentos 5) Cronograma 10) Risco e Contingência 15) Aprovação Tabela 2. Seções da Norma IEEE829 Para elaborar um Plano de Teste, verifique as seções sugeridas pelas normas e guias, e monte o modelo que mais se enquadra às necessidades do seu projeto. b) Projetar: é a fase onde testes são criados, sendo responsável pela geração dos artefatos discutidos a seguir: · Casos de Teste: é um conjunto de entradas, saídas e resultados esperados que tem como objetivo identificar as condições que serão verificadas e validadas no projeto. Em outras palavras, é o artefato que estabelece o que será testado no software. Os Casos de Teste são utilizados basicamente para listar um número adequado de testes que englobem as principais funcionalidades do software, e possuem basicamente a seguinte estrutura: o Título: nome sucinto que define o que será executado no Caso de Teste; o Pré-Condição: estado obrigatório do sistema antes do início do teste. Isto é, o que precisa ser realizado para que seja possível colocar em prática os “Passos” e chegar ao “Resultado Esperado”; o Passos: são as ações que deverão ser executadas para verificar se o software cumpre com o que foi especificado; o Resultado Esperado: é o resultado que se deseja obter ao final da execução dos passos do Caso de Teste. · Massa de Teste: é um conjunto de valores inserido na base de dados que propicia um ambiente apto para a execução dos testes. Esta massa pode ser inserida manualmente ou automaticamente, através da utilização de scripts de carga; · Roteiro de Teste: é formado pela organização de um ou mais Casos de Teste que devem ser executados em uma sequência lógica. É recomendável que para cada Especificação de Caso de Uso um roteiro seja elaborado. Além disso, cada Caso de Teste representado no Roteiro de Teste deve exibir o seu respectivo Resultado Esperado, para que o testador confronte com o resultado obtido na execução dos testes. c) Executar: durante a execução da terceira fase do ciclo de vida do processo são gerados os artefatos Relatório de Bugs e Resultado do Teste, detalhados a seguir: · Relatório de Bugs: é utilizado para registrar qualquer ocorrência no projeto de teste que requeira algum tipo de investigação. O uso mais comum desse relatório é para controlar os defeitos ocorridos durante os testes, e deve ser encaminhado para a equipe de desenvolvimento tomar as providências cabíveis; · Resultado do Teste: utilizado para a formalização dos resultados obtidos na execução dos testes a cada iteração do ciclo de desenvolvimento do sistema. d) Entregar: na última etapa do ciclo, as informações relevantes extraídas durante a execução dos testes são armazenadas através do artefato comentado a seguir: · Sumário de Teste: este artefato organiza e apresenta uma análise resumida dos Resultados do Teste, juntamente com as principais medidas para revisão e avaliação do projeto. Normalmente esse relatório finaliza os testes. Durante a execução das atividades do Processo de Teste, os artefatos produzidos devem ser armazenados em um repositório único, acessível a todos os envolvidos no projeto. Isso possibilitará um acompanhamento da evolução dos trabalhos realizados por todos os participantes da equipe testes. Papéis A área de Teste de Software possui nomenclaturas definidas para os principais papéis envolvidos no Processo de Teste, como pode ser verificado na Figura 3. Figura 3. Hierarquia dos Papéis do Processo de Teste de Software. Os papéis têm a função de organizar as responsabilidades de execução de cada atividade, além de definir quem irá gerar os artefatos do teste. No entanto, para que seja possível colocar em prática todas as atividades do processo, é importante levar em consideração as habilidades exigidas por cada um. Façamos uma análise sobre eles: · Gerente de Teste: é o responsável por todos os assuntos relacionados ao Teste de Software. Normalmente é quem define a política de teste adotada na organização, incluindo planejamento, documentação, controle e monitoramento dos testes, aquisição de ferramentas, participação em inspeções e revisões do trabalho de teste. Para exercer esse papel algumas características são fundamentais, como por exemplo: o Bom conhecimento dos aspectos do Processo de Teste de Software; o Habilidades de planejamento e gerenciamento de atividades. · Líder de Teste: também intitulado Coordenador de Teste, é o profissional responsável pela organização dos testes. É ele quem estima os esforços, os recursos e o tempo de teste. É também quem cria e mantém o artefato Plano de Teste e atribui as tarefas para os demais membros da equipe. Para exercer esse papel algumas características são fundamentais, como por exemplo: o Experiência em liderança e vasto conhecimento sobre técnicas e ferramentas de teste; o Habilidades interpessoais, principalmente diplomacia e defesa. · Arquiteto de Teste: também chamado de Engenheiro de Teste, é responsável pela criação e manutenção de toda a infraestrutura de teste, que inclui o ambiente, a arquitetura e as ferramentas. Para exercer esse papel algumas características são fundamentais, como por exemplo: o Capacidade em diagnosticar e resolver problemas do ambiente; o Conhecimento sobre a instalação e configuração das ferramentas voltadas para o Teste. · Automatizador: conhecido também como Analista de Teste de Automação, é quem transforma os Casos de Teste elaborados pelo Analista de Teste em scripts automatizados. Além de automatizar os testes funcionais, também é responsável pelos testes de desempenho, performance e carga. Para exercer esse papel algumas características são fundamentais, como por exemplo: o Domínio sobre linguagens de programação; o Conhecimento de diversas técnicas e tipos de teste. · Analista de Teste: também intitulado Analista de Homologação ou Projetista de Teste, tem como premissa ser mais experiente que o Testador, ou seja, chega a ser primordial que tenha exercido a função inicial da hierarquia do teste. É ele quem elabora os Casos de Teste que serão executados pelo Testador. Em alguns casos, põe a mão na massa e executa os testes. Para exercer esse papel algumas características são fundamentais, como por exemplo: o Boa capacidade de visualizar, articular e resolver problemas; o Conhecimento em falhas comuns em softwares. · Testador: tambémconhecido como Homologador ou Tester, é o profissional que tem como responsabilidade principal executar os testes planejados pelo Analista de Teste e, se for o caso, reportar os erros encontrados. Para exercer esse papel algumas características são fundamentais, como por exemplo: o Conhecimento das abordagens e das técnicas de teste; o Capacidade para diagnosticar e resolver problemas. A definição dos papéis é bem clara, mas é válido frisar que os papéis do Teste de Software são adaptáveis à realidade das empresas. Além disso, apesar de não ser recomendável, não existe objeção para que uma pessoa assuma mais de um papel no projeto. Responsabilidades A definição das responsabilidades de execução das atividades de teste vem logo após a seleção dos papéis participantes do ciclo de vida do processo. O objetivo é determinar as atribuições de cada componente da equipe. Essa estruturação permite que as atividades estejam bem divididas entre o time do teste. A Tabela 3 lista a matriz de responsabilidades de acordo com cada papel do Processo de Teste. Papel Responsabilidade Testador - Executar os Casos de Teste - Registrar os bugs - Elaborar o relatório dos defeitos encontrados Analista de Teste - Identificar o objetivo do teste - Elaborar os Casos de Teste e o Roteiro de Teste - Preparar a Massa de Teste Automatizador - Elaborar os Scripts de Teste Arquiteto de Teste - Definir e manter a Arquitetura de Automatização dos Testes - Identificar os mecanismos de Testabilidade - Preparar e manter o Ambiente de Teste Gerente de Teste - Elaborar o Plano de Teste - Assegurar o Gerenciamento e o Planejamento apropriados para os testes - Elaborar o Sumário de Teste Tabela 3. Matriz de Responsabilidades dos Papéis do Processo de Teste. Uma grande vantagem de atribuir a responsabilidade a cada papel é evitar incertezas na execução das atividades por parte dos envolvidos. Pensando nisso, a Tabela 4 apresenta a responsabilidade de cada papel distribuída pelas fases do ciclo de vida do Processo de Teste. Papel Etapas Planejar Projetar Executar Entregar Testador Apóia Apóia Executa Apóia Analista Apóia Executa Executa Apóia Automatizador Apóia Executa Executa Apóia Arquiteto Executa Executa Apóia Apóia Gerente Executa Apóia Apóia Executa Tabela 4. Papéis responsáveis pela execução das etapas. Ademais, para que seja possível obter sucesso, a equipe envolvida nos Testes deve ser devidamente capacitada para exercer a função definida. A competência técnica precisa ser avaliada e determinada de acordo com o nível e a complexidade do projeto. Caso contrário, poderá impactar negativamente no resultado final do processo. Melhores Práticas Determinadas práticas são consideradas boas ou até mesmo mais úteis que outras, no entanto, essa definição depende diretamente do contexto do projeto. Em função disso, visando à melhoria do processo, a busca pelas melhores práticas deve ser contínua e permanente. Para exemplificar, foram selecionadas algumas boas práticas já carimbadas no mercado de teste que podem ser úteis em diferentes realidades de projeto, como demonstradas a seguir: · Checklists: ao longo de todo o Processo de Teste de Software, a utilização de um checklist pode trazer grandes vantagens, agregando qualidade e tornando mais fácil a realização dos testes. O objetivo é evitar o esquecimento, os erros e as falhas durante a execução das tarefas atribuídas; · Estimativas: apesar de muitos taxarem como uma atividade complexa de se realizar, a estimativa tem fundamental importância dentro do Processo de Teste. Afinal, para garantir a execução dos testes é necessário que haja tanto um planejamento quanto um gerenciamento dos mesmos. Para isso é importante que seja definida uma estimativa mais próxima do tempo realmente necessário para realização dos testes, o que irá propiciar um melhor gerenciamento das atividades, possibilitando um maior controle do processo; · Metodologias: busque agregar a utilização de normas, técnicas, modelos e metodologias no Processo de Teste. Isso irá contribuir bastante na busca pela melhoria contínua; · Análise de Riscos: analisar os possíveis riscos do processo envolve a identificação das ameaças mais prováveis em conjunto com o exame das vulnerabilidades relacionadas ao software. Combina a probabilidade de ocorrência de uma falha com a gravidade e o grau de prejuízos que os danos poderão acarretar. Visando minimizar os possíveis problemas, a utilização da análise de riscos pode reduzir os custos do projeto e garantir mais qualidade ao software, ao priorizar os testes nos pontos mais relevantes; · Gestão de Defeitos: para um bom desempenho dos testes, um importante fator é o registro e o acompanhamento dos bugs. Porém, apenas descobrir os defeitos não é suficiente, é preciso administrá-los. Utilizar o gerenciamento de defeitos no Processo de Teste possibilita que os riscos sejam minimizados, controlados, evidenciados e o seu impacto não seja grande para o projeto; · Equipe: deixe os papéis e responsabilidades claramente definidos dentro do processo, para que cada membro do time saiba a sua função. Além disso, lembre-se das características que um profissional de teste deve ter. Algumas delas são fundamentais para o desempenho de um bom trabalho. Priorize os profissionais com perfil investigador, criativo, questionador, detalhista, proativo e comprometido; · Lições Aprendidas: realizar um balanço geral dos testes executados, analisando as conquistas e desafios, possibilita que as lições aprendidas e armazenadas sejam utilizadas em projetos futuros, evitando que os erros sejam repetidos e permitindo que os acertos sejam aprimorados, aumentando a qualidade e diminuindo os custos e os riscos do software. Conclusão A utilização de um Processo de Teste contribui para melhorar a efetividade e eficiência do teste em um projeto, agregando confiança e credibilidade ao software. No entanto, para que seja possível colher esses frutos, é preciso um acompanhamento próximo de todas as fases do ciclo de vida. Pode ser que mesmo conduzindo de perto os testes, surjam pressões que impactarão diretamente no rumo do processo implantado. Essa situação possivelmente fará com que nem todas as atividades planejadas sejam executadas. Para amenizar o impacto na qualidade final do projeto, a análise de riscos e a definição de estimativas tornam-se imprescindíveis. Aprender com os erros, aprimorar os acertos, adotar uma gestão de defeitos, ter uma equipe qualificada, utilizar técnicas e ferramentas voltadas para a necessidade do projeto, também são fatores fundamentais para obter o sucesso no processo. É válido ressaltar que independente dos percalços encontrados ao longo do caminho, a implantação de um Processo de Teste contribui bastante para a melhoria do software, tornando o teste organizado e controlado através da definição de um escopo próprio. No entanto, para que seja possível garantir o êxito, além de caminhar em paralelo com o ciclo de desenvolvimento, o processo deve ser revisto continuamente. O objetivo é ampliar a sua atuação e aprimorar as lições aprendidas, possibilitando cada vez mais controle das atividades de teste no projeto. Livro BASTOS, Anderson; RIOS, Emerson; MOREIRA, Trayahú. “Base de Conhecimento em Teste de Software”. 2ª Edição São Paulo: Martins Editora Livraria Ltda, 2007. Links http://asespecialistas.blog.com/2010/10/05/jobs A Adequação dos Cargos da Área de Teste à Realidade das Empresas. http://www.testexpert.com.br/?q=node/101 Formando Equipes Eficientes de Teste de Software. http://www.unieuro.br O Processo de Teste e o Ciclo de Desenvolvimento de Software. http://asespecialistas.blog.com/2010/07/16/testplan Plano de Teste