제퍼넷 로고

인형에 대한 스마트 계약 테스트

시간

스마트 계약은 변경할 수없는 프로그램입니다. 계약이 배포되면 변경할 수 없습니다. 이를 통해 사용자는 자금 운영 규칙이 변경되지 않도록 할 수 있습니다. 그러나 동일한 기능으로 안전한 스마트 계약 생성이 매우 복잡합니다. 버그 나 취약점이있는 계약을 작성하면 영구 계약이됩니다. 그렇기 때문에 기존 응용 프로그램보다 스마트 계약에서 테스트가 더 중요합니다.

관련 : 스마트 계약이란 무엇입니까? 초보자를위한 안내

테스트가 필요한 이유

먼저, 테스트가 해결할 수있는 문제와 해결할 수없는 문제를 분명히하자. 이를 위해 버그와 취약점의 다음 차이점을 지적 해 보겠습니다.

→ 문제로 인해 계획된 시나리오가 실행되지 않으면 버그입니다.

→ 문제로 인해 계획되지 않은 시나리오가 실행되면 취약점이됩니다.

테스트는 취약점을 예방하지 않습니다. 취약점은 정의되지 않은 것으로 정의되었으므로 테스트 단계에서 고려할 수 없습니다. 취약점을 해결하려면이 기사의 끝 부분에서 설명하는 다른 도구와 작업이 필요합니다.

테스트는 계획된 모든 시나리오가 의도 한대로 실행되도록합니다. 다시 말해, 테스트는 버그를 예방하는 데 도움이됩니다. 이 사실은 몇 가지 중요한 결과를 가져옵니다.

  • 경험 법칙 : 모든 업무 로직에는 해당 테스트가 있어야합니다. 비즈니스 로직에 대한 시나리오가있는 경우 코드에 시나리오가 있으므로 테스트해야합니다.
  • 가장 중요한 시나리오는 가장 철저히 테스트해야합니다. 대부분의 사용자가 실행하거나 중요한 기능을 구현하는 시나리오에는 추가주의가 필요합니다.
  • 테스트는 바보 같은 실수를 잡아냅니다. 어리석은 실수는 숙련 된 개발자조차도 만들 수 있으며 매우 위험 할 수 있습니다.
  • 테스트는 엣지 케이스에 좋습니다. 사용자가 제로 토큰을 구매하려고하면 어떻게됩니까? 사용자 수가 한도에 도달하면 어떻게됩니까? 이러한 경우를 고려해야하며이 작업에 가장 적합한 솔루션은 테스트를 사용하는 것입니다.
  • 테스트를 작성하려면 프로젝트에 대한 세부 스펙이 있어야합니다. 이 점에 대해 좀 더 자세히 설명하겠습니다.

스펙

계획된 내용을 모르면 계획된 시나리오를 테스트 할 수 없습니다. 따라서 스펙을 작성해야합니다.

이것은 명백해 보이지만 많은 블록 체인 팀이이 규칙을 어 기고 있습니다. 그들은 백서를 작성하고 그 후 즉시 코드를 작성합니다. 이것은 종종 원하는 기능의 잘못된 구현으로 이어질 수 있습니다. 어느 시점에서 팀은 시스템 작동 방식을 스스로 이해하지 못한다는 결론을 내릴 수도 있습니다. 더욱이, 원하는 기능은 일관되지 않고 구현할 수 없다.

따라서 사양은 필수입니다. 코드를 테스트 할 때 테스트 만하는 것이 아닙니다. 전체 개발 절차를 개선해야합니다. 처음 기대했던 것보다 더 많이 일하지만 더 많은 혜택도 누릴 수 있습니다.

테스트 도구

테스트는 완전히 분리 된 지식 분기이므로 한 기사에서는 다루지 않겠습니다. 그러나 첫 번째 필수 도구의 이름을 지정합니다.

스마트 계약을 쉽고 정확하게 테스트하려면 테스트 프레임 워크가 필요합니다. 동료들은 Truffle, Embark 또는 Etherlime 중 하나를 사용하는 것이 좋습니다.

또한 테스트 범위를 측정해야합니다. 테스트 범위는 테스트에서 다루는 코드의 백분율이므로 100 % 범위는 모든 바이트 코드 명령어가 테스트됨을 의미합니다. 그러나 이것은 실제 상황이 아닌 이상적인 상황입니다. 실제로이 숫자는 작성하는 테스트 수에 따라 항상 100 미만입니다. 테스트 범위를 측정하는 데 가장 널리 사용되는 도구는 다음과 같습니다. 견고 함@ 0x / 솔 커버리지.

관련 : 블록 체인에서 사용되는 프로그래밍 언어

컨텍스트 확장

따라서 테스트 범위가 95 %이고 모든 중요한 기능에 대한 테스트가있는 경우 코드를 안전하게 고려할 수 있습니까? 그러나 정답은“잘못입니다!”입니다. 테스트는 필요한 보안 절차 중 하나 일뿐입니다. 이 다이어그램을 살펴보십시오.

코드 작성을 시작할 때 먼저 linter 코드를 명확하고 읽기 쉽게 만듭니다. 그런 다음 계획된 모든 시나리오가 올바르게 작동하는지 테스트해야합니다. 그런 다음 보안 도구를 실행하여 쉽게 탐지 할 수있는 표준 취약점을 찾으십시오. 코드에서 코드를 제거한 후 외부 코드 감사로 진행할 수 있습니다. 개발의 모든 단계에서 코드 디자인은 보안과 유용성에 중요합니다.

이 모든 단계는 복잡하지만이 기사의 범위를 벗어납니다.

여기에 표시된 견해, 생각 및 의견은 저자의 것이며, Cointelegraph의 견해와 의견을 반드시 반영하거나 나타내는 것은 아닙니다.

이반 이바 니츠 키 SmartDec의 최고 분석 책임자이며 기본 블록 팟 캐스트의 공동 호스트입니다. 그는 애플리케이션 보안, 블록 체인 및 스마트 계약 전문가입니다. Ivan은 Bitcoin에 열정적이며 현명한 계약에 대해 궁금합니다.

출처 : https://cointelegraph.com/news/smart-contract-testing-for-dummies

spot_img

아카데믹 VC

VC 카페

최신 인텔리전스

spot_img