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

Фотография

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

api autotests nunit restsharp nswag

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 bistra

bistra

    Новый участник

  • Members
  • Pip
  • 13 сообщений

Отправлено 26 мая 2020 - 10:19

Привет! Пишу автотести для API. Начала все это дело по старинке - новый проект, сама написала модели, ендпойнты, реквести, респонсы.. НО.. девелоперы сказали что это полнейшая ерунда, вручную писать все эти вещи плохо, выдали сгенерированный клиент и сказали пользоваться.

Клиент генерили через nswag, в проект добавила его как nuget package. 

В самом клиенте есть:

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

2) методы для работы с ендпойнтами. выглядит ужасно, некоторые методы принимают 10-20 входящих параметров, пользоваться крайне неудобно, как представлю что нужно передать (null, null, null, null .. и еще несколько раз null, "something") аж передергивает.

 

И собственно вопрос: это я отстала от жизни и нужно переучиваться или предложили штуку, бесполезную для написания автотестов, но класное решение в девелопменте? 

 


  • 0

#2 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 26 мая 2020 - 14:57

ну Вы наверное и тесты еще писали не в коде проекта? и код ревью не проходили поэтому?


  • 0

#3 bistra

bistra

    Новый участник

  • Members
  • Pip
  • 13 сообщений

Отправлено 26 мая 2020 - 15:19

Что-то я в Вашем комменте не вижу ответа на свой вопрос. 

 

Тесты в отдельном репозитории, пишу их независимо от девелоперов, ревью нет.

Проект построен на микросервисах, замечание по поводу "тесты еще писали не в коде проекта"  не актуально.


  • 0

#4 Сергей

Сергей

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 245 сообщений
  • Город:Москва

Отправлено 26 мая 2020 - 20:26

Зачем вы вообще обратились к девелоперам?) Они вам ещё что-нибудь подсунут, чтобы не они писали тесты, а вы за всех это делали. Один крутой дев такую нам х-нь написал с нуля, так же посмотрел и сделал, потом уволился... В общем, верьте им больше.
  • 0

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


#5 bistra

bistra

    Новый участник

  • Members
  • Pip
  • 13 сообщений

Отправлено 27 мая 2020 - 09:23

Зачем вы вообще обратились к девелоперам?) 

 

Я и не обращалась ) обсуждали какой-то рабочий момент и они по ходу решили мне помочь :) 

А вопрос задала на форуме, потому что а вдруг что-то новое появилось, реально крутое, а я не в курсе, и делаю все так же как и последние 5 лет
Вот уже для себя выяснила, что Restsharp стоит убрать с моей связки, а пользоваться HTTPClient.


  • 0

#6 Eugene_White

Eugene_White

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Ляшенко Евгений Сергеевич


Отправлено 29 июня 2020 - 00:25

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

 

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

 

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

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

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

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

 

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


  • 0

#7 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 29 июня 2020 - 11:07

Привет! Пишу автотести для API. Начала все это дело по старинке - новый проект, сама написала модели, ендпойнты, реквести, респонсы.. НО.. девелоперы сказали что это полнейшая ерунда, вручную писать все эти вещи плохо, выдали сгенерированный клиент и сказали пользоваться.

Клиент генерили через nswag, в проект добавила его как nuget package. 

В самом клиенте есть:

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

2) методы для работы с ендпойнтами. выглядит ужасно, некоторые методы принимают 10-20 входящих параметров, пользоваться крайне неудобно, как представлю что нужно передать (null, null, null, null .. и еще несколько раз null, "something") аж передергивает.

 

И собственно вопрос: это я отстала от жизни и нужно переучиваться или предложили штуку, бесполезную для написания автотестов, но класное решение в девелопменте? 

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

 

Что-то я в Вашем комменте не вижу ответа на свой вопрос. 

 

Тесты в отдельном репозитории, пишу их независимо от девелоперов, ревью нет.

Проект построен на микросервисах, замечание по поводу "тесты еще писали не в коде проекта"  не актуально.

потому, что его там нет :)


  • 0



Темы с аналогичным тегами api autotests, nunit, restsharp, nswag

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных