Что такое блокчейн?
О блокчейне: Блокчейн — одна из самых передовых и новых технологий. Это распределенная, безопасная, неотказуемая, неизменяемая запись транзакций между двумя сторонами. Другое его название — технология распределенного реестра.
Он обеспечивает доверие в транзакциях между сторонами, которые не доверяют друг другу. Блокчейн — это достаточно безопасное шифрование. Блокчейн — это неподкупная цифровая книга экономических транзакций, которую можно запрограммировать для записи не только финансовых транзакций, но и практически всего, что имеет ценность.
Как транзакция попадает в блокчейн?
- Транзакция запрашивается и аутентифицируется
- Создается блок, представляющий эту транзакцию
- Блок отправляется каждому узлу (то есть участнику) в сети.
- Узлы подтверждают транзакцию
- Узлы получают вознаграждение за доказательство работы, обычно в криптовалюте
- Блок добавляется в существующую цепочку блоков
- Обновление распространяется по сети
- Транзакция завершена
Что нужно для блокчейна Тестирование?
< р>Блок, однажды добавленный в цепочку блоков, не может быть удален. Оно остается там навсегда. И если вы попытаетесь изменить существующий блок между цепочками, то следующие блоки станут недействительными. Вот почему важно отметить, что всякий раз, когда добавляется новый блок, он добавляется правильно. Транзакция блокчейна проходит проверку, шифрование, дешифрование, передачу и т. д., поэтому важно убедиться, что эти процессы идут хорошо.
Что нам нужно протестировать в блокчейне?
Размер блока. Максимальный размер блока – 1 МБ. Необходимо протестировать поведение, когда размер превышает 1 МБ.
Размер цепочки:Размер цепочки не ограничен. Поэтому его необходимо протестировать как на функциональность, так и на производительность.
Тестирование смарт-контрактов: это программные модули на блокчейне, которые имеют определенные условия и бизнес-логику для транзакций.
< p>Нагрузка: нагрузка становится основным параметром в блокчейн-приложениях. Биткойн имеет максимальную пропускную способность 3-4 транзакции в секунду. Нужно проверить, что произойдет, если пропускная способность увеличится.
Безопасность: Обеспечение безопасности является наиболее важной частью приложений Blockchain. После взлома определенного слоя мгновенные транзакции в блокчейне не могут быть остановлены. В части тестирования блокчейна тестировщики должны убедиться, что транзакции безопасны и нет злонамеренных атак.
Передача данных: данные в блокчейне передаются глобально с одного компьютера на другой. Поэтому становится важно убедиться, что данные не теряются при переходе от одного конца к другому.
Добавление блока: новые блоки добавляются в цепочку после успешной транзакции. Поэтому необходимо проверить, добавляется ли новый блок в цепочку и проходит ли поток гладко.
Криптографические данные: необходимо тестирование, чтобы убедиться, что данные правильно зашифрованы и расшифрованы. .
Какие типы тестирования мы можем выполнять для приложений блокчейна?
Функциональное тестирование:
Функциональное тестирование проводится для оценки эффективности бизнес-требований и сценариев использования. Это гарантирует, что компоненты системы работают должным образом. Это базовое тестирование компонентов и систем и их работы.
Интеграционное тестирование:
Трудно интегрировать приложения блокчейна в различные системы и среды. Интеграционное тестирование необходимо, чтобы убедиться, что интеграция или интерфейсы между компонентами и различными частями системы работают должным образом.
Тестирование безопасности:
Тестирование безопасности для блокчейна. приложений играет решающую роль. Благодаря лучшему тестированию безопасности мы можем контролировать атаки на уровне пользователя, сети и майнинга.
Тестирование производительности:
один из самых важных Критерием применения блокчейна является скорость. Производительность и задержка зависят от размера сети и размера транзакций. Необходимо проверить производительность.
Тестирование смарт-контрактов.
Смарт-контракты сложны по своей природе. В основном они занимаются аудитом транзакций в реальном времени. Если контракт создан с ошибкой или уязвимостью, его нельзя изменить, и он останется там навсегда. Тестирование смарт-контрактов является очень важным и специализированным по сравнению с традиционным тестированием.
Тестирование одноранговых узлов/узлов.
Тестирование одноранговых узлов/узлов необходимо на всех узлах сети. для согласованности транзакций и обеспечения бесперебойного сотрудничества.
Вы также можете прочитать эти 100+ типов тестирования программного обеспечения
Проблемы в приложениях блокчейна Тестирование
- Блокчейн — это новое технологии, а для проведения тестирования необходимо обладать знаниями в предметной области.
- Отсутствие инструментов тестирования блокчейна.
- Проверка размера блока и цепочки.
- Применение таких типов тестирования, как тестирование интеграции, производительности, нагрузки и безопасности.
Важность тестирования смарт-контрактов:
В традиционном веб-приложении после развертывания кода в рабочей среде, если есть ошибка, вы всегда можете исправить ошибку в коде и повторно применить приложение на сервере.
Первоначальное развертывание веб-приложения:< /em>
Исправление ошибки веб-приложения:
К сожалению, со смарт-контрактом это не так просто. Со смарт-контрактом код остается неизменным в блокчейне после развертывания, что означает, что вы больше не можете его изменить. По этой причине крайне важно, чтобы вы все сделали правильно, прежде чем развертывать свой смарт-контракт. У вас не будет второго шанса исправить ошибки. Мы должны убедиться, что наши смарт-контракты работают правильно, тщательно протестировав их перед развертыванием.
Первоначальное развертывание смарт-контрактов:
Ошибка смарт-контракта исправить:
Интеграционные тесты против модульных тестов:
Интеграционные тесты приносят больше пользы для бизнеса, чем модульные тесты. Интеграционные тесты позволяют протестировать всю систему. Вот почему их также называют сквозными тестами. Интеграционные тесты позволяют проверить, хорошо ли взаимодействуют разные части кода. Интеграционные тесты намного ближе к спецификациям функций. Эти тесты сложнее, чем юнит-тесты. Однако это не проблема смарт-контрактов. Однако в контексте смарт-контрактов интеграционные тесты выполнить не намного сложнее, чем модульные.
Модульные тесты выполнить проще, чем интеграционные. Юнит-тесты — самый простой вид тестов. С помощью модульных тестов мы тестируем одну функцию/класс изолированно. Однако в контексте веб-приложения рекомендуется начинать с модульных тестов, поскольку их проще выполнять.
Какую часть смарт-контракта тестировать?
Каждая функция, которую можно вызвать извне смарт-контракта, должна быть протестирована. Сюда входят функции с ключевым словом public, ключевым словом external, а также функции без указания какой-либо видимости, поскольку по умолчанию Solidity делает их общедоступными. Это относится только к смарт-контрактам, написанным с использованием Solidity до версии 0.5.0, потому что до версии 0.5.0 Solidity не позволяет опускать ключевое слово видимости функций
Развертывание смарт-контрактов в тестовой сети Ropsten через Ethereum Remix:< /сильный>
Самый простой способ развернуть смарт-контракт из локальной среды блокчейна (Ganache) в тестовой сети Ropsten с помощью среды разработки Ethereum Remix описан ниже.
Этап 1. Настройка среды
< ul>
Этап 2. Разверните контракт
- Нажмите «Выполнить». Выберите Injected Web 3 Ropsten в среде, и учетная запись в Metamask также будет показана здесь в разделе «Учетная запись с балансом эфира».
- Измените имя контракта на любое другое.
- Нажмите «Создать» -> «Подтвердить транзакцию».
- Нажмите на расширение Metamask!
- Нажмите на развертывание контракта — должна открыться страница etherscan, чтобы просмотреть детали нашей транзакции.
Популярные инструменты для тестирования приложений блокчейна:< /h2>
Некоторыми из популярных инструментов тестирования блокчейна являются следующие
Ethereum Tester:
Etherum tester — это библиотека тестирования с открытым исходным кодом. Вы можете найти его в виде репозитория Github здесь. Он предоставляет инструменты для тестирования приложений на базе Ethereum. Его легко настроить и легко управлять поддержкой API для различных требований к тестированию. Он используется для создания блокчейн-приложений. Он содержит инструменты для тестирования приложений на основе блокчейна.
Эфириум — это технология, позволяющая отправлять криптовалюту кому угодно за небольшую плату.
Ganache:
Пользовательский интерфейс Ganache — это настольное приложение, поддерживающее технологии Ethereum и Corda. Его можно использовать на протяжении всего цикла разработки. Это позволяет вам создать частную цепочку блоков Ethereum для разработки, развертывания и тестирования ваших приложений в безопасной и детерминированной среде. Он используется для тестирования смарт-контрактов во время разработки.
BitcoinJ:
BitcoinJ — это библиотека на основе Java для работы с приложениями на основе биткойнов.
Это позволяет вам взаимодействовать с реальной сетью BTC и проводить различные тестовые мероприятия. Чтобы использовать его, вам не нужно загружать стандартные файлы BTC Core с сайта Bitcoin.com, чтобы создать локальную копию Bitcoin Core. Вы можете отправлять или получать биткойны, просто внедрив его.
Populus:
Populus — один из лучших вариантов для тех, кто пишет тесты на Python. Он разработан на базе py.test и прост в реализации. Эта структура предоставляет мощные утилиты для тестирования ваших контрактов.
Truffle:
Он основан на блокчейне Ethereum и используется для разработки распределенных приложений. Он позволяет писать автоматические тесты на JavaScript и Solidity. Он поддерживает автоматическое тестирование контрактов.
Приступить к работе:
Он автоматически развертывает смарт-контракты в блокчейне Ethereum EVM. Основное внимание уделяется разработке децентрализованных приложений (dApps), которые работают в разных системах.
Заключение по тестированию блокчейна
Несмотря на то, что комплексная проверка блокчейна распространяется на различные сервисы тестирования, такие как функциональные , связанная с производительностью и основанная на цифровой безопасности, общая аутентификация приложений на основе блокчейна требует значительного мастерства в методах обеспечения качества.
TAG: qa