Prévia do material em texto
QUALIDADE E TESTE DE SOFTWARE - CCT0711 1. UNIDADE I - Fornecer uma visão geral de testes e qualidade de software, entender seus fatores, objetivos e características. 1.1- Revisão Geral de Testes de SW O teste é destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso. Quando se testa o software, o programa é executado usando dados fictícios. Os resultados do teste são verificados à procura de erros, anomalias ou informações sobre os atributos não funcionais do programa. O processo de teste tem dois objetivos distintos: 1. Demonstrar ao desenvolvedor e ao cliente que o software atende a seus requisitos. Para softwares customizados, isso significa que deve haver pelo menos um teste para cada requisito do documento de requisitos. Para softwares genéricos, isso significa que deve haver testes para todas as características do sistema, além de suas combinações, que serão incorporadas ao release do produto. O primeiro objetivo, leva a testes de validação, nos quais você espera que o sistema execute corretamente usando determinado conjunto de casos de teste que refletem o uso esperado do sistema. 2. Descobrir situações em que o software se comporta de maneira incorreta, indesejável ou de forma diferente das especificações. Essas são consequências de defeitos de software. O teste de defeitos preocupa-se com a eliminação de comportamentos indesejáveis do sistema, tais como panes, interações indesejáveis com outros sistemas, processamentos incorretos e corrupção de dados. O segundo objetivo, leva a testes de defeitos, nos quais os casos de teste são projetados para expor os defeitos. Objetivos Gerais Aplicar os conceitos de testes de software no desenvolvimento de sistemas para garantir e aprimorar a qualidade dos softwares. Objetivos Específicos 1. Conhecera necessidade de se adotar um processo testes para garantir a qualidade do desenvolvimento de software. 2. Conhecer as métricas utilizadas nos testes de software. 3. Ser capaz de elaborar um plano de qualidade de software(SQA). 4. Conhecer as normas e padrões de qualidade de software. 5. Conhecer as ferramentas a serem utilizadas para garantir a qualidade no desenvolvimento de software. 6. Aprender a criar planos de mitigação deriscos. 7. Identificar qual modelo se adapta para cada tipo de software. QUALIDADE E TESTE DE SOFTWARE - CCT0711 Testes de unidade Testa um componente isolado ou classe do sistema. Nesta fase, os esforços dos testes estão concentrados nas menores unidades do software produzido. O objetivo é detectar erros de lógica e/ou de implementação em pequenas partes do sistema, independentemente do restante. Consequentemente, cada unidade do sistema é testada isoladamente. Isso contribui para assegurar a correção dos componentes individuais, “mas não garante que a integração dessas partes funcione como o esperado”. Exemplo: dividir (x int, y int ) = z int. Caso tenhamos x=1 e y=0, z será um valor com erro e deverá retornar uma mensagem ao usuário, avisando que a operação é inválida. Caso a expressão seja um dado comum do sistema, para fazer essa validação a autorização deverá ser do usuário, pois faz parte do conjunto de regras de negócio. Testes de integração Testa se um ou mais componentes combinados funcionam de maneira satisfatória. Pode-se dizer que é composto por vários testes de unidade. O ponto central dos testes está voltado para a detecção de falhas provenientes da integração interna dos componentes do sistema. Para isso, os módulos são combinados e testados em conjunto. Essa fase vem logo após os testes de unidade e antecede os testes de sistema, tendo como resultado o sistema integrado e preparado para os testes. Não faz parte do escopo dessa fase testar a interação do sistema produzido com outros sistemas, que por ventura venham a se comunicar. Testes de sistema Objetivo dos testes de sistema: Realizar a execução do sistema como um todo, dentro de um ambiente operacional controlado, para validar a perfeição e requinte na execução de suas funções, acompanhando cenários sistêmicos elaborados pelo profissional de requisitos do projeto. Devem retratar os requisitos funcionais e não funcionais do sistema; Este tipo de teste é realizado por uma equipe de teste independente, e o analista de teste elabora os casos de testes, normalmente em conjunto com os desenvolvedores e atuando em um ambiente controlado, no caso o ambiente de teste; O comportamento de todo o sistema/ produto é definido pelo escopo de um projeto ou programa de desenvolvimento; QUALIDADE E TESTE DE SOFTWARE - CCT0711 O ambiente de teste deve corresponder o máximo possível ao objetivo final, ou ao ambiente de produção. Esta é a fase na qual o software já está completamente integrado. Assim sendo, os testes apontam falhas em relação aos requisitos do sistema, no que diz respeito à comunicação com outros sistemas. Os testes são realizados em condições bastante semelhantes (de ambiente, massa de dados etc.) com as que o usuário utilizará em produção. Os testes de sistema não se limitam aos requisitos funcionais, mas também objetivam testar os requisitos não funcionais. Testes de aceitação Os testes de aceitação são, em geral, uma extensão dos testes de sistema. Nessa fase, o objetivo é verificar se o software está pronto e pode ser usado pelo usuário final. Para isso, verifica-se se o sistema realiza as funções para as quais foi criado, satisfazendo as necessidades do cliente. Os testes são planejados e projetados com o mesmo cuidado e nível de detalhe do teste do sistema. Durante essa fase, os critérios de aceitação são conhecidos, o que permite a automação dos testes de aceitação, além da monitoração e medição. 1.1.1 - Ciclo de Vida de Teste de Software QUALIDADE E TESTE DE SOFTWARE - CCT0711 Descrever o modelo V (verificação e validação), com paralelismo entre as atividades de desenvolvimento e teste de software; Quais são os objetivos do modelo V? Minimizar os riscos do projeto; Melhorar e garantir a qualidade do projeto; Reduzir os custos totais ao longo do ciclo de vida do projeto; Melhorar a comunicação entre as partes interessadas. A definição de verificação e validação abrange muitas das atividades às quais está diretamente ligada a garantia da qualidade de software (SQA). Outra forma o modelo V como um U. QUALIDADE E TESTE DE SOFTWARE - CCT0711 Ao seguir o processo de STLC - Ciclo de Vida de Teste de Software, todas as atividades devem ser feitas de forma planejada e sistemática, ou seja, cada etapa precisa possuir seus próprios objetivos e resultados. Etapas do Ciclo de Vida de Teste de Software: 1. Análise de requisitos Nesta etapa, os profissionais identificam todos os tipos de testes que devem ser executados, comunicam-se com as diversas partes interessadas no projeto, definem prioridade e foco das validações e analisam a necessidade de automatizar os testes. 2. Fase de planejamento Nesta etapa, o Analista de Qualidade elabora um plano de teste, recomenda ferramentas para a validação, estima o tempo de trabalho e o custo aproximado para o projeto, bem como determina as funções e responsabilidades de cada profissional. 3. Integração do caso de teste Nesta etapa, os casos de teste e scripts são elaborados, analisados e aplicados. Posteriormente, os dados são avaliados e editados novamente. 4. Configuração do ambiente de teste A etapa de configuração do ambiente é uma das principais fases do processo de teste. Nesta fase, é necessário verificar a arquitetura utilizada, configurar o ambiente e fazer uma lista de requisitos de hardware e software. 5. Fase de implementação Nesta etapa, os profissionais de teste vão realizar as devidas validações considerando tudo o que foi apontado nos casos de teste. É necessário documentar os resultados dos testes, registrar os erros, reportar os problemas para a equipe de desenvolvimento e,após correção, refazer todas validações novamente. 6. Encerramento Nesta etapa, discute-se os resultados obtidos durante o ciclo de vida de teste, com o propósito de reduzir falhas e custos, além de otimizar os processos e cumprir os objetivos do negócio. É importante que seja elaborado um relatório de qualidade com a cobertura dos testes e os detalhes do projeto. Objetivos Gerais Aplicar os conceitos de testes de software no desenvolvimento de sistemas para garantir e aprimorar a qualidade dos softwares. Objetivos Específicos 1. Conhecera necessidade de se adotar um processo testes para garantir a qualidade do desenvolvimento de software. 2. Conhecer as métricas utilizadas nos testes de software. QUALIDADE E TESTE DE SOFTWARE - CCT0711 3. Ser capaz de elaborar um plano de qualidade de software (SQA – Software Quality Assurance). 4. Conhecer as normas e padrões de qualidade de software. 5. Conhecer as ferramentas a serem utilizadas para garantir a qualidade no desenvolvimento de software. 6. Aprender a criar planos de mitigação deriscos. 7. Identificar qual modelo se adapta para cada tipo de software. Uma peça de software é mais do que várias linhas de código. É geralmente um sistema complexo multi-camada, incorporando dúzias de componentes funcionais separados e integrações de terceiros. Assim, testes de software eficientes devem ir muito além de apenas encontrar erros no código fonte. Tipicamente o teste cobre os seguintes níveis de software. 1.1.2. Classes de Testes Desenvolvedor É sempre responsável por testar unidades individuais (componentes). Em muitos casos, também conduz testes de integração, um passo que leva à construção (e teste) da arquitetura completa do software. Grupo independente de teste ( independent group test – ITG) Normalmente, para que o processo de teste transcorra de forma íntegra, é comum a utilização de um grupo independente de teste, já que as pessoas que criaram o software não devem ser as mesmas que irão realizar os testes. Seria um conflito de interesses, pois foram elas que o “criaram”. Eles se envolvem no projeto após a arquitetura do software estar completada. QUALIDADE E TESTE DE SOFTWARE - CCT0711 PDF UESA-Testes de Software-Introducao-2021-1 PDF UESA-Testes de Software-Tipo_Testes-2021-1 PDF UESA-Testes de Software-Classes-2021-1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1.2. Conceito de qualidade de processo e produto de software Com a constante demanda gerada pela vida moderna, cada vez mais os computadores passam a integrar a rotina diária e a produção de software vem tendo um aumento constante. A exigência por qualidade estende-se também à área de software e pode ser considerada o centro das atenções para o desenvolvimento de software. Por exemplo, do ponto de vista dos fornecedores de software, qualidade não é mais um fator de vantagem no mercado, mas uma condição necessária e pode-se dizer indispensável para que seja possível competir com sucesso. 1.2.1. Definição de Processo Segundo Sommerville, Um processo de software é um conjunto de atividades relacionadas que levam à produção de um produto de software QUALIDADE E TESTE DE SOFTWARE - CCT0711 Segundo Pressman, Processo de software é definido como uma metodologia para as atividades, ações e tarefas necessárias para desenvolver um software de alta qualidade pode ser mapeado os diversos processos de software em um modelo genérico tomando por bases quatro (4) atividades. Segundo Sommerville, essas quatro atividades são: 1. Especificação do software: A funcionalidade do software e as restrições a seu funcionamento devem ser definidas. 2. Projeto e implementação de software: O software deve ser produzido para atender às especificações 3. Validação de software: O software deve ser validado para garantir que atenda às demandas do cliente 4. Evolução de software: O software deve evoluir para atender às necessidades de mudança dos clientes. Perceba que todo processo de software pode ser mapeado em um modelo genérico com essas quatro atividades: especificação, projetos e implementação, validação e evolução. 1.2.2. Dimensões 1.2.2.1. Usuário 1.2.2.2. Desenvolvimento 1.2.2.3. Comercialização Usuário: avalia o software sem conhecer seus aspectos internos, está apenas interessado na facilidade do uso, no desempenho, na confiabilidade dos resultados e no preço; • Desenvolvedores: avaliam aspectos de conformidade em relação aos re- quisitos dos clientes e também aspectos internos do software; • Organização: avalia aspectos de conformidade em relação aos requisitos dos clientes e desenvolvedores e também aspectos de custo e cronograma. 1.2.3. Fatores de Qualidade Segundo Pressman: "Qualidade de software é a conformidade a requisitos funcionais e de desempenho que foram explicitamente declarados, a padrões de desenvolvimento claramente documentados e a características implícitas que são esperadas de todo software desenvolvido por profissionais." Softwares que apresentam bugs podem acarretar diversos problemas, como supressão de negócio, prejuízos financeiros, além de perda de tempo e, principalmente, queda na reputação das empresas. Assim sendo, os processos de gerenciamento de testes ganham cada vez mais importância no contexto do desenvolvimento do software, uma vez que QUALIDADE E TESTE DE SOFTWARE - CCT0711 vulnerabilidades ou falhas podem gerar riscos e causar perdas, em muitos casos, irrecuperáveis. Qualidade de Software pode ser vista como um conjunto de características que devem ser alcançadas em um determinado grau para que o produto atenda as necessidades de seus usuários . A qualidade do produto final é profundamente afetada pela qualidade do processo de desenvolvimento, portanto a qualidade deve ser uma meta a ser alcançada e aprimorada ao longo do processo de software. Da mesma forma como existem diversas interpretações para qualidade de um modo geral, também existem diversas interpretações para qualidade de um produto de software, tais como: • Boa fabricação. • Deve durar muito. • Bom desempenho. • Adaptável às minhas necessidades específicas • Fácil de usar. • Sem defeitos, entre outros. É importante notar que a garantia de qualidade de software (Software Quality Assurance) não é algo com que começamos a nos preocupar depois que o código foi gerado, e sim “ ao longo de todo o processo de engenharia de software”. QUALIDADE E TESTE DE SOFTWARE - CCT0711 1.2.3.1. Externos 1.2.3.2. Internos São exemplos de Fatores externos: confiabilidade, eficiência e facilidade de uso. São exemplos de Fatores internos: modularidade e legibilidade. 1.2.3.3. Exemplos e relação com normas 1.2.4. Métricas de Qualidade 1.2.4.1. Definição 1.2.4.2. Objetivos 1.2.4.3. Categorias Indicadores de qualidade de software: 8 dicas para monitorar o processo e entregar um excelente produto final Durante o processo de desenvolvimento de um sistema, é fundamental monitorar a qualidade para que se possa entregar o melhor produto possível. Nesse sentido, a definição de critérios e a realização de testes são extremamente importantes, bem como o estabelecimento de indicadores de desempenho. Os KPIs - (Key Performance Indicator ou Indicadores-Chave de Desempenho) servem para mensurar a qualidade do sistema e avaliar suas características, fornecendo informações que servirão como base para tomadas de decisão. Não analisar as características de qualidade do sistema e os critérios definidos para refletir tais características pode induzir os desenvolvedores a falsas respostas. Por isso, é necessário estabelecer um padrão de qualidade com base nos resultados que se espera alcançar. QUALIDADE E TESTE DE SOFTWARE - CCT0711 Serão apresentados 8 indicadores de qualidade de software que todo desenvol-vedor pode utilizar. 1 – Total de Defeitos Detectados (TDD) O primeiro item da nossa lista de indicadores de qualidade de software é bastantesimples. Este KPI mede a quantidade de falhas encontradas no sistema durante as fases de teste. O TDD sozinho é um pouco limitado e funciona melhor se combinado com outros KPIs, como veremos mais à frente. 2 – Total de Defeitos Encontrados pelo Cliente (TDC) Se o KPI anterior mede a quantidade de falhas encontradas nas fases de teste, este aqui mensura os bugs detectados pelo cliente. Ou seja, depois que o software é lançado. 3 – Total de Defeitos Removidos (TDR) Este terceiro indicador contabiliza a quantidade de bugs que os desenvolvedores conseguiram remover. Uma boa maneira de analisar o TDR é compará-lo com o TDD. Ou seja, de todos os defeitos detectados, quantos a equipe de TI conseguiu remover? 4 – Eficácia na Detecção de Defeitos Este indicador mostra a eficácia da equipe na hora de detectar bugs. Para calcular, basta aplicar a seguinte fórmula: EDD = TDD / (TDD+TDC) x 100 Suponhamos que a equipe de desenvolvedores encontrou 50 erros no produto durante os testes. Depois que o software foi liberado, os usuários encontraram mais 20 erros que passaram despercebidos pelos programadores. Logo: EDD = 50 / (50+20) x 100 EDD = 71,4% Ou seja, a eficácia da equipe em detectar falhas do software é de 71,4%. 5 – Tempo Médio de Reparo (MTTR) Este indicador de qualidade mostra quanto se leva, em média, para que a equipe de desenvolvedores consiga identificar os erros no sistema e corrigi-los. Quanto menor for o tempo médio de reparo, mais eficiente será a sua equipe. QUALIDADE E TESTE DE SOFTWARE - CCT0711 Este KPI ajuda a garantir que os problemas sejam solucionados em um tempo razoável. 6 – Tempo Médio Entre Falhas (MTBF) O Tempo Médio Entre Falhas indica os intervalos de tempo entre um bug e outro. Ou seja, se uma falha foi detectada hoje, em aproximadamente quanto tempo outra falha surgirá? Para garantir um software de qualidade, este indicador precisa ser o mais alto possível. O cálculo do MTBF é o seguinte: MTBF = (soma do tempo operacional / número total de falhas) 7 – Taxa de sucesso da resolução de defeitos Este KPI tem como objetivo quantificar o total de bugs solucionados e os reincidentes e fazer uma relação entre eles. Se nenhum defeito no produto for reaberto, isso significa que você obteve 100% de sucesso na resolução do problema. Para calcular o resultado desta taxa de sucesso, aplica-se a seguinte fórmula: Taxa de Sucesso da Resolução de Defeitos = Total de Defeitos Resolvidos – Total de Defeitos Reabertos / Total de Defeitos Resolvidos x 100 8 – Satisfação do usuário Encerrando nossos indicadores de qualidade de software, temos a satisfação do usuário final. Para saber se o software que você e sua equipe desenvolveram é realmente bom, nada mais justo que consultar a opinião do usuário. Por isso, faça uma pesquisa de satisfação para saber como eles se sentem ao interagir com o seu produto, as funcionalidades que eles mais gostam e as que eles menos aprovam, quais as sugestões de melhoria e que nota eles dão para o seu software como um todo ou para aspectos específicos (usabilidade, estabilidade, simplicidade, recursos etc.). MÉTRICAS As métricas de teste são um padrão de medidas muito útil para a verificação da efetivi-dade e da eficiência de diversas atividades do desenvolvimento de software A coleta de métricas é a melhor maneira de saber se um processo está sob controle e se os objetivos estão sendo atingidos, principalmente se o projeto for extenso e QUALIDADE E TESTE DE SOFTWARE - CCT0711 complexo. Com os testes, isso não é diferente. As métricas de teste devem ser capturadas para indicar o progresso do processo de testes. Por exemplo, o objetivo dos testes é localizar a maior quantidade de defeitos possível, porém a tendência é que, quanto mais testes forem feitos, menos defeitos passem a ser encontrados. Caso as métricas indiquem que os defeitos aumentam cada vez mais, há indícios de problemas no processo de desenvolvimento !! Métricas são o processo em que números ou símbolos são conferidos a atributos de entidades de forma a caracterizá-las de acordo com regras claramente definidas. As métricas fazem um mapeamento do mundo empírico para o formal. Elas são uma medida quantitativa do grau em que um sistema, componente ou processo apresenta um determinado atributo. Medida é a atribuição empírica, objetiva de números, de acordo com regras derivadas de um modelo ou uma teoria, a atributos de objetos ou eventos com o intuito de descrevê-los. Focando a análise nas métricas de software, podemos dizer que a métrica de software é a aplicação contínua de técnicas de medição ao processo de desenvolvi-mento de software e seus produtos, para fornecer informações gerenciais significa-tivas e pontuais, possibilitando a melhoria dos processos e produtos. Categorização de métricas: Métricas diretas (fundamentais ou básicas): medida realizada em termos de atributos observados (usualmente determinada pela contagem). Ex.: custo, esforço, no. linhas de código, capacidade de memória, no. páginas, no. diagramas, etc. Métricas indiretas (derivadas): medidas obtidas a partir de outras métricas. Ex.: complexidade, eficiência, confiabilidade, facilidade de manutenção. Métricas orientadas a tamanho: são medidas diretas do tamanho dos artefatos de software associados ao processo por meio do qual o software é desenvolvido. Ex.: esforço, custo, no. KLOC, no. páginas de documentação, no. Erros. Métricas orientadas por função: consiste em um método para medição de software do ponto de vista do usuário, determinando de forma consistente o tamanho e a complexidade de um software. Métricas de produtividade: concentram-se na saída do processo de engenharia de software. Ex.: no. de casos de uso/iteração. Métricas de qualidade: Oferecem uma indicação de quanto o software se adequa às exigências implícitas e explícitas do cliente.Ex.: erros/fase . Métricas técnicas: concentram-se nas características do software e não no processo por meio do qual o software foi QUALIDADE E TESTE DE SOFTWARE - CCT0711 Podemos dividir as métricas em diretas e indiretas. As métricas diretas ou básicas são resultantes de atributos observados, determinados habitualmente pela contagem, como, por exemplo, custo, esforço, número de linhas de código, entre outros. As métricas indiretas ou derivadas são obtidas a partir de métricas diretas, e citamos como exemplo a complexidade e a eficiência. Uma métrica direta é presumivelmente válida, pois não depende da medida de outros atributos, enquanto que as métricas derivadas dependem da validade das métricas diretas. Quando as métricas são medidas diretamente, normalmente não têm um significado importante para o processo, como, por exemplo, o número de classes de um modelo analisado isoladamente. Uma das formas de adicionar valor a essa informação é através da combinação com outras métricas, como o número de operações e atributos de cada classe, possibilitando estimar o tamanho do sistema. Os enfoques das métricas são a produtividade e a qualidade. Quando é medido um processo, é avaliada a produtividade. Quando medido um produto, a qualidade é que está sendo avaliada. As métricas são importantes para entender o comportamento e o funcionamento do produto ou do processo, para controlar os processos e serviços, para prever valores de atributos e para tomar decisões a partir de padrões, metas e critérios. Os objetivos das métricas devem ser estabelecidos a partir das necessidades da organização. As métricas têm que ser definidas, priorizadas, documentadas, revisadas e atualizadas. Um programa de métricas envolve planejamento, medição, análise dos dados, tomada de decisão e implementação dessas decisões. É um processo contínuo e sempre sujeito a melhorias. Alguns objetivos do uso de métricas de teste: Analisar os defeitos: obter informações relacionadas às origens dos defeitos, à forma como foram detectados, quando foram detectados, entre outros. Analisar aeficácia e a eficiência dos testes e do processo de testes como um todo Avaliar a produtividade do processo. Analisar o retorno de investimento. Determinar o esforço para automação dos testes. Calcular o tempo e os recursos gastos com os testes. Avaliar o andamento do teste, em relação ao cronograma, através do status do teste. Planejar adequadamente os recursos, prazos e benefícios do processo de testes. Identificar áreas que necessitam de melhorias. Adequar as suítes de teste de acordo com o nível de cobertura necessário. Melhorar a exatidão das estimativas. Formar uma baseline para as estimativas. Auxiliar no gerenciamento do projeto e da execução dos testes. Auxiliar nos contratos de software. QUALIDADE E TESTE DE SOFTWARE - CCT0711 Auxiliar no relacionamento com os clientes. Auxiliar na melhoria do processo de desenvolvimento do software, através de dados quantitativos e qualitativos, que possibilitam identificar as melhores práticas, de forma mais objetiva. Avaliar os benefícios de novos métodos e ferramentas, através de evidências objetivas, pragmáticas. Embasar eventuais solicitações de novas ferramentas e treinamento. Avaliar o impacto na qualidade e na produtividade do produto ou do processo que eventuais variações podem causar. Viabilizar a tomada de decisão de forma ágil (avaliação de escolhas, comparação de alternativas e monitoramento de melhorias). Detectar tendências nos dados que mostrem a necessidade de mais testes em determi-nadas áreas. Identificar áreas de risco que necessitem de mais testes. Algumas perguntas que podem ser respondidas com o uso de métricas de teste de software: Quando parar de testar? Quanto tempo falta para terminar o ciclo de testes? Quanto já foi testado? Os testes serão concluídos dentro do prazo previsto? Quanto teste ainda tem que ser feito em determinada área? Já foi testado o suficiente? Qual o custo dos testes? Qual o custo para corrigir os defeitos? Quantos defeitos podemos esperar? Quais os tipos de defeitos encontrados? Quantos defeitos já foram corrigidos? Quais as áreas do software que têm mais ou menos defeitos? Quão estável é a funcionalidade que está sendo testada? Qual a técnica de teste que é mais efetiva? Estamos testando de forma difícil ou inteligente? Temos um programa de testes robusto ou uma suíte de testes fraca? Quais os defeitos prioritários? Qual o testador que encontrou mais defeitos? Quantos defeitos foram localizados por um determinado testador? Quantos defeitos foram encontrados pelo usuário? Normalmente, é difícil para a equipe de testes responder tais perguntas. Pode ser uma tarefa bastante desconfortável, pois muitas vezes os testadores não estão preparados para apresentar os dados solicitados, ou então os dados disponíveis não são adequados, até mesmo porque, em muitos casos, não estavam cientes da necessidade de fornecer tais informações. Em função disso, o testador acaba deixando de lado as tarefas de teste para providenciar as informações solicitadas, e pode tomar bastante tempo, causando o atraso nas tarefas de teste, o que indica falta de planejamento e gerenciamento. Esse tipo de problema pode ser resolvido com gerenciamento adequado das métricas de teste, ou seja, as métricas são uma parte importante do trabalho da equipe de teste Para a elaboração de um plano de métricas, devem ser observadas as seguintes questões: QUALIDADE E TESTE DE SOFTWARE - CCT0711 Por que as métricas satisfazem o objetivo? Que métricas serão coletadas? Como serão definidas? Como serão analisadas? Quem fará a coleta? Quem fará a análise? Quem verá os resultados? Como será feito? Quais as ferramentas, técnicas e práticas que serão usadas para apoiar a coleta e a análise das métricas? Quando e com que frequência as métricas serão coletadas e analisadas? Onde os dados serão armazenados? Alguns fatores são fundamentais, como o treinamento e o incentivo da equipe que vai trabalhar com as métricas, e a seleção de um conjunto de métricas coerentes, que agregam valor ao processo. Além disso, é importante que na implantação do processo sejam utilizadas métricas mais simples, para que a equipe possa entender a importância das métricas antes de aumentar a quantidade de dados a serem coletados. A coleta dos dados é um fator crítico do processo e deve começar o mais cedo possível, de preferência na fase de definição dos requisitos. Na captura das métricas de teste, em muitos casos, os dados começam a ser capturados na fase de testes ou, então, na pior das hipóteses, quando o produto é liberado ao cliente. Essa decisão depende do projeto ou dos objetivos da organização O uso de métricas de teste tem um custo, porém deve ser levado em consideração o fato de que o trabalho dos testadores se torna mais eficiente em função das métricas. Essas questões motivam a gerência para o uso de métricas de teste, ou seja, têm um trabalho muito melhor por um custo menor. Um dos erros de entendimento é de que os testadores não produzem nada além de possíveis defeitos. Realmente, eles não tomam nenhuma ação para corrigir os defeitos, porém tais defeitos devem ser removidos durante ou como resultado do esforço de teste, senão o processo de testes será considerado falho. Os métodos e métricas utilizadas pelos testadores adicionam valor ao produto final. 1.3. Plano de garantia de software - Software Quality Assurance (SQA) 1.3.1. Objetivos 1.3.2. Elaboração 1.3.3. Abordagens Segundo Pressman (2002), Software Quality Assurance é um padrão sistema- tico e planejado de ações que são exigidas para garantir a qualidade de Software. Essas ações englobam: 1. Aplicação de Métodos Técnicos : ajudam o analista a conseguir uma es- pecificação de elevada qualidade e o projetista a desenvolver um projeto de elevada qualidade. 2. Realização de Revisões Técnicas Formais : para avaliar a qualidade da especificação e do projeto. QUALIDADE E TESTE DE SOFTWARE - CCT0711 3. Atividades de Teste de Software : para ajudar a garantir uma detecção de erros efetiva. 4. Aplicação de Padrões e Procedimentos Formais no processo de enge- nharia de software. 5. Processo de Controle de Mudanças : atividade que faz parte do gerencia- mento de configuração de software. 6. Mecanismos de Medição : para ser possível rastrear a qualidade de software 7. Anotação e Manutenção de Registros : procedimentos para a coleta e disseminação de informações de garantia de qualidade de software. Abordagens Formais para a Garantia do SGA As principais abordagens são: 1. Prova de Corretitude ― se o modelo dos requisitos (especificação) e a lin- guagem de programação podem ser representadas de uma maneira rigo- rosa, deveria ser possível aplicar provas matemáticas de corretitude para demonstrar que o programa atende exatamente suas especificações. 2. Garantia Estatística de Qualidade ― implica coletar e categorizar infor- mações sobre os defeitos do software; tentar descobrir a causa de cada defeito; isolar 20% das causas (princípio de Pareto); corrigir os problemas que causaram os defeitos 3. Proesso Sala Limpa ( Cleanroom ) ― combina a prova de corretitude e a Garantia Estatística de Qualidade para melhorar a qualidade do produto software A ISO/IEC 9126, publicada em 1991, sendo uma das mais antigas da área de qualidade de software e já possui sua tradução para o Brasil, publicada em agosto de 1996 como NBR 13596 !!!! Estas normas listam o conjunto de características que devem ser verificadas em um software para que ele seja considerado um “software de qualidade”. São seis (6) grandes grupos de características, cada um dividido em algumas subcaracterísticas, os quais são descritos abaixo: QUALIDADE E TESTE DE SOFTWARE - CCT0711 Um grande desafio para qualquer programa de qualidade, considerado crítico, é possibilitar que qualquer pessoa faça revisões no trabalho de profissionais experientes. Os gerentes sempre queremos melhores profissionais para projetar o produto, mas geralmente o SQA não pode tê-los. É necessário concentrar esforços em métodos de SQA que permitam um desenvolvi-mento que possa ser revisado também por pessoas que não são desenvolvedores. Qual o papel do SQA? Monitorar os métodos e os padrões que os engenheiros de software usam e verificar se eles estão usando apropriadamente seus conhecimentos. É importante compreender que as pessoas podem ser experientes em SQA sem, no entanto, serem experientes em projetos de software. QUALIDADE E TESTE DE SOFTWARE - CCT0711