Você está na página 1de 6

Teste de software

• Existem atividades que procuram garantir a qualidade do produto final;


• Apesar de métodos, técnicas e ferramentas utilizadas, falhas no produto ainda
podem ocorrer;
• Portanto pode se afirmar que:
o Teste é uma das áreas da engenharia de software e tem como objetivo
aprimorar a produtividade e fornecer evidências da confiabilidade e da
qualidade do software;
o A atividade de teste é o processo de executar um programa com a intenção
de descobrir um erro;
o Um bom caso de teste é aquele que tem uma elevada probabilidade de
descobrir um erro;
o Um teste bem sucedido é aquele que revela um erro ainda não descoberto;
• A atividade de teste demonstra que as funções do software estão sendo executadas
de acordo com as especificações, que os requisitos de desempenho foram cumpridos
e que, por conseqüência, as informações geradas por ele são confiáveis.
• Na pratica não se pode garantir que um software é perfeito, devido principalmente a
complexidade envolvida em sua construção.
• Os Principais propósitos para realização de testes podem ser considerados:
o Como a busca por reduzir o risco envolvido na construção e no uso de
software com erros;
o Aumentar o grau de confiança de que se esta construindo um produto com o
comportamento desejado.
• Teste é de extrema relevância por permitir a precaução em relação aos custos
envolvidos com a concorrência de falhas, e principalmente, salvaguardar o seu
funcionamento quando envolve riscos a vida humana ou grande perda financeira.
• Freqüentemente gasta-se muito tempo e dinheiro em testes e na correção de erros
encontrados.
• Sem uma infra-estrutura para realização dos testes, torna-se, por vezes, impraticável
a sua aplicação de forma adequada.
• Casos de testes podem ser criados nas diferentes fases do ciclo de vida.
• É importante ressaltar que a atividade de testes pode mostrar se o software contém
erro, mas não provar que o mesmo nunca falhará.
• A qualidade do produto é diretamente relacionada a qualidade do processo de
desenvolvimento. (Processo envolve modelo a ser utilizado, ciclo de vida, métodos
de desenvolvimento e ferramentas);
• Atividades de teste devem ser cuidadosamente planejadas para fornecer um nível
adequado de confiabilidade atingir aos requisitos, dentro das condições
especificadas, contribuindo para qualidade de software.
• Testes bem planejados são capazes de remover 60% dos defeitos de um programa.
• A qualidade de software deve ser acompanhada desde o inicio do desenvolvimento.
• Uma das atividades mais relevantes é o projeto de caso de testes. Nesta atividade
concentram-se um conjunto de técnicas, critérios e métodos, para que forneçam ao
projetista uma abordagem sistemática.
• Essas técnicas são baseadas em:
o Funcional – seleção de casos de uso baseada na especificação;
o Estrutural – apóia-se essencialmente na implementação, no fluxo de controle
e em informações do fluxo de dados;
o Baseada em erros – utiliza informações de erros típicos cometidos no
processo de desenvolvimento;
o Ou uma combinação das técnicas acima citadas.
• Essas técnicas são complementares e a questão esta em como utiliza-las.
• A atividade de teste não deve ser considerada como uma fase isolada em um
processo de desenvolvimento de software.
• A atividade de teste envolve basicamente:
o Entradas – envolve a especificação de requisitos;
o Processo – utilização dos planos procedimentos de testes, ferramentas para
auxilio na depuração;
o Saídas – avaliação dos resultados obtidos na fase anterior;

Tipos de teste de software


• O teste de software deve utilizar técnicas de testes bem estabelecidas;
• As tarefas distribuídas devem ser realizadas de forma sistemática;
• As técnicas de testes propiciam a confecção de um plano de testes e a determinação/
distribuição de tarefas que irão compor um teste.
• Um número razoável de técnicas deve ser aplicado a ao teste de software, mas
nenhuma isoladamente. Devem ser aplicadas de forma complementar.

Teste Estrutural (Caixa Branca)


• O teste estrutural em software Orientado a objetos é fundamentalmente diferente
dos testes em software não orientados a objetos.
• O teste estrutural objetiva verificar se a estrutura interna da unidade está correta.
É efetuada para todos os caso de teste que visam percorrer todos os caminhos
internos possíveis da unidade.
• Percorrer todos os caminhos acaba tornando a atividade complexa;
• Este teste abrange a manipulação dos valores dos atributos, verifica os
resultados quando loops são executados ate o seu limite e visa identificar os
caminhos críticos de cada procedimento.

Teste Funcional (Caixa Preta)


• O teste funcional procura descobrir basicamente:
o Funções incorretas ou ausentes;
o Erros de interface;
o Erros nas estruturas de dados ou no acesso a banco de dados externo;
o Erros de desempenho;
o Erros de inicialização e término.
• O teste funcional concentra-se nos requisitos funcionais do software.
• Através dele torna-se possível verificar as entradas e saídas de cada unidade;
• Este tipo de teste não se preocupa na forma com que os dados estão sendo
executados e sim com o que esta sendo realizado.
• Para realização deste teste é levado em consideração o estado do objeto que será
testado

Matriz de estímulos x estados

• Esta técnica visa construir uma matriz com todos os estados (valores das
variáveis) e estímulos (parâmetros)
• A utilização desta técnica evita esquecimentos e permite um maior
numero de combinações acabem sendo testadas.
• Descrição das regras de negócio para uma locadora, existindo vários
estados variando de acordo com as permissões para execução das funções
do sistema.
Passo 1: definição das regras de negocio.

