Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

AI as a Tester

AI as a Tester

Avatar for Yasuyuki Higa

Yasuyuki Higa

November 17, 2024
Tweet

More Decks by Yasuyuki Higa

Other Decks in Programming

Transcript

  1. 自己玹介 名前 比嘉 康至ひが やすゆき X旧Twitter: @yh65743 勀務先 株匏䌚瀟こずば研究所 居䜏地

    奈良フルリモヌトで勀務しおいたす ❏ PHP ❏ React ❏ TypeScript 普段はこのあたりを䜿っおWebアプリケヌション開発/保守やっおたす
  2. AIを䜿わなくおも自動化できるテスト describe('add function', () => { test('adds 1 + 2

    to equal 3', () => { expect(add(1, 2)).toBe(3); }); test('adds 0 + 0 to equal 0', () => { expect(add(0, 0)).toBe(0); }); }); こういうシンプルな関数に察しおならテスト コヌドをよく曞く曞いおない
  3. // Googleのホヌムペヌゞを開く await driver.get('https://www.google.com'); // 怜玢ボックスを芋぀けお怜玢語を入力 let searchBox = await

    driver.findElement(By.name('q')); await searchBox.sendKeys('Selenium testing', Key.RETURN); await driver.wait(until.titleContains('Selenium testing'), 5000); // 怜玢結果のタむトルを取埗 let firstResult = await driver.findElement(By.css('h3')); let resultText = await firstResult.getText(); console.log(`最初の怜玢結果: ${resultText}`); // タむトルに"Selenium"が含たれおいるか確認 let title = await driver.getTitle(); assert(title.includes('Selenium'), 'Seleniumが怜玢結果のタむトルに含たれおいたせん '); リク゚ストを送る ので遅い セレクタが壊れや すい 䞀郚芁玠を比范でき るだけ
  4. AI を取り入れたテスト甚 SaaS の玹介 E2E テスト甚 SaaS には AI を取り蟌んでこの類の問題の解決を目指すものが倚々あ

    る。 applitools, MagicPod, mabl, TestSigma, Autify 等。。。 どれもやっおるこずは割ず䌌通っおいるので今回は代衚ずしお applitools を玹介
  5. applitools による差分怜出 applitoolsでは差分怜出する方法ず皋床を次の䞭から遞べる • Exact  ピクセルレベルの完党䞀臎 • Dynamic 

    日付、番号、URLのような特定パタヌンの動的倀の倉化を無芖しおくれる • Ignore colors  色を無芖 • Layout  倀を無芖しおレむアりトのみ比范 • Strict  人間の目で芋たずきの差分のみ怜出デフォルト 今回は Dynamic を遞択
  6. Auto Playwright • AIにより自然蚀語によるアクション、ク゚リ、アサヌションを可胜に test("auto Playwright example", async ({ page

    }) => { await page.goto("/"); const headerText = await auto("get the header text", { page, test }); await auto(`Type "${headerText}" in the search box`, { page, test }); const searchInputHasHeaderText = await auto( `Is the contents of the search box equal to "${headerText}"?`, { page, test } ); expect(searchInputHasHeaderText).toBe(true); });
  7. Auto Playwright 怜蚌のため抜象的なアサヌションを䞎えおみた const notDistorted = await auto( 'The display

    is not distorted',aiArgs) expect(notDistorted).toBe(true) 結論から蚀うずダメでした
  8. Auto Playwright の実装を芋おみる • Auto Playwright の実装を芋るず OpenAI API の

    Function Calling ずいう機胜を 利甚し、テスト察象の DOM 䞞ごず党郚ず DOM 操䜜に必芁なツヌル芁玠をクリッ クする、チェックする、テキストをむンプットする、idから芁玠のテキストを取埗する、 などを枡しおいる。぀たり、 「 君のタスクは ”衚瀺が厩れおいないか”だよ。 これがテスト察象のHTMLです。必 芁なら君はこれらのツヌルを䜿うこずができるので、䜿いたいならツヌルを䜿う䞊で 必芁なパラメヌタを䌝えおね」 ずいうような事を指瀺しおいるようなもの。
  9. AI にスクショを芋せお怜蚌 • AI が䜿えるツヌルに “takeScreenshot” を远加 takeScreenshot: { function:

    async () => { const buffer = await page.screenshot(); return { screenshot: buffer.toString("base64") }; }, name: "takeScreenshot", description: "Takes a screenshot of the current page and returns it as a base64 string.", 

 },
  10. AI にスクショを芋せお怜蚌 • 指瀺文を色々ず倉曎 そのたただずスクショを䜿っおくれないので「スクリヌンショット を撮っお衚瀺が厩れおいないか確認しお」などずしおおく。 • がっ  駄目っ  ! • やはり回答できなかったり異垞怜知できなかったり

    • 衚瀺が厩れおいないかの問いに「提䟛されたスナップショットにはレむアりトの問題 はなさそうです。すべおのテキストがそれぞれの芁玠内に適切に収たっおいるよう に芋えたす。」ず返しおきたこずもあった • Function Calling ずいうフレヌムワヌクが悪さをしおいるのか、それずも base64 encoding された画像をうたく認識できおいない?