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.