స్మార్ట్ కాంట్రాక్టులను పరీక్షించడం
పేజీ చివరి అప్డేట్: 20 అక్టోబర్, 2025
ఇతీరియము వంటి పబ్లిక్ బ్లాక్చెయిన్లు మార్పులేనివి, దీనివల్ల అమలు చేసిన తర్వాత స్మార్ట్ కాంట్రాక్టుల కోడ్ను మార్చడం కష్టం. "వర్చువల్ అప్గ్రేడ్లను" నిర్వహించడానికి కాంట్రాక్ట్ అప్గ్రేడ్ నమూనాలు ఉన్నాయి, కానీ వీటిని అమలు చేయడం కష్టం మరియు సామాజిక ఏకాభిప్రాయం అవసరం. అంతేకాకుండా, ఒక అప్గ్రేడ్ ఒక లోపాన్ని కనుగొన్న తర్వాత మాత్రమే సరిచేయగలదు—ఒకవేళ దాడి చేసేవాడు మొదట దుర్బలత్వాన్ని కనుగొంటే, మీ స్మార్ట్ కాంట్రాక్ట్ దోపిడీకి గురయ్యే ప్రమాదం ఉంది.
ఈ కారణాల వల్ల, మెయిన్నెట్కు అమలు చేసే ముందు స్మార్ట్ కాంట్రాక్టులను పరీక్షించడం భద్రతకు కనీస అవసరం. కాంట్రాక్టులను పరీక్షించడానికి మరియు కోడ్ సరిగ్గా ఉందో లేదో అంచనా వేయడానికి చాలా పద్ధతులు ఉన్నాయి; మీరు ఎంచుకునేది మీ అవసరాలపై ఆధారపడి ఉంటుంది. అయినప్పటికీ, కాంట్రాక్ట్ కోడ్లోని చిన్న మరియు పెద్ద భద్రతా లోపాలను పట్టుకోవడానికి వివిధ ఉపకరణాలు మరియు విధానాలతో కూడిన టెస్ట్ సూట్ ఆదర్శంగా ఉంటుంది.
అవసరాలు
ఈ పేజీ ఇతీరియము నెట్వర్క్లో అమలు చేయడానికి ముందు స్మార్ట్ కాంట్రాక్టులను ఎలా పరీక్షించాలో వివరిస్తుంది. మీకు స్మార్ట్ కాంట్రాక్టుల గురించి తెలిసి ఉంటుందని ఇది భావిస్తుంది.
స్మార్ట్ కాంట్రాక్ట్ టెస్టింగ్ అంటే ఏమిటి?
స్మార్ట్ కాంట్రాక్ట్ టెస్టింగ్ అనేది ఒక స్మార్ట్ కాంట్రాక్ట్ కోడ్ ఆశించిన విధంగా పనిచేస్తుందని ధృవీకరించే ప్రక్రియ. ఒక నిర్దిష్ట స్మార్ట్ కాంట్రాక్ట్ విశ్వసనీయత, వినియోగం మరియు భద్రత కోసం అవసరాలను తీరుస్తుందో లేదో తనిఖీ చేయడానికి టెస్టింగ్ ఉపయోగపడుతుంది.
విధానాలు విభిన్నంగా ఉన్నప్పటికీ, చాలా టెస్టింగ్ పద్ధతులకు స్మార్ట్ కాంట్రాక్ట్ను అది నిర్వహించాల్సిన డేటా యొక్క చిన్న నమూనాతో అమలు చేయడం అవసరం. కాంట్రాక్ట్ నమూనా డేటా కోసం సరైన ఫలితాలను ఉత్పత్తి చేస్తే, అది సరిగ్గా పనిచేస్తున్నట్లు భావించబడుతుంది. చాలా టెస్టింగ్ ఉపకరణాలు కాంట్రాక్టుల అమలు ఆశించిన ఫలితాలతో సరిపోలుతుందో లేదో తనిఖీ చేయడానికి టెస్ట్ కేసులనుopens in a new tab వ్రాయడానికి మరియు అమలు చేయడానికి వనరులను అందిస్తాయి.
స్మార్ట్ కాంట్రాక్టులను పరీక్షించడం ఎందుకు ముఖ్యం?
స్మార్ట్ కాంట్రాక్టులు తరచుగా అధిక-విలువ గల ఆర్థిక ఆస్తులను నిర్వహిస్తాయి కాబట్టి, చిన్న ప్రోగ్రామింగ్ లోపాలు వినియోగదారులకు భారీ నష్టాలకుopens in a new tab దారితీయవచ్చు మరియు తరచుగా దారితీస్తాయి. అయితే, కఠినమైన టెస్టింగ్ ఒక స్మార్ట్ కాంట్రాక్ట్ కోడ్లోని లోపాలు మరియు సమస్యలను ముందుగానే కనుగొని, వాటిని మెయిన్నెట్లో ప్రారంభించడానికి ముందు సరిచేయడానికి మీకు సహాయపడుతుంది.
ఒక బగ్ కనుగొనబడితే కాంట్రాక్టును అప్గ్రేడ్ చేయడం సాధ్యమే అయినప్పటికీ, అప్గ్రేడ్లు సంక్లిష్టంగా ఉంటాయి మరియు సరిగ్గా నిర్వహించకపోతే లోపాలకు దారితీయవచ్చుopens in a new tab. ఒక కాంట్రాక్టును అప్గ్రేడ్ చేయడం మార్పులేని సూత్రాన్ని మరింతగా నిరాకరిస్తుంది మరియు వినియోగదారులపై అదనపు విశ్వాస అంచనాలతో భారం మోపుతుంది. దీనికి విరుద్ధంగా, మీ కాంట్రాక్టును పరీక్షించడానికి ఒక సమగ్ర ప్రణాళిక స్మార్ట్ కాంట్రాక్ట్ భద్రతా ప్రమాదాలను తగ్గిస్తుంది మరియు అమలు చేసిన తర్వాత సంక్లిష్ట లాజిక్ అప్గ్రేడ్లను నిర్వహించాల్సిన అవసరాన్ని తగ్గిస్తుంది.
స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి పద్ధతులు
ఇతీరియము స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి పద్ధతులు రెండు విస్తృత వర్గాల క్రిందకు వస్తాయి: ఆటోమేటెడ్ టెస్టింగ్ మరియు మాన్యువల్ టెస్టింగ్. ఆటోమేటెడ్ టెస్టింగ్ మరియు మాన్యువల్ టెస్టింగ్ ప్రత్యేకమైన ప్రయోజనాలు మరియు ప్రతికూలతలను అందిస్తాయి, కానీ మీరు మీ కాంట్రాక్టులను విశ్లేషించడానికి ఒక బలమైన ప్రణాళికను రూపొందించడానికి రెండింటినీ కలపవచ్చు.
ఆటోమేటెడ్ టెస్టింగ్
ఆటోమేటెడ్ టెస్టింగ్ అమలులో లోపాల కోసం స్మార్ట్ కాంట్రాక్టుల కోడ్ను స్వయంచాలకంగా తనిఖీ చేసే ఉపకరణాలను ఉపయోగిస్తుంది. కాంట్రాక్ట్ కార్యాచరణల మూల్యాంకనాన్ని మార్గనిర్దేశం చేయడానికి స్క్రిప్ట్లనుopens in a new tab ఉపయోగించడం ద్వారా ఆటోమేటెడ్ టెస్టింగ్ యొక్క ప్రయోజనం వస్తుంది. స్క్రిప్టెడ్ టెస్ట్లను తక్కువ మానవ ప్రమేయంతో పదేపదే అమలు చేయడానికి షెడ్యూల్ చేయవచ్చు, ఇది మాన్యువల్ టెస్టింగ్ విధానాల కంటే ఆటోమేటెడ్ టెస్టింగ్ను మరింత సమర్థవంతంగా చేస్తుంది.
టెస్టులు పునరావృతమయ్యేవి మరియు సమయం తీసుకునేవి అయినప్పుడు; మాన్యువల్గా నిర్వహించడం కష్టమైనప్పుడు; మానవ తప్పిదాలకు గురయ్యే అవకాశం ఉన్నప్పుడు; లేదా కీలకమైన కాంట్రాక్ట్ ఫంక్షన్లను మూల్యాంకనం చేయడంలో ప్రమేయం ఉన్నప్పుడు ఆటోమేటెడ్ టెస్టింగ్ ప్రత్యేకంగా ఉపయోగపడుతుంది. కానీ ఆటోమేటెడ్ టెస్టింగ్ ఉపకరణాలకు లోపాలు ఉండవచ్చు—అవి కొన్ని బగ్లను తప్పిపోవచ్చు మరియు చాలా తప్పుడు పాజిటివ్లనుopens in a new tab ఉత్పత్తి చేయవచ్చు. అందువల్ల, స్మార్ట్ కాంట్రాక్టుల కోసం ఆటోమేటెడ్ టెస్టింగ్ను మాన్యువల్ టెస్టింగ్తో జత చేయడం ఆదర్శం.
మాన్యువల్ టెస్టింగ్
మాన్యువల్ టెస్టింగ్ మానవ సహాయంతో జరుగుతుంది మరియు ఒక స్మార్ట్ కాంట్రాక్ట్ సరిగ్గా ఉందో లేదో విశ్లేషించేటప్పుడు మీ టెస్ట్ సూట్లోని ప్రతి టెస్ట్ కేసును ఒకదాని తర్వాత ఒకటి అమలు చేయడాన్ని కలిగి ఉంటుంది. ఇది ఆటోమేటెడ్ టెస్టింగ్ లాంటిది కాదు, ఇక్కడ మీరు ఒకేసారి ఒక కాంట్రాక్ట్పై బహుళ వివిక్త టెస్ట్లను అమలు చేయవచ్చు మరియు విఫలమైన మరియు ఉత్తీర్ణులైన అన్ని టెస్ట్లను చూపే నివేదికను పొందవచ్చు.
వివిధ టెస్ట్ దృశ్యాలను కవర్ చేసే వ్రాసిన టెస్ట్ ప్లాన్ను అనుసరించి ఒకే వ్యక్తి ద్వారా మాన్యువల్ టెస్టింగ్ నిర్వహించబడుతుంది. మాన్యువల్ టెస్టింగ్లో భాగంగా మీరు ఒక నిర్దిష్ట వ్యవధిలో బహుళ వ్యక్తులు లేదా సమూహాలు స్మార్ట్ కాంట్రాక్ట్తో సంప్రదించేలా కూడా చేయవచ్చు. పరీక్షకులు కాంట్రాక్ట్ యొక్క వాస్తవ ప్రవర్తనను ఆశించిన ప్రవర్తనతో పోలుస్తారు, ఏదైనా వ్యత్యాసాన్ని బగ్గా ఫ్లాగ్ చేస్తారు.
ప్రభావవంతమైన మాన్యువల్ టెస్టింగ్కు గణనీయమైన వనరులు (నైపుణ్యం, సమయం, డబ్బు మరియు కృషి) అవసరం, మరియు మానవ తప్పిదం కారణంగా—టెస్ట్లను అమలు చేస్తున్నప్పుడు కొన్ని లోపాలను తప్పిపోవడం సాధ్యమే. కానీ మాన్యువల్ టెస్టింగ్ కూడా ప్రయోజనకరంగా ఉంటుంది—ఉదాహరణకు, ఒక మానవ పరీక్షకుడు (ఉదా., ఒక ఆడిటర్) ఒక ఆటోమేటెడ్ టెస్టింగ్ ఉపకరణం తప్పిపోయే ఎడ్జ్ కేసులను గుర్తించడానికి అంతర్ దృష్టిని ఉపయోగించవచ్చు.
స్మార్ట్ కాంట్రాక్టుల కోసం ఆటోమేటెడ్ టెస్టింగ్
యూనిట్ టెస్టింగ్
యూనిట్ టెస్టింగ్ కాంట్రాక్ట్ ఫంక్షన్లను విడిగా మూల్యాంకనం చేస్తుంది మరియు ప్రతి భాగం సరిగ్గా పనిచేస్తుందో లేదో తనిఖీ చేస్తుంది. మంచి యూనిట్ టెస్టులు సరళంగా, త్వరగా అమలు అయ్యేలా ఉండాలి మరియు టెస్టులు విఫలమైతే ఏమి తప్పు జరిగిందో స్పష్టమైన ఆలోచనను అందించాలి.
ఫంక్షన్లు ఆశించిన విలువలను తిరిగి ఇస్తాయో లేదో మరియు ఫంక్షన్ అమలు తర్వాత కాంట్రాక్ట్ నిల్వ సరిగ్గా అప్డేట్ చేయబడిందో లేదో తనిఖీ చేయడానికి యూనిట్ టెస్టులు ఉపయోగపడతాయి. అంతేకాకుండా, ఒక కాంట్రాక్ట్ కోడ్బేస్కు మార్పులు చేసిన తర్వాత యూనిట్ టెస్ట్లను అమలు చేయడం కొత్త లాజిక్ను జోడించడం లోపాలను ప్రవేశపెట్టదని నిర్ధారిస్తుంది. ప్రభావవంతమైన యూనిట్ టెస్ట్లను అమలు చేయడానికి కొన్ని మార్గదర్శకాలు క్రింద ఉన్నాయి:
స్మార్ట్ కాంట్రాక్టుల యూనిట్ టెస్టింగ్ కోసం మార్గదర్శకాలు
1. మీ కాంట్రాక్టుల వ్యాపార లాజిక్ మరియు వర్క్ఫ్లోను అర్థం చేసుకోండి
యూనిట్ టెస్టులు వ్రాసే ముందు, ఒక స్మార్ట్ కాంట్రాక్ట్ ఏ కార్యాచరణలను అందిస్తుందో మరియు వినియోగదారులు ఆ ఫంక్షన్లను ఎలా యాక్సెస్ చేస్తారు మరియు ఉపయోగిస్తారో తెలుసుకోవడం సహాయపడుతుంది. చెల్లుబాటు అయ్యే వినియోగదారు ఇన్పుట్ల కోసం ఒక కాంట్రాక్ట్లోని ఫంక్షన్లు సరైన అవుట్పుట్ను తిరిగి ఇస్తాయో లేదో నిర్ధారించే హ్యాపీ పాత్ టెస్టులనుopens in a new tab అమలు చేయడానికి ఇది ప్రత్యేకంగా ఉపయోగపడుతుంది. మేము ఈ భావనను ఒక వేలం కాంట్రాక్ట్opens in a new tab యొక్క ఈ (సంక్షిప్త) ఉదాహరణను ఉపయోగించి వివరిస్తాము
1constructor(2 uint biddingTime,3 address payable beneficiaryAddress4 ) {5 beneficiary = beneficiaryAddress;6 auctionEndTime = block.timestamp + biddingTime;7 }89function bid() external payable {1011 if (block.timestamp > auctionEndTime)12 revert AuctionAlreadyEnded();1314 if (msg.value <= highestBid)15 revert BidNotHighEnough(highestBid);1617 if (highestBid != 0) {18 pendingReturns[highestBidder] += highestBid;19 }20 highestBidder = msg.sender;21 highestBid = msg.value;22 emit HighestBidIncreased(msg.sender, msg.value);23 }2425 function withdraw() external returns (bool) {26 uint amount = pendingReturns[msg.sender];27 if (amount > 0) {28 pendingReturns[msg.sender] = 0;2930 if (!payable(msg.sender).send(amount)) {31 pendingReturns[msg.sender] = amount;32 return false;33 }34 }35 return true;36 }3738function auctionEnd() external {39 if (block.timestamp < auctionEndTime)40 revert AuctionNotYetEnded();41 if (ended)42 revert AuctionEndAlreadyCalled();4344 ended = true;45 emit AuctionEnded(highestBidder, highestBid);4647 beneficiary.transfer(highestBid);48 }49}అన్నీ చూపించుఇది బిడ్డింగ్ వ్యవధిలో బిడ్లను స్వీకరించడానికి రూపొందించబడిన ఒక సాధారణ వేలం కాంట్రాక్ట్. highestBid పెరిగితే, మునుపటి అత్యధిక బిడ్డర్ వారి డబ్బును అందుకుంటారు; బిడ్డింగ్ వ్యవధి ముగిసిన తర్వాత, beneficiary వారి డబ్బును పొందడానికి కాంట్రాక్టును కాల్ చేస్తారు.
ఇలాంటి కాంట్రాక్ట్ కోసం యూనిట్ టెస్టులు కాంట్రాక్ట్తో సంప్రదించేటప్పుడు ఒక వినియోగదారు కాల్ చేయగల వివిధ ఫంక్షన్లను కవర్ చేస్తాయి. ఒక ఉదాహరణ, వేలం జరుగుతున్నప్పుడు ఒక వినియోగదారు బిడ్ వేయగలరో లేదో తనిఖీ చేసే యూనిట్ టెస్ట్ (అంటే, bid() కు కాల్స్ విజయవంతమవుతాయి) లేదా ప్రస్తుత highestBid కంటే ఎక్కువ బిడ్ వేయగలరో లేదో తనిఖీ చేసేది.
ఒక కాంట్రాక్ట్ యొక్క కార్యాచరణ వర్క్ఫ్లోను అర్థం చేసుకోవడం అమలు అవసరాలను తీరుస్తుందో లేదో తనిఖీ చేసే యూనిట్ టెస్టులను వ్రాయడంలో కూడా సహాయపడుతుంది. ఉదాహరణకు, వేలం ముగిసినప్పుడు వినియోగదారులు బిడ్లు వేయలేరని వేలం కాంట్రాక్ట్ నిర్దేశిస్తుంది (అంటే, auctionEndTime block.timestamp కంటే తక్కువగా ఉన్నప్పుడు). అందువల్ల, ఒక అభివృద్ధి చేసేవాడు వేలం ముగిసినప్పుడు bid() ఫంక్షన్కు కాల్లు విజయవంతమవుతాయో లేదా విఫలమవుతాయో తనిఖీ చేసే యూనిట్ టెస్ట్ను అమలు చేయవచ్చు (అంటే, auctionEndTime > block.timestamp అయినప్పుడు).
2. కాంట్రాక్ట్ అమలుకు సంబంధించిన అన్ని అంచనాలను మూల్యాంకనం చేయండి
ఒక కాంట్రాక్ట్ అమలు గురించి ఏవైనా అంచనాలను డాక్యుమెంట్ చేయడం మరియు ఆ అంచనాల యొక్క చెల్లుబాటును ధృవీకరించడానికి యూనిట్ టెస్టులను వ్రాయడం ముఖ్యం. ఊహించని అమలు నుండి రక్షణను అందించడమే కాకుండా, టెస్టింగ్ అస్సర్షన్స్ ఒక స్మార్ట్ కాంట్రాక్ట్ భద్రతా నమూనాను విచ్ఛిన్నం చేయగల కార్యకలాపాల గురించి ఆలోచించేలా మిమ్మల్ని బలవంతం చేస్తాయి. ఒక ఉపయోగకరమైన చిట్కా ఏమిటంటే, "హ్యాపీ యూజర్ టెస్టుల"కు మించి వెళ్లి తప్పుడు ఇన్పుట్ల కోసం ఒక ఫంక్షన్ విఫలమవుతుందో లేదో తనిఖీ చేసే నెగటివ్ టెస్టులను వ్రాయడం.
చాలా యూనిట్ టెస్టింగ్ ఫ్రేమ్వర్క్లు మీకు అస్సర్షన్స్ను సృష్టించడానికి అనుమతిస్తాయి—ఒక కాంట్రాక్ట్ ఏమి చేయగలదు మరియు ఏమి చేయలేదో తెలిపే సాధారణ వాక్యాలు—మరియు అమలులో ఆ అస్సర్షన్స్ నిలుస్తాయో లేదో చూడటానికి టెస్టులను అమలు చేస్తాయి. ముందు వివరించిన వేలం కాంట్రాక్ట్పై పనిచేస్తున్న ఒక అభివృద్ధి చేసేవాడు నెగటివ్ టెస్టులను అమలు చేయడానికి ముందు దాని ప్రవర్తన గురించి క్రింది అస్సర్షన్స్ను చేయవచ్చు:
-
వేలం ముగిసినప్పుడు లేదా ప్రారంభం కానప్పుడు వినియోగదారులు బిడ్లు వేయలేరు.
-
ఒక బిడ్ ఆమోదయోగ్యమైన పరిమితి కంటే తక్కువగా ఉంటే వేలం కాంట్రాక్ట్ రివర్ట్ అవుతుంది.
-
బిడ్ను గెలవడంలో విఫలమైన వినియోగదారులకు వారి నిధులు జమ చేయబడతాయి
గమనిక: అంచనాలను పరీక్షించడానికి మరొక మార్గం ఒక కాంట్రాక్ట్లోని ఫంక్షన్ మాడిఫైయర్లనుopens in a new tab ట్రిగ్గర్ చేసే టెస్టులను వ్రాయడం, ముఖ్యంగా require, assert, మరియు if…else స్టేట్మెంట్లు.
3. కోడ్ కవరేజీని కొలవండి
కోడ్ కవరేజ్opens in a new tab అనేది టెస్టుల సమయంలో మీ కోడ్లో అమలు చేయబడిన బ్రాంచ్లు, లైన్లు మరియు స్టేట్మెంట్ల సంఖ్యను ట్రాక్ చేసే టెస్టింగ్ మెట్రిక్. పరీక్షించని దుర్బలత్వాల ప్రమాదాన్ని తగ్గించడానికి టెస్టులకు మంచి కోడ్ కవరేజ్ ఉండాలి. తగినంత కవరేజ్ లేకుండా, అన్ని టెస్టులు పాస్ అయినందున మీ కాంట్రాక్ట్ సురక్షితమని మీరు తప్పుగా భావించవచ్చు, అయితే పరీక్షించని కోడ్ మార్గాలలో దుర్బలత్వాలు ఇంకా ఉన్నాయి. అయితే, అధిక కోడ్ కవరేజీని రికార్డ్ చేయడం, ఒక స్మార్ట్ కాంట్రాక్ట్లోని అన్ని స్టేట్మెంట్లు/ఫంక్షన్లు సరిగ్గా ఉన్నాయో లేదో తగినంతగా పరీక్షించబడ్డాయని భరోసా ఇస్తుంది.
4. బాగా అభివృద్ధి చెందిన టెస్టింగ్ ఫ్రేమ్వర్క్లను ఉపయోగించండి
మీ స్మార్ట్ కాంట్రాక్టుల కోసం యూనిట్ టెస్టులను అమలు చేయడంలో ఉపయోగించే ఉపకరణాల నాణ్యత చాలా ముఖ్యం. ఒక ఆదర్శ టెస్టింగ్ ఫ్రేమ్వర్క్ అనేది క్రమం తప్పకుండా నిర్వహించబడేది; ఉపయోగకరమైన లక్షణాలను (ఉదా., లాగింగ్ మరియు రిపోర్టింగ్ సామర్థ్యాలు) అందిస్తుంది; మరియు ఇతర అభివృద్ధి చేసేవాళ్ల ద్వారా విస్తృతంగా ఉపయోగించబడి మరియు పరిశీలించబడి ఉండాలి.
Solidity స్మార్ట్ కాంట్రాక్టుల కోసం యూనిట్ టెస్టింగ్ ఫ్రేమ్వర్క్లు వివిధ భాషలలో (ఎక్కువగా జావాస్క్రిప్ట్, పైథాన్, మరియు రస్ట్) వస్తాయి. వివిధ టెస్టింగ్ ఫ్రేమ్వర్క్లతో యూనిట్ టెస్టులను అమలు చేయడం ఎలా ప్రారంభించాలో సమాచారం కోసం క్రింద ఉన్న కొన్ని గైడ్లను చూడండి:
- బ్రౌనీతో యూనిట్ టెస్టులను అమలు చేయడంopens in a new tab
- ఫౌండ్రీతో యూనిట్ టెస్టులను అమలు చేయడంopens in a new tab
- వాఫిల్తో యూనిట్ టెస్టులను అమలు చేయడంopens in a new tab
- రీమిక్స్తో యూనిట్ టెస్టులను అమలు చేయడంopens in a new tab
- ఏప్తో యూనిట్ టెస్టులను అమలు చేయడంopens in a new tab
- హార్డ్హ్యాట్తో యూనిట్ టెస్టులను అమలు చేయడంopens in a new tab
- వేక్తో యూనిట్ టెస్టులను అమలు చేయడంopens in a new tab
ఇంటిగ్రేషన్ టెస్టింగ్
యూనిట్ టెస్టింగ్ కాంట్రాక్ట్ ఫంక్షన్లను విడిగా డీబగ్ చేస్తుండగా, ఇంటిగ్రేషన్ టెస్టులు ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క భాగాలను మొత్తంగా మూల్యాంకనం చేస్తాయి. ఇంటిగ్రేషన్ టెస్టింగ్ క్రాస్-కాంట్రాక్ట్ కాల్స్ లేదా అదే స్మార్ట్ కాంట్రాక్ట్లోని వివిధ ఫంక్షన్ల మధ్య పరస్పర చర్యల నుండి ఉత్పన్నమయ్యే సమస్యలను గుర్తించగలదు. ఉదాహరణకు, వారసత్వంopens in a new tab మరియు డిపెండెన్సీ ఇంజెక్షన్ వంటివి సరిగ్గా పనిచేస్తున్నాయో లేదో తనిఖీ చేయడానికి ఇంటిగ్రేషన్ టెస్టులు సహాయపడతాయి.
మీ కాంట్రాక్ట్ ఒక మాడ్యులర్ నిర్మాణాన్ని అవలంబించినా లేదా అమలు సమయంలో ఇతర ఆన్చైన్ కాంట్రాక్టులతో ఇంటర్ఫేస్ చేసినా ఇంటిగ్రేషన్ టెస్టింగ్ ఉపయోగపడుతుంది. ఇంటిగ్రేషన్ టెస్టులను అమలు చేయడానికి ఒక మార్గం, ఒక నిర్దిష్ట ఎత్తులో చేయడం (ఫోర్జ్opens in a new tab లేదా హార్డ్హ్యాట్opens in a new tab వంటి ఉపకరణాన్ని ఉపయోగించి) మరియు మీ కాంట్రాక్ట్ మరియు అమలు చేయబడిన కాంట్రాక్టుల మధ్య పరస్పర చర్యలను అనుకరించడం.
ఫోర్క్ చేయబడిన బ్లాక్చెయిన్ మెయిన్నెట్ మాదిరిగానే ప్రవర్తిస్తుంది మరియు అనుబంధిత స్థితులు మరియు బ్యాలెన్స్లతో ఖాతాలను కలిగి ఉంటుంది. కానీ ఇది కేవలం ఒక శాండ్బాక్స్డ్ స్థానిక అభివృద్ధి వాతావరణంగా పనిచేస్తుంది, అంటే మీకు లావాదేవీల కోసం నిజమైన ETH అవసరం లేదు, ఉదాహరణకు, లేదా మీ మార్పులు నిజమైన ఇతీరియము ప్రోటోకాల్ను ప్రభావితం చేయవు.
ప్రాపర్టీ-ఆధారిత టెస్టింగ్
ప్రాపర్టీ-ఆధారిత టెస్టింగ్ అనేది ఒక స్మార్ట్ కాంట్రాక్ట్ కొన్ని నిర్వచించిన ప్రాపర్టీని సంతృప్తిపరుస్తుందో లేదో తనిఖీ చేసే ప్రక్రియ. ప్రాపర్టీలు ఒక కాంట్రాక్ట్ ప్రవర్తన గురించి వాస్తవాలను నొక్కి చెబుతాయి, ఇవి వివిధ దృశ్యాలలో నిజంగా ఉంటాయని ఆశించబడతాయి—ఒక స్మార్ట్ కాంట్రాక్ట్ ప్రాపర్టీకి ఉదాహరణగా "కాంట్రాక్ట్లోని అంకగణిత కార్యకలాపాలు ఎప్పుడూ ఓవర్ఫ్లో లేదా అండర్ఫ్లో కావు" అని ఉండవచ్చు.
స్టాటిక్ విశ్లేషణ మరియు డైనమిక్ విశ్లేషణ ప్రాపర్టీ-ఆధారిత టెస్టింగ్ను అమలు చేయడానికి రెండు సాధారణ పద్ధతులు, మరియు రెండూ ఒక ప్రోగ్రామ్ (ఈ సందర్భంలో ఒక స్మార్ట్ కాంట్రాక్ట్) యొక్క కోడ్ కొన్ని ముందే నిర్వచించిన ప్రాపర్టీని సంతృప్తిపరుస్తుందని ధృవీకరించగలవు. కొన్ని ప్రాపర్టీ-ఆధారిత టెస్టింగ్ ఉపకరణాలు ఆశించిన కాంట్రాక్ట్ ప్రాపర్టీల గురించి ముందే నిర్వచించిన నియమాలతో వస్తాయి మరియు ఆ నియమాలకు వ్యతిరేకంగా కోడ్ను తనిఖీ చేస్తాయి, అయితే ఇతరులు స్మార్ట్ కాంట్రాక్ట్ కోసం అనుకూల ప్రాపర్టీలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తాయి.
స్టాటిక్ విశ్లేషణ
ఒక స్టాటిక్ ఎనలైజర్ ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క సోర్స్ కోడ్ను ఇన్పుట్గా తీసుకుంటుంది మరియు ఒక కాంట్రాక్ట్ ఒక ప్రాపర్టీని సంతృప్తిపరుస్తుందో లేదో ప్రకటించే ఫలితాలను అవుట్పుట్ చేస్తుంది. డైనమిక్ విశ్లేషణలా కాకుండా, స్టాటిక్ విశ్లేషణ సరిగ్గా ఉందో లేదో విశ్లేషించడానికి ఒక కాంట్రాక్టును అమలు చేయడాన్ని కలిగి ఉండదు. స్టాటిక్ విశ్లేషణ బదులుగా ఒక స్మార్ట్ కాంట్రాక్ట్ అమలు సమయంలో తీసుకోగల అన్ని సాధ్యమైన మార్గాల గురించి వాదిస్తుంది (అంటే, సోర్స్ కోడ్ యొక్క నిర్మాణాన్ని పరిశీలించడం ద్వారా రన్టైమ్లో కాంట్రాక్టుల ఆపరేషన్ కోసం దాని అర్థం ఏమిటో నిర్ణయించడానికి).
లింటింగ్opens in a new tab మరియు స్టాటిక్ టెస్టింగ్opens in a new tab కాంట్రాక్టులపై స్టాటిక్ విశ్లేషణను అమలు చేయడానికి సాధారణ పద్ధతులు. రెండూ కంపైలర్ ద్వారా అవుట్పుట్ చేయబడిన అబ్స్ట్రాక్ట్ సింటాక్స్ ట్రీలుopens in a new tab మరియు కంట్రోల్ ఫ్లో గ్రాఫ్లుopens in a new tab వంటి కాంట్రాక్టుల అమలు యొక్క తక్కువ-స్థాయి ప్రాతినిధ్యాలను విశ్లేషించడం అవసరం.
చాలా సందర్భాలలో, కాంట్రాక్టుల కోడ్లో అసురక్షిత నిర్మాణాల ఉపయోగం, సింటాక్స్ లోపాలు, లేదా కోడింగ్ ప్రమాణాల ఉల్లంఘనల వంటి భద్రతా సమస్యలను గుర్తించడానికి స్టాటిక్ విశ్లేషణ ఉపయోగపడుతుంది. అయితే, స్టాటిక్ ఎనలైజర్లు లోతైన దుర్బలత్వాలను గుర్తించడంలో సాధారణంగా అసమర్థంగా ఉంటాయని మరియు అధిక తప్పుడు పాజిటివ్లను ఉత్పత్తి చేయవచ్చని అంటారు.
డైనమిక్ విశ్లేషణ
డైనమిక్ విశ్లేషణ ఒక స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్లకు సింబాలిక్ ఇన్పుట్లను (ఉదా., సింబాలిక్ ఎగ్జిక్యూషన్లోopens in a new tab) లేదా కాంక్రీట్ ఇన్పుట్లను (ఉదా., ఫజింగ్లోopens in a new tab) ఉత్పత్తి చేస్తుంది, ఏదైనా ఎగ్జిక్యూషన్ ట్రేస్(లు) నిర్దిష్ట ప్రాపర్టీలను ఉల్లంఘిస్తుందో లేదో చూడటానికి. ఈ రకమైన ప్రాపర్టీ-ఆధారిత టెస్టింగ్ యూనిట్ టెస్టుల నుండి భిన్నంగా ఉంటుంది, ఎందుకంటే టెస్ట్ కేసులు బహుళ దృశ్యాలను కవర్ చేస్తాయి మరియు ఒక ప్రోగ్రామ్ టెస్ట్ కేసుల ఉత్పత్తిని నిర్వహిస్తుంది.
ఫజింగ్opens in a new tab అనేది స్మార్ట్ కాంట్రాక్టులలో ఏకపక్ష ప్రాపర్టీలను ధృవీకరించడానికి డైనమిక్ విశ్లేషణ పద్ధతికి ఒక ఉదాహరణ. ఒక ఫజర్ ఒక లక్ష్య కాంట్రాక్ట్లోని ఫంక్షన్లను ఒక నిర్వచించిన ఇన్పుట్ విలువ యొక్క యాదృచ్ఛిక లేదా తప్పుగా ఏర్పడిన వైవిధ్యాలతో ప్రారంభం చేస్తుంది. ఒకవేళ స్మార్ట్ కాంట్రాక్ట్ ఒక లోప స్థితిలోకి ప్రవేశిస్తే (ఉదా., ఒక అస్సర్షన్ విఫలమైన చోట), సమస్య ఫ్లాగ్ చేయబడుతుంది మరియు దుర్బల మార్గం వైపు అమలును నడిపించే ఇన్పుట్లు ఒక నివేదికలో ఉత్పత్తి చేయబడతాయి.
ఊహించని ఇన్పుట్లను సరిగ్గా నిర్వహించకపోవడం అనుకోని అమలుకు దారితీయవచ్చు మరియు ప్రమాదకరమైన ప్రభావాలను ఉత్పత్తి చేయవచ్చు కాబట్టి, ఒక స్మార్ట్ కాంట్రాక్ట్ ఇన్పుట్ ధృవీకరణ యంత్రాంగాన్ని మూల్యాంకనం చేయడానికి ఫజింగ్ ఉపయోగపడుతుంది. ఈ రకమైన ప్రాపర్టీ-ఆధారిత టెస్టింగ్ చాలా కారణాల వల్ల ఆదర్శంగా ఉంటుంది:
-
చాలా దృశ్యాలను కవర్ చేయడానికి టెస్ట్ కేసులను వ్రాయడం కష్టం. ఒక ప్రాపర్టీ టెస్ట్కు మీరు ప్రవర్తనను పరీక్షించడానికి ఒక ప్రవర్తన మరియు డేటా పరిధిని నిర్వచించడం మాత్రమే అవసరం—ప్రోగ్రామ్ నిర్వచించిన ప్రాపర్టీ ఆధారంగా స్వయంచాలకంగా టెస్ట్ కేసులను ఉత్పత్తి చేస్తుంది.
-
మీ టెస్ట్ సూట్ ప్రోగ్రామ్లోని అన్ని సాధ్యమైన మార్గాలను తగినంతగా కవర్ చేయకపోవచ్చు. 100% కవరేజ్తో కూడా, ఎడ్జ్ కేసులను తప్పిపోవడం సాధ్యమే.
-
యూనిట్ టెస్టులు ఒక కాంట్రాక్ట్ నమూనా డేటా కోసం సరిగ్గా అమలు అవుతుందని రుజువు చేస్తాయి, కానీ నమూనా వెలుపల ఇన్పుట్ల కోసం కాంట్రాక్ట్ సరిగ్గా అమలు అవుతుందో లేదో తెలియదు. ప్రాపర్టీ టెస్టులు అస్సర్షన్ వైఫల్యాలకు కారణమయ్యే అమలు ట్రేస్లను కనుగొనడానికి ఒక ఇచ్చిన ఇన్పుట్ విలువ యొక్క బహుళ వైవిధ్యాలతో లక్ష్య కాంట్రాక్టును అమలు చేస్తాయి. అందువల్ల, ఒక ప్రాపర్టీ టెస్ట్ ఒక విస్తృత తరగతి ఇన్పుట్ డేటా కోసం ఒక కాంట్రాక్ట్ సరిగ్గా అమలు అవుతుందని మరిన్ని హామీలను అందిస్తుంది.
స్మార్ట్ కాంట్రాక్టుల కోసం ప్రాపర్టీ-ఆధారిత టెస్టింగ్ను అమలు చేయడానికి మార్గదర్శకాలు
ప్రాపర్టీ-ఆధారిత టెస్టింగ్ను అమలు చేయడం సాధారణంగా ఒక స్మార్ట్ కాంట్రాక్ట్లో మీరు ధృవీకరించాలనుకుంటున్న ఒక ప్రాపర్టీని (ఉదా., ఇంటిజర్ ఓవర్ఫ్లోలopens in a new tab లేకపోవడం) లేదా ప్రాపర్టీల సేకరణను నిర్వచించడంతో ప్రారంభమవుతుంది. ప్రాపర్టీ టెస్టులు వ్రాస్తున్నప్పుడు లావాదేవీ ఇన్పుట్ల కోసం ప్రోగ్రామ్ డేటాను ఉత్పత్తి చేయగల విలువల పరిధిని కూడా మీరు నిర్వచించాల్సి రావచ్చు.
సరిగ్గా కాన్ఫిగర్ చేసిన తర్వాత, ప్రాపర్టీ టెస్టింగ్ ఉపకరణం మీ స్మార్ట్ కాంట్రాక్టుల ఫంక్షన్లను యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన ఇన్పుట్లతో అమలు చేస్తుంది. ఏవైనా అస్సర్షన్ ఉల్లంఘనలు ఉంటే, మూల్యాంకనం కింద ఉన్న ప్రాపర్టీని ఉల్లంఘించే కాంక్రీట్ ఇన్పుట్ డేటాతో మీకు ఒక నివేదిక రావాలి. వివిధ ఉపకరణాలతో ప్రాపర్టీ-ఆధారిత టెస్టింగ్ను అమలు చేయడం ప్రారంభించడానికి క్రింద ఉన్న కొన్ని గైడ్లను చూడండి:
- స్లిథర్తో స్మార్ట్ కాంట్రాక్టుల స్టాటిక్ విశ్లేషణopens in a new tab
- వేక్తో స్మార్ట్ కాంట్రాక్టుల స్టాటిక్ విశ్లేషణopens in a new tab
- బ్రౌనీతో ప్రాపర్టీ-ఆధారిత టెస్టింగ్opens in a new tab
- ఫౌండ్రీతో కాంట్రాక్టులను ఫజింగ్ చేయడంopens in a new tab
- ఎకిడ్నాతో కాంట్రాక్టులను ఫజింగ్ చేయడంopens in a new tab
- వేక్తో కాంట్రాక్టులను ఫజింగ్ చేయడంopens in a new tab
- మాంటికోర్తో స్మార్ట్ కాంట్రాక్టుల సింబాలిక్ ఎగ్జిక్యూషన్opens in a new tab
- మిథ్రిల్తో స్మార్ట్ కాంట్రాక్టుల సింబాలిక్ ఎగ్జిక్యూషన్opens in a new tab
స్మార్ట్ కాంట్రాక్టుల కోసం మాన్యువల్ టెస్టింగ్
స్మార్ట్ కాంట్రాక్టుల మాన్యువల్ టెస్టింగ్ తరచుగా ఆటోమేటెడ్ టెస్ట్లను అమలు చేసిన తర్వాత అభివృద్ధి చక్రంలో తర్వాత వస్తుంది. ఈ రకమైన టెస్టింగ్ స్మార్ట్ కాంట్రాక్ట్ను పూర్తిగా ఇంటిగ్రేటెడ్ ఉత్పత్తిగా మూల్యాంకనం చేస్తుంది, ఇది సాంకేతిక అవసరాలలో పేర్కొన్న విధంగా పనిచేస్తుందో లేదో చూడటానికి.
స్థానిక బ్లాక్చెయిన్పై కాంట్రాక్టులను పరీక్షించడం
స్థానిక అభివృద్ధి వాతావరణంలో నిర్వహించే ఆటోమేటెడ్ టెస్టింగ్ ఉపయోగకరమైన డీబగ్గింగ్ సమాచారాన్ని అందించగలదు, అయితే మీ స్మార్ట్ కాంట్రాక్ట్ ఒక ఉత్పత్తి వాతావరణంలో ఎలా ప్రవర్తిస్తుందో మీరు తెలుసుకోవాలనుకుంటారు. అయితే, ప్రధాన ఇతీరియము చైన్కు అమలు చేయడం గ్యాస్ ఫీజులను భరించాల్సి వస్తుంది—మీ స్మార్ట్ కాంట్రాక్ట్లో ఇంకా బగ్లు ఉంటే మీరు లేదా మీ వినియోగదారులు నిజమైన డబ్బును కోల్పోవచ్చనే విషయం చెప్పనవసరం లేదు.
మీ కాంట్రాక్టును స్థానిక బ్లాక్చెయిన్లో (దీనిని డెవలప్మెంట్ నెట్వర్క్ అని కూడా అంటారు) పరీక్షించడం మెయిన్నెట్లో పరీక్షించడానికి సిఫార్సు చేయబడిన ప్రత్యామ్నాయం. ఒక స్థానిక బ్లాక్చెయిన్ అనేది మీ కంప్యూటర్లో స్థానికంగా నడుస్తున్న ఇతీరియము బ్లాక్చెయిన్ యొక్క కాపీ, ఇది ఇతీరియము యొక్క ఎగ్జిక్యూషన్ లేయర్ ప్రవర్తనను అనుకరిస్తుంది. అందువల్ల, మీరు గణనీయమైన ఓవర్హెడ్ను భరించకుండా కాంట్రాక్ట్తో పరస్పర చర్య చేయడానికి లావాదేవీలను ప్రోగ్రామ్ చేయవచ్చు.
స్థానిక బ్లాక్చెయిన్లో కాంట్రాక్టులను అమలు చేయడం మాన్యువల్ ఇంటిగ్రేషన్ టెస్టింగ్ రూపంలో ఉపయోగపడుతుంది. స్మార్ట్ కాంట్రాక్టులు అత్యంత కంపోజబుల్, ఇది ఇప్పటికే ఉన్న ప్రోటోకాల్స్తో ఇంటిగ్రేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది—కానీ మీరు ఇప్పటికీ అలాంటి సంక్లిష్ట ఆన్చైన్ పరస్పర చర్యలు సరైన ఫలితాలను ఉత్పత్తి చేస్తాయని నిర్ధారించుకోవాలి.
అభివృద్ధి నెట్వర్క్ల గురించి మరింత తెలుసుకోండి.
టెస్టునెట్లలో కాంట్రాక్టులను పరీక్షించడం
ఒక టెస్ట్ నెట్వర్క్ లేదా టెస్టునెట్ ఇతీరియము మెయిన్నెట్ మాదిరిగానే పనిచేస్తుంది, ఇది నిజమైన-ప్రపంచ విలువ లేని ఈథర్ (ETH)ను ఉపయోగిస్తుంది తప్ప. మీ కాంట్రాక్టును టెస్టునెట్లో అమలు చేయడం అంటే ఎవరైనా దానితో (ఉదా., డాప్ యొక్క ఫ్రంటెండ్ ద్వారా) నిధులను ప్రమాదంలో పెట్టకుండా పరస్పర చర్య చేయవచ్చు.
ఈ రకమైన మాన్యువల్ టెస్టింగ్ ఒక వినియోగదారు దృష్టికోణం నుండి మీ అప్లికేషన్ యొక్క ఎండ్-టు-ఎండ్ ఫ్లోను మూల్యాంకనం చేయడానికి ఉపయోగపడుతుంది. ఇక్కడ, బీటా టెస్టర్లు కూడా ట్రయల్ రన్లను నిర్వహించవచ్చు మరియు కాంట్రాక్ట్ యొక్క వ్యాపార లాజిక్ మరియు మొత్తం కార్యాచరణతో ఏవైనా సమస్యలను నివేదించవచ్చు.
స్థానిక బ్లాక్చెయిన్పై పరీక్షించిన తర్వాత టెస్టునెట్లో అమలు చేయడం ఆదర్శం, ఎందుకంటే రెండోది ఎథేరియం వర్చువల్ మషీన్ ప్రవర్తనకు దగ్గరగా ఉంటుంది. అందువల్ల, అనేక ఇతీరియము-స్థానిక ప్రాజెక్టులు వాస్తవ-ప్రపంచ పరిస్థితులలో స్మార్ట్ కాంట్రాక్ట్ ఆపరేషన్ను మూల్యాంకనం చేయడానికి టెస్టునెట్లలో డాప్స్ను అమలు చేయడం సాధారణం.
ఇతీరియము టెస్టునెట్ల గురించి మరింతగా.
టెస్టింగ్ వర్సెస్ ఫార్మల్ వెరిఫికేషన్
పరీక్షలు కొన్ని డేటా ఇన్పుట్ల కోసం కాంట్రాక్ట్ ఆశించిన ఫలితాలను తిరిగి ఇస్తుందని నిర్ధారించడానికి సహాయపడతాయి, అయితే పరీక్షల సమయంలో ఉపయోగించని ఇన్పుట్ల కోసం అదే విషయాన్ని నిశ్చయంగా రుజువు చేయలేవు. అందువల్ల, ఒక స్మార్ట్ కాంట్రాక్టును పరీక్షించడం "ఫంక్షనల్ కరెక్ట్నెస్"కు హామీ ఇవ్వదు (అంటే, ఇది ప్రోగ్రామ్ అన్ని ఇన్పుట్ విలువల సెట్లకు అవసరమైన విధంగా ప్రవర్తిస్తుందని చూపించదు).
ఫార్మల్ వెరిఫికేషన్ అనేది ప్రోగ్రామ్ యొక్క ఫార్మల్ మోడల్ ఫార్మల్ స్పెసిఫికేషన్తో సరిపోలుతుందో లేదో తనిఖీ చేయడం ద్వారా సాఫ్ట్వేర్ యొక్క సరిగ్గా ఉందో లేదో అంచనా వేయడానికి ఒక విధానం. ఒక ఫార్మల్ మోడల్ అనేది ఒక ప్రోగ్రామ్ యొక్క అబ్స్ట్రాక్ట్ గణిత ప్రాతినిధ్యం, అయితే ఒక ఫార్మల్ స్పెసిఫికేషన్ ప్రోగ్రామ్ యొక్క ప్రాపర్టీలను నిర్వచిస్తుంది (అంటే, ప్రోగ్రామ్ యొక్క అమలు గురించి తార్కిక అస్సర్షన్స్).
ప్రాపర్టీలు గణిత పరంగా వ్రాయబడినందున, సిస్టమ్ యొక్క ఫార్మల్ (గణిత) మోడల్ తార్కిక అనుమితి నియమాలను ఉపయోగించి ఒక స్పెసిఫికేషన్ను సంతృప్తిపరుస్తుందని ధృవీకరించడం సాధ్యమవుతుంది. అందువల్ల, ఫార్మల్ వెరిఫికేషన్ ఉపకరణాలు ఒక సిస్టమ్ యొక్క సరిగ్గా ఉన్నదానికి ‘గణిత రుజువు’ను ఉత్పత్తి చేస్తాయని అంటారు.
పరీక్షలా కాకుండా, ఫార్మల్ వెరిఫికేషన్ ఒక స్మార్ట్ కాంట్రాక్ట్ అమలు అన్ని అమలుల కోసం ఫార్మల్ స్పెసిఫికేషన్ను సంతృప్తిపరుస్తుందని (అంటే, దానికి బగ్లు లేవని) ధృవీకరించడానికి ఉపయోగించబడుతుంది, నమూనా డేటాతో అమలు చేయాల్సిన అవసరం లేకుండా. ఇది డజన్ల కొద్దీ యూనిట్ టెస్టులను అమలు చేయడానికి గడిపిన సమయాన్ని తగ్గించడమే కాకుండా, దాగి ఉన్న దుర్బలత్వాలను పట్టుకోవడంలో కూడా మరింత ప్రభావవంతంగా ఉంటుంది. అయితే, ఫార్మల్ వెరిఫికేషన్ పద్ధతులు వాటి అమలు కష్టాన్ని మరియు ఉపయోగం ఆధారంగా ఒక స్పెక్ట్రమ్పై ఉంటాయి.
స్మార్ట్ కాంట్రాక్టుల కోసం ఫార్మల్ వెరిఫికేషన్ గురించి మరింతగా.
టెస్టింగ్ వర్సెస్ ఆడిట్లు మరియు బగ్ బౌంటీలు
పేర్కొన్నట్లుగా, కఠినమైన టెస్టింగ్ ఒక కాంట్రాక్ట్లో బగ్లు లేవని చాలా అరుదుగా హామీ ఇస్తుంది; ఫార్మల్ వెరిఫికేషన్ విధానాలు సరిగ్గా ఉన్నాయని బలమైన హామీలను అందించగలవు కానీ ప్రస్తుతం ఉపయోగించడం కష్టం మరియు గణనీయమైన ఖర్చులను కలిగి ఉంటాయి.
అయినప్పటికీ, మీరు ఒక స్వతంత్ర కోడ్ సమీక్షను పొందడం ద్వారా కాంట్రాక్ట్ దుర్బలత్వాలను పట్టుకునే అవకాశాన్ని మరింత పెంచుకోవచ్చు. స్మార్ట్ కాంట్రాక్ట్ ఆడిట్లుopens in a new tab మరియు బగ్ బౌంటీలుopens in a new tab మీ కాంట్రాక్టులను విశ్లేషించడానికి ఇతరులను పొందడానికి రెండు మార్గాలు.
స్మార్ట్ కాంట్రాక్టులలో భద్రతా లోపాలు మరియు పేలవమైన అభివృద్ధి పద్ధతుల కేసులను కనుగొనడంలో అనుభవం ఉన్న ఆడిటర్ల ద్వారా ఆడిట్లు నిర్వహించబడతాయి. ఒక ఆడిట్ సాధారణంగా టెస్టింగ్ (మరియు బహుశా ఫార్మల్ వెరిఫికేషన్) అలాగే మొత్తం కోడ్బేస్ యొక్క మాన్యువల్ సమీక్షను కలిగి ఉంటుంది.
దీనికి విరుద్ధంగా, ఒక బగ్ బౌంటీ ప్రోగ్రామ్ సాధారణంగా ఒక స్మార్ట్ కాంట్రాక్ట్లో ఒక దుర్బలత్వాన్ని కనుగొని దానిని అభివృద్ధి చేసేవాళ్లకు వెల్లడించే ఒక వ్యక్తికి (సాధారణంగా వైట్హ్యాట్ హ్యాకర్లుగాopens in a new tab వర్ణించబడుతుంది) ఆర్థిక బహుమతిని అందించడాన్ని కలిగి ఉంటుంది. బగ్ బౌంటీలు ఆడిట్ల మాదిరిగానే ఉంటాయి, ఎందుకంటే ఇది స్మార్ట్ కాంట్రాక్టులలో లోపాలను కనుగొనడంలో ఇతరుల సహాయం కోరడాన్ని కలిగి ఉంటుంది.
ప్రధాన వ్యత్యాసం ఏమిటంటే, బగ్ బౌంటీ ప్రోగ్రామ్లు విస్తృత అభివృద్ధి చేసే/హ్యాకర్ కమ్యూనిటీకి తెరిచి ఉంటాయి మరియు ప్రత్యేక నైపుణ్యాలు మరియు అనుభవం ఉన్న నైతిక హ్యాకర్లు మరియు స్వతంత్ర భద్రతా నిపుణుల యొక్క విస్తృత తరగతిని ఆకర్షిస్తాయి. ఇది పరిమిత లేదా సంకుచిత నైపుణ్యం కలిగిన బృందాలపై ప్రధానంగా ఆధారపడే స్మార్ట్ కాంట్రాక్ట్ ఆడిట్ల కంటే ఒక ప్రయోజనంగా ఉండవచ్చు.
టెస్టింగ్ ఉపకరణాలు మరియు లైబ్రరీలు
యూనిట్ టెస్టింగ్ ఉపకరణాలు
-
solidity-coverageopens in a new tab - Solidityలో వ్రాసిన స్మార్ట్ కాంట్రాక్టుల కోసం కోడ్ కవరేజ్ ఉపకరణం.
-
Waffleopens in a new tab - అధునాతన స్మార్ట్ కాంట్రాక్ట్ అభివృద్ధి మరియు టెస్టింగ్ కోసం ఫ్రేమ్వర్క్ (ethers.js ఆధారంగా).
-
Remix Testsopens in a new tab - Solidity స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఉపకరణం. Remix IDE "Solidity Unit Testing" ప్లగిన్ కింద పనిచేస్తుంది, ఇది ఒక కాంట్రాక్ట్ కోసం టెస్ట్ కేసులను వ్రాయడానికి మరియు అమలు చేయడానికి ఉపయోగించబడుతుంది.
-
OpenZeppelin Test Helpersopens in a new tab - ఇతీరియము స్మార్ట్ కాంట్రాక్ట్ టెస్టింగ్ కోసం అస్సర్షన్ లైబ్రరీ. మీ కాంట్రాక్టులు ఆశించిన విధంగా ప్రవర్తిస్తాయని నిర్ధారించుకోండి!
-
Brownie unit testing frameworkopens in a new tab - బ్రౌనీ Pytestను ఉపయోగిస్తుంది, ఇది ఫీచర్-రిచ్ టెస్ట్ ఫ్రేమ్వర్క్, ఇది తక్కువ కోడ్తో చిన్న టెస్ట్లను వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది, పెద్ద ప్రాజెక్టుల కోసం బాగా స్కేల్ చేస్తుంది మరియు అత్యంత విస్తరించదగినది.
-
Foundry Testsopens in a new tab - ఫౌండ్రీ ఫోర్జ్ను అందిస్తుంది, ఇది సాధారణ యూనిట్ టెస్టులు, గ్యాస్ ఆప్టిమైజేషన్ తనిఖీలు మరియు కాంట్రాక్ట్ ఫజింగ్ను అమలు చేయగల వేగవంతమైన మరియు సౌకర్యవంతమైన ఇతీరియము టెస్టింగ్ ఫ్రేమ్వర్క్.
-
హార్డ్హ్యాట్ టెస్టులుopens in a new tab - ethers.js, Mocha, మరియు Chai ఆధారంగా స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఫ్రేమ్వర్క్.
-
ApeWorxopens in a new tab - ఎథేరియం వర్చువల్ మషీన్ను లక్ష్యంగా చేసుకుని స్మార్ట్ కాంట్రాక్టుల కోసం పైథాన్-ఆధారిత అభివృద్ధి మరియు టెస్టింగ్ ఫ్రేమ్వర్క్.
-
Wakeopens in a new tab - యూనిట్ టెస్టింగ్ మరియు ఫజింగ్ కోసం పైథాన్-ఆధారిత ఫ్రేమ్వర్క్, బలమైన డీబగ్గింగ్ సామర్థ్యాలు మరియు క్రాస్-చైన్ టెస్టింగ్ మద్దతుతో, ఉత్తమ వినియోగదారు అనుభవం మరియు పనితీరు కోసం pytest మరియు Anvilను ఉపయోగిస్తుంది.
ప్రాపర్టీ-ఆధారిత టెస్టింగ్ ఉపకరణాలు
స్టాటిక్ విశ్లేషణ ఉపకరణాలు
-
Slitheropens in a new tab - దుర్బలత్వాలను కనుగొనడానికి, కోడ్ గ్రహణాన్ని మెరుగుపరచడానికి మరియు స్మార్ట్ కాంట్రాక్టుల కోసం అనుకూల విశ్లేషణలను వ్రాయడానికి పైథాన్-ఆధారిత Solidity స్టాటిక్ విశ్లేషణ ఫ్రేమ్వర్క్.
-
Ethlintopens in a new tab - Solidity స్మార్ట్ కాంట్రాక్ట్ ప్రోగ్రామింగ్ భాష కోసం శైలి మరియు భద్రతా ఉత్తమ పద్ధతులను అమలు చేయడానికి లింటర్.
-
Cyfrin Aderynopens in a new tab - Web3 స్మార్ట్ కాంట్రాక్ట్ భద్రత మరియు అభివృద్ధి కోసం ప్రత్యేకంగా రూపొందించబడిన రస్ట్-ఆధారిత స్టాటిక్ ఎనలైజర్.
-
Wakeopens in a new tab - దుర్బలత్వం మరియు కోడ్ నాణ్యత డిటెక్టర్లతో పైథాన్-ఆధారిత స్టాటిక్ విశ్లేషణ ఫ్రేమ్వర్క్, కోడ్ నుండి ఉపయోగకరమైన సమాచారాన్ని సంగ్రహించడానికి ప్రింటర్లు మరియు అనుకూల సబ్మాడ్యూల్స్ వ్రాయడానికి మద్దతు.
-
Slippyopens in a new tab - Solidity కోసం ఒక సాధారణ మరియు శక్తివంతమైన లింటర్.
డైనమిక్ విశ్లేషణ ఉపకరణాలు
-
Echidnaopens in a new tab - ప్రాపర్టీ-ఆధారిత టెస్టింగ్ ద్వారా స్మార్ట్ కాంట్రాక్టులలో దుర్బలత్వాలను గుర్తించడానికి వేగవంతమైన కాంట్రాక్ట్ ఫజర్.
-
Diligence Fuzzingopens in a new tab - స్మార్ట్ కాంట్రాక్ట్ కోడ్లో ప్రాపర్టీ ఉల్లంఘనలను గుర్తించడానికి ఉపయోగపడే ఆటోమేటెడ్ ఫజింగ్ ఉపకరణం.
-
Manticoreopens in a new tab - EVM బైట్కోడ్ను విశ్లేషించడానికి డైనమిక్ సింబాలిక్ ఎగ్జిక్యూషన్ ఫ్రేమ్వర్క్.
-
Mythrilopens in a new tab - టెయింట్ విశ్లేషణ, కాంకోలిక్ విశ్లేషణ మరియు కంట్రోల్ ఫ్లో చెకింగ్ను ఉపయోగించి కాంట్రాక్ట్ దుర్బలత్వాలను గుర్తించడానికి EVM బైట్కోడ్ అంచనా ఉపకరణం.
-
Diligence Scribbleopens in a new tab - Scribble అనేది ఒక స్పెసిఫికేషన్ భాష మరియు రన్టైమ్ వెరిఫికేషన్ ఉపకరణం, ఇది మీకు స్మార్ట్ కాంట్రాక్టులను ప్రాపర్టీలతో అనోటేట్ చేయడానికి అనుమతిస్తుంది, ఇది Diligence Fuzzing లేదా MythX వంటి ఉపకరణాలతో కాంట్రాక్టులను స్వయంచాలకంగా పరీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది.
సంబంధిత ట్యుటోరియల్స్
- వివిధ టెస్టింగ్ ఉత్పత్తుల యొక్క అవలోకనం మరియు పోలిక _
- స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఎకిడ్నాను ఎలా ఉపయోగించాలి
- స్మార్ట్ కాంట్రాక్ట్ బగ్లను కనుగొనడానికి మాంటికోర్ను ఎలా ఉపయోగించాలి
- స్మార్ట్ కాంట్రాక్ట్ బగ్లను కనుగొనడానికి స్లిథర్ను ఎలా ఉపయోగించాలి
- పరీక్ష కోసం Solidity కాంట్రాక్టులను ఎలా మాక్ చేయాలి
- ఫౌండ్రీని ఉపయోగించి Solidityలో యూనిట్ టెస్టులను ఎలా అమలు చేయాలిopens in a new tab
మరింత సమాచారం
- ఇతీరియము స్మార్ట్ కాంట్రాక్టులను పరీక్షించడానికి ఒక లోతైన గైడ్opens in a new tab
- ఇతీరియము స్మార్ట్ కాంట్రాక్టులను ఎలా పరీక్షించాలిopens in a new tab
- అభివృద్ధి చేసేవాళ్ల కోసం MolochDAO యొక్క యూనిట్ టెస్టింగ్ గైడ్opens in a new tab
- ఒక రాక్స్టార్ లాగా స్మార్ట్ కాంట్రాక్టులను ఎలా పరీక్షించాలిopens in a new tab