Введение в тестирование блокчейна

Безопасно хранить цифровые данные и оперировать ими на надежной платформе — это цель успешной компании, и во всем мире компании переходят к хранению данных в блокчейне. Блокчейн группирует данные в блоки и шифрует их, что повышает безопасность данных. В отчете Всемирного Экономического Форума говорится, что через 4-5 лет 10% мирового ВВП будет храниться в блокчейнах, или будет иметь отношение к блокчейн-технологиям. Таким образом, растет спрос на тестирование блокчейна, и средства для тестирования.

Как тестируют блокчейн

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

Raj Shekhar Bhardwaj, блокчейн DevOps в британской компании Clearmatics (создание протоколов распределенной инфраструктуры) говорит, что каждое действие (запись) в блокчейне является транзакцией, поэтому тестирование блокчейна предполагает сквозное тестирование по всему жизненному циклу транзакций. Тестируются все этапы: создание транзакции, ее валидация, создание блока, майнинг, и финальный коммит (сохранение) в стабильное состояние. После этого тестируется производительность, затем безопасность.

Santu Maity, enterprise architect в IBM, напоминает, что блокчейн это “цифровая бухгалтерская книга”, где записи хранятся в небольших блоках и цепочках этих блоков, некоторые данные нельзя скорректировать или удалить. Блокчейн является децентрализованной системой, и каждая транзакция, добавленная в цепочку, должна быть реплицирована, чтобы каждый узел получил свою копию.

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

В консалтинговой компании Cognizant, в лице ее исполнительного директора Rutvik Mrug, считают, что в 2021 году блокчейн все еще считается новой технологией, поэтому некоторые компании опасаются запускать ее. Тщательное тестирование блокчейнов позволит ослабить эти опасения, гарантируя качество конечного продукта, созданного в блокчейн-фреймворках. Тестирование обеспечивает функциональную пригодность блокчейна, продуктивность бизнес-системы и ее безопасность, популяризирует распределенные сети как принцип.
Тестирование блокчейна чаще касается тестирования приложений, чем тестирования блокчейн-платформ (Ethereum, Hyperledger), которые уже считаются безопасными.

Надежные практики

Лучшая практика тестирования это тестирование всей среды: сетевые и мобильные блокчейн-приложения, API, управление доступом, точки входа и выхода в блокчейн, инфраструктура открытых ключей (PKI), пользовательские сертификаты, конфигурации, смарт-контракты, блокчейн-узлы, и сеть.

Блокчейны делятся на два типа: публичные и частные. Публичные блокчейны просты в настройке (однако сложны в управлении), поскольку вся сеть уже создана, и мы просто вставляем в нее новый узел (node) и внедряем смарт-контракт со своей политикой.

Частные блокчейны работают на основе выдаваемых разрешений. Поэтому нам сначала надо создать сеть со всеми компонентами: узлами, майнерами, выдачей сертификатов, смарт-контрактами. Такая сеть не требует наличия криптовалюты как основы, потому что все участники сети доверяют друг другу.

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

В частных блокчейнах фокус на тестировании компонентов, смарт-контрактов, управлении учетными данными, и безопасности инфраструктуры.
В Cognizant обращают внимание, что тестирование должно отвечать технологическому уровню блокчейн-приложения. Тестирование интерфейса может быть минимальным (в рамках end-to-end testing flow), в то время как основное внимание QA должно быть посвящено тестированию middleware (API). Нужно протестировать основополагающие вещи (создание блока, его устойчивость и т.п.). В целом, тестирование идет в Agile-режиме, что предполагает максимальную автоматизацию тестирования.

Инструменты

Функциональное тестирование

  1. Тестирование смарт-контрактов
  2. Тестирование жизненного цикла транзакции
  3. Тестирование коммуникации между узлами (gossip) и синхронизации блоков
  4. Тестирование финальности блоков (finality)

Нефункциональное тестирование

  1. Производительность: нагрузки, задержки транзакций, общая производительность
  2. Безопасность: невозможность похищения пользовательских данных, проникновения в сеть, целостность системы
  3. Восстановление : восстановление после сбоя, устойчивость.

