Какие-нибудь хорошие инструменты или советы для нечеткого тестирования приложений Windows форм? - PullRequest
9 голосов
/ 28 мая 2010

Я поддерживаю унаследованное приложение толстого клиента ~ 300K LOC C # с интерфейсом Windows.Forms. Приложение полно маленьких ошибок и причуд. Например, недавно я обнаружил ошибку, когда пользователь изменяет и вкладывает (не щелкает) ячейки DataViewGrid и оставляет выбранную ячейку выбранной, приложение получает исключение «Ссылка на объект не установлена ​​для экземпляра объекта» , Я обнаруживаю (или получаю сообщение об ошибке) что-то новое примерно каждую неделю или две. С меня хватит, и я собирался попробовать что-то вроде нечеткого тестирования приложения, чтобы попытаться найти не обнаруженные проблемы.

Если я проведу нечеткое тестирование самостоятельно, я бы предположил, что мне по крайней мере нужно иметь возможность создавать тестовые наборы, которые запускают части моего приложения (главное окно, FormX, FormY, FormZ, ...) и попытаться внедрить в них события.

Я пытался найти подходящие для этого инструменты, но пока ничего не придумал для Win Forms. (Однако, похоже, что нет недостатка в инструментах нечеткого тестирования для веб-приложений).

Есть полезные идеи?

Ответы [ 2 ]

6 голосов
/ 28 мая 2010

Мне всегда нравится идея тестового инструмента Gremlins, используемого на карманных компьютерах Palm. Он генерировал случайные события касания для устранения ошибок программирования пользовательского интерфейса. Вы можете сделать то же самое в своем приложении, генерируя миллионы событий нажатия мышью вверх и вниз в случайных местах. Вам нужно P / Invoke PostMessage () и использовать Control.GetChildAtPoint () для генерации дескриптора окна для сообщений WM_LBUTTONDOWN / UP. Application.DoEvents () в вашем тестовом цикле, чтобы запустить обработчики событий.

4 голосов
/ 01 июня 2010

В поисках по сети я нашел 2 ссылки с полезными инструментами и информацией по Fuzz-тестированию приложений WinForms:

  • Monkey Fuzz Testing - Инструмент альфа-статуса в codeplex, который, кажется, довольно близок к тому, что я хочу. С сайта: «MonkeyFuzz в первую очередь отправляет случайные события клавиатуры и мыши в программу, но он может записывать действия по пути. Это позволяет воспроизводить их, что полезно для регрессионного тестирования)». Я могу попробовать и сообщить о своих выводах.
  • A Документ о случайном тестировании от факультета CS Университета Висконсина. Это датировано 2000-2002, но, похоже, содержит некоторую полезную информацию и ссылки на инструменты , которые они использовали в своем исследовании. Однако, похоже, что инструменты могут устареть как минимум на 10 лет.
...