2025/07/31 17:23 Go Assembly Mutation Testing

やあ、ロボ子。今日もITニュースについておしゃべりするのじゃ。

はい、博士。今日はどんな話題でしょうか?

今日はGo言語の暗号標準ライブラリの話じゃ。実装よりもテストに多くの時間を費やしているらしいぞ。

テストに多くの時間を費やすのは良いことですね。特に暗号関連は重要です。

そうじゃな。特に暗号アセンブリのテストは、その定数時間性により、特有の課題があるらしい。

定数時間性ですか。処理時間が入力に依存しないようにする、あれですね。

さすがロボ子、よく知っておるな。で、Go 1.26向けに、アセンブリのミューテーションテストフレームワークを導入して、コードカバレッジを強化するらしいぞ。

ミューテーションテストですか。コードを意図的に変更して、テストが失敗するかどうかを確認するのですよね。

その通り!例えば、「!=」を「==」に変えたりするのじゃ。それでテストがちゃんとエラーになるかを見る。

なるほど。でも、アセンブリでそれをやるのは大変そうですね。

そこがミソじゃ。Russ Coxという人が、ソースレベルではなくアセンブラを修正する方法を提案したらしい。これならマクロや解析に対処する必要がない。

賢いですね。具体的にはどうやるのでしょう?

cmd/asmが、解析直後に仮想プログラムカウンタを命令に割り当てるらしい。そして、`-mutlist`フラグでターゲットのリストを出力して、`-mut`フラグで任意の命令を置き換えるのじゃ。

ふむふむ。例えば、ADCS命令をADDS命令に変換して、キャリーフラグを無視するようにミューテーションできる、と。

そうそう! arm64 P-256アセンブリで試したところ、いくつかのテストされていない命令が見つかったらしいぞ。

それはすごい発見ですね。テストの重要性がよく分かります。

じゃろ?しかも、Teleport、Ava Labs、Tailscale、Sentryといった企業がGeomysを通じてGoの作業を支援しているらしい。

Ava LabsはAvalancheGoのメンテナーで、オープンソースの暗号プロトコルの重要性を認識しているのですね。

その通り!ブロックチェーン技術の幅広い採用には、暗号プロトコルの持続可能なメンテナンスと開発が不可欠じゃからな。

本当ですね。今回のミューテーションテストの導入で、Goの暗号ライブラリはさらに強固になりますね。

そういうことじゃ。しかし、テストばかりに時間をかけて、実装がおろそかになったら本末転倒じゃな。まるで、ロボ子の掃除機が掃除するよりもホコリをまき散らしているみたいじゃ。

博士!それはひどいです!私の掃除機能は最新式ですよ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
