Test Engineering Notes
Открыть в Telegram
Канал про технічні аспекти тестування, розподілені системи, блокчейн, ШІ та перфоманс. Консультації з автоматизації, менторинг, тестові співбесіди - в Дірект
Больше4 033
Подписчики
Нет данных24 часа
+217 дней
+2230 дней
Архив постов
Как “быстро” проверить gRPC сервис?
#grpc #testing #tools
HTTP API приходится тестировать часто. Можно быстро сделать запрос с помощью cURL. Можно написать пару тестов на Java+RestAssured. Можно не усложнять - и использовать Postman.
Но что делать, когда надо быстро проверить работу сервиса, а он работает не по HTTP, а по gRPC? Как быть?
Postman судя по всему довольно криво поддерживает gRPC.
Генерировать клиент на основе протобафа и писать почти полноценный сервис для проверки одного-двух запросов - слишком долго и сложно.
На помощь приходит простой и удобный инструмент - grpcurl Он позволяет делать запросы на Ваши сервиса очень похоже, как бы Вы делали это с помощью cURL.
Перед использованием, убедитесь, что reflection включен на серверной стороне. Иначе, работать запросы не будут.
Для тех, кто не хочет связываться с терминалом - есть UI надстройка для grpcurl - gRPCox.
Что значит “тестировать блокчейн”?
#testing #blockchain
Блокчейн - это “хайповая тема” последних лет. Каждый второй делает свою криптовалюту, каждый третий открывает криптовалютный обменник на углу.
Чтобы получше понять, зачем этот самый блокчейн нужен, очень рекомендую статью Вастрика на эту тему
Но что значит “тестировать блокчейн” ? Насколько глубокими и техническими должны быть знания тест инженера для работы с такими системами? Давайте разберемся вместе.
Тестирование блокчейна как системы.
Самый “хардкорный” вариант. В данном случае тестируется блокчейн сеть целиком - как целостное решение. Примеры - Bitcoin, Ethereum.
Тестируем:
- сохранение транзакций в блоки и связь между ними
- криптографические протоколы хеширования и генерация ключей
- репликацию данных между узлами в сети
- алгоритмы консенсуса
- производительность системы
- безопасность системы
- отказоустойчивость системы
Тестирование приложений, построенных на базе блокчейна.
Тут мы имеем дело с обычными Веб и Мобильными приложениями, у которых одна из функций - это сохранять или читать что-то из блокчейн сети.
Связь с блокчейном на бекенде происходит через API запросы. Часто это не HTTP REST API, а что-то более специфическое, такое как gRPC.
API может быть как сторонней системой вообще, так и просто узлом блокчейн сети, который развернут внутри системы.
Кроме того, остальные подходы к тестированию и автоматизации приложений - сохраняются:
- функциональное и нефункциональное тестирование
- UI / API тесты (и автотесты)
Тестирование блокчейн кошельков.
Кошельки - это приложения, которые хранят информацию о ваших паролях и дают возможность покупать и продавать криптовалюту. Они могут быть как в виде веб или мобильных приложений, так и декстопные.
Основной аспект при тестировании - это использование специальных тестовых (TESTNET) блокчейн сетей для проведения транзакций. В таких сетях валюта технически такая же, как и реальная - но не стоит ничего.
Кроме того, могут быть еще и специфические виды кошельков в виде отдельных электронных устройств. А это отдельный интересный мир embedded девайсов.
Тестирование смарт контрактов и прочего DeFi.
Смарт контракты - это программный код, который релизует некую бизнес логику и загружен на блокчейн. Чаще всего под смарт контрактами имеют в виду код на языке Solidity в блокчейне Ethereum.
Тут подходы к тестированию как стандартные, так и необычные:
- юнит тесты
- функциональные тесты
- тесты безопасности
Необычность тестирования в том, что как только код отправлен в блокчейн (“задеплоен на прод”) - он начинает работать сразу. Его крайне сложно “остановить”. А уж удалить и “передеплоить” - так вообще невозможно.
Тестирование криптовалютных бирж
Биржы это обычно веб (или мобайл) приложения, который позволяют завести там аккаунт и заниматься торговлей и конвертацией разных криптовалют.
Очень похожи по своей сути на обычные сайты по банкингу и работе с валютой.
Основная сложность тестирования здесь - это интеграция с апи многих сотен (а то и тысяч) реализаций блокчейнов. Поэтому готовьтесь к ошибкам интеграции и быстрым фиксам.
#testing #blockchain
Продолжая тему тестирования блокчейна. Я тут собираю список инструментов, видео, блог постов и академических работ по теме - https://github.com/alexromanov/awesome-blockchain-testing По мере свободного времени - изучаю их и буду готовить ревью). Если у Вас есть что-то интересное, чего нет в списке - делайте ПР, буду крайне рад.
#paper #blockchain
Блокчейн системы не так-то просто тестировать.
Можно тестировать end-to-end взаимодействие с системой через различного рода кошельки.
Можно тестировать работу смарт контрактов и репликацию транзакций между нодами в сети.
Но один из самых важных аспектов тестирования блокчейн систем - это протоколы консенсуса (Proof Of Work, Proof of Stake, Proof of Elapsed Time и др.).
Различные системы конкурируют между собой, чтобы предложить более защищенные и быстрые протоколы.
Но как сравнить, что один протокол консенсуса лучше другого?
В данной работе описан подход к созданию блокчейн симулятора - который позволяет замерять базовые метрики "идеальной" системы и дальше изменять протоколы и смотреть как протоколы влиять на производительность системы.
https://digitalcommons.odu.edu/cgi/viewcontent.cgi?article=1050&context=vmasc_pubs
Под "базовыми" метриками, авторы понимают такие: пропусная способность (throughput), задержка (latency), отказоустойчивость (fault tolerance) и неоднородность (heterogeneity).
Симулятор “под капотом” запускает сеть узлов в виде отдельных Docker контейнеров.
Звучит интересно.
Всем привет! Добро пожаловать на мой Телеграм канал. Меня зовут Александр. Здесь я планирую делиться интересными ресурсами на темы тестирования, автоматизации и инжиниринга сложных распределенных систем.
