嘗試使用 go fuzz 來測試程式,本文記錄一下測試過程。
其中遇到了一些新鮮的點,值得記錄一下。
gofuzz 的官方安裝方法如下
go install使用gofuzz測試程式,只能將byte型別的值作為輸入。
// +build gofuzz
package foo
func
fuzz
(data [
]byte
)int
如果需要測試多引數函式,複雜型別引數的函式,需要做一些序列化。
例如,下面的**用來測試newmsgissue
函式。
由於fuzz函式僅接收byte
型別作為引數。
我們需要自己寫乙個receivedcorpus
函式,將收到的語料data反序列化為結構體。
func
fuzz
(data [
]byte
)int
msg := types.
newmsgissue
(sdk.
accaddress([
]byte
("hello"))
,&coinissueinfo)
return
0}
上述**中,receivedcorpus
函式為了實現從語料的byte中反序列化出結構體,我使用的是第三方庫gob
。
使用方法如下
type issueparamfuzz struct
func
receivedcorpus
(data [
]byte
)(issueparamfuzz,
bool
) b := bytes.buffer
b.read
(data)
dec := gob.
newdecoder
(&b)
dec.
decode
(&ret)
return ret,
false
}
這裡不要使用encoding/binary
庫,因為binary
不能序列化任何引用型別或複雜型別。 模糊測試相關文章
說明 以下文章有些本人也未看過,這是在看材料時遇到便先標記下了!以便以後學習 1.fuzzing with peach part 1 一篇關於運用peach fuzz zip檔案的文章,很詳細,下面還有好多問題與回答 2.fuzzing with peach part 2 fixups 3.new ...
模糊測試基礎概念
什麼是模糊測試?我們先來了解下什麼是模糊測試?測試之美 一書如下解釋 模糊測試是通過對輸入資料進行隨機修改和破壞來測試程式的方法。雖然這一技術已經存在至少20多年 但由於安全測試的日益重視和模糊測試專用工具的增多,它在最近幾年變得更加盛行。乙個程式的模糊化可以是手工或者自動的 但伴以自動化和測試日誌...
模糊測試 黑盒測試 白盒測試 滲透測試
模糊測試 fuzz testing,fuzzing 是一種軟體測試技術。其核心思想是自動或半自動的生成隨機資料輸入到乙個程式中,並監視程式異常,如崩潰,斷言 assertion 失敗,以發現可能的程式錯誤,比如記憶體洩漏。模糊測試常常用於檢測軟體或計算機系統的安全漏洞。模糊測試的實現是乙個非常簡單的...