You are on page 1of 5

Resumo – P2 Qualidade de Produto de Software

• Teste de Funcional:
o Verificar o comportamento do software a partir da análise de
uma execução onde se verifica se na utilização de
determinadas entradas a obtenção da saída esperada.
• Teste de desempenho (carga):
o São testes baseados em requisitos não funcionais;
o Para sistemas voltados para Web o desempenho é um
importante requisito a ser considerado;
o Teste de desempenho visa medir aspectos ligados ao
desempenho do sistema, tal como:
 Tempo de resposta: tempo entre uma requisição e a
completude e resposta da operação requisitada;
 Throughput: número de operações que o sistema é
capas de completar em um dado intervalo de tempo;
 Escalabilidade: quantidade de usuários simultâneos
que o sistema é capaz de lidar;
 Uso de recursos de máquina: como memória e
processamento;
o Exemplo de requisitos de desempenho para teste de
desempenho:
 Todas as requisições devem ser respondidas em menos
de 8 segundos;
 O sistema deve suportar até 100 usuários simultâneos;
• Teste de estresse:
o Testes de estresse visam analisar o comportamento do sistema
quando submetido a situações críticas e anormais de uso,
tais como:
 Grande quantidade de cargas;
 Comportamento anormal de portas de um servidor;
 Redução de recursos computacionais disponíveis;
 Entradas não realistas de dados;
o A capacidade de recuperação de falhas também pode ser
verificada durante os testes de stress;
• Ambiente de testes de carga e stress:
o Para aplicações Web é extremamente importante a definição
correta da carga de trabalho (workload), pois não sendo
assim, os resultados podem se tornar inválidos. Ex:
 Número de requisições que devem ser processadas
pelo sistema, levando em conta os períodos de maior
acesso;
 Base de dados que será acessada nos teste deve ser
semelhante em tamanho à do sistema real;
o Fatores que devem ser observados na simulação do
ambiente de teste:
 Largura da banda: infra-estrutura é importante, pois é
comum duas aplicações ou mais compartilharem os
recursos computacionais de uma mesma máquina;
 Número de servidores: uma vez que a aplicação seja
replicada ou distribuída em vários servidores, isso
dificultaria a simulação do ambiente de teste.
 Número de camadas de aplicação: o uso de camadas
entre usuário e aplicação pode influenciar no
desempenho do sistema;
 Banco de dados: as dimensões do banco de dados
deve ser o mais próximo do ambiente real devido aos
tempos de acesso e busca a informações;
 Quantidade de usuários virtuais: numero de usuários
simultâneos que enviaram as requisições de teste;
o Observação: a simulação do numero de servidores e largura
da banda poderia ser feita com o uso de máquinas virtuais,
porem acarretaria no uso de mais memória e processamento,
além de ser impossível simular grandes distancias entre os
servidores;
o Passos para a aplicação dos testes de estresse:
1. Identificar o objetivo do teste;
2. Identificar os cenários-chave;
3. Identificar a carga de trabalho (workload);
4. Identificar as métricas;
5. Criar casos de testes;
6. Simular carga;
7. Analisar resultados;
• Testes de Sistema:

Teste Objetivo Execução Foco


Verificação quanto Corretude e
Sistema Equipe de teste
aos requisitos completude
Valida quanto as
Equipe de teste Utilidade e
Aceitação necessidades dos
+ usuários satisfação
usuários
Remoção e
Re-execução dos
Regressão Equipe de teste alterações
testes
incorretas

• Teste de Regressão:
o Tem como objetivo garantir que o programa ainda satisfaz os seus
requisitos;
o Não descarta a necessidades de testes para funcionalidades
movas ou alteradas;
o Abordagens para seleção dos conjuntos de testes de regressão:
 Re-teste total: re-executar o conjunto de teste base
inteiro em delta;
 Re-teste baseado em caso de uso de maior risco: usa
algoritmos baseados em risco para escolher o conjunto de
teste de regressão parcial;
 Re-teste por perfil: algoritmo baseado no perfil
operacional dos requisitos dos casos de uso;
 Re-teste de seguimentos modificados: análise do
código modificado para selecionar o conjunto de teste.
 Re-teste com firewall: analisa a dependência de código
para selecionar o conjunto de firewall (limite imaginário que
cerca o software modificado que contém falha de
regressão);
• Testes de integração Contínua:
o Tem como vantagem a não necessidade de rodar todos os
testes a cada compilação do código;
o Vantagens do ambiente de integração contínua:
 Construção (build): compilar o código, etc.
 Distribuição (deployment): gerar arquivos .jar e .zip
apropriados;
 Automatizar a execução dos testes;
 Métricas de códigos: gerar relatórios de métricas de
qualidade;
o Script para construção build permite codificar e programar o
processo de construção;
o Benefícios:
 Difícil enxergar se você é o único programador da equipe;
 Fundamental para testar interação entre partes
desenvolvidas por pessoas diferentes da equipe;
 As grandes maiorias dos bug’s se manifestam no mesmo
dia em que são inseridos;
 Não há garantia que você ache todos os bug’s de
integração;
 Maior benefício de todos: aumento da produtividade;
 Feedback instantâneo sobre o impacto de cada atualização
no projeto;
 Desenvolvedores aprendem mais sobre suas atualizações;
 Líderes de equipe obtêm mais rapidamente o status dos
