Подтвердить что ты не робот

Тестирование пользовательского интерфейса

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

У нас есть нетехнические пользователи, которые выполняют тестирование, но часто пропускают части и пропускают ошибки.

Мой вопрос: Есть ли какие-либо рекомендации по организации тестирования пользовательского интерфейса проекта WinForms? Есть ли способ его автоматизировать?

Спасибо!

4b9b3361

Ответ 1

Есть инструменты для тестирования графического интерфейса, которые будут нажимать кнопки и прочее для вас, но они довольно хрупкие в моем опыте.

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

Ответ 2

Вы можете автоматизировать тестирование графического интерфейса, используя White framework.

Также рассмотрите возможность использования TDD-дизайна, т.е. используйте шаблон MVP/MVC.

Я настоятельно рекомендую вам ознакомиться с документацией из групп шаблонов Microsoft и групп.

Особенно обратите внимание на Компонентный интерфейс приложения и CompositeWPF.

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

Ответ 3

Удерживайте слой GUI как можно более тонким. Статья Майкла Перса, Диалоговое окно Humble, является классикой. Также проверьте Martin Fowler Пассивный просмотр. Я также слышал, что "автоматические кнопки кликов" являются хрупкими, и что он легко тратит больше времени на поддержание теста, чем вы тратите на поддержание кода.

Ответ 6

Существует множество доступных инструментов и библиотек, которые могут автоматизировать тестирование WinForms, начиная от решений с открытым исходным кодом, таких как White, до дорогостоящих коммерческих решений, таких как HP QuickTest Pro. Также есть пространство имен UIAutomation в .NET, если вы хотите перевернуть свою собственную систему автоматизации. Но реальная стоимость автоматизации - это время и специальные навыки, необходимые для ее реализации. Поддержание работоспособности также является одним из наиболее важных аспектов автоматизированного тестирования; вы не хотите тратить чрезмерный ресурс, сохраняя активы автоматизации, текущие с вашим приложением. Существует также множество факторов, влияющих на решение автоматизации, которое будет специфично для вашего конкретного приложения и организации.

Лучше всего сделать еще несколько исследований по этому вопросу и проверить некоторые специализированные сайты тестирования, такие как http://www.sqaforums.com.

Ответ 7

Я нашел этот быстрый и грязный способ проверить макеты веб-страниц в разных браузерах. Он называется browsershots.org. Наш клиент требует поддержки в 5 браузерах прямо сейчас, и это занимает около недели для полного тестирования регрессии. Эта служба будет предоставлять скриншоты из примерно 70 версий браузеров и версий. Я распечатываю их и задерживаю страницы на свет. Если они не выстраиваются в линию, должна быть проблема с компоновкой.

Ответ 8

Я не могу реально помочь с организацией или лучшими практиками, но расширение NUnit доступно для тестирования форм, NUnitForms.

Ответ 9

Я использовал пробную загрузку, похожую на этот продукт (http://www.tethyssolutions.com/product.htm) и этот продукт (http://www.mjtnet.com/macro_scheduler.htm) лет назад, и я был доволен результатами. Это довольно дешевые решения, и некоторые из этих макрорекордерных продуктов могут быть фактически использованы для автоматического тестирования.

Ответ 10

Теперь доступен новый метод использования Ruby через жемчужину Ruby под названием win32-autogui. Это обеспечивает основу для тестирования приложений Windows GUI. Объедините его с инструментами Ruby RSpec и Cucumber, и это создает довольно мощную среду тестирования.

Ответ 11

Как организовать тестирование пользовательского интерфейса зависит от того, как вы разрабатываете тестовые примеры.

Автоматизация приложения Windows Forms на уровне unit test может использовать инфраструктуру TDD, такую ​​как NUnit; или использовать структуру BDD, такую ​​как NSpec.

Автоматизация приложений Windows Forms на функциональном уровне тестирования может использовать White, CodedUI или даже напрямую с помощью Windows Automation API 3.0 (автоматизация пользовательского интерфейса и MSAA).

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