Тестирование через пользовательский интерфейс или непосредственный доступ к бизнес-уровню можно рассматривать как два разных типа тестов с разными преимуществами и недостатками.
Если вы тестируете пользовательский интерфейс напрямую, то вы тестируете то, чтопользователь видит, и вам не нужно менять код, чтобы иметь возможность его протестировать.Тем не менее, становится довольно сложно проверить угловые случаи или то, как система реагирует на исключительные условия (например, исключения).Роберт Мартин говорит, что он хрупкий.Если ваш интерфейс меняется, вам нужно изменить свои тесты.Таким образом, тестирование через пользовательский интерфейс зависит от зрелости вашего пользовательского интерфейса.Позже в проекте пользовательский интерфейс стал более стабильным, поэтому тестирование через пользовательский интерфейс имеет больше смысла.Кроме того, тестирование некоторых компонентов с помощью пользовательского интерфейса является сложным или запутанным.
Если вы тестируете бизнес-уровень, вы можете легче тестировать угловые условия, и вы менее подвержены изменениям в пользовательском интерфейсе.Однако, как вы говорите, программное обеспечение должно быть написано таким образом, чтобы можно было проводить такого рода тестирование.Возможно, вам даже придется предоставить новый интерфейс, чтобы разрешить его, который затем необходимо поддерживать.По моему опыту, иногда довольно сложно заставить разработчиков поддерживать такой интерфейс.Это не так важно, как реальный интерфейс.Но это всегда возможно.Этот тип интерфейса требует поддержки от разработчиков, в противном случае вы рискуете его «не поддерживать» с течением времени.
Если у вас нет внешнего интерфейса, попробуйте запросить его.Вы никогда не знаете, вы можете убедить их, что это хорошая идея.В начале проекта это проще.
Если у вас есть внешний интерфейс, используйте его для проверки своей бизнес-логики.
В противном случае вам придется использовать пользовательский интерфейс для проверки этихвещи.Один из подходов заключается в использовании пользовательского интерфейса для тестирования дыма, чтобы ответить на следующий вопрос (-ы): Тестируется ли это программное обеспечение?Подумайте об общих вещах, которые вы должны тестировать каждый раз, когда получаете сборку от dev.Могу ли я войти в систему, могу ли я выйти из системы, появляется ли главная страница, можно ли сделать простой заказ?Выберите 5 или 6 из этих вещей и создайте автоматизированный набор тестов для тестирования этих вещей.Используйте эти тесты в качестве руководства относительно того, сколько функциональных возможностей вы можете на самом деле протестировать с помощью пользовательского интерфейса, и насколько это полезно.
Затем вы можете использовать это в качестве аргумента, когда обращаетесь к разработчикам и запрашиваете внешнийинтерфейс.