Apresentação realizada pela Bruna Emerich e Paulo Luiz Fachini no dia 28/05/2019 no #2 Talk Code Like a Tester.
Será que testar é simples?
Venha conhecer um pouco mais sobre técnicas de testes.
Testar não é uma coisa simples. Existem diferentes níveis, tipos e técnicas de testes.
Você sabe quais são elas, quando aplicar e para que servem? Se já sabe, você as utiliza? Sabe os benefícios?
Nessa talk queremos abordar esses questionamentos, mostrando como utilizá-las, para levantar o que pode ser testado de uma forma mais profissional, reduzindo a quantidade de testes e maximizando a sua qualidade.
Abordaremos conceitos amplamente utilizados e consolidados no mercado de desenvolvimento de software, colocando a nossa visão e exemplificando com dados mais próximos da realidade.
1. Será que testar é simples?
Bruna Emerich
Paulo Luiz Fachini
Venha conhecer um pouco mais sobre
técnicas de testes.
2. Por que o software precisa ser testado?
Porque queremos garantir a qualidade de um software!
Qualidade envolve muito mais do que testes, envolve o time
todo, todas as áreas do desenvolvimento, envolve
principalmente entregar aquilo que o cliente espera, e o teste
é uma parte que nos ajuda a garantir essa qualidade.
3. Níveis de teste
Componentes
Nesse nível os testes
são implementados a
nível de código, para
garantir que classes,
métodos, fluxo de
dados ou transição
de estados estejam
funcionando.
Integração
O teste no nível de
integração visa
garantir de dois ou
mais componentes se
integram e continuam
fazendo o que
estavam definidos
para cada um fazer.
Sistema
No nível de sistema o
teste se concentra
em validar o
comportamento
funcional e não
funcional.
Aceite
Nesse nível o sistema
deveria estar
completo na parte
que será validado,
pois pode ser uma
homologação
regulatória ou
verificar o
comportamento do
usuário durante o seu
uso.
5. Teste funcional
O teste funcional valida as funções que o sistema deve
executar e “o que” ele deve fazer.
Todos os níveis de teste.
6. Teste não funcional
O teste não funcional verifica as seguintes características,
usabilidade, desempenho, segurança, compatibilidade,
eficiência, disponibilidade, normativa legal, etc.
Todos os níveis de teste.
7. Teste caixa-branca
O teste caixa-branca utiliza a estrutura interna do sistema
para os testes.
As verificações são realizadas em código, arquitetura,
armazenamento dos dados, entre outros.
Nível componente e integração.
8. Teste relacionado à mudança
Quando são feitas alterações em um sistema, seja para corrigir
um defeito ou por causa de uma funcionalidade nova, deve-se
testar para confirmar se as alterações corrigiram o defeito ou
implementaram a funcionalidade corretamente e não
causaram consequências adversas imprevistas.
Para validar essas situações, podemos aplicar os testes de
“Confirmação” ou de “Regressão”.
9. Teste de manutenção
Depois de implantados em ambientes de produção, os
sistemas precisam ser mantidos. Nesse momento o teste de
manutenção precisa ser executado e uma versão de
manutenção pode exigir testes em vários níveis de teste,
usando vários tipos de testes.
10. Teste estático
Nos testes estáticos entram as revisões manuais de artefatos
estáticos e também as ferramentas de avaliação de códigos.
O que podemos validar com testes estáticos: especificações,
requisitos, estórias de usuários, critérios de aceite, código,
artefatos de testes, códigos de testes, help do usuário, etc.
12. Particionamento de equivalência
Essa técnica tem por características dividir os dados de testes
em partições, as partições devem ser formadas por dados
válidos ou inválidos e o mais bacana que ela pode ser aplicada
em todos os níveis de testes.
13. Particionamento de equivalência
Para o exemplo, utilizaremos regras de criação de uma senha:
- A senha deve ter de 6 a 10 caracteres;
- O primeiro caractere deve ser
alfabético, numérico ou “?”;
- Não permitir caracteres de
controle “%, @, #”;
- A senha não pode existir em
um dicionário [Abc123, …].
AX1T9az0 senha aceita
930taG senha aceita
?65yw4AS9Y senha aceita
asdf a senha deve conter no mínimo 6 caracteres
abcdef123456 a senha deve conter no máximo 10 caracteres
!930Tas a senha deve começar com caracter alfabético,
numérico ou “?”
AX1T@W a senha não pode conter caracter de controle (!%@#)
Abc123 a senha não pode existir em um dicionário
14. Análise de valor limite
Complementar ao particionamento de equivalência, a análise
do valor limite deve ser utilizada quando a partição verificada
é ordenada, consistindo em dados numéricos ou sequenciais.
Os valores mínimo e máximo de cada partição são seus valores
limites e esses devem ser usados como dados de testes.
15. Análise de valor limite
Dado a tabela do IRRF, podemos identificar 5 classes de
equivalência, onde iremos testar os valores limites dessas
classes.
Base de cálculo(R$) Alíquota (%) Dedução(R$)
até 1.903,98 - -
de 1.903,99 até 2.826,65 7,5 142,80
de 2.826,66 até 3.751,05 15 354,80
de 3.751,06 até 4.664,68 22,5 636,13
acima de 4.664,68 27,5 869,36
16. Teste de tabela de decisão
Essa é uma técnica de testes combinatória, que ajuda a
identificar combinações que levam a resultados diferentes.
Uma tabela de decisão completa tem colunas suficientes para
abranger todas as combinações de condições. A tabela pode
ser reduzida excluindo-se as colunas contendo combinações
impossíveis, colunas inviáveis e colunas que não afetam o
resultado.
17. Teste de tabela de decisão
Condições CT1 CT2 CT3 CTX
Enviou todos os dados V V V ...
CPF tem alguma restrição F F V ...
Restrição com outras instituições financeiras F F V …
Foi indicado por um amigo V F V ...
Ações
Classificou no grupo 1 e recebeu convite V ...
Classificou no grupo 2 e pode receber convite nos próximos 90 dias V ...
Classificou no grupo 3 e não receberão convite, tentar novamente em 6 meses V ...
Análise de Crédito do Nubank
18. Teste de transição de estado
Com essa técnica de testes, devemos identificar os estados
que o sistema ou funcionalidade pode transitar, para isso
normalmente são criados diagrama de transição de estado, e
neles são exibidos os possíveis estados do sistema, bem como
a forma que o sistema entra, sai e transita entre os estados.
20. Teste de caso de uso
Com essa técnica os testes serão derivados de um caso de uso,
os casos de uso representam como um ator interage com o
sistema para executar os comportamentos. Nos casos de uso,
representados alguns fluxos, sendo definidos como básico,
alternativo, exceção e tratamento de erros. Desta forma os
testes são projetados para exercitar esses fluxos de
comportamentos.
21. Teste de caso de uso
Possíveis casos de testes:
- Fluxo básico ou principal;
- Fluxo alternativo com final no básico;
- Fluxo alternativo com final alternativo;
- Fluxo básico com final alternativo;
- Fluxo de tratamento de erros ou de
exceção.
23. Teste de cobertura de instruções
Esta técnica testa as instruções executáveis
de um código.
Onde Instruções
y < 0 1, 2, 3, 5, 6, 7, 6, 8, 9, 10
y = 0 1, 2, 4, 5, 6, 8, 10
24. Teste de decisão e cobertura
Esta técnica testa as decisões existentes no código e o código
é executado com base nos resultados da decisão.
Onde Instruções
a = 5 1, 1A, 2, 4
a = 500 1, 1A, 3, 4
a = -5 1, 3, 4
26. Suposição de erro
A suposição de erro é uma técnica usada para prever a
ocorrência de erros, defeitos e falhas, com base no
conhecimento do testador, incluindo como por exemplo:
- Como o sistema funcionava no passado;
- Quais os tipos de erros a equipe tende a deixar passar;
- Falhas ocorridas em outros aplicativos.
27. Teste exploratório
Nesta técnica, os testes são modelados, executados,
registrados e avaliados dinamicamente durante a execução do
teste. Os resultados do teste são usados para aprender mais
sobre o sistema e para criar mais testes.
28. Teste baseado em lista de verificação
Em testes baseados em listas de verificação, os testadores
modelam, implementam e executam testes para cobrir as
condições de teste encontradas nessa lista.
As listas podem ser criadas para dar suporte a vários tipos de
teste, incluindo testes funcionais e não funcionais.
29. Mapas mentais
Mapas mentais, nada mais é que um diagrama para
representar idéias ou outros conceitos que se encontram
relacionados com uma palavra-chave ou uma ideia central, e
cujas informações relacionadas em seu redor.
31. Algumas referências
● BSTQB - Syllabus Foundation Level - v 2018br (https://www.bstqb.org.br/)
● Técnicas de teste de software
(https://guimaraesdani.wordpress.com/testes-e-qualidade-de-software/tecnicas-de-teste-de-
software/)
● Teste de caixa-branca (http://www.facom.ufu.br/~bacala/ES/19-
Testes%20Caixa%20Branca.pdf)
● Exemplo teste de transição de estado
(https://qualidadebr.wordpress.com/tag/particao-de-equivalencia-analise-do-valor-limite-
tabela-de-decisao-teste-de-transicao-de-estados-teste-de-caso-de-uso/)
● Exemplo teste de tabela de decisão baseado na análise disponível no site do Nubank
(https://nubank.com.br/analise)