2012-02-22 4 views
0

Мне удобно записывать кодированные тесты пользовательского интерфейса, используя VS2010 Ultimate.Как кодировать диски с данными?

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

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

После некоторого рытья я увидел, что вы можете связать CSV, EXCEL, базу данных или XML-файл, чтобы управлять вашими закодированными ui-тестами. Однако все примеры в MSDN и других местах показывают только предварительно сконфигурированные файлы ответов, и большинство из них находятся в формате CSV.

Что происходит в файле ответов и как я могу создать один из моих собственных в формате XML для ввода значений, вводимых в текстовые поля при повторном тестировании кодированного теста ui?

Любые ссылки и рекомендации будут оценены с благодарностью!

ответ

1

Отказ от ответственности: Не является поклонником CodedUI.

Link1 - Creating a data-driven CodedUI test

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

Однако я не уверен, что повторная запись теста уничтожит ваши изменения ... Вам придется попробовать это и посмотреть. Если вам это нужно, я бы посоветовал использовать CodedUI в режиме сценариев (вместо записи-n-повтора).

+0

Повторная запись тестов кодированного интерфейса не приведет к стиранию файлов ответов XML. Содержимое этих файлов хранится в объекте 'TestContext.DataRow', поэтому, если вы перезаписываете тест, вам просто нужно изменить тестовый код, чтобы использовать переменные, хранящиеся в нем. – bleepzter

+0

Также я не знал формат XML-файлов. В результате проб и ошибок я вычислил общую структуру: ''. Кажется, что созданный источник кодированных данных кодированного пользовательского интерфейса ищет XML-файл и позволит вам выбрать тег '' в качестве источника данных. Единственное, что меня действительно беспокоит, - это то, почему и как встроить целые объекты, а не одиночные переменные значения в тег ''. Я имею в виду, что я всегда могу разграничить материал внутри строки через pipe '|', но вложение полного объекта было бы круто. – bleepzter

1

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

Если вы хотите получить более автоматическое тестирование UAT, для этого есть инструменты. Не уверен в Silverlight/WPF как таковой (поскольку я не трачу огромное время либо из-за перемещения всей бизнес-логики из битов пользовательского интерфейса), но я бы предположил, что это должно быть одно.

+0

Отделив бизнес-логику от пользовательского интерфейса, называется единичным тестом, где разработчик обычно тестирует использование шаблона типа MVC или MVVM. Я выполняю интеграционное тестирование, когда все рабочие процессы тестируются на нескольких границах системы. Mocks не режет его, потому что это системные тесты, из которых программное обеспечение получит его утверждения и утверждения соответствия. – bleepzter

+0

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

+0

Тестирование интеграции может быть UAT, или оно может быть закодировано с использованием набора тестовых модулей. Обычно я получаю две библиотеки в своих решениях: AssemblyName.Test.Integration и AssemblyName.Test.Unit. Оба используют MSTest, например, но один выполняет стек. Ни один пользовательский интерфейс не выполняет, потому что это чрезвычайно тонкий слой без логики. Следуя этому принципу, тестирование UI - это UAT, а не интеграция. И есть варианты для автоматизации частей пользовательского интерфейса. Я думаю, вы могли бы использовать их для интеграции, если это необходимо. –

Смежные вопросы