Regras do negócio
Funções/estados Disponível Locado Reservado
Cadastrar X
Consultar X X X
Alterar X X X
Excluir X
Locar X X

Passo 2: execução de teste e registro dos resultados


Regras do negócio
Funções/estados Disponível Locado Reservado
Cadastrar Ok. Ok. Ok.
Consultar Ok. Ok. Ok.
Alterar Ok. Ok. Ok.
Excluir Ok. Ok. Não Ok.
Locar Ok. Ok. Ok.

Passo 3: comparação dos resultados


• Comparação dos resultados obtidos (matriz de estímulos x estados)
com o resultado esperado (regras de negocio).
• Basicamente o teste funcional deve testar se o método chamado é o
correto e se este produz o resultado esperando.

Teste de Unidade
• Em um software que não foi desenvolvido sob os princípios da
orientação a objetos, o teste de unidade concentra-se no esforço de
verificação da menor unidade do projeto de software – o módulo ou função.
• Um teste de unidade deve verificar:
o A interface com o modulo. Informações que entram e saem
devem ser consistentes
o A estrutura dos dados local. Manter a integridade durante toda
execução do código.
o As condições de limite. Limites estabelecidos para demarcar ou
restringir a execução de um processo.
o Os caminhos básicos. Todas as instruções de uma unidade
devem ser executadas pelo menos uma vez.
o Os caminhos de tratamento de erros. Devem ser executados a
fim de verificar se valores não verdadeiros sejam tratados.

Teste de Integração
• Verifica basicamente se as unidades testadas de forma individual
executam corretamente quando colocamos juntas.
• A interação pode ser executada de uma forma não incremental, onde as
unidades são combinadas e o programa completo é testado como um todo.
(Interação big bang).
• Uma maneira mais eficiente seria integrar as unidades de forma
incremental, as unidades gradativamente testadas e implementadas.
• A integração incremental mostra-se como uma técnica mais
apropriada, pois é mais fácil isolar a causa dos erros quando se testa por
partes menores.

Teste de Validação
• Ocorre após a atividade de teste de integração.
• A validação é bem sucedida quando o software funciona de uma
maneira esperada pelo cliente.
• A validação de software é realizada por meio de uma serie de testes de
caixa preta que demonstram a conformidade com os requisitos funcionais.
• Muitas vezes o teste beta se torna pouco satisfatório.
• Características básicas para realização do teste beta capacidade critica
no uso:
o Capacidade critica no uso do software (testar situações de
pouco comuns)
o Bom entrosamento com a empresa desenvolvedor
o Preferencialmente ser leigo em informática não fazendo assim
considerações.
o Ser organizado dispor de tempo para o teste

Teste de sistema

• É uma atividade de validação usada para demonstrar que o software inteiro está
correto.
• A intenção é descobrir implementações incorretas dos requisitos especificados.
• O objetivo principal deste tipo de teste é por completamente a prova o sistema de
software.
• Este tipo de teste envolve todos os componentes do software, hardware e suas
interfaces.
• Subdivide-se em:
o Teste de recuperação;
o Teste de segurança;
o Teste de estresse;
o Teste de desempenho.

Teste de recuperação
• A ocorrência de falhas não deve prejudicar as funções do sistema.
• O teste de recuperação é um teste de sistema que força o software a
falhar de diversas maneiras e verifica se a recuperação é
adequadamente executada.
• O teste de recuperação usa casos de testes projetados a fim de
examinar como o sistema pode se recuperar facilmente e
completamente de uma falha.
• O sistema deve ter um log a fim de registrar as atividades antes da
falha e um registro de mensagens durante a falha.

Teste de segurança
• Qualquer sistema baseado em computadores que gerencie
informações ou provoque ações que possam impropriamente
prejudicar (ou beneficiar pessoas) constitui um alvo para acesso
impróprio ou ilegal.
• O papel do projetista é fazer com que o acesso custe mais do que o
valor da informação a ser obtida.
• O teste de segurança visa verificar se todos os mecanismos de
proteção embutidos no sistema o protegerão de fato de acesso
indevidos.
• Objetivo é garantir que o sistema se comporte adequadamente
mediante tentativas ilegais de acesso.

Teste de estresse
• É realizado para confrontar os programas com situações anormais, o
sistema é carregado com volumes não usuais com intenção de pará-
lo.
• Neste momento é monitorada a perda de desempenho do sistema e a
sua suscetibilidade de falhas durante estas cargas.
• O testador deve utilizar o sistema com recursos em quantidade e
freqüência anormais, tais como procuras excessivas de dados em
disco, abertura de muitas janelas, ate que haja um problema de falta
de memória, utilização de arquivos em formato não compatível aos
esperados pelo programa, e outros.
Teste de desempenho
• É idealizado para testar o desempenho de execução do software
dentro de um contexto de um sistema integrado.
• O teste de desempenho é, às vezes, combinado com teste de estresse
e freqüentemente existe instrumentação de hardware e de software.
• Ao instrumentar um programa, a realização de teste pode descobrir
situações que levam a degradação e possível falha do sistema.
• O teste de desempenho preocupa-se com tempo de resposta,
rendimento e capacidade – especialmente a capacidade do banco de
dados.
• A preparação do teste de desempenho é uma atividade extremamente
importante e envolve nitidamente a simulação, modelagem e medida
de capacidade.

Você também pode gostar