Escolar Documentos
Profissional Documentos
Cultura Documentos
• Erro: é qualquer erro humano que resulta em algo incorreto. Um erro acontece
quando existe uma diferença entre o valor obtido em uma operação matemática e o
valor que era esperado.
• Defeito: é qualquer inconsistência do software, evidenciando algo que foi
implementado ou programado de maneira incorreta. Um exemplo acontece quando
existem incorreções nas linhas de código-fonte. Todo defeito é causa de erros, mas,
por outro lado, se a linha que estiver incorreta jamais for executada, o erro não vai
acontecer.
• Falha: é qualquer comportamento inesperado realizado pelo software. Uma falha
pode ter sido gerada por vários erros, mas alguns erros podem nunca gerar uma falha.
É o caso de uma operação aritmética que é programada e não é usada.
• Teste unitário
Normalmente é realizado pelos próprios desenvolvedores, nas porções menores do
software que estão sendo desenvolvidas no momento, de maneira individualizada. Ele
serve para verificar se as partes do software funcionam de maneira isolada das demais
partes do sistema.
• Teste de regressão
Tem a função de testar cada nova versão do software toda vez que uma
funcionalidade for modificada. Ou seja, toda a parte pronta do software será testada
novamente para verificar se alguma novidade resultou em problema. Esse tipo de
teste é muito importante para indicar se erros que já haviam sido corrigidos não
voltaram a se manifestar.
• Teste de integração
Tem como propósito verificar se as porções menores, testadas anteriormente pelos
testes unitários, têm condições de funcionar em conjunto, formando um sistema. Esse
teste é muito importante, pois funcionalidades que operam perfeitamente de maneira
isolada podem apresentar problemas quando tentam, por exemplo, realizar o fluxo de
dados de uma parte do sistema para outra.
• Teste de volume
Esse teste tem como objetivo avaliar até que limites um software pode ser utilizado,
ou seja, qual é o seu limite de suporte a informações ou tráfego sem que apresente
nenhum problema.
• Teste de performance
Divide-se em outros três tipos, listados a seguir.
• Teste de carga
Verifica o software como um todo, em condições normais de uso, avaliando o tempo
de resposta das operações, quantas operações podem ser executadas em
determinado período de tempo, quantos usuários simultâneos gravando dados podem
existir, entre outros aspectos.
• Teste de estresse
Identificados os limites do software por meio dos testes de volume, esse teste serve
para levar o software aos seus limites. A ideia é verificar em que ponto ele para de
funcionar corretamente.
• Teste de estabilidade
Verifica se o software se mantém funcionando de maneira adequada depois de ser
utilizado por um longo período de tempo.
• Teste de segurança
Verifica se o software permite que os dados sejam acessados somente pelos perfis
determinados para cada parte específica do sistema ou para cada funcionalidade.
• Teste de usabilidade
É realizado por usuários e não por analistas. O seu propósito é verificar se o software
satisfaz as necessidades do usuário. Esse teste serve para identificar a forma como o
usuário utiliza as funcionalidades do software, na tentativa de apontar partes do
sistema em que ele apresenta maior dificuldade de interação. Como esse teste é feito
pelos clientes, é importante o acompanhamento de analistas para documentar
comentários, sugestões e reclamações.
• Teste de aceitação
Serve para verificar se o produto de software está pronto para ser entregue ao cliente,
ou seja, se ele está pronto para entrar em produção. Geralmente, esse teste é
realizado por alguém indicado pelo cliente, ou ainda por um testador especializado
que não tenha participado do projeto, mas que tenha grande conhecimento acerca
dos requisitos do software.
• Teste de instalação
Tem como propósito verificar se o software é passível de ser instalado de maneira
correta, em diferentes hardwares, com diferentes sistemas operacionais e diferentes
disposições de memória, rede, entre outros aspectos.
• Teste de configuração
Serve para identificar se o software funciona de maneira adequada no hardware para
o qual foi planejado e no qual será instalado.
• Teste de manutenção
Avalia se determinada mudança em algum aspecto do software resultou em falhas no
seu funcionamento como um todo.
O TESTE DE CAIXA-BRANCA
• O teste de software é uma atividade em que um software (ou uma parte dele) é
executado para se verificar se está em conformidade com as suas especificações e se
funciona corretamente dentro do ambiente para o qual foi projetado.
• Para que o teste de caixa-branca seja realizado, são escolhidos dados de entrada que
servirão para testar e verificar a lógica utilizada na programação do software
• Teste de caixa-branca serve para verificar se o código-fonte está bem escrito e se os
caminhos lógicos realizados pelo software são adequados. Ele coloca em xeque todos
os conjuntos específicos de condições ou laços de repetição, bem como toda e
qualquer estrutura do programa, como chamadas de função, decisões lógicas de
verdadeiro ou falso, cálculos, acesso a dados, acesso à interface, chamadas de
relatórios, entre outras.
• Principais testes
o Teste de unidade: Identificar Problemas como
▪ Comparação incorreta de tipos de dados;
▪ Término de laço inadequado
▪ Elaboração de estruturas lógicas incorretas;
▪ Cálculos mal elaborados;
▪ Estruturas não utilizadas ou duplicadas;
▪ Erros, defeitos e falhas não tratados;
▪ Falta de mensagem de retorno;
▪ Descrição de problema incompreensível;
▪ Descrição de problema que não fornece informações suficientes para
que o usuário entenda o que deve ser feito;
▪ Informação de problema divergente do que realmente aconteceu.
o Teste do caminho básico
▪ Ele é realizado com caminhos mais básicos, até que todos os caminhos
passíveis de serem percorridos pelo software sejam avaliados. Um
bom exemplo disso seria o testador incluir um registro no banco de
dados, alterar esse registro utilizando outra parte da interface,
executar um relatório em que esse registro apareça e ainda tentar
excluí-lo — tudo isso sem utilizar a interface do software, apenas
seguindo os passos dentro da estrutura interna.
o Teste de estrutura de controle
▪ Nesse tipo de teste, o testador precisa analisar todas as estruturas de
controle contidas no código-fonte da aplicação, tais como as
condicionais, os fluxos de dados, os laços de repetição, as chamadas
de função, entre outras.
o Teste de contexto em orientação a objetos
▪ Testador analisa todas as chamadas a estruturas de orientação a
objetos, como classes e métodos, e sua implementação. Esse tipo de
teste deve levar em consideração todos os níveis de hierarquia
previstos, quando houver classes com herança. Isso porque um
método que funcione corretamente para uma classe pode não
funcionar da mesma maneira com uma classe que seja sua herdeira.
• O teste de caixa-branca é uma técnica também conhecida como teste estrutural. Esse
teste é utilizado para testar módulos juntamente aos seus componentes elementares,
de modo a verificar seu nível de qualidade. Segundo Pressman e Maxim (2016), o teste
de caixa-branca usa a visão interna do sistema, então necessita do conhecimento
acerca do seu funcionamento interno. Em síntese, essa técnica tem como fundamento
examinar os detalhes procedimentais e os caminhos lógicos do software.
o Caminho básico
▪ Os caminhos básicos aplicados na Figura 2(b), ou seja, o grafo de fluxo,
são o 1 e o 4. Isso significa que um teste projetado para forçar a
execução desses caminhos base terá como resultado um teste que
executará com certeza pelo menos uma vez cada comando. Além
disso, cada condição terá seus testes de verdadeiro e falso testados.
o Caminho independente
▪ Pressman e Maxim (2016) afirma que um caminho independente pode
ser iden-tificado na Figura 2(b), ou seja, no grafo de fluxo, ao se
considerar a seguinte sequência de passos.
a) 1 – 11.
b) 1 – 2 – 3 – 4 – 5 – 10 – 1 – 11.
c) 1 – 2 – 3 – 6 – 8 – 9 – 10 – 1 – 11.
d) 1 – 2 – 3 – 6 – 7 – 9 – 10 – 1 – 11.
o Teste de condição
▪ erros de operador booleano;
▪ erros de variáveis booleanas;
▪ erros de parêntese booleano;
▪ erros de operador relacional;
▪ erros de expressão aritmética.
• Complexidade ciclomática
o No critério de complexidade ciclomática, pode ser aplicado o cálculo
ciclomático com o exemplo da Figura 2(b), ou seja, o grafo de fluxo.
Acompanhe os itens a seguir.
▪ A complexidade ciclomática corresponde exatamente ao número de
regiões do grafo. Nesse exemplo, o grafo de fluxo tem quatro regiões.
▪ A complexidade ciclomática V(G) para o grafo de fluxo é definida como
V(G) = E – N + 2. “E” é o número de arestas e “N” é o número de nós
do grafo. Nesse exemplo, a fórmula assume V(G) = 11 arestas – 9 nós +
2 = 4.
▪ A complexidade ciclomática V(G) para o grafo de fluxo é definida como
V(G) = P +1. “P” é o número de nós predicados no grafo. Nesse
exemplo, a fórmula é V(G) = 3 nós predicados + 1 = 4.
• Teste de fluxo de dado
o Para realizar os testes de fluxo de dados, é preciso estabelecer que as variáveis
assumem:
o Definição — acontece quando uma variável recebe a atribuição de um valor;
o Uso computacional — acontece quando uma variável é utilizada para
computar;
o Uso predicativo — acontece quando uma variável é usada em uma estrutura
condicional.
• Demonstração
o Passo 1: extrair o grafo de fluxo correspondente do código-fonte
o Passo 2: calcular a complexidade ciclomática do diagrama de fluxo resultante
▪ V(G) = 4 regiões.
▪ V(G) =
▪ V(G) = 14 nós. N
▪ Cálculo: V(G) = E – N + 2, ou seja, V(G) = (16 – 14) + 2 = 4
▪ O resultado do cálculo são 4 caminhos linearmente independentes.
o Passo 3: determinar um conjunto base de caminhos independentes
▪ Caminho 1: 1, 2, 12, 13, 14.
▪ Caminho 2: 1, 2, 3, 4, 10, 11, 13, 14 (impossível).
▪ Caminho 3: 1, 2, 3, 4, 5, 6, 7, 9, 4, 10, 11, 12, 14.
▪ Caminho 4: 1, 2, 3, 4, 5, 6, 8, 9, 4, 10, 11, 13, 14.
o Passo 4: criar caso de teste que obrigue a execução de cada caminho do
conjunto base
O TESTE DE CAIXA-PRETA
• Os testes de caixa-preta utilizam critérios para determinar quais casos de teste são
necessários. Esses critérios são:
1. Partição de equivalência;
2. Análise de valor limite;
3. Tabela de decisão;
4. Grafo de causa e efeito;
5. Teste de caso de uso.
• Partição de Equivalência
o A partição de equivalência consiste em dividir as entradas de dados para o
sistema em grupos ou classes de dados similares que podem ser tratados da
mesma forma.
o Isso possibilita a redução do número de testes a serem escritos, já que um
único teste nesse grupo de dados permite descobrir se o processamento está
correto ou incorreto para todo o restante.
o Como exemplo, considere uma entrada de valor para informação do mês,
sendo que a faixa permitida é de 1 até 12. Veja a seguir.
▪ Partição válida:
• Valores maiores que 0;
• Valor 1;
• Valor 12.
▪ Partição inválida:
• Valores menores que 1.
• Valores maiores que 12.
▪ Partição inválida:
• Números reais.
• Caracteres não numéricos.
o Para identificar as classes de equivalência, considere o seguinte:
▪ Exigência de uma entrada por intervalo de valores — definir uma
classe de equivalência válida e duas inválidas;
▪ Exigência de uma entrada específica de valor — definir uma classe de
equivalência válida e duas inválidas;
▪ Exigência de uma entrada de um membro de um conjunto — definir
uma classe de equivalência válida e uma inválida;
▪ Exigência de uma entrada booleana — definir uma classe de
equivalência válida e uma inválida
o Demonstração
o Como exemplo, considere uma entrada de valor no sistema, sendo que a faixa
permitida é de 1 até 12. Veja a seguir.
▪ Entradas válidas:
• 1 até 12.
▪ Fronteiras válidas:
• 1 como menor número e 12 como maior.
▪ Fronteiras não válidas:
• 0 no limite inferior e 13 no limite superior.
o Existe ainda uma variação da técnica que testa três valores na fronteira
definida. No exemplo que você acabou de ver, essa busca seria para o limite
inferior 0, 1, 2 e para o limite superior 11, 12, 13
o Demonstração
• Tabela de decisão
o O critério por tabela de decisão é uma boa alternativa para avaliar requisitos
de sistema que trabalham com condições lógicas em regras de negócio mais
complexas. As condições de entrada e saída são determinadas na tabela de
decisão, que dispara a combinação de verdadeira ou falsa para obter o
resultado da ação. Cada coluna da tabela pode representar uma regra de
negócio diferente. Observe o Quadro 1, a seguir.
• Demonstração
• Transição de estados
o O critério de teste por transição de estados é utilizado para validar as
transições que acontecem dentro de um sistema ao se aplicar uma ação
que depende do estado atual ou do estado anterior. Os testes podem ser
elaborados para validar se uma sequência típica de estados está ocorrendo
de forma correta ou se alguma transição inválida pode acontecer no fluxo
o Um exemplo muito comum é a transição de estados quando um sistemade
banco é acessado por um usuário que realiza uma compra e deseja pagar
com um cartão de crédito. Na Figura 4, a seguir, veja um fluxo simples que
demonstra as transições de estado
o Demonstração
PLANEJAMENTO DE TESTES
• Plano de Testes
o De forma geral, é importante que o documento de plano de testes contenha:
▪ O escopo dos testes
▪ Os recursos humanos e tecnológicos
▪ Abordagem utilizada (atividades, técnicas e ferramentas usadas)
▪ O tempo disponível para cada atividade de teste
▪ Os itens e funcionalidades que serão testados
▪ Os riscos envolvidos
▪ Os responsáveis pelos testes
▪ A versão testada
▪ Os motivos de testar ou não cada um dos itens e funcionalidades
▪ Os critérios de aceitação para cada item testado
▪ Os critérios de suspensão para as atividades de teste
▪ Os artefatos produzidos quando terminados os testes (relatórios,
memorandos, logs)
▪ O ambiente necessário para a realização dos testes, a data de início e
fim dos testes, bem como as aprovações dos testes (nomes e cargos
dos responsáveis pela aprovação do plano de testes, com assinatura e
data)
• Especificação de testes
o Especificação do projeto de teste: traz uma identificação de todas as
funcionalidades e as características do projeto que precisam ser testadas em
cada momento
o Especificação de casos de teste: define quais casos de teste serão realizados e,
para cada um deles, quais serão os dados de entrada, quais serão as saídas ou
resultados desejados, bem como as ações e todas as condições gerais
necessárias para a execução dos testes.
o Especificação dos procedimentos de teste: envolve a especificação dos
procedimentos e o passo a passo para a execução de um conjunto específico
de casos de teste.
• Relatórios
o Diário de teste: apresenta apontamentos e registros dos detalhes mais
importantes que foram identificados durante a realização dos testes. Os
registros devem ser feitos de maneira cronológica, por isso o nome “diário”. O
diário é importante também pelo fato de guardar um histórico das falhas
encontradas, permitindo que, após o final do projeto de desenvolvimento do
software, sejam feitos estudos e haja um aprendizado acerca dos erros
cometidos.
o Relatório de incidentes de teste: traz uma documentação detalhada de todo e
qualquer evento que aconteça durante a realização das atividades de teste,
principalmente aqueles que vão precisar de uma avaliação posterior. Os erros
que forem encontrados durante a realização dos testes precisam ser
documentados de maneira detalhada, para que possam auxiliar os
desenvolvedores e demais integrantes da equipe na reprodução do erro, o que
serve para facilitar a solução do problema encontrado. É muito importante
que sejam registrados todos os incidentes ou eventos que aconteceram
durante as atividades de teste em um relatório único, para que sirvam de base
para quem for efetuar ajustes na codificação e no projeto como um todo.
o Relatório de resumo de testes: esse documento deve apresentar, de forma
resumida, todos os resultados obtidos com as atividades de teste. Ainda deve
indicar a qual funcionalidade ou especificação do projeto ele está vinculado,
para que se possam fazer avaliações e análises de acordo com esses
resultados.
o Relatório de encaminhamento de itens de teste: esse documento serve
especificamente para o caso em que existem equipes distintas para testar as
diferentes partes do software. Ele apresenta os itens que foram encaminhados
para teste e indica para qual equipe foram designados.
• O plano de testes segundo a norma IEEE 829
• O Project Management Institute (PMI — Instituto de Gerenciamento de Projetos)
CASOS DE TESTE
• Objetivos
o Interpretar casos de teste por meio da UML.
o Analisar casos de teste.
o Elaborar casos de teste com o uso da UML.
• Diagrama de Casos de Uso:
o Partes de um diagrama de caso de uso
▪ Cenário: é toda sequência de ações realizadas sempre que o usuário
interage de alguma forma com o sistema.
▪ Ator: é o próprio usuário do sistema e, se for o caso, pode demonstrar
também o perfil de cada usuário dentro do sistema.
▪ Caso de uso: é uma funcionalidade ou uma atividade realizada pelo
ator. Comunicação: é aquilo que faz a ligação entre o ator e o caso
de uso
o Exemplo:
▪ Ator Paciente:
• Agenda uma consulta;
• Consulta com o médico;
• Cancela uma consulta.
▪ Ator Atendente
• Procura disponibilidade de data e horário na agenda;
• Marca consulta para o paciente;
• Cancela consulta a pedido do paciente.
▪ Ator Médico:
• Realiza uma consulta;
• Receita medicamentos.
Níveis de teste
• Objetivos
o Definir os níveis de teste e o teste de sistema.
o Diferenciar os níveis de teste de unidade e de integração.
o Descrever os níveis de teste de aceitação e de regressão.
• Níveis de Teste
o Teste de unidade;
o Teste de integração;
o Teste de sistema;
o Teste de aceitação;
o Teste de regressão.
• Teste de Sistema
o No nível de teste de sistema, os analistas de teste, ou testadores, têm o
propósito de executar o sistema como um todo, levando em consideração
a visão do usuário final. Todas as funcionalidades do sistema são colocadas
em operação.
• Teste de Unidade
o Nesse nível de teste, são testadas as menores partes em que um software
pode ser dividido.
o O propósito principal desse tipo de teste é realizar a validação de
chamadas de métodos, classes, funções, sub-rotinas e partes de código
fonte que possam ser testadas de maneira isolada.
o Teste de Unidade utiliza os seguintes documentos
▪ Documento de especificação de requisitos do software;
▪ Documento de caso de uso;
▪ Documento de arquitetura do software (DAS).
• Teste de Integração
o O nível do teste de integração tem como diferença principal do teste de
unidade o fato de o seu propósito ser o de encontrar problemas gerados
pela integração interna entre os componentes ou partes do software. É
normal que, por meio do teste de integração, sejam encontrados
problemas de transmissão de dados
o Medidas para os testes serem bem sucedidos
▪ Preparar previamente um ambiente para que o teste aconteça;
▪ Preparar previamente um banco de dados para servir de teste;
▪ Registrar formalmente todos os resultados obtidos com os testes;
▪ Avaliar todos os resultados obtidos por meio dos testes;
▪ Relatar ao gerente de projeto toda ocorrência de problema mais
grave que possa impactar negativamente o andamento do
restante do projeto de desenvolvimento do software.
• Teste de aceitação
o Nesse nível de teste de software, normalmente os testes são realizados
por um grupo de amostra, com representantes dos usuários finais do
sistema. Por esse motivo, esse nível de teste também pode ser chamado
de teste de aceitação do usuário
• Teste de regressão
o Normalmente, no nível do teste de regressão, ainda estão sendo
desenvolvidas versões do software, ele ainda está sendo codificado. Esse é
um tipo de teste aplicado sempre que uma nova versão da aplicação fica
pronta. Ele também é aplicado quando é necessário realizar um novo ciclo
de testes em toda a aplicação para verificar se elementos novos que foram
desenvolvidos não afetaram de maneira negativa o restante das partes
que já haviam sido codificadas.
o O objetivo é verificar se partes novas de codificação não afetaram ou
alteraram o comportamento do sistema dependendo das entradas que ele
recebe.