1. Objetivo
1.1. Descobrir situações em que o sistema se comporta de maneira incorreta
2. Erro x Defeito x Falha
2.1. Erro
2.1.1. é um equívoco ou falha humana durante o desenvolvimento do software
2.2. Defeito
2.2.1. é qualquer inconsistência no comportamento comportamento esperado e o comportamento real do software
2.3. Falha
2.3.1. é a manifestação visível do defeito no software, resultando em um comportamento incorreto, mau funcionamento ou interrupção
3. O que precisa ser testado?
3.1. Funcionalidade;
3.2. Portabilidade.
3.3. Manutenibilidade;
3.4. Usabilidade;
3.5. Confiabilidade;
3.6. Eficiência;
3.7. Interoperabilidade;
4. Técnicas de teste de software
4.1. Caixa Branca
4.1.1. têm acesso ao código- fonte, estrutura interna e lógica de funcionamento do sistema, e os testes são feitos com base nesse conhecimento;
4.1.2. o foco do teste de caixa branca é verificar o comportamento interno da aplicação, cobrindo a lógica de controle, os fluxos de dados e as estruturas de decisão no código;
4.1.3. Exemplos
4.1.3.1. Teste Unitário
4.1.3.2. Teste de Componentes
4.1.3.3. Teste de Integração
4.2. Caixa Preta
4.2.1. o foco está nas entradas e saídas do sistema, sem considerar o código interno;
4.2.2. o objetivo é testar a funcionalidade do sistema com base nos requisitos;
4.2.3. Exemplos
4.2.3.1. Teste de Release
4.2.3.2. Teste de Usuário
4.2.3.3. Teste de Desempenho
4.2.3.4. Teste de Aceitação
4.3. Caixa Cinza
4.3.1. combina elementos tanto do teste de caixa branca quanto do teste de caixa preta;
4.3.2. focando em comportamento e lógica do sistema, mesmo com algum conhecimento interno;
4.3.3. Exemplos
4.3.3.1. Teste de Intergação
4.3.3.2. Teste de Componentes
5. Etapas do teste de software
5.1. Planejar/Projetar
5.1.1. é elaborada a Estratégia de teste e o plano de teste, em cima dos requisitos
5.1.2. planejar as atividades a serem realizadas, definir os métodos a serem empregados, planejar a capacidade necessária, estabelecer métricas e formas de acompanhamento do processo
5.2. Preparar
5.2.1. preparar o Ambiente de Teste (equipamentos, pessoal, ferramentas de automação, massa de testes) para que os testes sejam executados conforme planejados
5.3. Executar
5.3.1. são executados e os resultados obtidos são registrados
5.3.2. é necessário documentar os resultados dos testes, registrar os erros, reportar os problemas para a equipe de desenvolvimento e, após correção, refazer todas validações novamente
5.4. Entregar resultados
5.4.1. o projeto é finalizado e toda documentação é finalizada e arquivada
5.4.2. discute-se os resultados obtidos durante o ciclo de vida de teste, com o propósito de reduzir falhas e custos, além de otimizar os processos e cumprir os objetivos do negócio
5.4.3. é importante que seja elaborado um relatório de qualidade com a cobertura dos testes e os detalhes do projeto
6. Tipos de teste de software
6.1. Testes de Componentes
6.1.1. Verifica a funcionalidade de componentes específicos ou unidades do software de forma isolada;
6.1.2. Teste unitário
6.1.2.1. Foco: testa a menor unidade de código de forma isolada;
6.1.2.2. Objetivo: verificar se uma unidade individual funciona como esperado
6.1.2.3. Escopo: restrito a pequenas partes do código, cada teste se concentra em uma única funcionalidade
6.1.3. Teste de interfaces
6.1.3.1. Foco: testa as classes que implementam uma interface e realmente cumprem o contrato definido nela;
6.1.3.2. Objetivo: verificar se a classe que implementa a interface está corretamente definindo todos os métodos;
6.1.3.3. Escopo: Particularmente importante para o desenvolvimento orientado a objetos e baseado em componentes;
6.1.4. Testes de componentes/módulos
6.1.4.1. Foco: testa um componente completo no sistema;
6.1.4.2. Objetivo: validar a integração interna entre várias unidades que compõem um componente mais complexo, mas ainda sem testar o sistema como um todo;
6.1.4.3. Escopo: envolve um conjunto maior de funcionalidades dentro de um componente, ou seja, verifica a interação entre várias unidades ou subcomponentes;
6.2. Testes de Sistema
6.2.1. Teste de integração
6.2.1.1. Foco: acessar o código-fonte e testar se os componentes funcionam em conjunto.
6.2.1.2. Objetivo: detectar problemas na interação entre essas partes, que, quando testadas isoladamente (como nos testes unitários), podem parecer funcionar corretamente, mas podem apresentar falhas ao serem integradas;
6.2.1.3. Escopo: essencial para garantir que os diferentes componentes de um sistema funcionem corretamente em conjunto;
6.2.2. Teste de release
6.2.2.1. Foco: executado próximo ao momento em que uma nova versão de software está prestes a ser lançada (liberada) para o ambiente de produção ou disponibilizada aos usuários;
6.2.2.2. Objetivo: garantir que a versão final do software (ou uma atualização) esteja estável, livre de bugs críticos, e pronta para ser lançada com segurança;
6.2.2.3. Escopo: executado na última etapa do ciclo de desenvolvimento de software, quando a equipe está se preparando para liberar a versão final para produção ou disponibilizá-la aos usuários;
6.2.3. Teste de desempenho
6.2.3.1. Foco: é uma prática usada para avaliar a velocidade, estabilidade, escalabilidade e capacidade de um sistema ou aplicação sob diferentes condições de carga;
6.2.3.2. Objetivo: garantir que o software funcione adequadamente mesmo quando submetido a altos volumes de usuários ou dados;
6.3. Testes do Cliente
6.3.1. é a verificação final para garantir que o software atenda às necessidades e expectativas do cliente ou usuário e alfa;
6.3.2. heralmente, critérios de aceitação são definidos com antecedência e o software é testado contra esses critérios;
6.3.3. Teste alfta
6.3.3.1. Usuário + Desenvolvedor + Local do Desenvolvedor
6.3.4. Teste beta
6.3.4.1. Liberação de uma release para usuários
6.3.5. Teste de aceitação
6.3.5.1. clientes testam um sistema para decidir se ele vai ser implantado ou não.