builds (maior visibilidade do progresso);

• Teste de Integração
o Integração não-incremental: testa o sistema todo quando já
está pronto. Dificulta a descoberta das causas de um defeito;
o Integração incremental: realiza ciclos completos de análise,
projeto, codificação e teste para pequenas partes (módulos) do
sistema, o que facilita a descoberta das causas de qualquer
defeito;
o Defeitos podem surgir a cada integração do sistema,
principalmente em suas interfaces;
o Objetivos:
 Detectar defeitos que ocorrem nas interfaces das unidades
já testadas quando elas são integradas;
 Integrar as unidades em subsistemas e sistemas que
possam ser submetidos ao teste de sistema;
 Teste de integração deve ser realizado apenas em unidades
que já tenham sido revisadas e que tenham passado com
sucesso pelos testes unitários;
o A integração das unidades leva ao exercício de interfaces e fluxos
de dados entre as unidades que podem ser impossíveis de serem
simulados durante os testes unitários;
o Integrar uma unidade de cada vez desta maneira é útil de
várias formas:
 Mantém pequeno o número de novas interfaces a serem
testadas, de forma que o teste é mais focado;
 Evita que falhas generalizadas aconteçam;
 Confina o trabalho de buscar e corrigir os erros a um
pequeno número de componentes e interfaces;
 Permite que subsistemas independentes possam ser
integrados em paralelo a medida que as unidades vão
sendo disponibilizadas;
o Estratégia Bottom-Up:
 Inicia-se pelo teste dos níveis mais baixos, ou seja, aqueles
que não dependem de outros níveis.
 Drivers são necessários para testar estas unidades. Os
drivers substituem as classes dos níveis acima;
 O próximo passo é integrar estas unidades as unidades de
nível superior, removendo os drivers;
 Os drivers são então substituídos pelas unidades reais;
 Prossegue-se assim até que os níveis mais altos sejam
integrados.
• A estratégia Bottom-Up tem a vantagem de que os
níveis inferiores são testados cedo no processo de
integração. Isto é importante se estas unidades
forem candidatas ao reuso;
• Entretanto, os níveis superiores são testados mais
tarde e podem não ser adequadamente testados. Se
estas forem unidades críticas, isto pode ser arriscado;
o Estratégia Top-Down
 Inicia-se o teste pelos níveis mais altos;
 Stubs precisam ser criados para substituir os módulos
inferiores;
 Para garantir um fluxo de dados adequado, estes stubs
precisam ser relativamente complexos;
 Após o teste, o próximo passo é substituir os stubs pelas
unidades reais. Para isto, é preciso criar novos stubs para os
níveis logo abaixo;
 Prossegue-se assim até os níveis mais baixos sejam
integrados.
• Os módulos subordinados podem ser integrados de
duas maneiras:
o Depth-first;
o Breadth-first;
• A integração Top-Down garante que os módulos
superiores sejam testados cedo. Se eles precisarem
ser re-projetados, haverá tempo suficiente para isto;
• Usabilidade
o A interface é a porção visível do sistema do ponto de vista do
usuário sendo ela um dos elementos mais importantes para a
qualidade de um software;
o Observa e analisa a navegação do usurário;
o Descobre dificuldades do usuário (quais são, onde estão, quando,
como e porque aparecem);
o Fornece informações para julgar o que é melhor para o sistema;
o O usuário no centro do processo de desenvolvimento;
o Técnicas:
 Avaliação Heurística;
 Critérios Ergonômicos;
 Inspeção Baseada em Padrões, Guias de Estilos ou Guias de
Recomendações;
 Inspeção por Checklists;
 Percurso (ou Inspeção) Cognitivo;
 Teste Empírico com Usuários.
 Entrevistas e Questionários
o Usabilidade de software para Web (exibição da informação):
 Consistência: todos os menus e entradas, etc. possuam a
mesma apresentação visual e comportamento;
 Feedback: fornecer informações ao usuário sempre que
necessário;
 Níveis de habilidade e comportamento humano: requer o
mínimo de experiência do usuário;
 Percepção humana: variações de habilidades humanas
influenciam no êxito do sistema;
 Metáforas: aproveitar o conhecimento do usuário a cerca do
mundo que o cerca;
 Minimização de carga de memória: recursos para facilitar a
memorização;
 Classificação funcional dos comandos: acesso fácil as
funções do sistema;
o Tipos de teste:
 Teste de exploração (orientado e estimulado pelo monitor a
explorar o sistema);
 Teste de avaliação (monitor somente observa e avalia);
 Teste de validação (determina tempo para as tarefas do
sistema e analisa-os de acordo com o executado) ;
 Teste de comparação (comparação de diversas soluções e a
reunião do melhor de cada ao final);
o Métricas:
 O tempo da tarefa;
 A porcentagem de tarefas completadas;
 A porcentagem de tarefas não completadas;
 Número de erros;
 Tempo de navegação em busca da informação;
 Número de passos;
 Número de clique;
 Quantidade de informações encontradas;
 Número de acessos à ajuda.
o Dados qualitativos (podem ser dadas notas):
 Facilidade de uso;
 Facilidade de navegação;
 Utilidade;
 Facilidade de aprendizado;
 Facilidade de se recuperar de erros;
 Ajuda on-line ou off-line;
 Aspectos positivos relembrados

You might also like