Что бы подобрать для UI-тестирования десктопного приложения?
Здравствуйте.
Ситуация: есть десктопное приложение на C#, которое потихоньку пишется. Хочу узнать, можно ли его как-то автоматически тестировать.
Грубо говоря, открывает пользователь форму, вводит данные, потом открывает другую, вводит, потом смотрит результат, который отображается на нескольких вкладках. Хочется подготовить несколько (10-20-30) примеров - и прогонять их, автоматически проверяя результат.
Я человек небогатый, Visual Studio Ultimate не куплю. Да и вообще по деньгам абсолютный потолок - это где-то 1000 рублей в месяц (да и то меня жаба задушит), поэтому хотелось бы что-нибудь бесплатное. 1. Когда говорят о тестировании, обычно всплывают юнит-тесты - но я, честно говоря, не вижу, как они мне пригодятся в этой ситуации. Довольно много логики завязано на событиях UI-компонентов, и я не очень представляю, как мне эмулировать, скажем, клик по ячейке таблицы. Эмулировать клик важно, потому что я теоретически могу и с обработчиком накосячить. Опять же, глубоко вникать в технологию юнит-тестов я пока не готов. Стоит ли копать в этом направлении? 2. Для тестов собственно UI я что-то инструментов не знаю. Максимум приходит на ум AutoHotKey - но с ним будет не очень просто считывать результат. Был у кого-то опыт подобных мероприятий?
Вроде все. Спасибо за советы, если таковые будут.)
Использовал TestComplete. Инструмент хороший. Платный. Отладчик лучше всего работает, если язык проекта Delphi Script.
1. Логику работы приложения отделите от форм. Чтобы в событиях форм лишь вызывались методы основного класса. В собственных разработках не всегда следую этому правилу, но следую. На форме есть текстовое поле, а в методе параметр типа string. На форме есть таблица на четыре колонки, в методе есть список классов (в классе четыре поля). И так далее.
На основной класс уже пишутся модульные тесты.
2. Используя такие инструменты как TestComplete, удобно писать регрессионные тесты на проверку правильности отображения заранее подготовленных данных. А проверять логику работы кликами - крайне тяжело.
Советы:
- после каждого действия проверяйте отсутствие диалогов с ошибками и отсутствие ошибок в логах;
- выделите время на подготовку тестовых данных, хорошие тестовые данные в визуальных тестах крайне важны;
- пишите короткие тесты (открыть, проверить, закрыть), не пишите тесты, которые длятся дольше 20-30-ти секунд.
Вам придётся разработать API, хотя бы для таких частых действий как "открыть" и "закрыть" и API для проверки результатов (обращения к базе данных, файлам, логам). Визуальные тесты окупаются, если вы заявляете поддержку нескольких конфигураций (интерфейс единый, а окружение различное - операционные системы, базы данных, настройки, параметры шрифтов, ...). Если хотите тестировать только на одной конфигурации, то автоматизируйте самым минимум операций, не усложняйте.
lostpassword: Пожалуйста.
Подумал, как можно используя простые инструменты (AutoIt, например) покрыть тестами сложное приложение.
Выделю два фактора:
1. Приложение ориентировано для автоматизации тестирования, у кнопок уникальные идентификаторы, элементы управления легко доступны.
2. У приложения есть отладочный режим, при котором в лог пишется факт начала и завершения выполнения всех событий (клик, выбор, запуск, ...), предупреждений и ошибок.
Так можно будет писать простой тест, который только посылает управляющие воздействия. А для проверки результатов использовать несложный единый механизм - работу с логами.
Если уже есть Премиум Студия -
Coded UI Tests. Созданы как раз для тестирования UI. habrahabr.ru/post/97012 - для старой 2010 версии VS. В 2012 не особо поменялись, выше пока не пробовал.
Если нет премиума - в 1000 рублей, увы, не уложитесь.
Копать в сторону Unit-тестов стоит в любом случае. Помимо базы в виде Art Of Unit Testing можно почитать вот этого товарища: sergeyteplyakov.blogspot.ru