見出し画像

GO言語のプログラミングエッセンスを読んで:Go Fuzzingを試してみた その1

今朝も6時まで寝てしましいました。
かみさんのやっているウッドデッキの補修は雨のため中断です。
今週始めの週間天気予報では土曜日まで雨は降らないはずでしたが
外れたようです。

さて、今朝は、ゴールデンウイーク中に読んだ

の中で気になったことを試しています。
まずは、Fuzzingテストです。

ファジングとは ファジングとは、ソフトウェアテストの手法の一つで、ファズ(fuzz)と呼ばれる通常想定されていない「不正データ」「予期せぬデータ」「ランダムなデータ」を対象の製品・システムに与え意図的に例外を発生させ、潜在的なバグ・脆弱性を検出する手法です。

たぶん GoogleのAI回答

助手の猫が健在の時は、キーボードの上を歩いてランダムデータを入力してFuzzingテストをしてくれました。

GO言語のFuzzingテスト

を読んでログ分析ツールの関数をテストするコードを書いてみました。

package main

import (
	"strings"
	"testing"
)

func FuzzSetting(f *testing.F) {
	f.Add(" number=1 ")
	f.Add(" string=hehehe ")
	f.Fuzz(func(t *testing.T, td string) {
		rmap := make(map[string]string)
		findSplunkPat(td, rmap)
		if strings.Contains(td, "=") {
			if s, ok := rmap[td]; !ok || s != td {
				t.Fatalf("failed  %s != %s", td, s)
			}
		}
	})
}

テストを実行しようと思ったらビルドエラーになりました。
Wailsのプログラムであるのが問題なのかもしれません。
今朝は、遅く起きたので時間切れになってしまいました。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。