Testowanie inteligentnych kontraktów
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.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































