gRPC – це технологічна платформа від Google, призначена для реалізації віддалених викликів процедур (RPC).
Є цікаве пояснення щодо походження її назви. Віддалений виклик процедур дозволяє виконувати функції чи методи на віддаленому комп’ютері, так, наче вони є локальними. Ця абстракція спрощує взаємодію, приховуючи складність HTTP-викликів та інших мережевих аспектів.
gRPC значно полегшує та пришвидшує обмін даними між мікросервісами. Хоча в основі лежить протокол HTTP/2, gRPC робить процес взаємодії простішим для розробників.
Мікросервіси можуть бути написані різними мовами, тому необхідний механізм для їхньої взаємодії.
gRPC вирішує цю проблему, оскільки підтримує різні мови програмування. Для визначення структури повідомлень використовує буфери протоколів як мову опису інтерфейсу.
Тестування gRPC додатків
Тестування – важлива складова розробки будь-якого складного програмного забезпечення, включно з gRPC-додатками. Тестування забезпечує надійну та ефективну взаємодію між мікросервісами та іншими компонентами.
Це гарантує, що служби, розроблені на різних мовах, можуть успішно спілкуватися, оскільки gRPC використовує мовонезалежні буфери протоколів.
Тестування допомагає виявити та обробити помилки та винятки. Крім того, можна провести тестування продуктивності, щоб оцінити поведінку служб під різним навантаженням мережевого трафіку.
Тепер, коли ви ознайомилися з gRPC, давайте розглянемо кілька інструментів для тестування.
Крея
Крея – це клієнт API з графічним інтерфейсом для gRPC та REST API. Його gRPC клієнт підтримує потокові запити, унарні виклики, валідацію та інше. Для тестування API ви також можете створювати фіктивні дані безпосередньо в Kreya.
Запити та їхні налаштування зберігаються у файловій системі, що дозволяє використовувати системи контролю версій, наприклад, Git, для синхронізації проєктів. Kreya дає можливість визначати тести за допомогою сценаріїв, забезпечуючи автоматичне тестування API при кожному виклику.
Kreya пропонує безкоштовну версію для індивідуальних користувачів, яка включає повнофункціональний gRPC-клієнт, багаторазові конфігурації автентифікації, середовища, шаблони та інше.
ГГц
ГГц – це утиліта командного рядка з відкритим кодом, написана на Go, для бенчмаркінгу та навантажувального тестування gRPC. Вона використовується для тестування API та отримання результатів. Ghz підтримує prot файли, попередньо скомпільовані набори протоколів або відображення сервера. За допомогою шаблонів Go можна додавати спеціалізовані дані до запитів.
Крім утиліти командного рядка, ghz надає веб-інтерфейс для перегляду, відстеження та збереження результатів тестів. Результати можна переглядати у різних форматах файлів, таких як CSV, JSON та HTML. На момент написання статті веб-інтерфейс перебуває на стадії бета-тестування.
Листоноша
Листоноша – це платформа для розробки API, яка підтримує створення та тестування майже всіх типів API, зокрема gRPC. У Postman можна створювати тести для окремих запитів, колекцій або папок у колекції.
При здійсненні gRPC запиту у Postman, перейдіть на вкладку “Сценарії” у вікні перегляду запитів і оберіть, коли ви хочете виконати тест – перед запитом або після отримання відповіді. Можна також використовувати готові фрагменти коду для пришвидшення написання тестів.
Безсоння
Безсоння – це інструмент для проєктування, тестування та налагодження API. Він підтримує запити REST, GraphQL, WebSockets та gRPC. Створюючи новий запит у Insomnia, можна вибрати gRPC і ввести URL-адресу кінцевої точки API.
Необхідно також додати файл .proto для визначення повідомлень. Insomnia підтримує майже всі типи запитів, від унарних до двонаправлених потокових, включно з потоковою передачею клієнта та сервера.
Для тестування API в Insomnia потрібно додати проєктний документ, а потім на вкладці “Тестування” створити набір тестів. Insomnia використовує структуру Mocha для юніт-тестування та Chai для тверджень.
Stackhawk
Stackhawk – це інструмент для тестування безпеки API, який також пропонує рішення для служб gRPC. За допомогою цього інструмента можна забезпечити безпеку кінцевих точок API. Для сканування gRPC-додатку за допомогою Stackhawk потрібно визначити файл stackhawk.yml з необхідними налаштуваннями.
Stackhawk пропонує безкоштовну версію з інтегрованим DAST-тестуванням в конвеєрі CI/CD для одного застосунку. Такі функції, як автентифікація, автоматизація, статистика, сповіщення та підтримка всіх типів API, включені у всі тарифні плани.
gRPCurl
gRPCurl – це утиліта командного рядка з відкритим кодом для підключення до серверів з підтримкою gRPC. Як випливає з назви, її називають “curl для серверів gRPC”. Причина, чому не можна використовувати cURL для надсилання запиту на сервери gRPC, полягає в тому, що він не підтримує буфери протоколів, які є двійковими повідомленнями, тоді як cURL працює лише з рядками JSON.
Можна перевірити схему для служб gRPC, звернувшись до сервера, що підтримує відображення сервера, прочитавши вихідні файли протоколу або завантаживши скомпільовані файли “protoset” (файли, що містять закодовані протоколи дескрипторів файлів).
gRPCurl не є повноцінним інструментом тестування, але дозволяє здійснювати базові запити та тестування через командний рядок.
ReadyAPI Smartbear
ReadyAPI від Smartbear підтримує тестування gRPC API, але тільки унарні операції. Для тестування gRPC служби спочатку потрібно налаштувати API підключення як крок тесту. Таким чином можна надсилати запити та отримувати відповіді від служби gRPC.
Наразі ReadyAPI підтримує тільки унарні операції, тобто очікує лише одну відповідь від сервера.
NosyMouse
Nosymouse – це інструмент, що включає тестер gRPC для виконання функціональних тестів, тестів продуктивності та безпеки вручну або автоматично. Він пропонує такі функції, як одночасні віртуальні користувачі, нарощування, критерії проходження, час обдумування, тестові дані, підтримка тестових сценаріїв, а також кілька зважених варіантів використання.
Він дотримується методології тестування на основі даних, гарантуючи підтримку окремих тестових даних, змінних, автоматизованих перевірок і реальних випадків використання. Можна запускати тести з різними входами та перевіряти виходи в інтерфейсі.
Nosymouse пропонує 14-денну безкоштовну пробну версію для тестування двох одночасних користувачів служби.
Заключні слова
Зі зростанням кількості послуг та інструментів gRPC, вибір відповідного інструмента для тестування може бути складним. Правильний вибір має важливе значення, оскільки безпосередньо впливає на функціональність вашого API. Одним з ключових моментів є підтримка різних функцій gRPC, таких як відображення сервера та потокова передача. Враховуйте специфіку gRPC при виборі інструмента тестування.
Для покращення продуктивності API, ознайомтесь з найкращими платформами навантажувального тестування API.