Управляйте документацией по API, тестами, макетами с помощью YApi

задняя часть внешний интерфейс API тестовое задание

предисловие

С развитием Интернета API стали критически важными. Согласно статистике, на рынке сейчас десятки миллионов разработчиков, более 1 миллиарда интернет-проектов и около 10 миллиардов API, задействованных в консервативной статистике. С такой большой базой API-интерфейсов, если будут решены некоторые общие проблемы, это будет очень значимо. Мы обобщаем проблемы управления API и обнаруживаем, что связанная с API документация, отладка, тестирование и имитация данных очень неэффективны в работе.

Болевые точки бизнеса

Обслуживание и управление интерфейсом требует очень много времени, занимая около 30% времени разработки. Бэкенд-программисты должны поддерживать для них избыточную документацию, а фронтенд-программисты тратят много времени, потому что документация, предоставляемая бэкенд-разработкой, неточна.

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

Front-end программистам необходимо возвращать данные MOCK до того, как бэкэнд-функция не будет разработана, чтобы это не влияло на ход разработки. Традиционные данные MOCK записываются в код проекта в коде проекта, что вызовет больше новых вопросов.Во-первых, интерфейс программиста определяется по требованию, архитектура предполагает изменения в любое время, если интерфейсный программист полностью готов.Первоначальное определение дизайна Mock данные будут иметь большой доступ к фактическому интерфейсу.

Без стандартизированного процесса унифицированной обработки этот процесс очень разрознен, требует большого количества инструментов и неэффективен.

Исследование рынка продукта

Мы ожидаем, что полный интерфейсный инструмент поможет разработчикам в отладке, управлении документацией и тестировании интерфейсов в простом в использовании графическом интерфейсе. Поэтому мы начали искать аналогичные продукты на рынке и после некоторого периода анализа, наконец, нашли несколько репрезентативных продуктов Rap, Nei и Easy-Mock. В то же время мы перечислили некоторые ключевые особенности в соответствии с нашими собственными требованиями:

Nei является продуктом клиентского бизнес-отдела NetEase. Среди этих продуктов он относительно хорошо сделан. Nei фокусируется на Saas-сервисах, и у него нет версии с открытым исходным кодом. Для Qunar это точно не будет выкладывать конфиденциальные данные интерфейса компании на стороннюю платформу.

Рэп — это продукт, выпущенный командой MUX компании Alimama в 2013 году. Это самый ранний продукт в своем роде с точки зрения времени. Рэп разрабатывается back-end инженерами на основе java.Если вы хотите настроить какие-то функции, вам нужно изучить java, а в нашем отделе никто не знаком с java. С другой стороны, в Rap нет функции тестирования интерфейса, а бэкенд использует другие инструменты (почтальон, рестлет) для тестирования интерфейса, и нет единого инструмента, используемого фронтенд и бэкенд разработчиками.

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

Rap и Easy-Mock — это всего лишь единый инструмент для разработчиков, они обращают внимание только на процесс разработки и не стоят в глобальной перспективе решения задачи, наша цель — интегрировать инструменты в процесс разработки интерфейса. Поэтому мы начали разработку новой платформы управления интерфейсом, мы надеемся, что она обеспечит управление документами интерфейса, моделирование данных интерфейса (MOCK), отладку интерфейса, автоматическое тестирование и т. д., что позволит более эффективно работать, связанную с интерфейсами лицевой и обратной стороны. . Это платформа управления интерфейсом YAPI. Давайте поговорим о том, как YAPI решает болевые точки, описанные выше.

решение

  1. Совместно поддерживать определение интерфейса, чтобы пройти через все ссылки

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

В процессе разработки интерфейса бэкэнд обычно использует postman и другие подобные инструменты для тестирования интерфейса, а тестирование интерфейса — необходимый процесс в процессе разработки. Если параметры изменены, поля и тестовые интерфейсы будут обновлены в таких инструментах, как почтальон. Отсюда можно представить, что, Если есть инструмент, который можно использовать и как тестовый интерфейс, и как инструмент документации интерфейса, чтобы связать вместе документацию интерфейса и тестирование интерфейса, эта проблема будет решена. Решение YApi заключается в том, чтобы связать документы интерфейса и тесты через единый источник данных, если есть изменения, потому что единый источник данных изменен, не будет задержки обновления и несвоевременных проблем.

  1. Интерфейсное решение для фиктивного сервера

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

На платформе YApi, пока внешний и внутренний интерфейс поддерживают данные ответа, определенные интерфейсом, могут быть сгенерированы необходимые данные моделирования.Следующий код определяет сгенерированный шаблон данных:

{
    "errcode": 0,
    "errmsg": "@string",
    "data": {
        "type":"@pick(1,2,3)",
        "list|1-10": [{
            "uid": "@id",
            "username": "@name"
        }]
    }
}

Могут быть сгенерированы следующие данные моделирования:

{
  "errcode": 0,
  "errmsg": "^*!SF)R",
  "data": {
    "type": 2,
    "list": [
      {
        "uid": "370000200707276255",
        "username": "Ruth Clark"
      },
      {
        "uid": "650000200211185728",
        "username": "Anthony Martin"
      },
      {
        "uid": "370000199201143855",
        "username": "Laura Rodriguez"
      },
      {
        "uid": "610000198704072775",
        "username": "Anthony Perez"
      }
    ]
  }
}

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

Базовые инструменты Mock уже могут удовлетворить большинство потребностей, но некоторые сложные сценарии не могут быть реализованы. Например: когда я создаю страницу списка данных, мне нужно протестировать взаимодействие страницы при разной длине поля и когда данные пусты. YApi предоставляет возможность ожидать и настраивать сценарии.

пользовательский скрипт

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

if(cookie._type == 'error'){
    mockJson.errcode = 400;
}

if(cookie._type == 'empty'){
    mockJson.data.list = [];
}

3. Автоматизированное тестирование

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

Целью YApi является внедрение автоматизированного тестирования с помощью простого графического интерфейса. Даже если вы не разбираетесь в разработке программ, вам нужно только настроить соответствующие параметры и операторы утверждений, которые очень просты в использовании. В дополнение к основным функциям YApi также предоставляет мощные функции Pre-Script и визуального выражения.

Pre-Script

Pre-Script включает в себя сценарий обработки параметров запроса и сценарий обработки данных ответа. Измените параметры запроса и возвращаемые данные ответа, настроив скрипт javascript. Сценарии его использования следующие:

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

Построитель визуальных выражений

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

4. Вставной механизм

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

достижение

После запуска YApi внутри компании в октябре прошлого года более 700 разработчиков присоединились и использовали интерфейс управления YApi менее чем за неделю. На данный момент около 300 проектов в компании находятся под управлением YApi, а среднее количество макетов интерфейсов в день превышает 5000+. В духе открытого исходного кода позвольте YApi повысить эффективность большего числа разработчиков, наш YApi является открытым исходным кодом на github , и в настоящее время существует1.6k star, около 500 компаний по всей стране используют YApi для управления своими интерфейсами, в том числе некоторые известные компании, такие как Baidu, Jingdong, Link, Kuaishou, eLong, Vipshop и т. д.

адрес

Категории