Testowanie inteligentnych kontraktów

Dec 22 2022
Jak testować inteligentne kontrakty i po co w ogóle to robić? Bardzo podstawowym krokiem tworzenia inteligentnych kontraktów do rozwiązań web3 jest przetestowanie ich przed wdrożeniem w sieci testowej. Przeprowadzanie testów sprawdzających zaimplementowaną funkcjonalność jest kluczowe! Agenda: „Testowanie inteligentnego kontraktu oznacza przeprowadzanie szczegółowej analizy i oceny inteligentnego kontraktu w celu oceny jakości jego kodu źródłowego podczas cyklu rozwoju.

Jak testować inteligentne kontrakty i po co w ogóle to robić?

Bardzo podstawowym krokiem tworzenia inteligentnych kontraktów do rozwiązań web3 jest przetestowanie ich przed wdrożeniem w sieci testowej. Przeprowadzanie testów sprawdzających zaimplementowaną funkcjonalność jest kluczowe!

Porządek obrad:

  • wstęp,
  • co to jest?
  • co to robi?
  • narzędzia,
  • wniosek.

„Testowanie inteligentnego kontraktu oznacza przeprowadzanie szczegółowej analizy i oceny inteligentnego kontraktu w celu oceny jakości jego kodu źródłowego podczas cyklu rozwoju”.

W prostych i praktycznych słowach: testowanie to pisanie prostych wariantów korzystania z funkcji i oczekiwanie, że wyniki będą równe wcześniej zdefiniowanym stwierdzeniom.

Prosty przykład, inteligentna umowa to przesyłanie tokenów z adresu na adres i to wszystko.

Konieczne jest napisanie takiego testu:

  • wygenerować dwa portfele (np. Alicja i Bob),
  • uruchom funkcję transferu od Alicji do boba z aktywami równymi 1 ETH,
  • spodziewaj się, że portfel Boba wzrośnie o 1 ETH,
  • spodziewaj się spadku portfela Alice o 1 ETH,
  • sprawdź, czy przypadki brzegowe są obsługiwane prawidłowo, na przykład próba przeniesienia większej ilości środków, które posiada itp.

Co to robi?

„Testowanie inteligentnej umowy ułatwia identyfikację błędów i słabych punktów oraz zmniejsza możliwość wystąpienia błędów oprogramowania, które mogłyby prowadzić do kosztownych exploitów”.

Zgodnie z powyższym przykładem z Alice i Bobem, testowanie sprawdza zaimplementowane funkcje przed dalszym wdrożeniem. Powinny wyrzucać błędy za błędy i pozwalać na łatwą ich identyfikację, jeśli testy są odpowiednio opisane.

źródła definicji:

Narzędzia

Inteligentne kontrakty są pisane głównie w Solidity, ale testowanie odbywa się za pomocą JavaScript. Różne platformy, rozwiązania oferują łatwą architekturę do testowania, jedną z nich jest trufla.

Więcej o trufli:

Truffle tworzy odpowiednią strukturę folderów, która jest taka sama dla każdego projektu, w skrócie:

  • istnieje folder umów, w którym przechowywane są umowy,
  • i jest folder testów, w którym przechowywane są testy.

mokka.js:

dokumenty chai.js:

W pliku testowym inicjowane są umowy, a następnie sprawdzane są różne warunki.

Testy uruchamiamy komendą cli z poziomu terminala i to wszystko.

Aby mieć lokalnie wdrożony kontrakt i zaimplementować wygenerowane portfele z pewnymi środkami, niezwykle pomocny jest ganache z zestawu narzędzi truffle. Po prostu uruchamia loca blockchain i tworzy portfele z saldem 100ETH.

Więcej o ganache:

Wafel

Jest to kolejne narzędzie do testowania inteligentnych kontraktów stworzone przez ETHWorks.

„Pozwala tworzyć nowe inteligentne kontrakty i testować je za pomocą Mocha i Chai. Wiele osób wybiera Waffle zamiast Truffle, ponieważ jest prostszy i łatwiejszy do nauczenia.”

Więcej w:

Wniosek

Testowanie inteligentnych kontraktów to potężna i bardzo potrzebna umiejętność, która może zapobiec utracie ogromnej ilości aktywów. Blockchain jest niezmienny, jeśli umowa zostanie wdrożona z błędami, w szczęśliwym scenariuszu utraci tylko niektóre funkcje. Najgorszy przypadek to utrata środków przez jakiegoś użytkownika.

Podobało ci się? Śledź repo ze wszystkimi tematami z wyzwania: