Prévia do material em texto
Fundamentos do Teste de Software Processo de Software Conforme Pressman 2011, um processo é um conjunto de atividades, ações e tarefas que são realizadas no desenvolvimento de um produto de trabalho. Contudo, é importante frisar que este processo não é uma receita de como desenvolver um sistema, e sim, uma abordagem que permite aos desenvolvedores escolher qual conjunto de atividades, tarefas e ações é o mais adequado para construção de um determinado produto. Metodologia Genérica sugerida por Presman: Comunicação: entre partes interessadas para definir características do sistema; Planejamento: informações, orçamento, prazos, etc; Modelagem: modelo do sistema para melhor identificar as necessidades; Construção: codificação e testes; Emprego: entregue ao usuário final, que fornece feedback sobre o sistema; As atividades podem ser executadas várias vezes, produzindo um incremento de software a cada iteração ou ciclo de atividades; Todos os processos devem incluir 4 atividades basicas: Especificação de software; Projeto e implementação de software; Validação de software; Evolução de software. Existem também as atividades de apoio, fornecendo suporte ao logo do projeto; Fundamentos do Teste de Software 1 Especificação de Software Também chamada de Engenharia de Requisitos. Compreensão e definição dos serviços requisitados do sistema e identificação de restrições relativas à operação e ao desenvolvimento do software. Pode ser formada por várias atividades, dentro delas: Estudo de viabilidade Elicitação e análise de requisitos Especificação dos requisitos Validação dos requisitos Não necessariamente essas etapas ocorrem de forma sequencial. Projeto e Implementação de software Conversão de uma especificação do sistema em um sistema executável. Dentre as atividades executadas, podemos destacar: projeto de arquitetura, de interface, de componentes e de bancos de dados. Validação de Software Mostrar que um software se adequa às suas especificações ao mesmo tempo que satisfaz as especificações do cliente do sistema. São realizados diferentes tipos de testes, como testes de desenvolvimento (cada componente é testado individualmente), testes de sistemas (integração) e testes de aceitação (dados reais fornecidos pelos clientes). A realização de testes é intercalada com o processo de desenvolvimento. Evolução de Software O desenvolvimento de software é um processo evolutivo. Sistemas estão em constante evolução. Modelos de processos de software Fundamentos do Teste de Software 2 Temos alguns modelos, dentre eles: o modelo em cascata encadeamento entre etapas etapas bem definidas é preciso que os requisitos estejam bem definidos só conheceremos uma versão operacional do sistema ao final pode ser utilizado quando: requisitos fixos etapas podem ocorrer de forma linear o desenvolvimento incremental desenvolver uma versão inicial do software, obter um feedback e continuar por meio da criação de várias versões até que um sistema adequado seja desenvolvido. custo de mudanças é reduzido problema: As constantes alterações tendem a corromper a estrutura do sistema, fazendo com que incorporar futuras mudanças seja cada vez mais difícil e oneroso Geralmente a documentação não é tão boa a engenharia de software orientada a reuso reutilização de partes de código Qualidade de Software Atributos de qualidade de software: Fundamentos do Teste de Software 3 Dependendo do tipo de aplicação a ser desenvolvida, pode-se priorizar atributos mais importantes em detrimento de outros Garvin 1987 propõe oito dimensões ou categorias de qualidade: desempenho, recursos, confiabilidade, conformidade, durabilidade, facilidade de manutenção, estética e percepção. Fatores de qualidade de McCall Dilema da Qualidade Se produzimos um sistema de software de péssima qualidade, perdemos porque ninguém irá querer comprá- lo. Se, por outro lado, gastamos um tempo infinito, um esforço extremamente grande e grandes somas de dinheiro para construir um software absolutamente perfeito, então isso levará muito tempo para ser completado, e o custo de produção será tão alto que iremos à falência. Ou perdemos a oportunidade de mercado ou então simplesmente esgotamos todos os nossos recursos. Dessa maneira, os profissionais desta área tentam encontrar Fundamentos do Teste de Software 4 aquele meio- termo mágico onde o produto é suficientemente bom para não ser rejeitado logo de cara, como, por exemplo, durante uma avaliação, mas também não é o objeto de tamanho perfeccionismo e trabalho que levaria muito tempo ou que custaria demasiadamente para ser finalizado. PRESSMAN, 2011, p. 365 O dilema de qualidade leva à discussão sobre o custo da qualidade. Pressman 2011 explica que o custo da qualidade inclui todos os custos necessários para a busca de qualidade, assim como os custos causados pela falta dela. Este custo pode ser dividido em: custos associados à prevenção atividades de gerenciamento, de atividades técnicas, de planejamento de testes e o custo de todo o treinamento associado a essas atividades. custos de avaliação coleta de dados avaliação de métricas testes depuração custos de falhas podem ser custo de falhas internas se ocorrem quando se detecta erros em um produto antes de ele ser entregue, e externo se for após a entrega do sistema. Garantia de Qualidade de Software Pressman 2011 classifica o grupo de SQA como “um serviço de defesa do cliente, pois as pessoas que realizam a SQA devem examinar o software sob o ponto de vista do cliente .ˮ Espectro de preocupações e atividades relevantes para a garantia da qualidade: Padrões Fundamentos do Teste de Software 5 Revisões e auditoria revisões encontram erros auditoria investiga se as diretrizes de qualidade estão sendo seguidas Testes garantir que sejam planejados e conduzidos adequadamente. coleta e análise de erros/defeitos Gerenciamento de mudanças Educação fundamental para melhores práticas Gerência dos fornecedores caso seja obtido software de um fornecedor externo Administração da Segurança Proteção avaliar o impacto de falhas Administração de riscos A garantia da qualidade de software é composta por uma série de tarefas associadas a dois elementos: engenheiros de software e o grupo de SQA. Enquanto os engenheiros tratam da qualidade por meio da aplicação de medidas e métodos técnicos, o grupo de garantia de qualidade tem a responsabilidade pelo planejamento, supervisão, manutenção de registros, análise e relatórios relativos a mesma. Metas e atributos de qualidade de software: Fundamentos do Teste de Software 6 Observe que erros e defeitos são tratados como coisas distintas. O defeito é uma deficiência mecânica ou algorítmica que se ativado pode levar a um erro NAKAGAWA, 2015. estratégia para a estatística da garantia da qualidade mais utilizada na indústria atual, conforme Pressman 2011, é denominada Seis Sigma, que define três etapas essenciais: Definir as necessidades do cliente e os artefatos passíveis de entrega, bem como as metas de projeto utilizando métodos bem definidos da comunicação com o cliente. Medir o processo existente e seu resultado para determinar o desempenho da qualidade atual (reunir métricas para defeitos). Analisar as métricas para defeitos e determinar as poucas causas vitais. Caso já exista gestão de qualidade, e seja necessário um aperfeiçoamento, a estratégia Seis Sigma sugere duas etapas adicionais: melhorar o processo por meio da eliminação das causas fundamentais dos defeitos e controlar o processo para garantir que trabalhos futuros não reintroduzam as causas dos defeitos. Pressman 2011 destaca que este método é conhecido como método DMAIC Fundamentos do Teste de Software 7 (Definir, Medir, Analisar, Aperfeiçoar e Controlar). Tempo médio entre falhas = tempo médio para falhar + tempo médio para reparar Pode apresentar 2 problemas: Esta medida projeta um períodoentre falhas, mas não fornece uma projeção da taxa de falhas. Pode ser mal interpretada como sendo tempo de vida médio, muito embora não seja esse o significado. É importante notar que o tempo médio entre falhas não se baseia em tempo de relógio tradicional e sim, em tempo de CPU. Ainda é preciso também desenvolver uma medida de disponibilidade de software, que segundo Pressman 2011, é a probabilidade de que um programa esteja operando de acordo com os requisitos em um dado momento. Processos de Testes de Software O projeto de software possui 4 atividades fundamentais: especificação, projeto e implementação, validação e evolução do software. O teste de software está incluído da etapa de validação. O primeiro desafio é fazer com que o processo de teste e o de desenvolvimento sejam executados paralelamente desde o início do ciclo de vida do software. Ciclo de vida do processo de teste Fundamentos do Teste de Software 8 As etapas podem variar, de acordo com a metodologia escolhida. A distribuição dos tempos estimados para cada uma das etapas de acordo com Eliza e Lagares 2012 são: Planejamento 10% do tempo. Projeto 40% do tempo. Execução 45% do tempo. Entrega 5% do tempo. As atividades que são executadas durante o planejamento são: 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 monitoramento e controle dos testes. O ambiente de teste é toda a infraestrutura em que o teste será executado. Permite proporcionar, em condições conhecidas e controladas, a realização de testes. Durante o estágio de projeto, as seguintes atividades são executadas: 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. É preciso verificar se o ambiente está propício e estável para que os testes sejam executados com sucesso. As atividades que ocorrem durante o processo de execução de testes são: Execução dos casos de teste. Execução dos scripts de teste. Gestão de defeitos. Atualização da massa de teste. Fundamentos do Teste de Software 9 Avaliação do plano de teste. Avaliação dos resultados do teste. Formalização da evidência dos testes. Por fim, temos a última etapa do ciclo, na qual verifica-se os objetivos de testes foram alcançados e se os testes foram executados conforme o projeto, para que seja feita a entrega do sistema. Nesta etapa também são realizados os testes de aceitação, a partir dos quais o usuário valida se o software desenvolvido atende ao que foi solicitado. As atividades executadas durante a última etapa do ciclo são: 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. Para cada uma das etapas do ciclo de vida do processo de teste são produzidos artefatos, que têm o propósito de registrar e acompanhar a evolução do projeto e verificar se os resultados obtidos estão de acordo com o que foi especificado. Conforme Eliza e Lagares 2012, o artefato de caso de teste estabelece o que será testado no sistema, listando um número adequado de testes que englobe as principais funcionalidades do software. Um caso de teste possui basicamente a seguinte estrutura: Título – define o que será executado no caso de teste. Pré-condição – estado obrigatório do sistema antes do início do teste. Fundamentos do Teste de Software 10 Passos ou roteiro – ações que deverão ser executadas para verificar se o software cumpre com o que foi especificado. Resultado esperado – o que se deseja obter ao final da execução do roteiro do caso de teste. Não necessariamente haverá uma pessoa da equipe para cada papel. Fundamentos do Teste de Software 11