Привет, меня зовут Александра Кошелева, я работаю тестировщиком в X-Technology. Работа QA в сфере блокчейна, это почти как спрашивать на хинди у мексиканца, где тут ближайший бар. Он не знает хинди, ты тем более не знаешь хинди. Кое-как жестами вы понимаете друг друга. Благодаришь, уходишь довольный, находишь “бар”, а там библиотека.
Первое, что понадобится QA-джуну, работающему на блокчейн-проекте - это внимательность в чтении техзадания (ТЗ) и всей проектной документации. Можно долго спорить с аналитиком или техписателем о том, что ответов на твои вопросы в них нет, но тебя все равно пошлют читать их по-новой и в конечном счете, скорее всего, окажутся правы.
Во-вторых, придется подружиться с разработчиком. Да, с тем угрюмым (не всегда), серьезным (тоже не всегда) и вечно занятым (а вот это всегда) парнем (реже девушкой, тут как повезет), с которыми ты, поначалу, даже заговорить боишься. Да, от них исходит легкое свечение неприступности, но чем быстрее ты найдешь путь к сердечку разраба и разговоришь его, тем быстрее войдешь в контекст. Кто как не он знает проект от первой до последней строчки кода. Бывают проекты, на которых нет ТЗ как такового, и тестировщики вынуждены проявлять чудеса коммуникации. Поэтому лучше, когда коммуникация уже налажена. В целом, задавать вопросы когда ты тестировщик абсолютно нормально, и ничего постыдного в этом нет.
В-третьих, ты должен привыкнуть много гуглить. Сфера блокчейна относительно молода и на многие вопросы нет ответов в документации. Разработчик же вечно занят работой, просмотром мемов в попытке избежать выгорания или ушел требовать повышения зарплаты, так как последнее было ужасно давно - неделю назад. Гуглят все, в том числе сеньоры, пытающиеся разобрать дикий акцент у того индуса или задающие вопросы на профильных форумах. Не бойся закапываться в англоязычной документации блокчейна. Весьма вероятно, ответ на твой вопрос именно в ней, а не в веселом обзоре говорящей головы из ютуба.
Теперь практика. Возьмем небольшой проект - одностраничный сайт для минтинга nft.
Первое, что тебе стоит заиметь - это криптокошелек. Его выбор зависит от проекта. Если он на тоне, то можно остановиться, например, на Tonkeeper. Мы же возьмем один из самых распространенных - MetaMask (на официальном сайте https://metamask.io или в магазине приложений Google Chrome). Это интуитивно понятный и простой криптокошелек.
Поначалу ты будешь работать с тестовыми сетями, где потеря содержимого кошелька может показаться не такой катастрофичной, но даже тестовые “денежки” тебе не отсыпят просто так. Их придется добывать небольшими порциями, иногда ежедневно. Поэтому приложи усилия к своей цифровой безопасности. Конечно, защита криптокошелька это отдельная и довольно серьезная тема, поэтому чтобы не перегружать тебя, обсудим только явные риски:
Основное правило безопасности, которое ты должен усвоить - нет защиты актуальнее, чем твоя собственная цифровая гигиена. Как говорит наш великий и ужасный девопс Вячеслав: “Голова пользователя - лучший антивирусник”
Разрешения на подключение кошелька на сайтах. Не давай их всем подряд, в сети полно мошеннических сайтов, вполне правдоподобно мимикрирующих под официальные. Пользуйся только надежными и проверенными платформами, внимательно проверяя адреса, по которым переходишь.
Раскрыть сид-фразу. Ту самую, которую тебе дали при регистрации кошелька. Никто, кроме самого метамаска, допустим при восстановлении, не будет и не должен просить у тебя сид-фразу. Если это происходит, поздравляю, вот они мошенники, собственной персоной. Храни ее в действительно надежном месте. Бывали случаи, когда злоумышленники взламывали сервисы для скриншотов и собирали инфу, в том числе и заскриненные сид-фразы.
Если ты не хочешь тратить реальную валюту на сотни транзакций во время тестирования, нужно подключить тестовую сеть. Разворачиваем расширения метамаска в хроме, кликая по трем точкам и выбираем во всплывающем меню “Развернуть представление”.
Потом еще одно всплывающее меню. Кликаем на стрелочку “вниз”.
Кликаем “Показать/скрыть тестовые сети”
Вуаля. Теперь у нас целый список тестовых сетей. Выбираем нужную.
Какую именно - придется решать самому, так как некоторые со временем отключают, добавляют новые, и какие будут актуальны в тот момент, когда ты будешь читать эту статью, сказать сложно. Долгое время мы работали с тестовой сетью эфириума - Kovan, которая в свою очередь пришла на замену Ropsten, пострадавшей от DoS атак. Сейчас перешли на Goerli, потому что там красивая визуализация при получении тестовых монеток (шутка, но визуал и правда очень приятный).
Где брать тестовую валюту? Для этого есть специальные краны. В них можно попросить выслать тебе “деньги” на тестовые транзакции. К реальной криптовалюте они имеют мало отношения, поэтому не стоит бегать по офису с криками “Я богат” после первых упавших криптомонет. Для получения тестовых эфиров Goerli я хожу на goerlifaucet.com. Если подключена другая сеть, к примеру Kovan, можно попросить faucets.chain.link
После регистрации просто копипастишь номер своего счета и ждешь зачисления демо-криптовалюты.
Взять номер счета можно тут.
Счетов на одном кошельке может быть несколько. Добавить либо импортировать уже существующий можно в выпадающем меню.
В меню с тремя точками есть еще одна полезная функция “Реквизиты счета”. Возможно тебе придется экспортировать разработчику закрытый ключ, и, конечно, смотреть статус транзакций на эфирскане (https://etherscan.io/), поэтому будет совсем не лишним заглянуть туда.
В эфирскане в поле поиска вбиваешь номер своего счета и любуешься на список транзакций и их статус. Почитать подробности в случае ошибки тоже будет довольно интересно. Вообще, рекомендую сразу открывать его параллельно с тестированием. Обращаться туда за информацией, скорее всего, придется часто.
Как же “зеленым” ручникам тестировать смарт-контракты, когда с языками программирования и скриптами еще не знаком? На помощь нам придет полезный инструмент с широким функционалом - Remix IDE. Первое время вы будете использовать только одну функцию. Идем на https://remix.ethereum.org/ и попадаем в дефолтное рабочее пространство. То, куда указывают стрелочки можно закрыть (вкладку Home), удалить (дефолтные файлы, или файлы от предыдущего проекта).
Кликаем по значку Load, и загружаем смарты, которые ты взял у разработчика. В данном случае у нас два файла формата “.sol” - это формат языка программирования solidity, с которым сложно не столкнуться на пути покорения блокчейн-проектов.
Первый файлик это собственно проект, который тестим, второй - “ERC721A.sol”, это стандарт токенов, работающий на смарт-контрактах (он вариативен, поэтому если тебе дали какой-то другой, например ERC721.sol, не торопись бежать с разборками, возможно на твоем проекте используется другой стандарт).
Если все правильно загрузилось, ты увидишь файлы в этом списке.
Теперь скомпилим нужный нам. Важно: перед компиляцией необходимо, чтобы был открыт именно основной файл, ERC721A не трогаем. Кликни на нем, чтобы открыть во вкладке в правой части экрана.
Кликаем ниже
Открывается встроенный компилятор. Жмем на синюю кнопочку Compile.sol “Название твоего файла”.
Возможно, придется немного подождать. Главное чтобы в итоге ты увидел заветную единичку у иконки справа, свидетельствующую, что ошибок нет. На слайде ниже вылетело предупреждение, подсвеченное оранжевым цветом, но его можно проигнорировать.
Теперь перейдем во вкладку деплоя.
Здесь нас интересуют:
Вкладка Environment. В ней мы указываем счет, с которого будут производиться транзакции. Учти, что снятие “денег” будет производиться буквально за все. Если ты еще не в курсе такой особенности блокчейна, то почитай про плату за газ, чтобы потом не инспектировать эфирскан на предмет ограбления.
Ты можешь выбрать “встроенные” Remix VM (London или Berlin) и не тратить ни эфиринки из своих средств. Либо подключить свой счет Injected Provider - MetaMask и платить с него тестовыми эфирами, каждый раз подтверждая проведение транзакции.
Вкладка Contract. Выбираешь тот, который компилили, и жмешь Deploy. Ниже должен отобразиться задеплоенный смарт-контракт. Потом жмем на стрелочку и нам открываются все доступные методы, с которыми можем дальше работать.
Твои методы, возможно, будут выглядеть иначе. Главное же, чтобы они работали, да?)
Синяя подсветка говорит о функциях, носящих информационный характер. Ты можешь узнать, например, какой сейчас установлен статус продаж, или максимальное количество nft, выставленных на продажу. Оранжевая подсветка - для методов, которые можно применить при тестировании, в зависимости от твоих тест-кейсов.
Не забывай раскрывать каждый метод с помощью стрелочки напротив и вводить необходимые значения в поля. На примере ниже раскрыта вкладка минта, где необходимо ввести значение количества, которое ты хочешь заминтить (quantity), и сигнатуру (signature - специальную “подпись”, без которой проведение некоторых транзакций невозможно).
Тут ты можешь без последствий тестировать сколько угодно, проводить негативные/позитивные тесты и тому подобное в соответствии со своими тест-кейсами. В любом случае, всегда можно передеплоить контракт и начать все заново.
Если подключен твой кошелек, не забывай подтверждать проведение транзакций. Когда открыто много вкладок на двух мониторах, окно подтверждения может “потеряться”. Поэтому если долго нет ответа от метамаска, поищи уведомления в нижней или верхней панели экрана.
Можно также поиграть с ценой за газ, ее можно изменить, кликнув на соответствующую кнопку.
Когда подключен свой кошелек, в некоторых методах тебе придется пользоваться полем VALUE.
Это поле удобно использовать в тестах, когда количество заминченных nft не соответствует значению VALUE, тем самым проверяя, возможно ли обойти прайс.
Для расчета значения Wei используются эфир-конвертеры. Например, eth-converter.com.
Вводишь стоимость в эфирах, указанное в твоем смарте - конвертер пересчитывает его на Wei, либо GWEI. Если тебе нужно заминтить больше одного nft, это значение нужно увеличить пропорционально.
Все проведенные транзакции и ошибки отображаются внизу. Там же будет ссылка на эфирскан.
Видишь, все не так сложно, как кажется! Главное пробовать, разбираться и не бояться!