Introdução aos conceitos de Teste de Software Prof. Wolley W. Silva
Agenda Definições de Teste de software Conceitos básicos associados a Teste de Software Níveis de teste de Software
Por que Testar Software? Os Estados Unidos estimam que bugs de software lhes custam aproximadamente 60 bilhões de dólares por ano. http://www.computerworld.com/s/article/72245/Study_Buggy_software_costs_users_vendors_nearly_60B_annually O foguete Ariane 5 explodiu por um erro de software. http://www.sbmac.org.br/bol/bol-2/artigos/ariane5.html Erro de software provoca a morte de 21 pacientes em tratamento de câncer. http://disciplinas.stoa.usp.br/pluginfile.php/31796/mod_resource/content/1/casoICancerPanama.pdf
Nenhum software esta livre de falhas ! http://www.techtudo.com.br/noticias/noticia/2014/01/brasileiro-que-encontrou-falha-no-facebook-e-um-cacador-de-bugs.html
Definições Teste de Software É o processo de execução de um produto para determinar se ele atingiu suas especificações e funcionou corretamente no ambiente para o qual foi projetado;
Definições Objetivo de todo teste: Revelar falhas em um produto, para que as causas dessas falhas sejam identificadas e possam ser corrigidas pela equipe de desenvolvimento antes da entrega final.
Definições de Termos Defeito: passo, processo ou definição de dados incorreto, como por exemplo, uma instrução ou comando incorreto. Erro: diferença entre o valor obtido e o valor esperado, ou seja, qualquer estado intermediário incorreto ou resultado inesperado na execução do programa constitui um erro. Falha: produção de uma saída incorreta com relação à especificação.
Definições de Termos
Testes revelam falhas ! Sistema Ie Oe Entradas que causam comportamentos anômalos Ie Entrada de dados de teste Sistema Saídas que revelam falhas Saída de resultado de teste Oe Figura adaptada de Sommerville, Ian - 2011
Verificação e Validação (V&V) O Teste é parte de um amplo processo de verificação e validação (V&V). Validação: estamos construindo o produto certo? garante que o software atenda às expectativas do cliente. Verificação: estamos construindo o produto da maneira certa? checa se o software atende a seus requisitos funcionais e não funcionais.
Níveis de teste de Software O planejamento dos teste deve ocorrer em diferentes níveis e em paralelo ao desenvolvimento.
Níveis de teste de Software Os principais níveis de teste são: Teste de Unidade Teste de Integração Teste de Sistema Teste de Aceitação Teste de Regressão
Níveis de teste de Software Teste de Unidade ou Unitário: Explora a menor unidade do projeto, procurando provocar falhas ocasionadas por defeitos de lógica e de implementação em cada módulo, separadamente. Uma ferramenta muito utilizada é o Junit.
Níveis de teste de Software Teste de Integração: Visa provocar falhas associadas às interfaces entre os módulos quando esses são interligados para construir a estrutura do software.
Níveis de teste de Software Teste de Sistema (teste alfa).: Avalia o software em busca de falhas por meio da utilização do mesmo, como se fosse um usuário final Os testes são executados nos mesmos ambientes, com as mesmas condições e com os mesmos dados de entrada que um usuário utilizaria no seu dia-a-dia de manipulação do software.
Níveis de teste de Software Teste de Aceitação (teste beta): São realizados geralmente por um restrito grupo de usuários finais do sistema. Esses simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado.
Níveis de teste de Software Teste de Regressão: É uma estratégia importante para redução de “efeitos colaterais”. Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema.
Técnicas de Teste de Software Técnica Estrutural – Teste de Caixa Branca Técnica Funcional – Teste de Caixa Preta
Técnicas de Teste de Software Caixa Branca Essa técnica trabalha diretamente sobre o código fonte do componente de software para avaliar aspectos tais como: teste de condição, teste de fluxo de dados, teste de ciclos e teste de caminhos lógicos (PRESSMAN, 2005).
Técnicas de Teste de Software Caixa Preta Dados de entrada são fornecidos, o teste é executado e o resultado obtido é comparado a um resultado esperado previamente conhecido. Ex. Testes em Interfaces Web com Selenium IDE.
Técnicas de Teste de Software Outras técnicas de teste podem e devem ser utilizadas de acordo com necessidades de negócio ou restrições tecnológicas: Teste de desempenho, Teste de usabilidade, Teste de carga, Teste de stress, Teste de confiabilidade, Teste de recuperação,
Conclusões O teste de software é uma das atividades mais custosas do processo de desenvolvimento de software, pois pode envolver uma quantidade significativa dos recursos de um projeto. O rigor e o custo associado a esta atividade dependem principalmente da criticilidade da aplicação a ser desenvolvida.
Conclusões Apoio ferramental para qualquer atividade do processo de teste é importante como mecanismo para redução de esforço associado à tarefa em questão, seja ela planejamento, projeto ou execução dos testes.
Referências http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-teste-de-software/8035