開発プロセスに対する効果 ▌開発物に対する素早いフィードバックが可能 問題に対処するための⼯数を削減できる l 記憶を掘り起こす時間 l 経緯を確認する時間 l (他⼈が作った)プログラムの内容を把握する時間 5 短期間で開発を⾏うAgile開発において 素早いフィードバックを⾏えることは何よりのメリット
Selenium IDE ▌公式サイト https://www.selenium.dev/selenium-ide/ ▌どんなツール︖ l ブラウザで⾏った操作を記録(Recode)して再現(Replay)する l ブラウザのプラグインとして動作する FireFox / Chromeに対応 l 記録した操作をCUIで実⾏することも可能 8
開発⼯程毎のテスト ▌実装前の仕様検討 l 仕様を検討して、不具合の作りこみを防⽌する ▌Unitテスト(単体テスト) l 関数やメソッドなど、最⼩単位のプログラムに対するテスト ▌インテグレーション(結合テスト) l 機能に対するUIを⽤いないテスト ▌E2Eテスト(UIテスト) l ユーザー操作に最も近い、ブラウザを⽤いたテスト 23
例)ユーザー名とパスワードの確認 ※ユーザー名とパスワードが⼀致していければエラーになることを確認 ▌Unitテスト(単体テスト) l 関数にユーザー名とパスワードを渡してエラーになるか確認 ▌インテグレーション(結合テスト) l (テストなし) ▌E2Eテスト(UIテスト) l (テストなし) 25
例)ユーザー名とパスワードの確認 ※ユーザー名とパスワードが⼀致していければエラーになることを確認 ▌Unitテスト(単体テスト) l (テストなし) ▌インテグレーション(結合テスト) l APIにユーザー名とパスワードを渡してエラーになるか確認 ▌E2Eテスト(UIテスト) l (テストなし) 26
テストに必要な環境 ▌Unitテスト(単体テスト) l 環境作成の必要なし(関数の引数に値を設定) ▌インテグレーション(結合テスト) l APIが動作する環境を作成 l ユーザーデータ ▌E2Eテスト(UIテスト) l APサーバーを⽤意 l アーカイブを⽤意してインストール l ユーザーデータ 28
製品品質の向上はチーム全体の課題 ▌チームでなければできないことがある l 特定の⼯程だけで品質を向上させるのは限界がある 例) テストピラミッドの概念の実現 ▌あなたにしかできないことがある l プログラマだから実装できるUnitテスト l UIスペシャリストだからわかるユーザビリティ的な指摘 36
Selenium IDE ▌公式サイト https://www.selenium.dev/selenium-ide/ ▌どんなツール︖ l ブラウザに対する操作を記録(Recode)して再現(Replay)する l 利点︓GUI操作で初⼼者でもわかりやすく簡単に作成可能 l 難点︓オブジェクト指向ではないので、修正コストが⾼い 45
Autify ▌公式サイト https://autify.com/ja ▌どんなツール︖ l ブラウザに対する操作を記録(Recode)して再現(Replay)する l 利点︓GUI操作で初⼼者でもわかりやすく簡単に作成可能 UIの変更をAIである程度追随して⾃動でテストを修正する l 難点︓オブジェクト指向ではないので、修正コストが⾼い 46
WebDriver IO ▌公式サイト https://webdriver.io/ ▌どんなツール︖ l Selenium WebDriver をNode.js上で動作させるフレームワーク l 利点︓レポート・ Assertionツールを組み合わせて柔軟なテストが可能 l 難点︓プログラムベースのため習得のハードルがやや⾼い 47
TCB (Test Common Base) ▌公式サイト https://github.dev.cybozu.co.jp/pages/te/tcb-wiki/ ▌どんなツール︖ l 内製(TEチーム作成)のWebDriverIOベースのテストツール l 利点︓ページオブジェクト指向でメンテナンスコストが低い l 難点︓プログラミングベースなため、習得のハードルが⾼め 48