Перейти к содержимому

Публикации Eugene_White

1 публикаций создано Eugene_White (учитываются публикации только с 26 апреля 2023)


#177073 API Autotests: Сгенерированный клиент или вручную созданные модели?

Отправлено автор: Eugene_White 29 июня 2020 - 00:25 в Автоматизированное тестирование

Тоже используем C# на проекте, и спустя какое-то время тоже наткнулся на такой комментарий: "Зачем писать свои HTTP контроллеры и модели, если они все уже написаны на бэке?".

 

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

 

И вот основные 2 причины почему:

  1. Модели вы все равно копируете себе в проект практически в точности, за редкими исключениями. Зачем делать двойную работу и дублировать код? В тех же случаях, когда вам нужно проверить негативные кейсы (отправка невалидных типов данных), можете дописывать себе такие модели для личного использования. Будет что-то вроде 'EntityModel'(лежит на бэке и поддерживается девелоперами) и 'EntityNegativeModel'(ваша модель, создаете и поддерживаете ее лично вы).
  2. В живом проекте модели/эндпоинты довольно часто меняются, и мы тратим много времени на поддержку. Имея общие с бэком модели, этой суеты будет намного меньше.

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

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

 

Если же вспомнить о том, что в идеальной вселенной автотесты должны отдавать фидбек о внесенных изменениях как можно быстрее, вопрос поддержки становится очень актуальным, так как никому не нужны тесты, которые постоянно падают, и поднять их занимает 1-2 дня