স্মার্ট চুক্তির জন্য ইউনিট পরীক্ষা লেখার একটি সহজ গাইড

http://upstate.agency/smart-contracts

বুদ্ধিমান চুক্তি বিকাশের জন্য ভাল ইউনিট পরীক্ষা গুরুত্বপূর্ণ। স্মরণ করা হয়েছে যে স্মার্ট চুক্তিগুলি পরিবর্তনযোগ্য নয় এবং প্রায়শই প্রচুর পরিমাণে অর্থ পরিচালনার জন্য দায়বদ্ধ, কেউ যুক্তিযুক্ত হতে পারে যে স্মার্ট চুক্তির জন্য ভাল ইউনিট পরীক্ষার বিকাশ প্রচলিত ওয়েব এবং মোবাইল অ্যাপ্লিকেশনগুলির চেয়ে গুরুত্বপূর্ণ।

গত দুই মাস ধরে, আমরা সিকিওরিটির নিয়ন্ত্রক টোকনাইজেশন জন্য একটি উদ্ভাবনী প্ল্যাটফর্ম বিকাশকারী একটি আর্থিক পরিষেবা সংস্থার সাথে ঘনিষ্ঠভাবে কাজ করার জন্য আমাদের ভাগ্যবান। তাদের শিগগিরই প্রকাশিত প্ল্যাটফর্মটি কয়েক হাজার কোটি ডলারের সিকিওরিটি ব্লকচেইনে স্থানান্তর করার সক্ষমতা প্রবর্তন করবে।

তাদের প্রবর্তনকে সমর্থন করার জন্য, আমরা তাদের প্রকৌশল দলের সাথে ঘনিষ্ঠভাবে কাজ করেছি, বিস্তৃত পরীক্ষার কভারেজ প্রয়োগ করেছি এবং আমাদের ত্রুটি সনাক্তকরণ প্রক্রিয়াটির বিরুদ্ধে কার্যকর করেছি uted এই অভিজ্ঞতা থেকে, আমরা আপনার স্মার্ট চুক্তির জন্য ইউনিট পরীক্ষার বিকাশ করার সময় কয়েকটি গুরুত্বপূর্ণ বিবেচনা এবং কয়েকটি টিপস এবং কৌশলগুলি এড়াতে পারি।

ব্যবসায়ের যুক্তি সম্পর্কে স্বাস্থ্যকর ধারণা অর্জন করুন

প্রথমে নিশ্চিত হয়ে নিন যে আপনি আপনার বিতরণকৃত অ্যাপ্লিকেশনটির (ডিপ) ব্যবসায়ের যুক্তি বুঝতে পেরেছেন। আপনার অ্যাপটি কোন সমস্যার সমাধান করে এবং সেগুলি কীভাবে সমাধান করা হয় তা নথিভুক্ত করতে সহায়ক। আপনি আপনার অ্যাপের বিভিন্ন সীমাবদ্ধতাও সনাক্ত করতে চান identify উদাহরণস্বরূপ, বেশিরভাগ ড্যাপস ভূমিকা-ভিত্তিক বা চুক্তি-ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ প্রয়োগ করে। এই বিধিনিষেধগুলি এবং ব্যবহারে তাদের প্রভাবগুলি নথিভুক্ত করা গুরুত্বপূর্ণ।

আপনি নিজের অ্যাপ্লিকেশনটির কার্যপ্রবাহও প্রতিলিপি করতে চান। নির্দিষ্ট চুক্তি অন্যদের আগে সক্রিয় করা আছে? একটি নির্দিষ্ট চুক্তিটি কোনও নির্দিষ্ট কাজ সম্পাদনের জন্য বিরতি দেওয়া উচিত বা না থামানো উচিত? এগুলি হ'ল ব্যবসায়িক যুক্তি এবং কর্মপ্রবাহ সম্পর্কিত প্রয়োজনীয়তাগুলি যা আপনি নিজের ইউনিট পরীক্ষার বিকাশ শুরু করার আগে ভালভাবে বোঝা উচিত।

আপনার ইউনিট পরীক্ষা পরিকল্পনা

আপনি আপনার ড্যাপের ব্যবসায়িক যুক্তি এবং কর্মপ্রবাহটি নথিভুক্ত করার পরে, আমরা আপনাকে সুপারিশ করি যে আপনি আপনার ড্যাপের সাথে সম্পর্কিত কার্যকারিতার সাথে যুক্ত প্রতিটি উপাদান পরীক্ষা বরাদ্দ করুন। এটির জন্য আপনার চুক্তি এবং বৈশিষ্ট্যগুলি দ্বারা আপনার অ্যাপ্লিকেশনটি ভেঙে ফেলা দরকার এবং তারপরে প্রতিটি সম্ভাব্য ব্যবহারের ক্ষেত্রে উপযুক্ত উপাদানগুলির পরীক্ষাগুলি নির্দিষ্ট করে।

আমরা আমাদের ইউনিট পরীক্ষাগুলি গ্রুপ করি যাতে চুক্তিতে সংশ্লিষ্ট ফাংশনগুলিতে তাদের অর্পণ করা হয়। টোকেন চুক্তিতে বয় টোকেন্স (_আমउंट) ফাংশনের সাথে যুক্ত একটি একক ব্যবহারের ক্ষেত্রে একটি নমুনা বিশদ এখানে দেওয়া হয়েছে:

// যখন চুক্তিটি সক্রিয় হয়
// যদি চুক্তিতে বিরতি না দেওয়া হয়
// যখন অফার সময়কাল শুরু হয়
// যদি অফারের সময়সীমা এখনও শেষ হয় নি
// এটি সত্য ফিরে আসা উচিত

বিপরীতে, এখানে অফার পিরিয়ডের মেয়াদ শেষ হয়ে গেলে বাই টোকেন্স (_আমउंट) ফাংশনের সাথে যুক্ত আরও একটি স্পেসিফিকেশন রয়েছে:

// যখন চুক্তিটি সক্রিয় হয়
// যদি চুক্তিতে বিরতি না দেওয়া হয়
// যখন অফার সময়কাল শুরু হয়
// যখন অফারের সময়সীমা শেষ হয়ে যায়
// এটি পুনরায় সেট করা উচিত

এইভাবে আপনার সমস্ত উপাদান পরীক্ষার সংক্ষিপ্তসার করে, আপনি আপনার স্টেকহোল্ডার এবং আপনার ইঞ্জিনিয়ারিং দলের বাকী অংশের সাথে কথোপকথন করতে পারেন। সুতরাং আপনার ড্যাপের প্রয়োজনের বিষয়টি নিশ্চিত হয়ে নিন যে প্রত্যেকে একই পৃষ্ঠায় রয়েছে। শুধু তা-ই নয়, এটি আপনাকে সুরক্ষা এবং নির্ভরযোগ্য উপায়ে আপনার ডাপ্প ডিজাইন করতে ও তৈরি করতে সহায়তা করে।

প্রথমে সংশোধকগুলিকে সম্বোধন করুন এবং তারপরে প্রয়োজনীয়গুলির মাধ্যমে এবং যদি একের পর এক বিবৃতি দেওয়া হয় work

আপনি আপনার ইউনিট পরীক্ষাগুলি সংজ্ঞায়িত করার পরে, প্রথমে আপনার ব্যবহারের ক্ষেত্রে আপনার ফাংশন সংশোধকগুলির সাথে লিঙ্কযুক্ত হওয়াতে মনোনিবেশ করা উচিত। এরপরে আপনি একবারে ফাংশনটি চালাতে পারেন এবং সংশ্লিষ্ট প্রয়োজনীয়তার সাথে সম্পর্কিত এবং যদি বিবৃতি দেওয়া হয় তবে সমস্ত ব্যবহারের কেসগুলি পরিচালনা করতে ইউনিট পরীক্ষাগুলি বিকাশ করতে পারেন।

