AIを信頼するのではなく、テストを信頼しましょう

王林
リリース: 2024-07-16 09:18:21
オリジナル
847 人が閲覧しました

私の最初のストーリーでは、GitHub Copilot という形での AI の経験について話しました。またしても裏切られました。でも本当の恋人UnitTest

が優しく受け止めてくれた。

現在、grpcストリームを使用してファイルを受信するコードに取り組んでいます。ファイルはバイト単位で送信されます。 Go には、最初の 512 バイトからファイルのメディア タイプを判断できる優れた機能があります。送信されたすべてのバイトをメモリ内に保持したくないので、私の目標は、メディア タイプをスニッフィングするために、最後にちょうど 512 バイトのバイト配列を用意することです。他のすべてのバイトは物理ファイル ストレージに書き込まれてから破棄される必要があります。

私は Golang や他の言語で配列やスライスを扱う経験があまりありません。私のテスト ケースでは、512 バイトより小さいチャンク、ちょうど 512 バイト、および 512 バイトより大きいチャンクをテストすることを選択します。その理由が気になる場合は、境界テストとは何なのかを調べてください。私はテストを書いた経験が豊富です。

当然のことながら、わずか 4 バイトのテストは失敗しました。 Go の標準ライブラリをさらに深く理解するには時間がかかりました。コードの小さな断片を記述、実行、デバッグするのは非常に簡単なので、私はこのためにテストを(誤って)使用しています。これが私の学習例です:

リーリー

AI は説明を手伝ってくれて、Go でのスライスの使い方をより深く理解できるようにしてくれます。新しいアイデアに満ちた若者から何かを学ぶのは、老人にとっていつも嬉しいことです。

Helpful explanation

GitHub Copilot の助けにより、最初と 2 番目のテストに合格しました。私が使用したコードは次のとおりです:

リーリー

スライスが範囲外だったため、512 バイトを超えるテストは失敗しました。おそらく、私にはまだ学ぶべきことがたくさんあることを自分自身に認める時期が来たのかもしれません。 GitHub Copilot は次の解決策を考え出しました:

リーリー

老賢人としての傲慢さの中で、私はもっとうまくやれると思っていました。私の弁護としては、最終ファイルではすべてのバイトをコピーする必要があるため、chunkMessage.Chunk を変更することはできません。少なくとも私の目にはうまく機能する短いバージョンを実装しました。

リーリー

私はこの短いバージョンを AI に提案し、私のコードについて意見を求めました。 AI は私のソリューションに非常に満足しました。

Right, ...

…しかし、テストを再実行したとき、目から鱗が落ちました。 GitHub Copilot は正しいです。512 バイトを超えるコピーは行いません。しかし、512 バイト未満のテスト ケースでは、このコードは機能しません。 AI は私を喜ばせる答えを選び、私の間違いを指摘することを避けました。最終的に以下のコードになりました。これは両方の長所です。

リーリー

私はソフトウェアエンジニアはテストを書かなければならないと強く信じています。テストを書くのは時々難しく、愚かで退屈な作業であり、テストを維持するには時間を費やす必要があります。しかし、母親のように、彼らはあなたの命を守り、世話をします。彼らがいれば、安心して赤ちゃんのように眠ることができます。 AI も同じことを行います

Mummy loves baby
Unsplash による Isaac Quesada の写真

よく眠れ、AI。 UnitTest はあなたを愛し、守っています。

以上がAIを信頼するのではなく、テストを信頼しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!