成果物(レポート、ログ)のアーティファクト管理

SeleniumをCI/CDパイプラインに組み込む際、「成果物(レポート、ログ)」のアーティファクト管理は、テストの信頼性や品質分析、トラブルシューティングにおいて非常に重要な要素です。以下に詳しく説明します。


1. 成果物(アーティファクト)とは

CI/CDパイプラインにおける成果物(Artifacts)とは、テストプロセスの結果として生成される以下のようなファイルを指します。

  • テストレポート(HTML, XML, JSON形式など)

  • スクリーンショット(失敗時キャプチャ)

  • ブラウザログ(console logs, network logs)

  • Seleniumの実行ログ(標準出力やログファイル)

  • ビデオキャプチャ(クラウドサービスによる録画)


2. アーティファクト管理の目的

  • 可視化と分析:失敗理由やパフォーマンスの問題点を明確にする

  • トラブルシューティング:バグ再現や環境依存の問題を特定する

  • 証跡の保存:監査や検証のための記録保持

  • チーム間共有:開発者・テスター・QA間での情報共有


3. CI/CDツール別のアーティファクト管理方法

GitHub Actions

  • アーティファクト保存には actions/upload-artifact アクションを使用します。

yaml
- name: Upload Test Report uses: actions/upload-artifact@v4 with: name: selenium-test-report path: ./reports/
  • ワークフローが完了すると、GitHub上からダウンロード可能なアーティファクトとして表示されます。

GitLab CI/CD

  • .gitlab-ci.ymlartifacts キーを使用して、ジョブの出力を保存できます。

yaml
selenium_test: script: - python run_selenium_tests.py artifacts: paths: - reports/ expire_in: 1 week
  • 成果物はGitLabの「ジョブ」タブからダウンロード可能です。

Jenkins

  • Jenkinsでは JUnit pluginAllure pluginArtifactArchiver を用いて成果物を保存・可視化します。

  • post セクションで成果物をアーカイブする例:

groovy
post { always { archiveArtifacts artifacts: 'reports/**', fingerprint: true } }

4. よく使われるレポート形式とその出力

レポート形式 使用ツール例 特徴
JUnit XML JUnit, TestNG JenkinsやGitLabでの統合に適している
HTML Allure, ExtentReports ビジュアルが見やすく、詳細な情報提供が可能
JSON 独自実装やAPI連携用 マシン処理に適している

5. スクリーンショットやログの保存例(Python)

python
# テスト失敗時にスクリーンショット保存 try: assert "expected" in driver.page_source except AssertionError: driver.save_screenshot("reports/failure_screenshot.png") with open("reports/error_log.txt", "w") as f: f.write(driver.get_log("browser"))

6. ベストプラクティス

  • アーティファクトは一元管理:すべての関連ファイルを/reports/等に集約

  • 失敗時のみ保存する戦略:ストレージの効率化

  • 定期的なクリーンアップ:保管期間(例:1週間)を設定

  • レポートとCIの可視化統合:AllureやJUnit XML連携を活用


まとめ

SeleniumをCI/CDパイプラインに組み込む際のアーティファクト管理は、品質保証と迅速な障害対応の要です。CIツールごとの保存方法を理解し、ログやレポート、スクリーンショットなどの成果物を適切に収集・保存・可視化することで、テスト運用の効果を最大限に引き出すことができます。

ChatGPT4o 生成日:2025/06/21