Тестування блокчейну: повний чекліст

Сучасні користувачі завжди очікують від продукту безперебійної роботи, бездоганного функціоналу і максимальної безпеки. Як отримати такі результати для технології блокчейн?

Ми підготували список основних інструментів, які рекомендуємо використовувати в тестуванні блокчейна.

Що таке блокчейн?

Блокчейн – це поширена, але досить непроста технологія. Тому далеко не всі готові використовувати її в роботі.

Ми хочемо внести конкретику в цей процес і розповісти про його основні переваги.

У початковому своєму значенні блокчейн – це ланцюжок блоків, що послідовно передають важливу інформацію від одного блоку до наступного.

Блокчейн очима тестувальника

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

Блокчейн має доволі багато переваг. По-перше, він допомагає зменшити час на розрахунки і, по-друге, підвищує прозорість за рахунок усунення так званої третьої сторони, а також захищає реєстр транзакцій. І це лише мала їх частина. Але навіть найефективніший продукт потребує ретельного тестування.

На які моменти необхідно звернути увагу при тестуванні блокчейна?

Існують чотири основних критичних показника: джерела подій (транзакції), джерела блоків (фіксація транзакції), одержувачі блоків (читачі) і зафіксовані транзакції.

Типи функціонального тестування:

Модульне тестування смарт-контрактів. Підхід до розробки через тестування (TDD) з використанням таких інструментів, як Truffle/Embark/Dapple/Populus.

Інтеграційне тестування. Дозволяє виявляти недоліки при взаємодії інтегрованих одиниць. Блокчейн програми не можуть існувати виключно в середовищі платформ електронної валюти. Їм необхідна інтеграція з іншими системами, які надають доступ до реальних даних і подій – наприклад, зі смарт-контрактами.

Тестування API. API Dapp викликає внутрішні методи smart-контрактів. API Dapp потребує інтеграції додатків інтерфейсу.

Нефункціональне тестування включає в себе тестування продуктивності і безпеки (наприклад, перевірка продуктивності при перекачуванні великого обсягу транзакцій в мережу блокчейну, захищений доступ до блокчейну, підпис гаманця).

Типи нефункціонального тестування:

Тестування безпеки

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

Тестування продуктивності (навантажувальне тестування)

Чергуйте рівень навантаження на систему, щоб перевірити швидкість відгуку та її стабільність.

Тестування для користувача інтерфейсу

Кінцевий користувач не взаємодіє безпосередньо з блокчейном, але розробник повинен враховувати можливість легкої модифікації інтерфейсу, а також кольорів, логотипу, масштабу, міток і т.п.

В залежності від варіанту використання ПЗ блокчейна має слугувати надійним джерелом даних і, відповідно, має відповідати всім вищевказаним критеріям якості.

Наш топ-5 програм для тестування блокчейна

Gremlin

Зручний інструмент для перевірки стабільної роботи будь-якої системи. Основна места інструмент – створити різні баги всередині мережі, затримуючи всі процеси, перевантажуючи систему і відключаючи окремі протоколи. Такий підхід дає змогу зрозуміти, чого можна очікувати в разі реального збою і оновлення коду.

MixBytes Tank

Інструмент використовує кілька cloud-сервісів (Digital Ocean, Google Cloud Engine і ін.), де може запускати цілий спектр вузлів. Він дозволяє оцінювати ресурси cloud-сервера, автоматично відключаючи непотрібні ресурси після тестування.

Madt

Створений на Python, цей інструмент дозволяє обладнати необхідну топологію мережі і потрібну кількість серверів і клієнтів за допомогою простого сценарію конфігурації. Madt розгортає мережу в декількох docker контейнерах і відкриває веб-інтерфейс, в якому ви можете переглядати повідомлення від серверів і клієнтів мережі.

Truffle

Найпопулярніший фреймворк, який дозволяє писати автоматичні тести як на JavaScript, так і на Solidity. Результат буде видно одразу після першої автоматизації.

Corda

Це платформа з відкритим вихідним кодом, яка містить набір вбудованих функцій і дозволяє писати тести для перевірки контрактів, а також для проведення навантажувального тестування та інтеграції.