システムテスト自動化カファレンスへ参戦してきた
1時間で分かるSTA
Software Test Automationとは?
テスト自動化において考慮すべき事項が網羅的に扱っている。
テスト自動化の実例など。
ソフトウェアテストの自動化について一般的な知識を網羅的に扱う書籍がない?
翻訳された書籍がシステムテスト自動化標準ガイド
テスト自動化のコンテキスト
自動化以前にテストはまともなのか?
- 効果的
- 経済的
- 発展的
- 典型的
キャプチャーリプレイ
- 準備がほとんどいらない。
- 操作ログを残せる。
- しかし、テスト自動化ではない。
自動比較
- 何を?どれだけ?比較するか?
- センシティブな比較。
- できるだけ多くの情報を比較。
- ロバストな比較。
- 費用最低限の情報に絞り比較。
- 動的比較。
- 実行後比較。
テストウェアアーキテクチャ
- テスト自動化によって増殖するファイル(どんどんファイルが増殖)。
- 共有スクリプトなど、効率的に再利用できる必要がある。
- 管理なしだと破綻する。
- 前処理と後処理の自動化。
- 保守性の高いテストを構築する。
- テストウェアのメンテナンス。
- 最初は、短めで、徐々に長くする。
メトリックス
- DDP
- DFP
- ROI
テスト自動化のパターンと実践
テスト自動化パターンについて
そもそも始めるのに勇気と力が必要。
最初は、テンションが高いが、徐々に低下してしまう。
テンションを維持するのが大変。
パタンランゲージ
- コンテキスト(問題の背景)
- 問題(実際の問題)
- フォース(問題を発生させる要因となる外部からの力)
- 解決(解決策)
- 結果(レポートなど)
テスト結果を適切に分析し、活用することができていない。
多くの情報を解釈するには担当者のリソースが必要。
目的をもった結果レポートを出力するようにする。
メトリックスを測定する。
全員が理解できる共通言語(ユビキタス言語)で話す。
自分の経験を皆に伝えるツールとして。
パターン解説①
GUI自動テストの保守性を高めるには
Seleniumとその保守性
Excelから自動生成
失敗した原因を突き止める
- テスト結果に誰でも簡単にアクセスできる。
- メールやブラウザ上で見れると結果確認が簡単。
- チーム全体で結果を共有し、テスト失敗への関心を高める。
- 画面キャップチャ・動画・サーバーログなど、エラー調査に必要なデータを残す。
- エラーになったテストだけを手元で流して確認できる
- テストスクリプトはバージョン管理し、誰でも手元に取得できるように
- 原因が分かったら修正(簡単に修正できる)。
状態遷移テストにおけるテスト設計と実行の自動化
Value Stream Map
テストを自動化することが正しいのではなく、ソフトフェア開発自体をよいサイクルにすること。
リリースにかかる時間を短くするための有用な選択肢。
Deployment pipeline
テスト自動化をする上で、ある程度は俯瞰しなれば、局所化してしまう。
ソフトウェアをバージョン管理から取り出してユーザーに届けるまで。
ビルドパイプラインを実装するというのは、テストの大まかな分割方針、フィードバック順序、
実行頻度を決め、そして実装後には多様なテストを早期から設計、実装、実行することを意味する。
ビルドプロセスとCI
なにが問題なのか?
- 規模(ファイルの数が多い)
- 再利用性(建て増し旅館)
- 複数のバージョン(製品のバージョンとの同期)
- プラットフォームと環境からの独立(動作環境ごとにテストウェアのコピーを作るのか)
ツールで解決できるもの
- CIツールで解決(CIの結果、レポート機能など)⇒ 規模
- テスト資料は、バージョン管理システムで管理してしまう ⇒ 複数のバージョン
- テストコード、テストデータ(SQL)、テーブル定義、比較用の出力データ(期待結果)
- Git-flowなど、ブランチやタグなどの規制しておく。
前処理と後処理の自動化
- 前処理(生成(DBへのデータ投入)、チェック、再配置、変換)
- 後処理(削除、チェック、再配置、変換)
- 後処理の削除、再配置は、前処理でやった方がいい。
- ビルドツール(Make Rake Ant Gradleなど)