- Как тестируют блокчейн
- Надежные практики
- Инструменты
- Почему необходимо
- Проблемы
- В крупных компаниях
- Какое будущее
Безопасно хранить цифровые данные и оперировать ими на надежной платформе — это цель успешной компании, и во всем мире компании переходят к хранению данных в блокчейне. Блокчейн группирует данные в блоки и шифрует их, что повышает безопасность данных. В отчете Всемирного Экономического Форума говорится, что через 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-режиме, что предполагает максимальную автоматизацию тестирования.
Инструменты
Функциональное тестирование
- Тестирование смарт-контрактов
- Тестирование жизненного цикла транзакции
- Тестирование коммуникации между узлами (gossip) и синхронизации блоков
- Тестирование финальности блоков (finality)
Нефункциональное тестирование
- Производительность: нагрузки, задержки транзакций, общая производительность
- Безопасность: невозможность похищения пользовательских данных, проникновения в сеть, целостность системы
- Восстановление : восстановление после сбоя, устойчивость.
В целом, нет специальных средств тестирования блокчейнов. Но есть проекты, посвященные этому, как тот же 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 уверяют, что хотя всемирное внедрение блокчейна все еще на ранней стадии, у многих компаний лишь на этапе пилотных проектов, прогнозы весьма оптимистичны. Поэтому тестирование блокчейна будет идти активнее. Универсальных средств тестирования сейчас нет, и есть запрос на их создание.