উদাহরণস্বরূপ, নীচের মতো কোনও ক্রিয়াকলাপের জন্য, আমরা নীচে নীচে হ্যান্ডেল করার আগে অ্যাটসটেজ (স্টেজস.অ্যাকশনস্টার্ট) এবং বৈধবিড () সংশোধনকারীগুলির সাথে সম্পর্কিত ব্যবহারের কেসগুলি আবরণ করতে চাই:

/// @dev বর্তমান দামে বিড করা প্রথম ব্যক্তি উপকারকারীর এনএফটি /// @ দেব পাবেন যদি কোন দরদাতা এনএফটিকে অতিরিক্ত চাপ দেয়, সে নিলামে জয়ী হবে এবং তার বিড ফেরত দেওয়া হবে
প্রসেসবিড () জনসাধারণের কাছে এজেড (স্টেজস.অলাকশনস্টার্ড) প্রদানযোগ্য // প্রথমে এখানে বৈধবিড () শুরু করুন // এই ব্যবহারের কেসগুলিকে দ্বিতীয় রিটার্ন (ইউএনটি) হিসাবে সম্বোধন করুন // তারপরে নিম্নলিখিত "যদি", "অন্য" "এবং" প্রয়োজনীয় "কে সম্বোধন করুন -নির্দেশসমূহ {বিড = msg.value; দরদাতা = msg.sender; getCurrentAskingPrice (); if (বিড> কারেন্টএকিংপ্রাইস) {ওভারেজ = বিড.সুব (কারেন্টএক্সিংপ্রাইস); bidder.transfer (ওভারেজ); বিড = কারেন্টএকিংপ্রাইস; পর্যায় = পর্যায়সমূহ। নিলাম; সমাপ্ত; পে-বেনিফিসিয়ারি (); সেন্ডটো বিডার (); if অন্যথায় যদি (বিড == কারেন্টএজিংপ্রাইস) {পর্যায় = পর্যায়সমূহ A নিলাম; পে-বেনিফিসিয়ারি (); সেন্ডটো বিডার (); } অন্য {রিসেট ("বিড বর্তমানএক্সিংপ্রাইসের চেয়ে কম"); }}

আমরা খুঁজে পেয়েছি যে আপনার চুক্তিগুলি পুনঃস্থাপন করা উচিত যখন ওপেনজেপেলিনের অ্যাসেটরভার্ট সহায়ক সাহায্যকারী পরীক্ষার জন্য অত্যন্ত সহায়ক। আপনি এটি এর মতো ব্যবহার করতে পারেন:

অপেক্ষা assertRevert (tokenInstance.buy ({থেকে: বিনিয়োগকারী, মান: 500}));

ফাংশন ওভারলোড এবং নিম্ন স্তরের কলগুলির প্রয়োজন

আপনি যখন নিজের ইউনিট পরীক্ষার বিকাশ চালিয়ে যাচ্ছেন, সম্ভবত আপনি ব্যবহার করেন এমন বিকাশকারী সরঞ্জামগুলির সাথে সম্পর্কিত ত্রুটিগুলির মুখোমুখি হবেন। এটি কারণ স্মার্ট কন্ট্রাক্ট ডেভলপমেন্ট অঞ্চলটি এখনও খুব নতুন এবং তাই বিকাশকারী অনেক সরঞ্জাম এখনও পরিপক্ক হয়নি।

উদাহরণস্বরূপ, ট্রাফল কাঠামো - একটি দুর্দান্ত সরঞ্জাম এবং সম্ভবত আজকের ইথেরিয়াম অঞ্চলের সর্বাধিক জনপ্রিয় কাঠামো - ফাংশন ওভারলোডিং সমর্থন করে না। এর অর্থ হ'ল যদি আপনি একই নামের সাথে ভিন্ন ভিন্ন বৈশিষ্ট্য সহ দুটি ফাংশন পরীক্ষা করতে চান তবে আপনাকে নিম্ন স্তরের কলগুলি ব্যবহার করে চুক্তির এবিআইতে দ্বিতীয় ফাংশনটি পরীক্ষা করতে হবে। আপনি যদি তা না করেন তবে আপনি একটি ত্রুটি বার্তা পাবেন: দৃ function়তা ফাংশনটির জন্য অবৈধ আর্গুমেন্ট। একটি সংক্ষিপ্ত উদাহরণ তাকান।

যদি আপনার একটি চুক্তিতে দুটি বয় টোকেন ফাংশন থাকে তবে এটির মধ্যে কোন যুক্তি নেই এবং এটিআইবিতে প্রথমে আসে এবং একটি আর্গুমেন্ট গ্রহণ করে (_ পরিমাণ) এবং এবিআইতে দ্বিতীয় আসে, আপনাকে একটি সাধারণ কল ব্যবহার করতে হবে এনকোডকল (নীচে দেখুন) এর সাথে বয় টোকেন্স (_আমরা) ফাংশনটি পরীক্ষা করুন।

ডেটা = এনকোডক্যাল ("বাই টোকেন", ["ইউিন্ট"], [100]); // 100 হল _ পরিমাণের যুক্তির মান
চুক্তিআইনস্ট্যান্স.সেন্ড লেনদেন (from থেকে ডেটা: বিনিয়োগকারী, মান: 500})

ট্রাফল সম্প্রদায় এই সমস্যা সম্পর্কে সচেতন এবং আসন্ন প্রকাশে এটিকে মোকাবেলা করবে। এই জাতীয় উদ্ভট পরিস্থিতিগুলি অস্বাভাবিক নয়, তবে আপনি যদি স্মার্ট চুক্তি এবং উপযুক্ত ইউনিট পরীক্ষার বিকাশ করেন। আপনি সময়ে সময়ে যে সমাধানগুলি কল করেন সেগুলি সম্পর্কে আপনাকে সতর্কতা অবলম্বন করতে হবে (তবে খুব সাবধানতা অবলম্বন করতে হবে)।

কিভাবে অভ্যন্তরীণ ফাংশন পরীক্ষা করতে হয়

দৃity়তার ফাংশনগুলির বিভিন্ন দৃশ্যমানতা থাকতে পারে (যেমন, পাবলিক, বেসরকারী, অভ্যন্তরীণ এবং বাহ্যিক), এটি লক্ষ করা উচিত যে অভ্যন্তরীণ ফাংশনগুলির জন্য ইউনিট পরীক্ষার বিকাশ পাবলিক ফাংশনগুলির জন্য বিকাশের থেকে কিছুটা পৃথক। এটি হ'ল অভ্যন্তরীণ ফাংশনগুলি সংকলনের পরে কোনও স্মার্ট চুক্তির এবিআইতে তালিকাভুক্ত করা হয়নি। অভ্যন্তরীণ ফাংশনগুলি পরীক্ষা করার দুটি উপায় রয়েছে:

  1. আপনি অন্য একটি চুক্তি তৈরি করতে পারেন যা কোনও অভ্যন্তরীণ ফাংশন পরীক্ষা করার জন্য পরীক্ষার জন্য চুক্তিটি উত্তরাধিকার সূত্রে প্রাপ্ত
  2. অথবা আপনি চুক্তির অন্যান্য ক্রিয়াকলাপের অভ্যন্তরীণ ফাংশনটির যুক্তি পরীক্ষা করতে পারেন যা অভ্যন্তরীণ ফাংশন বলে

উভয় পদ্ধতিই কাজটি সম্পন্ন করে, যদিও কিছু যুক্তিযুক্ত যে চুক্তির অন্যান্য ফাংশনগুলির মধ্যে একটি অভ্যন্তরীণ ফাংশনের যুক্তি পরীক্ষা করা আরও স্বজ্ঞাত।

ব্যবহারিক গাণছে টিপস এবং কৌশল

পূর্বে উল্লিখিত হিসাবে, আমরা মূলত আমাদের গ্রাহকদের জন্য ড্যাপস তৈরি করতে ট্রফল কাঠামোটি ব্যবহার করি। ট্রাফল গানাচি নামে একটি সরঞ্জাম ব্যবহার করে যা আপনাকে দ্রুত নিজের ইথেরিয়াম ব্লকচেইন শুরু করতে, পরীক্ষা চালাতে, আদেশগুলি কার্যকর করতে এবং চেইন কীভাবে কাজ করে তা নিয়ন্ত্রণ করার সময় স্থিতি পরীক্ষা করতে দেয়। এটা সুপার ব্যবহারিক।

গণচে সম্পর্কে দুর্দান্ত জিনিসটি হ'ল এটি সহজেই আপনার ডাপের পৃথক প্রয়োজনের সাথে খাপ খাইয়ে নিতে পারে। উদাহরণস্বরূপ, আমরা ড্যাপসের জন্য ইউনিট পরীক্ষাগুলি তৈরি করেছি যেখানে আমাদের কয়েক ডজন এবং কয়েক ডজন ব্যবহারকারীর জন্য ব্যবহারের ক্ষেত্রে পরীক্ষা করতে হবে। একটি সাধারণ কমান্ডের সাহায্যে, গাণাচ আমাদের জন্য আমাদের যতগুলি অ্যাকাউন্ট প্রয়োজন তার পরীক্ষা করা সহজ করে তোলে:

ganache-cli -a 40 // এর মাধ্যমে "একটি" পতাকা ইঙ্গিত দেয় যে 40 টি পরীক্ষা অ্যাকাউন্ট দিয়ে গণাচা শুরু হয়েছিল

তদতিরিক্ত, আমরা এই অ্যাকাউন্টগুলির ব্যালেন্সগুলি সামঞ্জস্য করতে পারি যাতে তারা আমাদের পরীক্ষার জন্য প্রয়োজনীয় যতটা ETH দিয়ে শুরু করে। ডিফল্টরূপে, ট্রফল ব্যালেন্সটি 100 ইটিএইচ সেট করে। আমরা আমাদের নিজস্ব প্রয়োজনীয়তার উপর নির্ভর করে সহজেই এই মানটি বাড়াতে বা হ্রাস করতে পারি:

ganache -e 10000` // যার মাধ্যমে account e` পতাকাটি নির্দেশ করে যে ডিফল্টরূপে প্রতিটি অ্যাকাউন্টের কতটা ETH শুরু করা উচিত

ইথেরিয়ামের জন্য স্মার্ট চুক্তিগুলি বিকাশের জন্য গণাচ একটি অত্যন্ত দরকারী সরঞ্জাম useful এটি বিকাশকে উন্নত করতে, ঝুঁকি হ্রাস করতে এবং ড্পসের নির্ভরযোগ্যতা উন্নত করতে সহায়তা করে।

এক সাথে সবকিছু বেঁধে রাখুন

স্মার্ট চুক্তির ক্ষেত্রে ইউনিট পরীক্ষাগুলি ওয়েব এবং মোবাইল অ্যাপ্লিকেশনগুলির বিশ্বে ইউনিট পরীক্ষার সাথে মূলত অনুরূপ। মূল পার্থক্য হ'ল স্মার্ট চুক্তিগুলি আজকাল অবিচলিত এবং সাধারণত সময়ের সাথে তাদের মাধ্যমে যাওয়ার সহজ উপায় অফার করে না [1]। সুতরাং, স্মার্ট কন্ট্রাক্টগুলির অপরিবর্তনীয়তা এবং এই যে তারা প্রায়শই প্রচুর পরিমাণে অর্থ পরিচালনার জন্য দায়ী, এই কারণে ভাল ইউনিট পরীক্ষার বিকাশ করা গুরুত্বপূর্ণ। আপনার স্মার্ট চুক্তিগুলি নিরাপদ এবং নির্ভরযোগ্য কিনা তা নিশ্চিত হওয়ার জন্য আপনাকে সেগুলি যত্ন সহকারে পরীক্ষা করা দরকার।

স্মার্ট চুক্তিগুলি জনসাধারণের গ্রহণের জন্য, আমাদের সম্প্রদায় স্টোরেজ স্পেসটি প্রসারিত করার জন্য এবং বিকাশকারীদের পক্ষে সার্বজনীন ব্লকচেইনগুলিতে জটিল অ্যাপ্লিকেশনগুলি লিখতে আরও সহজ করার জন্য একসাথে কাজ করা সমালোচনা করে।

আমরা আশা করি যে ইউনিট পরীক্ষার বিকাশ সম্পর্কে আমাদের অভিজ্ঞতা থেকে শিখানো পাঠগুলি সহায়ক এবং নিরাপদ এবং নির্ভরযোগ্য স্মার্ট চুক্তিগুলি তৈরির আপনার প্রচেষ্টাকে সমর্থন করে। আপনি যদি আমাদের দলের সাথে আলোচনা করতে চান তবে আপনার যদি আরও কিছু প্রশ্ন বা পরামর্শ থাকে তবে দয়া করে [email protected] এ যোগাযোগ করুন।

আগামী দিনগুলিতে আমরা জটিল স্মার্ট চুক্তিগুলি পরীক্ষা করে যা শিখেছি সে সম্পর্কে একটি ফলোআপ নিবন্ধ প্রকাশ করব।

[1] জেপেলিন দল সম্প্রতি জেপেলিনোস চালু করেছে। জেপেলিনোস প্রচুর আপডেটযোগ্য মানক লাইব্রেরি সরবরাহ করে যা আপনি প্রক্সি নিদর্শন ব্যবহার করে আপনার স্মার্ট চুক্তিগুলি আপডেট করতে ব্যবহার করতে পারেন।

Smart স্মার্ট কন্ট্রাক্ট ডেভলপমেন্টের সাথে আমাদের কী করতে হবে তা আপডেট রাখতে আমাদের মিডিয়াম এবং টুইটারে অনুসরণ করুন।

আরো দেখুন

আমি কীভাবে আপনার ওয়েবসাইটটি এসইও প্রক্রিয়া ব্যবহার করে অপ্টিমাইজ করব? অনেক প্রোগ্রামিং ভাষা আছে। আমরা কীভাবে অনেকের মধ্যে একটি নির্বাচন করব এবং এটি মাস্টার করব?কিছু বিকাশকারী এত তাড়াতাড়ি নতুন প্রযুক্তি কী শিখছেন? আমি কীভাবে দ্রুত শিখতে পারি?আমি কীভাবে অনলাইনে প্রতিদিন কমপক্ষে 1 ডলার করতে পারি? 4-5 প্রোগ্রামিং ল্যাঙ্গুয়েজ (বেসিকগুলি নয়, তবে এতে সত্যই ভাল হওয়া) আপনার কতটা সময় (ন্যূনতম) দরকার? আমি কীভাবে কোনও সফ্টওয়্যার সহ কোনও বিদ্যমান ওয়েবসাইট থেকে এইচটিএমএল, সিএসএস এবং জেএস সামগ্রী পেতে পারি? আপনি যদি জাভাস্ক্রিপ্ট, সিএসএস এবং jQuery জানেন তবে প্রতিক্রিয়া জানানো কতটা কঠিন? মানুষ প্রোগ্রামিংয়ের এত জ্ঞান কীভাবে শিখবে?