Skip to main content

測試 (Testing)

Move 的設計是預設安全——它的型別系統與內建防護機制能防止一整類困擾其他智慧合約語言的錯誤,例如重入攻擊、算術溢位以及對資產的未授權存取。但語言安全並不等於程式正確性。型別系統能確保你的程式碼不會違反 Move 的規則,但無法驗證你的轉帳邏輯是否將資金送到正確的接收者、你的拍賣是否在正確的時間結束,或你的存取控制是否符合你預期的政策。這些是你的設計的屬性,而非語言的屬性——它們只能透過測試來驗證。

在鏈上程式設計中,出錯的代價格外高:

  • 財務風險:資產處理程式碼中的錯誤可能導致資金永久遺失。轉帳邏輯或存取控制中一個被忽略的邊界情況就可能被利用,造成無法挽回的損害。
  • 不可變性:一旦部署,智慧合約程式碼並不總是能輕易修改,即使有升級能力,先前版本的程式碼也永遠可被存取。部署前的徹底測試是你抵禦漏洞的主要防線。
  • 敵對環境:已發布的 Move 套件實質上等同開源——任何人都能讀取並反編譯鏈上位元組碼。這代表惡意行為者可以詳細研究你的程式碼,尋找可利用的缺陷。你的程式碼不僅要處理預期的輸入,還要應付蓄意的破壞嘗試。
  • 可組合性風險:Move 模組會與其他鏈上程式碼互動。測試必須驗證你的程式碼不僅能單獨正確運作,在與其他套件組合時也能正確運作。

考量到這些風險,全面的測試並非可有可無——對任何處理資產或實作業務邏輯的 Move 應用程式而言,測試都是必要的。