Привет, Хабр!

Хочу поделиться интересным приложением, которое значительно упрощает процесс веб-тестирования.

В роли QA-инженера, активно тестирующего веб, я часто сталкиваюсь с необходимостью изменения запросов/ответов API, статус кода ответа и других параметров. Иногда возникают ситуации, когда фронт готов, но доработки с бэка еще предстоит дождаться.

Тут на помощь приходит Requestly! 

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

Подмена кода ответа

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

Как сделать подмену статус кода ответа:

  1. Перейдите в раздел HTTP Rules

  2. Нажмите на создание нового правила, выберите Modify API response

  3. Выберете REST API

  4. Вставьте нужный URL и  установите статус код

  5. Сохраните правило

  6. Перейдите на нужную страницу — и вот результат!

Изменение тела ответа.

Это важный инструмент в следующих случаях:

  • Необходимо начать тестирование фронта, но бэк еще не готов.

  • Нет доступа(или он ограничен) к базе данных, но требуется модифицировать данные для тестирования.

Как сделать подмену ответа:

  1. Повторяем все вышеописанные шаги до 3

  2. Вставляем и изменяем ответ (уделяя внимание скобкам, и при необходимости используем Pretty Print для улучшения читаемости)

  3. Сохраните правило

  4. Перейдите на нужную страницу в вебе

    Вуаля — можем тестировать!

Важно помнить: после завершения тестирования нужно отключать правила.

Запись сеансов - удобная фича в Requestly.
С ее помощью вы можете сохранить сеанс, включая запись экрана, console logs, network logs и данные об окружении. Эти записи можно легко интегрировать в баг-репорт (сохранив сессию в виде файла или ссылки), что значительно ускоряет процесс фикса.

Как записать сеанс:

  1. Переходим в Session

  2. Вставляем нужный URL 

  3. Нажимаем Start Recording

Для окончания записи сессии достаточно нажать на Stop recording.

Дополнительные возможности Requestly, которые стоит упомянуть:

Map Remote.

Функция Map Remote позволяет перенаправлять сетевые запросы с одного URL-адреса на другой. Это особенно удобно, когда требуется изменить источник данных или подключить альтернативный сервер.

Delay Network Requests.

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

Mock Server.

В ситуации, когда API еще не разработаны, но фронт уже готов, или когда один из сервисов не отвечает, можно воспользоваться Mock Server. Этот инструмент создает среду, в которой можно эмулировать работу API.

Немного по безопасности

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

Почему же выбор пал в пользу Requestly вместо Fiddler или Charles Proxy?

  • Простота использования: Requestly предоставляет легкий и интуитивно понятный интерфейс.

  • Удобный дизайн: Requestly удобен в использовании различных функций.

  • Запись сессий: Возможность записи сеансов и сразу console logs и network logs  удобная функция, которой нет в других инструментах. 

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

Комментарии (11)


  1. korolevayuliya
    12.11.2023 13:37
    +1

    Вау, действительно намного удобнее, чем сниффер, спасибо огромное!


  1. keenx
    12.11.2023 13:37

    Потрясающе! Спасибо!


  1. Vmurashev70
    12.11.2023 13:37
    -1

    А смысл в подобной подмене? Вот если бы можно было создать правило, которое автоматически проверяет статус соответвующего дефекта в Jira, а еще лучше статус соответвующего pull request, а именно, чтобы он стал Merged и только тогда запустить тест, чтобы получить реальную картину после того как изменения вчекинены в Github


    1. Alex_obron
      12.11.2023 13:37

      Я так понимаю ты автоматизатор и ручником не работал? Если ты не понимаешь для чего нужны подмены


    1. MargoLog Автор
      12.11.2023 13:37

      Отвечая на твой вопрос:
      1. когда бэк не готов
      2. когда тебе нужно проверить данные, но изменить их в БД ты не можешь
      3. когда нужно замокать и посмотреть задачу на другом стенде
      4. когда нужно проверить как фронт будет обрабатывать 400 и 500 ошибки

      Данная статья больше актуальна для manual QA.

      А насчет автоматизации процессов с джирой и Github - данный запрос поможет решить Jenkins.


  1. baruk
    12.11.2023 13:37
    +1

    Отказались от Requestly после того как они недавно поменяли условия бесплатного плана (убрали динамическую подмену, оставили всего 5 правил и т.д.)
    Перешли на Netify - рекордера у него нет (но мы и не пользовались), но зато неограниченное количество правил и есть режим точки останова - в модальном окне можно изменить как запрос, так и ответ на лету - в requestly для этого знания JS требовались .
    И да, еще и в devTools отобразятся подмененные данные и, если отвлекли в процессе, не приходится гадать, правило отработало или нет)


    1. MargoLog Автор
      12.11.2023 13:37

      Поделись, пожалуйста, где можно почитать про возможности подмен в Netify


      1. baruk
        12.11.2023 13:37
        +1

        Документации у него как таковой нет, страничка на гитхабе - https://github.com/vladlavrik/netify
        Но там все интуитивно понятно. Для коллег писал краткую справку по режимам его работы (простите, без скринов, замазывать долго):

        • Mutation

        Режим изменений - в нем можно модифицировать как запрос, так и\или ответ.
        В devTools статус код будет указан оригинальный, но тело ответа - модифицированное

        • Local response

        Отлично подходит для тестирования алертов и прочих ошибок.
        Сетевой запрос сервису не будет отправлен, а в devTools будет отображаться указанный в правиле статус код и тело ответа

        • Breakpoint

        Режим точки останова. Request - при отправке запроса, Response  - при получении ответа, Both - в обоих случаях

        Позволяет модифицировать данные "на лету". При выборе "Response" Netify выведет результат запроса в форму и позволит его отредактировать до того, как этот результат будет отдан сайту. Достаточно настроить одно правило, что бы воспроизводить разные ситуации

        После модификации данных необходимо нажать на кнопку "Send response" и ответ уйдет сайту
        В devTools статус код будет указан оригинальный, но тело ответа - модифицированное


  1. devillom
    12.11.2023 13:37

    Есть еще https://mockoon.com/


    1. MargoLog Автор
      12.11.2023 13:37
      -2

      У него есть расширение для браузера или только апп?
      Мне вот Requestly очень удобен как раз из-за расширения


  1. divanizzy
    12.11.2023 13:37

    Спасибо автору за хорошую статью)

    Я бы отметил важную особенность того, что при подмене боди и статус-кода ответа изменения не отобразятся в Network в девтулз, так что о полноценной эмуляции ответа от бека не говорить не приходится. Может это допилят со временем, а так что-то быстро посмотреть в целом удобно.