Блог A1QA

О тестировании и качестве ПО

Что нужно знать о тестировании блокчейн-приложений

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

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

Прежде чем начать, вспомним, что означают термины, которые нам понадобятся

Блок (block) — единицы кода, которые выполняют функцию хранилища данных о каких-либо действиях, транзакциях.

Блокчейн (blockchain) – постоянно растущая цепочка блоков. Копии цепочек блоков хранятся на множестве различных компьютерах.

Криптовалюта – виртуальные деньги.

Биткоин (Bitcoin) – платежная система и самая популярная криптовалюта в мире.

Эфириум (Ethereum) – вторая по популярности криптовалюта.

Форк (fork) – разветвление цепочки блоков на две, которые начинают функционировать независимо друг от друга.

Майнинг (mining) – получение криптовалюты путем решения математических задач с использованием вычислительных мощностей компьютера.

Комиссия (fee) – плата, которую майнеры получают за совершенные сделки.

Смарт-контракт (smart contract) – алгоритм, автоматизирующий процесс исполнения условий контрактов в блокчейне. Главное преимущество «умного» контракта – исключение расхождения толкований условий договора заключившими его сторонами.

Faucet-ресурсы – интернет-ресурсы, раздающие пользователям монеты криптовалюты бесплатно для использования в своих целях.

Что такое блокчейн с точки зрения тестировщика?

Блокчейн – это, в первую очередь, функциональность приложения. В 90% случаев – разновидность платежной системы. Тесты, соответственно, будут примерно такими же, как при тестировании платежей: валидация параметров, проверка успешного завершения транзакции, проверки дополнительных условий из требований, например, выполнение условий смарт-контракта.

Какими особенностями обладает тестирование блокчейн-приложений?

  1. Создание окружения для тестирования

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

Избежать затрат поможет тестирование в тестовой сети: можно развернуть свою, а можно пользоваться готовой. Например, для приложений, развернутых на Ethereum, активно используется популярная тестовая сеть Ropsten. В тестовых сетях используется точно такой же код, как и в основной сети, но получить активы можно совершенно бесплатно с использованием faucet-ресурсов.

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

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

  1. Необратимость операций

Приложения, построенные на блокчейн, децентрализированы. Код приложения открыт и доступен любому желающему. Отсутствие центрального сервера приводит к тому, что 99% ошибок, сбоев, подмен, любых других противоправных действий в блокчейне невозможно отменить. Если операция добавлена в блокчейн, она должна быть верной.

Это накладывает максимальный уровень ответственности на команду по тестированию. Ведь пропущенный дефект почти всегда будет критическим.

  1. Все транзакции платные

Задача тестировщика – проверить, как будет проходить добавление и обработка транзакций в блокчейне. Однако следует помнить, что все записи в блокчейне платные, что накладывает свои особенности на процесс тестирования.

Например, при работе с биткоином надо учитывать, что кроме суммы перевода сверху будет снята комиссия за работу майнеров.

При работе с Ethereum расчет будет произведен в абстрактной величине Gas (валюта для расчетов внутри сети).

Тестировщику важно знать, что размер перевода не может быть меньше размера комиссии. Иначе платформе будет невыгодно поддерживать операции.

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

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

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

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

Функциональное тестирование даст понять, были ли реализованы все функциональные требования.

Нагрузочное тестирование поможет оценить пропускную способность системы, через которую идет взаимодействие с блокчейном.

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

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

Приступая к тестированию, важно хорошо подготовиться. При тестировании понадобятся следующие инструменты:

  • Индексер тестовой сети. Например, сайт Ropsten Etherscan позволяет увидеть актуальные балансы кошельков, детальную информацию по любой транзакции.
  • Баг- и тест-трекинговые системы.
  • Возможно, придется развернуть ноду (от англ. node – узел) для выбранного блокчейна локально. Для этого существует множество инструментов как с удобным UI, так и консольных.
  • Инструменты для тестирования API (Postman или soapUI).
  • Инструменты для просмотра информации в базах данных.
  • Энкодеры и энкрипторы.

Возможна ли автоматизация тестирования блокчейн-приложений?

Как и на любом другом проекте, автоматизация возможна и желательна. Можно автоматизировать все валидации, отработку контрактов. Результаты проведения тестов удобно сравнивать, анализируя информацию из блокчейна или отправляя запросы к индексерам.

Как выбрать команду для тестирования?

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

Заключение

Блокчейн может использоваться практически в любой отрасли и со временем все больше компаний придут к ее использованию.

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

Закажите бесплатную консультацию со специалистами A1QA и узнайте, как они могут помочь вашему продукту.

Поделиться статьей: