ETH的智能合約一般用Solidity語言編寫,懂點基本solidity語法會更好地測試
測試中需要用到的工具:
-
一份智能合約
-
Remix(一個在線IDE,用來編譯、編輯、部署智能合約,需要翻牆才能使用)點我跳轉到Remix
-
ETH測試幣-領取地址
-
ETH測試網絡的區塊瀏覽器
-
ETH錢包MetaMask(Chrome插件)
下圖為remix在線IDE的頁面:
測試合約的三個步驟:
1.編譯合約代碼 (需要翻牆)
-
開發智能合約,一般使用Truffle框架,合約寫好后的目錄結構如下。其中,contracts目錄放的就是合約文件!
-
下圖是contracts目錄下的文件。
-
如果不在本地測試,而是想在remix上測試。除了“Migrations.sol”,其他文件內容,全部復制粘貼到Remix上。
-
然后就可以選擇編譯器版本,開始編譯了。編譯后,沒有紅色的異常提示!說明編譯成功,可以開始測試了!
-
2.合約初始化
- 先登錄metamask錢包,因為初始化合約,需要一個有ETH余額的地址!用來消耗gas!
- 看個例子:
/*關鍵字:contract表明這是個合約*/
contract JtakToken is StandardToken {
string public constant name = "Just Test And Known";
string public constant symbol = "JTAK";
uint8 public constant decimals = 18;
uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(decimals));
/**
* contract里面的關鍵字:constructor,表明這是合約的初始化方法!"_master"是一個地址類型的初始化參數!
*/
constructor(address _master) public {
require(_master != address(0));
totalSupply_ = INITIAL_SUPPLY;
master = _master;
paused = false;
coinbase = msg.sender;
balances[coinbase] = INITIAL_SUPPLY;
}
}
-
開始部署合約,點擊deploy!
-
-
此時metamask,就讓你支付手續費了,直接確認!
-
-
幾秒之后,部署成功,然后就可以愉快地調用合約方法了!
-
3.調用合約方法。
所謂的智能合約測試,說白了!就是合約方法的測試!
-
展開合約,可以看到該合約的所有方法!
-
紅色表示是寫入鏈上的方法,需要消耗手續費!藍色表示是查詢的方法,不需要消耗手續費!
-
-
讓我們通過調用合約方法,轉一筆賬,就清楚了!
-
-
若手動調用方法測試覺得太麻煩,ETH框架Truffle可以用來做做單元測試!
一般的測試要點:
-
合約初始化后,Token總量、名稱、小數位、分發比例、分發前后的余額等等。
-
合約方法是否調用SafeMath做運算。(防止上溢、下溢等運算問題)
-
合約方法的調用權限控制。
-
高級點的合約,可能還有鎖倉、定時分發功能。這些具體業務,具體分析。不展開了~