はじめに
みなさんこんにちは。
品質改善推進ユニットQAグループでQAエンジニアをしている飯泉です。
今回はチームで行なっている「本番障害からテストのヒントを抽出して活用する」ための活動について紹介したいと思います。
本番障害からソフトウェアテストのヒントに活かす「シンプルチャーターエレメント」
本番障害レポートからソフトウェアテストのヒントを抽出した観点集を「シンプルチャーターエレメント」と呼んでいます。
本番障害レポートを分析してどのような観点でテストをすれば障害を防ぐことが出来るのかまとめて開発やテストで活用をしています。
本番障害レポートとは
LIFULLでは本番環境でバグが発見された場合に本番障害レポートを作成してバグの解消状況の管理と再発防止策の検討を行っています。
本番障害レポートは以下のようなにまとめております。
- 障害の影響範囲
- 障害の概要
- 障害が発生したサービス・利用者
- 原因
- 対策内容
- 再発防止策
シンプルチャーターエレメントはどんな内容か
本番障害の概要、原因、発生手順、このシンプルチャーターエレメントから発見を期待できる欠陥、テスト観点などを記載します。
参考にしたものは 「Explore It!」
「Explore It!: Reduce Risk and Increase Confidence with Exploratory Testing 」 は探索的テストの技術書です。
この中にある「A Simple Charter Template(シンプルチャーターテンプレート)」という探索的テストに使えるシンプルなヒントの作り方から発想を得ています。
シンプルチャーターエレメントの内容は、バグ発見へのインスピレーションが得られるようにするため以下を考慮して作成し、レビューを通してから全社のものづくりチームへ共有する形で運用しています。
- 抽象化の粒度
- ソフトウェア起因でかつ汎用性のある情報にするため、プロダクト依存の情報は排除する
- イメージとしては、フリーズドライの食品のように、お湯(プロダクト情報)をかけるとテストのヒントが複数出てくるにまとめる
- 本番障害などの情報を元に探索的テスト時のテスト観点となるようにまとめる
- 「(どの)対象となる画面・機能で、(どんな)前提条件・操作の時、(どんな)期待値か」
- その他ポイント
- シンプルチャーターエレメントの内容がバグを再現できる粒度になっていること
- 再現する手順が汎用的かつ再現性のある手順であること
活用方法
開発で活用する
設計時の考慮漏れのチェックやソースレビューの観点に使えます。
過去に発生した障害を参考に作られているので同じバグを作り込んでいないかチェックをする時に活用できます。
テスト分析やテスト設計で活用する
「バグを発見するため」のテスト観点の洗い出しや、テスト設計時にフォールト指向で考える際に参考になります。
バグ発見のインスピレーションを得られるような内容にまとめているので、どのようにするとバグが発生するか広く考えるためのヒントとして使えます。
探索的テストで活用する
元々探索的テストのために作られていたので、シンプルチャーターと探索的テストとの相性が非常に良いです。
探索的テストは複雑な条件・タイミングの操作を実行することに向いているので、
本番障害が発生した手順を再現したり、そこから派生した操作するといったことが行いやすく、バグ発見に繋がりやすいです。
最後に
失敗を恐れず失敗に寄り添う文化がLIFULLには根付いているため、
今回紹介したように失敗を糧に本番障害を減らすための活動ができるのだと実感しています。
自分がエンジニア時代にこの活動に出会えていたらもっと救われたのかもしれないと思っています。
(私はミスが多いエンジニアで失敗しないように必死でテストしていたら、いつの間にかQAエンジニアになっていました。)
失敗は恐ろしいことですが、失敗に向き合い寄り添えば未来への救いとなる知識に変わると私は信じています。
この記事で失敗を糧に少しでも次の成功へ繋がるヒントとなれば幸いです。