Вопрос

У меня есть эта грандиозная идея - в основном использовать некоторую атаку методом грубой силы, чтобы протестировать / убедиться, что мое веб-приложение не выходит из строя.

Не заставляйте меня начинать с модульного тестирования и прочего IoC, это нечто совершенно другое.

То, что я делаю и в чем прошу помощи, - это создать интеллектуальный исчерпывающий поиск, который исследует части состояния программы.

То, что у меня есть, - это веб-страница с тем, что я могу делать, щелчок - это одно, ввод текста - другое, некоторые входные данные, такие как переключатели и выпадающие списки, ограничены определенными значениями.Довольно простые вещи.В итоге я получаю конечный набор событий и значений, и то, что я хочу смоделировать, - это прогрессия состояния.Возможно, в некотором смысле это оптимизация FSM, но цель состоит в том, чтобы систематически проходить через произвольные перестановки событий и значений и видеть, что происходит.

Когда обнаруживается проблема, я хочу попытаться спровоцировать эту ошибку с минимальными усилиями, насколько это возможно, чтобы иметь возможность представить четкий тестовый пример.

Это относится к формальным методам проверки, и я прошу помощи или понимания у людей с опытом.

Это было полезно?

Решение

То, что вы хотите сделать, звучит немного похоже проверка модели, с одной стороны, и автоматизированная генерация тестовых примеров с другой стороны (в последней категории ознакомьтесь Конколическое тестирование, метод, позволяющий избежать траты времени на неосуществимые пути выполнения).

Проверка модели была бы предпочтительным методом, если вы предполагаете, что ваше веб-приложение является правильным, и хотите доказать, что это так.Но в случае предупреждения вам, возможно, придется потрудиться, чтобы понять, реальна проблема или нет.Генерация тестовых примеров ориентирована на поиск ошибок:это не доказывает правильность работы вашего приложения, но если оно обнаруживает проблему, оно предоставляет вам входной вектор для ее создания, так что вам не нужно задаваться вопросом, реальна ли проблема.

Я не знаю о каких-либо существующих инструментах для веб-приложений, но это не значит, что их не существует.

Другие советы

Звучит так, как будто тебе нужен фаззер. Персик является одним из таких инструментов.

Исчерпывающий поиск может быть нетривиальной задачей для ограниченных ресурсов (память, пространство), но с помощью многих методов проблему можно уменьшить , например, абстрагируя ваш код (например:замена классов драйверов базы данных заглушками), опыт представлен в этой статье:Абстрактная проверка моделей веб-приложений с использованием Java PathFinder (Вин Куонг Тран, Есинори Танабе, Масами Хагия, Токийский университет).

Если вы ищете своего рода формальную проверку моделей, подобных FSM, Java PathFinder имеет расширение для проверки диаграмм состояния UML, написанных на Java + annotation (это зависит от виртуальной машины Javapathfinder):

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top