Mapa mental
Engenharia de software

Mapa mental: Engenharia de software: testes e validação
Conteúdo do mapa
Engenharia de software
Testes de Software
- Qual é a importância dos testes de software?
- Certificar que o software esta funcionando corretamente.
- As atividades fundamentais para testes são:
- Testes de componentes (teste de partes do sistema).
- Os testes de componentes objetivam descobrir defeitos, testando componentes individuais do programa (funções, objetos, componentes reusáveis).
- Teste de sistema (teste do sistema como um todo)
- O teste de sistema integra esses componentes, para formar subsistemas ou sistemas completos, com o objetivo de verificar se o sistema atende aos requisitos funcionais e não funcionais, além de verificar, também, se o sistema não se comporta de maneira inesperada.
- Testes de componentes (teste de partes do sistema).
- Metas do processo de testes de software
- Demonstrar ao desenvolvedor e ao cliente que o software atende aos requisitos (testar cada requisito nos documentos de usuário e de sistema).
- Descobrir falhas ou defeitos no software que apresenta comportamento incorreto, não desejável ou em não conformidade com sua especificação.
- O teste de defeitos está relacionado à remoção de todos os tipos de comportamentos indesejáveis de sistema, como travamentos, interações indesejáveis com outros sistemas, cálculos incorretos e corrompimento de dados.
- Para o teste de validação: um teste bem sucedido é aquele em que o sistema funciona corretamente.
- Para o teste de dPara o teste de defeitos: um teste bem sucedido é o que expõe um defeito que causa o funcionamento incorreto do sistema.
- Os testes não podem demonstrar que um software é livre de defeitos ou que se comportará conforme o especificado, em todas as circunstâncias.
- -A meta do teste de software é convencer os desenvolvedores e clientes do sistema de que o software é bom o suficiente para o uso operacional.
- -O teste é um processo com o objetivo de se atingir a confiabilidade do software.
- Quem realiza os testes
- Os programadores têm a responsabilidade de testar os componentes que desenvolveram.
- Na próxima etapa, uma equipe é responsável por integrar os módulos de diferentes desenvolvedores e testar o sistema como um todo.
- Para sistemas críticos, pode-se utilizar um processo mais formal, onde testadores independentes são responsáveis por todos os estágios do processo de teste.
- Tipos de testes
- 1.Integração
- 2.Componentes
- 3.Projeto de casos de teste
- 4.Automação de testes
- Os testes podem mostrar somente a presença de erros em um programa. Eles não podem demonstrar que não existam defeitos remanescentes.
- O teste de componentes é de responsabilidade do desenvolvedor de componentes. Outra equipe de testes geralmente executa os testes do sistema.
- Ao testar sistemas, deve-se tentar “quebrar” o sistema usando experiência e diretrizes para escolher os tipos de casos de teste eficazes na descoberta de defeitos em outros sistemas.
- O teste de interfaces tenta descobrir defeitos nas interfaces dos componentes compostos. Defeitos de interface podem surgir devido a erros de leitura da especificação, má interpretação da especificação ou erros ou suposições inválidas de timming.
- O teste estrutural baseia-se na análise de um programa para determinar seus caminhos, e no uso dessa análise para ajudar na seleção dos casos de teste.
- A automação reduz os custos de teste pelo apoio ao processo de teste com uma variedade de ferramentas de software.
- Qual é a importância dos testes de software?
Verificação e Validação
- Qual é a importância dos processos de Verificação e Validação?
- É o nome dado aos processos de verificação e análise, a fim de assegurar que o software cumpra com suas especificações e atenda às necessidades dos clientes que estão pagando por ele.
- Incluem as tarefas:
- 1.revisões dos requisitos;
- 2.revisões de projeto;
- 3.inspeções de código;
- 4.testes de produto.
- Valição:
- Assegurar que o software atenda às expectativas do cliente, garantindo que ele faça o que o cliente espera que faça.
- Verificação:
- Checar se o software cumpre com suas especificações, ou seja, se o sistema cumpre com seus requisitos funcionais e não funcionais.
- Nível de confiabilidade depende de:
- Função do software: o quão crítico o software é para a organização (objetivo para o qual ele foi desenvolvido).
- Expectativas do usuário: usuário vem se tornando mais exigente e, hoje, é menos aceitável entregar sistemas não confiáveis, o que implica em maior dedicação aos processos.
- Ambiente de mercado: o esforço a ser empregado neste processo depende de vários fatores, tais como: concorrência, preço que o cliente está disposto a pagar, cronograma.
- Abordagens para a verificação e análise de sistemas neste processo
- Inspeções de software ou revisões por pares: analisam e verificam as representações do sistema (documento de requisitos, diagramas de projeto, código-fonte do programa). Podem ser aplicadas em todos os estágios do processo. São técnicas estáticas, pois não requerem que o sistema seja executado.
- •Testes de software: executam uma implementação do software com os dados de teste, a fim de examinar as saídas e o comportamento operacional, verificando-se, assim, se o sistema se comporta conforme o esperado. São técnicas dinâmicas.
- Estrutura do plano de testes
- 1.Processo de teste: descrição das fases principais do processo de teste.
- 2.Rastreabilidadede requisitos: todos os requisitos devem ser individualmente testados.
- 3.Itens testados: especificação dos produtos do processo de software.
- 4. Cronograma de testes: apresentar um cronograma geral de testes e alocação de recursos para ele.
- 5. Procedimentos de registro de testes: trata-se do registro dos resultados dos testes. O processo de teste deve ser auditado para verificar que foi conduzido corretamente.
- 6.Requisitos de hardware e de software: ferramentas de software necessárias e a utilização estimada de hardware.
- 7.Restrições: o que afeta o processo de teste (por exemplo: falta de pessoal, falta de recursos).
- Principais vantagens da Verificação e Validação em relação aos testes:
- 1.Inspeções
- 2.Revisões
- Análise estática automatizada
- 12Análise estática automatizadaAnalisadores estáticos de programa são ferramentas de software que analisam o código-fonte de um programa e detectam possíveis defeitos e anomalias.
- Não requerem que o programa seja executado.Percorrem o texto do programa e reconhecem os diferentes tipos de declarações.
- Detecção de anomalias no programa (variáveis sem iniciação, varáveis não utilizadas, dados com valores excedidos, etc.), podendo resultar em erros de programação e de omissões).
- Análise estática automatizada é mais bem utilizada com as inspeções de software.
- Os estágios envolvidos incluem:
- Análise do fluxo de controle: destaca loops com múltiplos pontos de saída ou de entrada e código inacessível.
- Análise da utilização de dados: detecta variáveis que são utilizadas sem prévia iniciação, variáveis declaradas mas nunca utilizadas, etc.
- Análise de interface: verifica a consistência das declarações de rotinas e procedimentos e seu uso; funções e procedimentos que são declarados e nunca chamados ou resultados de funções que nunca são utilizados.
- Análise do fluxo de informações: identifica as dependências entre as variáveis de entrada e as de saída.
- Análise de caminho: identifica todos os caminhos possíveis no programa, e exibe as declarações executadas nesse caminho.
Gerenciamento de Qualidade
- Por que a qualidade de software é tão importante?
- Qualidade de Software
- Aprimoramento nos último anos (adoção de novas técnicas e tecnologias).
- Conscientização da importância do gerenciamento de qualidade de software.
- Adoção de técnicas de gerenciamento de qualidade provenientes da manufatura de software.
- Noção de qualidade é diferente em produtos manufaturados e em sistemas de software.
- Por que a qualidade de software é diferente da qualidade de produtos manufaturados?
- A especificação deve ser orientada para as características do produto que o cliente deseja. Mas, o desenvolvedor também pode ter requisitos que não são incluídos na especificação.
- Dificuldade em especificar determinadas características de qualidade de maneira não ambígua.
- A dificuldade em escrever especificações de software completas pode fazer com que um produto não seja considerado de alta qualidade, por não corresponder às expectativas do cliente.
- Alguns atributos de software como facilidade de manutenção, proteção ou eficiência não podem ser especificados explicitamente, mas são percebidos no sistema
- “Cultura de qualidade”: desenvolvida pelos gerentes de qualidade.
- A criação de padrões e procedimentos são a base do gerenciamento de qualidade. Entretanto, é reconhecido que existem aspectos que não podem ser incorporados em padrões (aspectos intangíveis –elegância do software, capacidade de leitura).
- Documentação de qualidade
- Documentar o gerenciamento da qualidade significa registrar o que cada equipe dentro do projeto faz.
- Técnica utilizada principalmente no desenvolvimento de sistemas de grande porte e complexos.
- Ajuda a verificar se tarefas não foram “esquecidas”.
- É um meio de comunicação ao longo da existência de um sistema.
- Permite que os responsáveis pela evolução do sistema acompanhem o que a equipe de desenvolvimento está fazendo.
- O que é qualidade?
- “Grau de conformidade de um sistema, componente ou processo com os respectivos requisitos.” (Glossário do IEEE).
- “Grau de conformidade de um sistema, componente ou processo com as necessidades e expectativas de clientes ou usuários.”
- A qualidade é definida por uma coleção de atributos, tais como funcionalidade, confiabilidade, satisfação do usuário e desempenho, considerados importantes, mas parciais.
- Garantia de qualidade
- “Conjunto planejado e sistemático de ações necessárias para estabelecer um nível adequado de confiança de que um item ou produto está em conformidade com seus requisitos técnicos.” (Glossário do IEEE).
- “Conjunto planejado e sistemático de meios para garantir à gerência que os padrões, métodos, práticas e procedimentos definidos por um processo são aplicados.” (definição constante do CMMI).
- Gerenciamento de qualidade de software
- Garantia de qualidade: estabelecimento de um framework de procedimentos organizacionais e padrões que conduzem a um software de alta qualidade.
- Planejamento de qualidade: seleção de procedimentos e padrões apropriados deste framework, adaptados para um projeto de software específico.
- Controle de qualidade: definição e aprovação de processos que assegurem que a equipe de desenvolvimento de software tenha seguido os procedimentos e os padrões de qualidade de projeto.
- Gerenciamento de qualidade de processo envolve...
- 1.Definição de padrões de processo (como e quando as revisões devem ser conduzidas).
- 2.Monitoração do processo de desenvolvimento para assegurar que os padrões estão sendo seguidos.
- 3.Relato do processo de software para a gerência de projeto e para o comprador do software.
- 15Importância dos padrões de software
- São baseados no conhecimento sobre as melhores e as mais apropriadas práticas para a empresa.
- Eles provêem um framework para a implementação do processo de garantia de qualidade.
- Eles ajudam na continuidade (adoção das mesmas práticas), reduzindo o esforço do aprendizado quando se inicia um novo trabalho.
- Principais instituições nacionais e internacionais que desenvolvem padrões de projetos:
- US DoD (United States Department of Defense).
- ANSI (American National Standards Institute).
- BSI (British Standards Institution).
- NATO (North Atlantic Treaty Organization).
- IEEE (Institute of Electrical and Eletronic Engineers).
- MPS-BR (Melhoria de Processo de Software Brasileiro)
- As equipes de garantia de qualidade que desenvolvem padrões para uma empresa devem tomar como base os padrões nacionais e internacionais. Prover ferramentas de software para apoiar os padrões.
- Conjunto internacional de padrões que pode ser usado no desenvolvimento de um sistema de gerenciamento de qualidade em todas as indústrias.
- Prover ferramentas de software para apoiar os padrões.
Informações
- Descrição
- Mapa Mental sobre Engenharia de software, criado por pcbsytem em 04-06-2014.
- Criado por
- pcbsytem
- Visualizações
- 455
- Avaliação