3. Teste de Software
Teste é o processo de executar um
programa com a intenção de encontrar erros
O teste de software é uma análise que nos
fornece dados para estimar a qualidade de um
sistema
4.
5. Quem faz o teste?
Depende do processo e das partes associadas ao(s) projeto(s). Na
indústria de TI, grandes empresas possuem uma equipe com
responsabilidades para avaliar o software desenvolvido no contexto dos
requisitos dados. Além disso, os desenvolvedores também realizam testes,
chamados de testes de unidade. Na maioria dos casos, os seguintes
profissionais estão envolvidos no teste de um sistema dentro de suas
respectivas capacidades:
Software Tester
Software Developer
Lider de projeto
Usuário final
7. Verification Validation
Esta fazendo isso da forma certa? Esta construindo a coisa certa?
Garante que o sistema do software atende a
sua funcionalidade.
Garante que as funcionalidades atendam ao
comportamento esperado.
A verificação ocorre primeiro e inclui a
verificação da documentação, código, etc.
Validação ocorre depois da verificação e
envolve principalmente verificar o produto
como um todo.
Feito por desenvolvedores. Feito por testers.
Tem atividades estáticas pois inclui
revisões e inspeções para ver se o
software está correto ou não.
Tem atividades dinamicas porque
inclui executar o software fazendo o
contrário do que foi proposto pelo
programa.
É um processo objetivo e nenhuma
decisão subjetiva precisa ser feita para
verificar o software.
É um processo subjetivo e envolve
decisões subjetivas sobre o quão
bem o software funciona.
8. Diferença entre teste e Debugging
Testing: Testar: Isso envolve a identificação de um
bug/erro/defeito no software sem corrigi-lo.
Normalmente profissionais com experiência em
Qualidade estão envolvidos na identificação de bugs.
Os testes são realizados na fase de testes
Debugging: Envolve identificar, isolar e corrigir os
problemas/bugs. Os desenvolvedores que codificam o
software conduzem a depuração ao encontrar um erro
no código. Debugar é a parte da White Box ou teste de
unidade. O debbuging pode ser realizada na fase de
desenvolvimento durante a realização do Teste de
Unidade ou em fase durante a correção dos bugs
relatados.
9. O que é “erro”, “defeito” e “falha”?
Raul Sidnei Wazlawick (2013) define da seguinte maneira:
Erro: Diferença detectada entre o resultado de uma
computação e o resultado correto ou esperado;
Defeito: é uma linha de código, bloco ou conjunto de dados
incorretos que provocam um erro observado;
Falha: é um não funcionamento do software, possivelmente
provocada por um defeito, mas com outras causas
possíveis.
10. Tipos de teste
Manual Testing
Este tipo inclui o teste manual do software, ou seja, sem usar
nenhuma ferramenta automatizada ou script. Neste tipo, o
testador assume o papel de um usuário final e testa o software
para identificar qualquer comportamento ou bug inesperado.
Existem diferentes estágios para testes manuais, como teste de
unidade, teste de integração, teste de sistema e teste de
aceitação do usuário.
Os testadores usam um plano de teste, casos de teste ou
cenários de teste para testar o software e garantir a completude
dos testes. Os testes manuais também incluem testes
exploratórios, nos quais os testadores exploram o software para
identificar erros nele.
11. Quem deve testar?
Desenvolvedor
Conhece o sistema
Mas, ira testar gentilmente
Software Tester
Precisa aprender sobre o sistema
Mas, ira fazer de tudo para “quebra-lo”
12. Quem é um Software Tester?
Software Tester é quem realiza os testes
e encontra os bugs, caso existam na
aplicação testada.
13. Tipos de teste
Automation Testing
Teste automatizado, também conhecido como "Automação de
Teste", ocorre quando o testador escreve scripts e usa outro
software para testar o software. Esse processo envolve a
automação de um processo manual. O Teste Automatizado é
usado para executar novamente os cenários de teste que foram
realizados manualmente, de forma rápida e repetida.
Além do teste de regressão, o teste automatizado também é
usado para testar a aplicação do ponto de vista de
carregamento, performance e stress. Esse tipo de
teste aumenta a cobertura de testes, melhora a precisão,
economiza tempo e dinheiro em comparação com o teste
manual.
14. Importância do teste no SDLC
Todo software precisa passar por um processo de desenvolvimento. As
metodologias de desenvolvimento de software são usadas para sistemas
de informação baseados em computador. O crescimento da informação
tem que passar por várias fases/etapas, conhecidas como Ciclo de Vida do
Desenvolvimento de Sistemas (SDLC).
Requisitos
Analise
Design
Codificar
Teste
Implementação
Manutenção
15. Planejamento de teste
Test Plan
Um plano de testes é uma abordagem sistemática para testar
um sistema, ou seja, um software. O plano geralmente
contém uma compreensão detalhada de qual será o fluxo de
trabalho de teste final.
16. Caso de teste
Um caso de teste é um procedimento específico de
teste para um requisito particular
Inclui:
Identificacao do requisito específico testado
Critérios de sucesso/falha do caso de teste
Etapas específicas para executar o teste
Dados dos testes
17. Níveis de teste
Teste de Unidade
Teste de Integração
Teste de Sistema
Teste de usabilidade
Teste de funcionabilidade
Teste de Performance
Teste de segurança
Smoke Testing
Alpha Testing
Teste de aceitação
Beta Testing
Teste de Regressão
Monkey Test
18. Teste unitário
Testa cada modulo individualmente.
Segue o teste de caixa branca (acesso ao código)
Feito pelos desenvolvedores
Teste de integração
After completing the unit testing and dependent
modules development, programmers connect the
modules with respect to HLD for Integration Testing
through below approaches.
19. Teste de sistema
Após completar os testes de Unidade e Integração utilizando
técnicas de teste de caixa branca, a equipe de
desenvolvimento lança uma compilação .exe (com todos os
módulos integrados) para realizar testes de caixa preta.
Dentro do teste de sistema, temos:
Teste de usabilidade
Teste funcional
Teste de performance
Teste de segurança
20. Teste de usabilidade
Durante este teste, a equipe de testes concentra-se na
facilidade de uso da interface da compilação. Isso inclui os
seguintes subtestes:
Teste de User Interface : Facilidade de uso (interface precisa ser
facilmente entendível pelo usuário final)
Look & Feel : Atrativa
Speed in interface : Menor número de tarefas para concluir a
tarefa.
Teste funcional
Objetivo de verificar o comportamento da aplicação.
Verificaaassertividadedasaídadedados.
Validação de dados e Integração, ou seja, se as entradas estão
corretas ou não.
21. Teste de performance
LOAD TESTING Também conhecido como Teste de Escalabilidade.
Durante este teste, engenheiros de teste executam a compilação da
aplicação sob a configuração e carga esperadas pelo cliente para
estimar o desempenho.
Teste de etresse – Durante este teste, os engenheiros de teste
estimam a carga máxima, ou seja, o número máximo de usuários
que a aplicação pode suportar. Para isso, utilizam a configuração
esperada pelo cliente e executam testes para estimar a carga
máxima que a aplicação pode lidar.
DATA VOLUME TESTING — Time de teste conduz este teste para
descobrir o limite máximo de dados que a aplicação suporta.
22. Teste de segurança
Testar o quão bem o sistema protege contra acesso não
autorizado interno ou externo, danos intencionais, etc.
Smoke testing
O teste de fumaça (Smoke Testing) é um teste de software não
exaustivo que visa verificar se as funções mais cruciais de um
programa estão funcionando, sem se preocupar com detalhes mais
finos.
Alpha Testing
Aplicacao é testada por um grupo seleto de usuário final.
Realizado em condições controladas, sob supervisão do
desenvolvedor.
23. Teste de aceitação
Uma avaliação formal realizada para determinar se um sistema
atende ou não aos seus critérios de aceitação e para permitir
que o cliente decida se deve ou não aceitar o sistema.
A etapa de teste de aceitação é a última ação de teste antes da
implantação do software. O objetivo do teste de aceitação é
garantir que o software esteja pronto e possa ser utilizado pelo
usuário final para executar as funções para as quais o software
foi desenvolvido.
Beta Testing
Realizado antes da entrega final ao usuário.
Antes do lançamento final do software ser disponibilizado aos
usuários para teste, onde não haverá condições controladas e o
usuário será livre para fazer o que quiser no sistema para encontrar
erros.
24. Teste de regressão
Testes com o objetivo de determinar se as correções de bugs
foram bem-sucedidas e não criaram novos problemas. Além disso,
este tipo de teste é realizado para garantir que nenhuma
degradação da funcionalidade de linha de base tenha ocorrido.
Monkey Testing
Testando a aplicação de forma aleatória, como pressionar teclas
de forma irregular e tentar causar falhas no sistema, sem casos
de teste ou cenários específicos - é o chamado teste de
"monkey testing".