paint-brush
ソフトウェアテストにChatGPTを活用する@ratikeshmisra
4,473 測定値
4,473 測定値

ソフトウェアテストにChatGPTを活用する

Ratikesh4m2023/09/16
Read on Terminal Reader

長すぎる; 読むには

過去 2 年間の AI、特に LLM (Large Language Model) の進歩により、従来の問題がより効率的に解決されることが判明しました。 LLM が生み出すことができるそのような影響の 1 つは、ソフトウェア テストの自動化の支援を通じて行われます。多くのソフトウェア チームにとって、自動化は SDLC サイクルの最優先事項ではなく、チームはテスト ケースの自動化に苦労しています。
featured image - ソフトウェアテストにChatGPTを活用する
Ratikesh HackerNoon profile picture
0-item
1-item

過去 2 年間の AI、特に LLM (Large Language Model) の進歩により、従来の問題をより効率的に解決できることが判明しました。LLM が生み出すことができるそのような影響の 1 つは、ソフトウェア テストの自動化の支援を通じて行われます。多くのソフトウェア チームにとって、自動化は SDLC サイクルの最優先事項ではなく、チームは「テスト自動化の負債」を生み出すテスト ケースの自動化に苦労しています。テスト自動化におけるこのギャップにより、品質チームはこれらのテスト ケースの手動検証と作成に多くの時間を費やし、その結果、エンジニアリング チームの出荷速度が遅くなります。


コードの複雑さによる手動テストの時間の変動


このような困難を回避するために存在する唯一の逃げ道は、テスト ケースを高速で自動化することですが、多くの場合、次の理由により自動化できません。


  • 手動 QA チームには、スケーラブルなコードを作成するための自動化の経験が不足しています。
  • 自動化する必要があるテスト ケースのバックログが膨大であるため、自動化を開始するコスト (エンジニアリング管理と QA に必要な帯域幅の観点から) が高すぎます。
  • テストケースのドキュメントの品質が低く、回帰および健全性スイートの適切なメンテナンスが行われていません。
  • ほとんどの製品会社は機能開発に重点を置いているため、安定性と品質は後回しにされています。
  • テスト ケースの人間による評価は、機械による評価よりも優先されます。


上記の問題すべてについては、ソフトウェア チームがどのように取り組むべきかについて別の記事が必要ですが、このセクションでは、QA エンジニアがBDD (動作駆動テスト) のコパイロットとして ChatGPT または LLM を活用する方法について説明します。

BDD とその自動化に GPT3.5 を使用する


BDDとは何ですか?


動作駆動開発 (BDD) はアジャイル ソフトウェア開発手法であり、アプリケーションを文書化し、ユーザーがアプリケーションを操作するときに経験することが期待される動作に基づいて設計します。この議論の文脈として、YC Web サイトに BDD ベースのテストを適用し、YC ハッカー ニュースのログイン ページを出発点として考えてみましょう。


YC ハッカー ニュース ログイン ページ


上記のページの場合、期待される動作は次のとおりです。

ユーザーがログインを試行し、 https://news.ycombinator.com/login?goto =news で有効な認証情報を入力してログインを押すと、ユーザーはハッカー ニュース Web サイトにリダイレクトされるはずです。


BDD ガイドラインに従って、上記の動作は、可能なテスト ケースとなる Gherkin 構文/ステップとして記述することができ、フレームワークとして cucumber を使用すると、同じ Gherkin を自動化でき、この動作は人間の介入を必要としなくなります。ただし、上記のセクションで説明した問題のため、QA チームは通常、自動化に苦労していますが、いくつかのプロンプトを作成し、QA チームが Gherkin ステップとその自動化を行うためのワークフローを作成することで、 LLMの力を活用できます。 cucumber フレームワークでは速度が速くなります。



Gherkin 構文を生成するためのワークフロー

Gherkin 構文を生成するためのワークフロー


たとえば、以下の画像では、プロンプトを使用して、自然言語で表現される動作のガーキン構文を生成することで GPT モデルを微調整する方法を示しています。


ChatGPT は、提示された動作に関連する Gherkin 構文を出力します。



Gherkin 構文から cucumber 互換コードを生成するワークフロー

GPT を使用した Gherkin ステップによる Cucumber 互換コードの生成


ステップ 1: エンジニアリングを受けるよう促す


以下は、提供されている HTML コードと Gherkin ステップを使用して適切な自動化を吐き出すように微調整するために ChatGPT コンソールに書き込むことができるプロンプトです。最終的な出力として、QA がそのままコピーペーストできる cucumber の必要に応じてステップ定義の形式でコードを生成するように依頼しました。



GPT を微調整してキュウリベースの自動化を生成するよう求めるプロンプト


ステップ 2: 自動化のベースとして使用する必要がある関連する HTML を挿入します。

以下に示すように、微調整後、ChatGPT は、cucumber のステップ定義を生成するために使用できる関連する HTML および Gherkin ステップを要求します。


自動化に使用する必要がある HTML フィード


ステップ 3: ステップ定義の生成


この結果、GPT は提供された HTML から DOM 構造を理解し、関連する Gherkin 構文を要求します。上記のケースでは、そのまま渡すことができる Gherkin がすでに生成されています。


 Feature: User Login Redirect Scenario: User logs in with valid credentials Given the user is on the login page of "https://news.ycombinator.com/login?goto=news" When the user enters valid credentials and presses the login button Then the user should be redirected to the "hacker news" website


最終出力


最後に、ワークフローと前述のプロンプトに従って、上記の Gherkin ステップとシナリオのステップ定義ファイルが生成されます。これは、想定されていた動作の自動化を高速化するために、マイナーな品質チェック後に QA によってキュウリ フレームワークにコピーされる可能性があります。テストする。


生成されたキュウリステップ定義

副操縦士の年齢

AI の出現と副操縦士の出現により、人間の生産性は向上します。基本的で日常的なタスクを AI に引き渡すことで、イノベーションの限界をさらに押し上げることができるでしょう。しかし、テクノロジー、マーケティング、セールス、カスタマー サクセスのチームがワークフローで LLM の力を活用しようとしているため、私たちは彼らを単に私たちが行う仕事のアシスタントとして見るべきであり、テクノロジー、マーケティング、セールス、カスタマー サクセスのチームが LLM の力を活用しようとしているので、それらを使用する知性は依然として人間にあると私は依然として考えています。 QA エンジニアも同様のことを行うことができるため、生産性がさらに向上し、ソフトウェアの品質と安定性を確保する仕事をエキサイティングなものにすることができます。