雖然所有開發(fā)人員都在努力尋找無漏洞代碼,但在區(qū)塊鏈部署中,在交換敏感數(shù)據(jù)或其他機密信息(如醫(yī)療保健或金融領域)時,這一點尤其重要。然而,一些企業(yè)以慘痛的代價吸取了這一教訓。最近,加密貨幣交易所Binance最近披露了一個毀滅性的安全漏洞,造成了超過4000萬美元的損失。雖然這是個大數(shù)目,但對于那些丟失私人信息、機密合同等的公司來說,安全漏洞的代價可能更大。
組織不應該把時間花在重建(和重新獲得客戶信任)上。更好的方法是公司領導層從一開始就強制實行區(qū)塊鏈測試自動化策略。
雖然大多數(shù)軟件測試人員都熟悉測試網(wǎng)絡應用程序,但他們可能不確定如何處理區(qū)塊鏈測試。好消息是,web測試的一些相同的焦點領域也適用于區(qū)塊鏈測試(功能、性能和安全性)。然而,區(qū)塊鏈涉及更多的測試、工作和焦點領域,例如基礎結構編排、在分布式環(huán)境中執(zhí)行和模擬場景,這需要更高水平的專業(yè)知識。
因為有了這些添加,在區(qū)塊鏈應用中修復漏洞需要幾個額外的步驟,因此比修復其他應用程序中的漏洞花費更多的時間和成本。例如,要復制錯誤或驗證代碼,開發(fā)人員應該多次執(zhí)行以下步驟:
形成一個新的端點。
將新代碼部署到新端點。
將當前數(shù)據(jù)遷移到新的后端。
將舊的后端掛起。
將所有前端更新到當前版本。
之后,驗證由測試人員或持續(xù)集成(CI)工具執(zhí)行的漏洞修復將再次需要這些步驟。這種復雜性使得發(fā)布無漏洞的區(qū)塊鏈應用程序很困難,但這樣做會使組織及其客戶面臨財務損失的風險。由于部署區(qū)塊鏈應用程序的高風險性,將測試包含在管理遠景和策略中至關重要。
要發(fā)布沒有缺陷代碼的區(qū)塊鏈應用程序,企業(yè)應該遵循以下準則:
測試自動化可以減輕測試人員手工執(zhí)行數(shù)千個編排測試的負擔,這既困難又低效。一個好的系統(tǒng)架構應該是可伸縮的、可維護的和可測試的,這樣團隊就可以獨立地測試組件和模擬組件。如果一個測試需要一個不同的環(huán)境或基礎設施,那么作為代碼的基礎設施(IaC,如Puppet、Chef、Ansible和AWS)在設置適當?shù)臏y試環(huán)境時非常有用。該策略的另一個關鍵部分是為基礎設施提供聲明性定義,并允許開發(fā)人員實現(xiàn)支持測試自動化的代碼。
運行單元和集成測試以覆蓋后端和前端代碼
區(qū)塊鏈應用程序至少包含一個后端(一組在區(qū)塊鏈上運行的智能契約或鏈碼)和一個前端(用戶可以在前端與存儲在區(qū)塊鏈中的數(shù)據(jù)交互)。執(zhí)行單元測試將涵蓋后端和前端代碼,并且,由于其對區(qū)塊鏈應用程序的關鍵作用,其主要焦點應該是鏈碼。但是,集成測試應該涵蓋各種類型的oracle和前端應用程序。通過驗證UI和鏈碼之間的集成,執(zhí)行額外的測試將消除任何可能威脅后端的漏洞。
在本地基礎架構中執(zhí)行測試
雖然公共區(qū)塊鏈(如比特幣或以太坊)有多個測試網(wǎng),但最好是在本地基礎設施中執(zhí)行測試。對于單元測試和集成測試來說,本地基礎設施是輕量級的、更快的和更穩(wěn)定的。例如,在一個Ganache本地基礎架構中,可以在5個以太坊智能契約上運行1000多個單元測試,一個小時內(nèi)部署大約3000個。
持續(xù)更新安全系統(tǒng)測試套件
區(qū)塊鏈是一個多方基礎設施,在某些情況下,它是一個公共網(wǎng)絡。因此,這些應用程序對于許多利益相關者來說都是可見的,甚至可以向全世界開放源代碼。這種程度的透明度意味著黑客能夠研究程序,并根據(jù)特定的系統(tǒng)來計劃攻擊。持續(xù)更新安全系統(tǒng)測試套件將確保應用程序受到保護,免受所有常見安全漏洞的影響。
為開發(fā)過程的每個階段最小化連續(xù)測試管道
在本地基礎結構中的分層集成和單元測試通過對安全系統(tǒng)測試套件的持續(xù)更新創(chuàng)建一個連續(xù)的測試管道,這對于高質量的塊鏈代碼來說是必不可少的。在本地塊鏈和測試網(wǎng)等多種環(huán)境中持續(xù)驗證代碼更改,確保將高質量的代碼交付給生產(chǎn)區(qū)塊鏈。但是,這些測試可以為每個代碼更改持續(xù)幾個小時或幾天,因此對于團隊來說,最大限度地減少和創(chuàng)建精益管道非常重要,這些管道關注測試階段、測試類型和測試環(huán)境,并在開發(fā)過程的每個階段開發(fā)多個代碼管道。
構建定制的測試套件以消除潛在的欺騙漏洞
測試團隊還需要定制管道中的測試套件,以涵蓋功能測試和安全性測試。涵蓋安全性案例是很重要的,但是單元測試模塊也應該執(zhí)行智能契約單元的潛在安全威脅,例如溢出和重入,以盡可能多地消除潛在的欺騙漏洞。
由于底層基礎結構的去中心化和編排的特性,為區(qū)塊鏈應用程序開發(fā)無缺陷代碼比其他應用程序帶來了更多的挑戰(zhàn)。通過從傳統(tǒng)軟件測試,特別是測試自動化中汲取最佳實踐,并將它們定制為區(qū)塊鏈開發(fā),企業(yè)可以實現(xiàn)無錯誤的區(qū)塊鏈編碼,并保護他們最脆弱的應用程序。





