皆さんこんにちは。今回が初投稿となります ばーちー です。
先日IVIAで開催されたWebセミナー『テスト自動化の8原則と失敗事例から学ぶ成功のポイント!』に参加してきました。(講師:トーテックアメニティ株式会社 高橋友之様)
私は10数年前の案件で「テスト自動化」を導入したものの理想的な運用を行うことができなかった経験があります。現在では約6割のエンジニアが何らかの形でテスト自動化に関わっている※1という調査結果もあるとのことですので、今回のセミナーで得た知見を紹介するとともに、当時の反省点を振り返って行きたいと思います。
※1 トーテックアメニティ社の独自アンケートにより、約3割がテスト自動化に直接携わっている、約3割がチーム内でテスト自動化が導入されているという報告があったとのことです。
セミナー概要『テスト自動化の8原則と失敗事例から学ぶ成功のポイント!』
それではタイトル毎にセミナーでの講義内容を紹介します。
1.テスト自動化を実現する流れ
テスト自動化を実現するには、分析・選定 → 導入 → 運用・測定 の流れで行われます。
分析・選定:
自動化可能な部分や作業期間、予算、体制を考慮し、自動化すべき部分を検討します。
導入:
適切な自動化ツールを選定し、予算や技術レベルを考慮して導入し、テストケースを実装します。
運用・測定:
自動テストを実行し続けながら結果を分析し、テストケースのメンテナンスを行い、効果を評価して改善(PDCA)します。
この冒頭の話でいきなり当時の反省点が見えました。
当時は「自動化すればコストが削減できて品質も向上する」といった夢のような考えを持って“自動化ありき”で話を進めていました。その結果、大した分析も行われないまま導入したことにより、コストや品質への効果を想定通りに出すことができませんでした。
次に自動化を導入する機会があったら充分な分析と計画を行っていきたいと思います。
2.テスト自動化のメリット・デメリット
=メリット=
コスト削減:
自動化により人員削減やテスト工数の削減による金銭的・時間的コストの削減が可能です。
品質向上:
自動化により網羅性向上と工数削減により確保できた時間で品質向上のための取り組みを行えます。
問題の早期発見:
テストが24時間実行可能になることでバグや問題点を早期発見できます。
ヒューマンエラーの防止:
テストのばらつきを防ぐと共に、妥当性が向上します。
=デメリット=
アドホックやユーザビリティなどのテストは自動化に向いておらず、全てのテストを自動化することはできません。また、初期コストが高く、導入時にはテストコード作成やツール習熟に関連するコストが発生します。
当時はテスト自動化やプログラミングの有識者がおらず手探りで着手していました。その為、テスト設計まで済んでいるのにテストコードを作成する作業に苦戦して余計な工数が発生してしまうことがありました。これにより、自動化で期待される工数削減効果を減少させてしまったことが反省点です。
チーム体制も加味して初期コストを想定するとともに、テスト自動化により何を目指すのかといった目的を明確にすることが重要なのだと考えます。
3.テスト自動化の8原則
テスト自動化研究会では「テスト自動化に取り組む前に留意しておくべきこと」として以下の8原則を提唱しています。
テスト自動化を成功させるためにはこれらを意識することが大切です。
- 手動テストはなくならない
ユーザビリティテストなど、自動化できないテストタイプが存在します。 - 手動で行って効果のないテストを自動化しても無駄である
テストプロセス(特にテストの分析、設計)が適切に行われていないテストは、期待される動作の保証やバグの検出といった効果を発揮しないという点は自動テストにおいても同様です。 - 自動テストは書いたことしかテストしない
自動テストには、操作、合否判定を厳密に記述する必要があるため、テスト内容は「記述された部分のみ」に限定されます。 - テスト自動化の効用はコスト削減だけではない
テスト自動化によってコスト削減が期待できる主なケースは「テスト実行」のコストです。これ以外には繰り返し型開発におけるセーフティネットとしての役割や、バグ修正日数の低減、影響範囲レビュープロセスの代替といった開発アクティビティへの効用も存在します。 - 自動テストシステムの開発は継続的に行うものである
テスト自動化に関わる作業全体を10割とした場合、自動テストシステムが完成するまでが3割、残りの7割は運用に関する作業となります。各種メンテナンスや自動テストのターンアラウンドタイム(TAT)の向上、信頼性の向上といったシステムの価値を向上させていく活動を行う必要があります。 - 自動化検討はプロジェクト初期から
繰り返し実行されるテストが予めわかっているなら、自動化を前提として、テスト計画を策定すれば効果的です。 - 自動テストで新種のバグが見つかることは稀である
運用されている自動テストの意義は「一度動いたはずの機能がうっかり壊れる」ことを最速で発見することにあります。 - テスト結果分析という新たなタスクが生まれる
自動テストが”FAILED”を出してきた場合は何が起きたのかを改めて人間が確認することになります。ある程度自動的に”FAILED”を仕分ける機構など、コストを軽減させる施策を検討する必要があります。
ここに全てが詰まっているといった感じですね。
テスト自動化において大切なこと、注意すべきことが分かりやすくまとめられています。
記載の内容は要約してあるので、より詳細を知りたい方は下記サイトを参照してください。
●テスト自動化研究会 テスト自動化の8原則
4.失敗事例から学ぶ成功のポイント
【失敗事例1】
失敗の状況・原因:
テストケースのドキュメントレビューが十分に行われておらず、テストケース手順書に不備や曖昧な点があった状態で自動化を行ったことによりテストできる品質になりませんでした。
成功ポイント:
自動化実装開始の基準を明確に定めた上で、ドキュメントレビューを十分に行う必要があります。
また、手動テストケースを自動化する際には、より客観的・定量的に細かく指定する必要がある点に注意してください。
【失敗事例2】
失敗の状況・原因:
実装のスケジュールやルールが定まっていない状態にも係らず、顧客要望もありスピード重視で進めたことでメンテナンスしにくい自動化テストが大量に作られてしまいました。
成功ポイント:
事前調査や準備を怠らずにきちんと作業計画を立てる必要があります。命名規則やコーディング、レビューなどのルールを設け、属人化しないようにすることも大切です。
【失敗事例3】
失敗の状況・原因:
顧客要求によりコストダウンを目的にテスト自動化を導入することになりましたが、体制として有識者をアサインすることができず、また他の作業もあり自動化に向けた準備工数を十分に確保することができませんでした。
成功ポイント:
自動化ツールの習熟度により必要となる工数は大きく異なります。有識者をアサインすることが理想的ですが、それができないのであればきちんと工数を確保できるように計画を立てることが必要です。
事例3は私の経験そのままと言っていいほどの内容でした。そもそも有識者がいるのか、いたとしてアサインできるのかなど、簡単に解決できない状況もあるでしょうが、有識者をアサインできていたら心強かったと思います。
IVIA Webセミナー『テスト自動化の8原則と失敗事例から学ぶ成功のポイント!』の講義内容は以上となります。
まとめ
「自動化」という言葉に夢を追いがちになりますが、その導入には初期コストを考慮した充分な計画が必要になります。また、自動化の目的としてコスト削減が挙げられますが、これは短期間に効果を得られるものではありません。自動テストを繰り返し実行していくことで次第に費用対効果が高まることになります。これらのことだけでも10数年前の私が理解できていれば、より良い結果になっていたはずです。
最近ではノーコードでテスト自動化を行えるツールも増えていますが、複雑なテストケースを自動化させるためにPython、JavaScript、C#等のプログラム言語を使用することがあります。プログラミングを行えるメンバーがチームにいることで、より効率的、効果的にテスト自動化を行うことができます。
また「テスト自動化エンジニア」を目指すのならばプログラミングは必須スキルとなるでしょう。
テスト自動化は今後も普及を続けると考えています。これから導入を考えている皆さんにとって有益な情報になれば幸いです。
レポートは以上となります。最後までお読みいただき、ありがとうございました!