В целом, нет специальных средств тестирования блокчейнов. Но есть проекты, посвященные этому, как тот же Hyperledger Caliper (бенчмарки).

Хорошее тестирование блокчейн-приложения гарантирует качество, и минимизирует риски.

Есть неплохие решения для приложений и API; функционального и нефункционального тестирования. Далее приведены некоторые з них:

  • Ethereum Tester: тестирование Ethereum, включая тесты Web3-интеграции, API, смарт-контрактов. Эмулируется “готовый” блокчейн на Эфириуме (Ethereum).
  • Ganache (Testrpc): в основном для тестирования локальных Ethereum-контрактов. Эмулирует блокчейн с тестовыми аккаунтами. 
  • Hyperledger Fabric testing tools: Operator и PTE. Operator способен разворачивать специальные Fabric-сети, на локальной машине с Docker или Kubernetes. PTE (Performance Traffic Engine) — для вызова и анализа чейнкода, в сети созданной в Operator.
  • Exonum Testkit: Тестирование всей функциональности блокчейн-приложения — это Exonum Testkit. Позволяет тестировать API и транзакции без консенсусного алгоритма и подключения к сети.

Corda Testing Tools:Corda это открытая распределенная блокчейн-платформа. Есть встроенное средство тестирования: написание тестов для контрактов, интеграционных тестов, flow-тестов, проверка нагрузки.

Тестирование блокчейна соответствует технологическому строению блокчейн-приложения. Сверху у вас слой интерфейса и IoT, значит нужно протестировать интерфейс. В основном тесты выполняются на уровне API, поскольку вся функциональность блокчейна сосредоточена на API-уровне. Блокчейн-приложения являются data-driven, то есть основаны на обработке данных (в смарт-контрактах и хранимых транзакциях), и необходимо автоматизированное тестирование API-уровня.

На уровне блокчейна тестируется: создание блоков, синхронизация реестров-леджеров, устойчивость узлов к сбоям и т.п. Что касается пользовательского интерфейса и API, будет достаточно традиционных средств (например Selenium, REST Assured). Рекомендуется воспользоваться средствами SDK фреймворка (Ethereum, Hyperledger), или тестовыми средствами платформы (Ethereum Tester или Truffle) в случае Ethereum.

Почему необходимо

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

Проблемы

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

Тестирование блокчейнов активно развивается как область компетенции, и все еще не созданы высококачественные инструменты и эталонные стратегии тестирования. Всякая команда вынуждена изобретать велосипед в виде собственного инструмента или фреймворка. Блокчейн все еще в диковинку, поэтому простор для тестирования ограничен. Еще одна проблема заключается в обилии фреймворков, на которых тестовые инструменты могут и не работать (Ethereum, Hyperledger и др.)

В IBM говорят, что у них возникали следующие проблемы:

  • Недостаточность стандартизации: И недостаточность технического, функционального, законодательного опыта. Не хватает опытных разработчиков, способных создавать стандарты, внедрять сложные концепции в блокчейне — все это приводит к множеству проблем в тестировании.
  • Недостаток инструментов. Если нет нужного набора инструментов, скорее всего, будут проблемы. Тестирование блокчейн-приложений требует сложного набора инструментов и сквозного тестирования. Для блокчейн-сетей существует очень мало специальных инструментов.

Продуктивность и нагрузка. Неспособность протестировать приложения на нагрузку и продуктивность не позволяет понять, как приложение поведет себя в продакшене, а также при больших нагрузках.

Как крупные компании видят тестирование блокчейна

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

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

Всякая новая технология, а блокчейн в особенности, имеет целью доказать свою бизнес-применимость, говорят в Cognizant. Приложения на блокчейне (децентрализованные dapps-приложения), позволяют компаниям найти себе нишу в хранении и обработке данных.

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

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

Будущее блокчейн-тестирования

В 2017 году этот рынок достиг $700 млн. Считается, что в 2024-2025 гг на рынке будет обращаться 20-60 триллионов долларов (по разным оценкам). Отсюда понятно, что это лишь старт, ранние этапы технологии. В IBM полагают, что потенциал рынка будет раскрываться постепенно.

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

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

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

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас