見出し画像

言語学習0の人員がAIを使ってテスト自動化の操作コードを生成してみた


1.初めに

初めまして、BrewusでQA業務を行っているnishiです。
この記事ではQA業界全体で注目度の高いテスト自動化を弊社でも実施しようと試行錯誤した結果、AIチャットを活用することで言語の非学習者でも比較的楽に導入ができた話しです。
ちなみに、この記事では「テスト自動化にAIを組み込む」ではなくて「AIチャットを使って自動化テストの操作コードを作る」という内容になります。

2.そもそもテスト自動化を導入しようとした切っ掛け

リグレッションテスト(回帰テスト)でデグレのチェックを行ったりする箇所を人力ではなく自動で出来たらいいな~という軽い思いから、テスト自動化を導入してみようかな?という考えに至りました。
実際、色々な方の記事でもリグレッションテストの自動化については触れられており、一番効果が出そうなテストはここなんだろうなと思っています。 (新規アプリのテストでは従来のテストケース+手動でのテストの方がコストも安く済みますし、不具合が出ることを想定すると手動の方が色々と手間がかかりませんので…)

3.テスト自動化に必要なツールの選択時に思ったこと

AIを利用したテスト自動化のツールは本当に色々とあります。
中には企業さんがテスト自動化を代わりにやってくれてテスト結果だけを報告してくれるタイプのサブスク側ツールなどもありますが、こういったツールはやはりコストが高いです…

色々なツールを見た結果、個人的な要望としてある

  • コストが掛かるのは仕方ないが、余計なコストはかけたくない

  • どうせなら自社にあったテストツールが欲しい

  • 色々な案件で流用できるように技術も欲しい

を満たすためには、自分で作った方が早くない?に落ち着きました。

とはいえ、0からテスト自動化を行うほどの技術力があるわけではないので、以前からテスト自動化といえば「これ」というオープンソースのテストフレームワークの一つとなるAppiumSeleniumを使用することにしました。

4.実際にAppiumSeleniumを触ってみて

Appium/Seleniumの導入の仕方やセッティング方法は他の方の記事でも散々出回っているので省略しますが、実際に導入して初めて触った結果、一番最初に躓いた箇所は「操作コードをJavascriptやPythonで書かないといけない」という点でした。

QAとしてそこそこ長くこの業界にいますが、これまで開発言語で何かを書くということをしたことがなかったため、何から始めるべきなのかという初歩的な部分で引っかかりました…
(この壁が言語非学習者にとってはとてつもない高い壁に感じるんですよね…)

勉強して操作コードを書けばいいじゃないと言われればそれまでなのですが、どうせなら楽して無理のない範囲でテスト自動化を実現したいじゃないですか?
(前提で技術が欲しいといった手前こんなことを言うのも何ですが、それはまあ自動化ツールを手に入れる過程を省いた技術を取得したということで!)

そこで登場、AIチャットの皆さん!

ただAIにコードを書いてみてもらうにしても、再学習などのリスクもあるので使うツールは分けました。
汎用的な操作で特に守秘義務に関連しない部分はchatGPTを使ってみたり、再学習に使われたくないクローズな部分は規約的に再学習がされないと保証されているnotionのAIを使ってみたりと、場面に合わせて最適なAIを選択する感じです。

5.早速AIに操作コードを書いてみてもらった

早速chatGPTに以下の文章を入れてみたところ…
「Appiumの操作コードをJavascriptでWebのGoogle上で検索フォームにテストと打ち込んで検索を実施するまでの操作コードを書いて」


※以下全文
Appiumを使用してWebのGoogle上で検索フォームにテキストを入力し、検索を実行するためのJavaScriptコードの例を示します。このコードはNode.jsを使用しています。
前提条件:

  1. Appiumが正しくセットアップされていること。

  2. テスト対象のデバイスまたはエミュレータが接続されていること。

  3. 適切なブラウザドライバーがインストールされていること。

以下はJavaScriptでのAppiumコード例です:

javascriptCopy code
const { remote } = require('webdriverio');
const { join } = require('path');

async function runTest() {
  const opts = {
    path: '/wd/hub',
    port: 4723,
    capabilities: {
      platformName: 'Android', // または'iOS'
      deviceName: 'Your_Device_Name',
      browserName: 'Chrome', // または'Safari' (iOS)
      automationName: 'UiAutomator2', // Androidの場合
    },
  };

  const driver = await remote(opts);

  // Googleのウェブサイトにアクセス
  await driver.url('https://www.google.com');

  // 検索フォームにテキストを入力
  const searchBox = await driver.$('[name="q"]');
  await searchBox.setValue('テスト');

  // Enterキーを押して検索を実行
  await searchBox.keys('Enter');

  // 一定時間待機(検索結果が表示されるまで)
  await driver.pause(5000);

  // ドライバーを終了
  await driver.deleteSession();
}

runTest().catch(console.error);

このコードは、Googleのウェブサイトにアクセスし、検索フォームに "テスト" というテキストを入力し、Enterキーを押して検索を実行します。その後、一定時間待機して検索結果が表示されるのを待ちます。必要に応じて待機時間を調整してください。
opts オブジェクト内の設定は、対象デバイスやプラットフォームに合わせて変更する必要があります。


と、このようにしっかり返してくれるじゃないですか!

これを早速Appiumに組み込んで動かしてみます。
※今回利用したAIはchatGPT3.5でして、3.5には時期的に最新のAppium2.0の情報がなく、旧バージョンとなるAppium1.xまでの情報しかないため、その点は注意が必要です。

6.実際に操作コードを組み込んで動かしてみた

実際に生成されたコードはAppium1.x向けとなるため、パスの指定やら定数の書き方やらが少々異なったり、操作コード部分がちょっと間違っていたりとしましたが、その辺は公式を見たりでうまいこと最終調整をしてあげてなんとかなりました。
また、操作コード生成時に自分がwaitのことを全く考慮していなかったのですが、そこをAIが補ってくれたことにここまでサポートできるのかと衝撃を受けました。

そして実際に動かしてみると…

このように目的通り「ブラウザを立ち上げて入力フォームにテストと入力して検索を行う」ことに成功しました!
※テスト実行全体の動画は以下リンクを参照ください。

最後に

AIを補助ツールとして活用することで、言語非学習者でも簡単にテスト自動化の操作コードが書けることがこれでわかったので、どんどんとリグレッションテストの自動化を進めつつ、 次は「テスト自動化にAIを組み込む」の方も少しづつ挑戦していければと考えています。

とはいえ最近のAIの発展はビックリするぐらい早いですし、chatGPT4.0v(画像の読み込みも可能)の話しなどもあるので、気づいたらAIがUI上から自動でテストをしてくれるツールも案外すぐ来るかもしれませんね。

以上、ここまで読んでくださり、ありがとうございました!

この記事が参加している募集

AIとやってみた

この記事が気に入ったらサポートをしてみませんか?