Я поддерживаю ~300K LOC устаревшее приложение толстого клиента C# с Windows. Интерфейс Forms. Приложение полно небольших ошибок и причуд. Например, я недавно обнаружил ошибку, где, если пользовательские редактирования и вкладки (не щелчки) через ячейки на DataViewGrid, и оставляет определенную ячейку выбранной, приложение получает "Ссылку на объект не набор к экземпляру объектного" исключения. Я обнаруживаю (или получите отчет об ошибках), что-то новое как это о каждой неделе или два. У меня было достаточно, и думал о попытке своего рода тестирования пуха на приложении, чтобы попытаться выведать неоткрытые проблемы.
Если бы я roll-my-own тестирование пуха, я предположил бы, что, по крайней мере, должен смочь генерировать тестовые обвязки, которые выполняют части моего приложения (главное окно, FormX, FormY, FormZ...) независимо и пытаются ввести события в них.
Я пытался искать инструменты, которым удовлетворяют для этого, но до сих пор ничего не придумал для Форм Победы. (Кажется, нет никакой нехватки инструментов тестирования пуха для веб-приложений, однако).
Какие-либо полезные идеи?
Мне всегда нравилась идея инструмента тестирования Gremlins, который использовался на карманных компьютерах Palm. Он генерировал случайные события нажатия для выявления ошибок программирования пользовательского интерфейса. Вы можете сделать то же самое в своем приложении, генерируя миллионы событий опускания и поднимания мыши в случайных местах. Вам понадобится P/Invoke PostMessage() и использование Control.GetChildAtPoint() для создания хэндла окна для сообщений WM_LBUTTONDOWN/UP. Application.DoEvents() в вашем тестовом цикле, чтобы запустить обработчики событий.
Поищив в сети, я нашел 2 ссылки с полезными инструментами и информацией о Fuzz-тестировании приложений WinForms: