このプロジェクトでは、Webアプリケーションのアップデート時の品質保証を自動化するJavaツールを開発しました。
従来の人海戦術による目視確認を自動化し、効率的なテストプロセスを実現しました。
ツールのアップデートがあるたびに、崩れている点がないかをWebチェックで人海戦術により目視で確認する作業が発生していました。
この作業は非常に時間がかかり、以下の問題を抱えていました:
- **人的コスト**: 大量のリソースを要する目視確認
- **時間コスト**: アップデートごとに長時間のテスト作業
- **人的ミス**: 目視確認による見落としのリスク
- **スケーラビリティ**: サイト規模の拡大に伴う作業量の増加
これらの課題を解決するために、自動的にテストを実行してくれるツールの開発に着手しました。
自動化により、効率的で確実な品質保証プロセスを構築することを目指しました。
Seleniumを使用してWebサイトの自動操作を実現しました。
以下の機能を中心としたアーキテクチャを設計しました:
**主要機能:**
- Webページの自動遷移
- HTMLタグの構造と内容の読み取り
- アップデート前後の比較分析
- スクリーンショットの自動取得
- 結果のExcel出力
以下のステップでテストプロセスを自動化しました:
**テストフロー:**
1. **ベースライン取得**: アップデート前のサイト状態を記録
2. **アップデート実行**: 対象システムのアップデート
3. **自動テスト実行**: Seleniumによる自動テスト
4. **差異検出**: HTMLタグ構造と内容の比較
5. **結果出力**: スクリーンショットとExcelレポートの生成
アップデート前と後でHTMLタグの構造と内容を読み取り、差異がないかを比較する機能を実装しました。
**比較項目:**
- **タグ構造**: DOM構造の変更検出
- **コンテンツ**: テキスト内容の変更検出
- **属性値**: HTML属性の変更検出
- **レイアウト**: CSSクラスやIDの変更検出
1ページごとにエビデンスとしてスクリーンショットを撮影し、Excelなどに出力する機能を実装しました。
**エビデンス機能:**
- **スクリーンショット**: 各ページの自動撮影
- **Excel出力**: テスト結果の構造化された出力
- **差分レポート**: 変更箇所の詳細な記録
- **目視確認支援**: 後から目視で確認可能な形式
自動化により、以下の効率化を実現しました:
- **時間短縮**: 人海戦術から自動実行への移行
- **24時間実行**: 夜間や休日でもテスト実行可能
- **一貫性**: 人的ミスを排除した確実なテスト
- **スケーラビリティ**: サイト規模に関係なく対応可能
自動化により、品質保証プロセスの向上を実現しました:
- **見落とし防止**: 全ページの確実なチェック
- **早期発見**: アップデート直後の問題検出
- **トレーサビリティ**: 詳細なエビデンスの保持
- **再現性**: 同じ条件でのテスト実行
```java
// WebDriverの初期化
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// ページの読み込み
driver.get("https://example.com");
// HTML要素の取得
List<WebElement> elements = driver.findElements(By.tagName("div"));
```
```java
// スクリーンショットの取得
TakesScreenshot screenshot = (TakesScreenshot) driver;
File sourceFile = screenshot.getScreenshotAs(OutputType.FILE);
// ファイルの保存
File destinationFile = new File("screenshot_" + timestamp + ".png");
FileUtils.copyFile(sourceFile, destinationFile);
```
- **プログラミング言語**: Java
- **Web自動化**: Selenium WebDriver
- **ブラウザ**: Chrome, Firefox
- **データ出力**: Apache POI (Excel)
- **画像処理**: Selenium Screenshot
- **ビルドツール**: Maven
人海戦術による目視確認を自動化し、効率的で確実なテストプロセスを構築できました。
Selenium WebDriverの活用により、Webアプリケーションの自動テストの可能性を実感しました。
**技術的な学び:**
- Web自動化技術の実践的な活用
- 大規模サイトのテスト戦略
- エビデンス管理の重要性
- 自動化による品質保証プロセスの改善
**業務への影響:**
- テスト工数の大幅な削減
- 品質向上による顧客満足度の向上
- リリースサイクルの短縮
- チームの生産性向上