Pergunta

Tenho a grande ideia de basicamente empregar algum ataque de força bruta para testar/verificar se meu aplicativo da web não trava.

Não me fale sobre testes de unidade e coisas de IoC, isso é algo totalmente diferente.

O que estou fazendo e pedindo ajuda é criar uma pesquisa inteligente e exaustiva, que explore partes do estado do programa.

O que tenho é uma página da web com coisas que posso fazer, clicar é uma coisa, inserir texto é outra, algumas entradas, como botões de opção e listas suspensas, são restritas a determinados valores.Coisas bem básicas.O que acabo com um conjunto finito de eventos e valores e o que quero modelar é uma progressão de estado.Talvez isso seja, de certa forma, uma otimização do FSM, mas o objetivo é passar sistematicamente por permutações arbitrárias de eventos e valores e ver o que acontece.

Quando um problema é encontrado, quero tentar provocar esse erro com o mínimo de esforço possível para poder apresentar um caso de teste claro.

Isso está relacionado a métodos formais de verificação e estou pedindo ajuda ou informações de pessoas com experiência.

Foi útil?

Solução

O que você quer fazer parece um pouco com verificação de modelo, por um lado, e geração automatizada de casos de teste, por outro (na última categoria, confira Teste de cólica, uma técnica para evitar perda de tempo com caminhos de execução inviáveis).

A verificação de modelo seria o método preferido se você presumir que seu aplicativo da web está correto e quiser provar que está.Mas no caso de um aviso, talvez seja necessário trabalhar para entender se o problema é real ou não.A geração de casos de teste é orientada para a localização de bugs:isso não prova que seu aplicativo está correto, mas se encontrar um problema, fornece um vetor de entrada para produzi-lo, para que você não precise se perguntar se o problema é real.

Não tenho conhecimento de nenhuma ferramenta existente para aplicativos da web, mas isso não significa que elas não existam.

Outras dicas

Parece que você quer um docer. Pêssego é uma dessas ferramentas.

A pesquisa exaustiva pode ser uma tarefa não trivial para recursos limitados (memória, espaço), mas com muitas técnicas o problema pode ser reduzido, como abstrair seu código (ex: substituindo as classes de driver de banco de dados por stubs), uma experiência é apresentada neste artigo: Resumo Verificação de modelo de aplicativos da Web usando Java Pathfinder (Vinh Cuong Tran, Yoshinori Tanabe, Masami Hagiya, Universidade de Tóquio).

Se você procurar um tipo de verificação formal de modelos FSM como o Java Pathfinder tem uma extensão para verificar os gráficos do Estado da UML escritos na anotação Java+(depende da VM Javapathfinder):

http://babelfish.arc.nasa.gov/trac/jpf/wiki/projects/jpf-statechart

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top