Web3 & DApp Development Fundamentals · Lekcja

Pokrycie i raporty gas

Miary jakości

Lekcja 3 z 413 kroki

Pokrycie i raporty gas to bezpłatna lekcja Web3 & DApp Development Fundamentals na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Web3 & DApp Development Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.

Metryki jakości

Dwie metryki pomagają ocenić jakość kontraktu:

  • Pokrycie kodu — jaka część kodu Solidity jest wykonywana przez testy.
  • Zużycie gazu — jak kosztowne jest wywołanie funkcji.

Obie metryki są dostępne jako wtyczki Hardhat, a Toolbox zawiera narzędzie gas reporter.

Co mówi pokrycie

Pokrycie mierzy odsetek instrukcji, gałęzi i funkcji, które zostały objęte testami.

  • Niskie pokrycie oznacza nieprzetestowane ścieżki kodu — a więc potencjalne ukryte błędy.
  • Pokrycie na poziomie 100% nie gwarantuje poprawności, ale luki są sygnałem ostrzegawczym.

Instalowanie narzędzia pokrycia

Wtyczka solidity-coverage instrumentuje kontrakty i generuje raport pokrycia:

npm install --save-dev solidity-coverage

Następnie należy załadować ją w konfiguracji:

require("solidity-coverage");
npm install --save-dev solidity-coverage
// in hardhat.config.js:
require("solidity-coverage");

Uruchamianie pokrycia

Uruchom zadanie pokrycia, aby wykonać testy z instrumentacją:

npx hardhat coverage

Narzędzie wyświetla tabelę dla każdego pliku i zapisuje raport HTML w katalogu coverage/, który można otworzyć w przeglądarce.

npx hardhat coverage

Odczytywanie tabeli pokrycia

Raport zawiera cztery kolumny:

  • % Stmts — wykonane instrukcje.
  • % Branch — wykonane gałęzie if/else.
  • % Funcs — wywołane funkcje.
  • % Lines — osiągnięte wiersze.

Pokrycie gałęzi jest często najtrudniejsze do zwiększenia — należy upewnić się, że przetestowano obie strony każdego warunku.

Raport gazu

hardhat-gas-reporter (znajdujący się w Toolboxie) wyświetla koszty gazu dla każdego wywołania funkcji podczas testów. Włącz go w konfiguracji:

module.exports = { gasReporter: { enabled: true, }, };

Po wykonaniu npx hardhat test narzędzie wyświetla tabelę.

module.exports = {
  gasReporter: {
    enabled: true,
  },
};

Odczytywanie tabeli gazu

Raport gazu pokazuje dla każdej metody:

  • Min / Max / Avg — minimalne, maksymalne i średnie zużycie gazu podczas wywołań.
  • # calls — ile razy metoda została uruchomiona w testach.
  • Deployment cost — koszt wdrożenia każdego kontraktu.

Funkcje, których wartości minimalne i maksymalne znacznie się różnią, często zawierają wartą zbadania logikę warunkową.

Ceny w walucie fiducjarnej

Raport gazu może wyświetlać szacunkowe koszty w prawdziwych pieniądzach, pobierając cenę gazu i tokena:

gasReporter: { enabled: true, currency: "USD", gasPrice: 30, }

Ułatwia to przedstawianie interesariuszom rzeczywistego kosztu operacji.

gasReporter: {
  enabled: true,
  currency: "USD",
  gasPrice: 30,
}

Przełączanie za pomocą zmiennych środowiskowych

Pokrycie i raportowanie gazu spowalniają testy, dlatego warto uzależnić ich działanie od zmiennej środowiskowej:

gasReporter: { enabled: process.env.REPORT_GAS === "true", }

Uruchamiaj REPORT_GAS=true npx hardhat test tylko wtedy, gdy potrzebujesz raportu.

gasReporter: {
  enabled: process.env.REPORT_GAS === "true",
}

Używanie metryk w CI

W ramach ciągłej integracji można:

  • Przerywać kompilację, jeśli pokrycie spadnie poniżej określonego progu.
  • Dodawać komentarze z różnicami w zużyciu gazu do żądań pull.

Te zabezpieczenia zapobiegają cichemu pogarszaniu się jakości wraz z rozrostem bazy kodu.

Zapisywanie do pliku

Raport gazu może zapisać tabelę do pliku w celu archiwizacji lub porównywania w CI:

gasReporter: { enabled: true, outputFile: "gas-report.txt", noColors: true, }

Wyłączenie kolorów poprawia czytelność pliku. Pokrycie również generuje raport HTML coverage/ oraz plik lcov.info.

gasReporter: {
  enabled: true,
  outputFile: "gas-report.txt",
  noColors: true,
}

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat raportów pokrycia i gazu.

Podsumowanie

Nauczyli się Państwo mierzyć jakość testów i zużycia gazu.

  • solidity-coverage raportuje pokrycie instrukcji, gałęzi, funkcji i wierszy za pomocą npx hardhat coverage.
  • Pokrycie gałęzi najlepiej ujawnia nieprzetestowane ścieżki.
  • Raport gazu (znajdujący się w Toolboxie) wyświetla zużycie gazu dla poszczególnych metod oraz koszty wdrożenia.
  • Może wyceniać wywołania w walucie fiducjarnej i być przełączany za pomocą zmiennej środowiskowej.
  • Wymuszaj progi w CI, aby zapobiegać regresjom.
Bezpłatny start

Ucz się Web3 & DApp Development Fundamentals dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
29
Lekcje
105

Często zadawane pytania

Czy lekcja „Pokrycie i raporty gas” jest bezpłatna?

Tak — pełny tekst „Pokrycie i raporty gas” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Web3 & DApp Development Fundamentals, przejdź na CoddyKit PRO. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.

Co nauczysz się w „Pokrycie i raporty gas”?

Miary jakości Ćwiczysz Web3 & DApp Development Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Web3 & DApp Development Fundamentals?

Nie wymagamy żadnego doświadczenia. Web3 & DApp Development Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Pokrycie i raporty gas”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Web3 & DApp Development Fundamentals?

Tak. Każda lekcja Web3 & DApp Development Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pisanie testów
  2. Testowanie revertów i zdarzeń
  3. Pokrycie i raporty gas
  4. Fixtures
← Powrót do Web3 & DApp Development Fundamentals