Zusammenfassung der Ressource
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.
- 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.
- 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.