How to Break Software Capítulo 2 Taíse Dias Testing from the User Interface.
Transcript of How to Break Software Capítulo 2 Taíse Dias Testing from the User Interface.
How to Break Software
Capítulo 2 Taíse DiasTesting from the User Interface
Roteiro
Usando o modelo Fault para guiar testes
Explorando Inputs Attack 1 Attack 2
Modelo Fault para guiar testes Baseado em estratégias: ataques Divididos em 4 categorias:
aceitar entradas produzir entradas armazenar dados executar cálculos (computação)
Devem ser executados um de cada vez
Explorando Inputs
Aplicações sem documentação
Testadores precisam conhecer comportamento do software
Dificuldade pra realizar testes
Solução: conhecer a aplicação usando o software
Attack 1
“Apply inputs to force all error messages to occur”
Quando aplicar esse ataque? Característica essencial de um
software: desvidar entradas incorretas ou responder apropriadamente a essas entradas
Assegurar que código de erro escrito pelo desenvolvedor foi testado
Quando aplicar esse ataque? Inputs que estão fora do intervalo permitido
ou de tipo diferente do permitido
Provavelmente serão encontrados bugs
Conhecer técnicas utilizadas por
desenvolvedores Input Filters: entradas incorretas filtradas
pela interface gráfica Input checking: software não é executado
com entradas incorretas (if else) e retorna mensagens de erro
Exception handlers: “permite” o sistema falhar, permite que o sistema continue interagindo com o usuário
Quando aplicar esse ataque? O teste deve focar em inputs
erradas
Gerar cada mensagem de erro pelo menos uma vez
Que falhas do software tornam esse ataque bem sucedido? Desenvolvedor pára de pensar
no fluxo principal e considera entradas incorretas
Software pára a execução para mostrar a mensagem de erro e continua a execução da aplicação
Exception handler Benefícios aos usuários e aos
desenvolvedores de manutenção
Como determinar se esse ataque revela falhas? Dados de entrada que os
desenvolvedores não sabiam que eram incorretos
Casos específicos negligenciados Provocam o travamento dos
softwares Mensagens mal formadas
prejudicam credibilidade do software
Como conduzir esse ataque? Considerar as seguintes
propriedades:
O tipo da entrada: utilizar tipos inválidos geralmente causam mensagens de erro
Tamanho da entrada
Valores de fronteiras: todo tipo de dado numérico possui valores limites
Attack 2
“Apply inputs that force the software to estabilish default
values”
Ocorre falha caso o software seja executado sem que o valor default da variável seja atribuído
Garante que a maior parte de valores default para dados são testados
Bugs surgem caso variáveis não inicializadas sejam utilizadas
Aplicado em qualquer programa que declara, inicializa e usa dados
Funciona por causa de falhas na compilação Setar compilador corretamente Ferramentas para analisar código
Exemplo: deixar um campo em branco não atribui nenhum valor à variável
Quando aplicar esse ataque?
Como conduzir esse ataque? Verificar opções de botões,
configuração de painéis, telas de instalação
As mensagens retornadas por esses itens são comumente usadas em toda a aplicação
O testador deve selecionar os dados de acordo com sua intuição (se o dado está sendo o usado)
Consultar o código na seção de declaração de dados
Como conduzir esse ataque? Após identificar dados:
Aceitar valores default exibidos pelo software
Entrar com valores nulos Trocar o valor default Usar primeiro o valor default e depois
trocar por valor nulo