こんにちは。mai.hです。
現在、Web系システムのアジャイルQAとして、二人の子どもを育てながら働いています。
3/9-10に開催された、JaSST’23Tokyoにオンライン参加してきました。
私は、育休を経て2021年春に復職しました。育休前にも何度かJaSSTに参加したことがありまして、その魅力と楽しさは体感済みでした。昨年のJaSST’22へも参加したかったのですが、新型コロナによる保育園の休園が多発&上の子の卒園入学も重なり業務調整が難しく、参加を見送った経緯が。そのため、今回のJaSST’23Tokyoへは、満を持しての参加となりました。(やったーー!)
オンラインでの参加は初めてでしたが、たくさんのQA仲間とDiscodeなどでワイワイガヤガヤしながら聴講できるスタイルで、オンラインならではの有意義な時間を過ごすことができました。
本日は、私が聴講した中から「シフトレフトの失敗事例から学ぶ次のアプローチ」を取り上げてレポートしたいと思います。
JaSSTとは
JaSSTとは「ソフトウェアテストおよびソフトウェア品質に関心のある方が深い学びを得ることを目指して、 ソフトウェアテスト分野の幅広い情報と、参加者同士の交流や議論ができる場を提供」するため、特定非営利活動法人ソフトウェアテスト技術振興協会 (ASTER)が主催する日本最大級のソフトウェアテストのシンポジウムです。
JaSST’23 Tokyoでは「相互理解で広がる世界」をテーマに、様々な現場での取り組みやテスト技術などについて、多くのセッションが展開されました。
シフトレフトの失敗事例から学ぶ次のアプローチ
この講演の登壇者は、株式会社AGEST(AGEST,Inc.)の高橋信弘さん。(同社の高橋寿一さんを引き合いに「AGESTの有名じゃないほうの高橋です」とのこと)
講演では「みなさん、シフトレフトできていますか?」「そもそもシフトレフトとは」を皮切りに、高橋信弘さんが実際に挑戦されたシフトレフト事例を4つ、わかりやすくご説明いただきました。
学び1 シフトレフトとは何か?なぜ必要なのか?
- まずは「シフトレフト」について、JSTQB FLのシラバスの記載を確認
ISTQBテスト技術者資格制度 Foundation Level シラバス テストの 7 原則「3.早期テストで時間とコストを節約」
早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始すべきである。早期テストは、シフトレフトとも呼ばれる。ソフトウェア開発ライフサイクルの早い時期にテストを行うことにより、コストを低減または削減できる(3.1節を参照)。
- 「早期テスト」を深掘る
</Sqripts>の記事『いまさら「シフトレフト」について考えてみた』で紹介されたRayleighモデルより、不具合の検出ピークが結合テストの場合、ピークを左の工程に動かすことによって、本番障害の潜在件数を減らせることが示されました。つまりは、コーディングやそれよりも早期段階、具体的には要件定義~基本設計フェーズを起点として不具合の検出を早期に行うことが「シフトレフト」の効果が大きいと理解できそうです。
- シフトレフトの必要性は?
シラバスに記載の「早い時期にテストを行うことにより、コストを低減または削減できる」ことにプラスして、講演では、現代の状況と照らし合わせて『現在はVolatility(変動性)、Uncertainty(不確実性)、Complexity(複雑性)、Ambiguity(曖昧性)の頭文字をとった「VUCA(ブーカ)の時代」であり「未来の予測が難しい」』と説明。計画時とリリース時の価値の乖離を防ぐべく、より短期間でプロダクトをリリースするためにシフトレフトが必要と、シフトレフトの必要性を、より具体的に示されました。
学び2 シフトレフトの多角的なQAアプローチ
「早期にテストを行う」といっても、その手段はさまざま。高橋信弘さんの講演では、実際に挑戦された4つの事例から、シフトレフトにおける多角的なQAアプローチが示されました。
<シフトレフトの実践事例4つ>
① テストフェーズごとのテスト観点整理
② QAによる仕様レビュープロセスの導入
③ GQM法による品質特性毎のメトリクス設定
④ モブテスト(MobTesting)の導入
以下に、それぞれの事例の「概要」と「導入結果」を簡単にまとめます。
※講演に使用された資料は今後公開される予定ですので、詳しく知りたい方はぜひJaSST’23Tokyo公式ホームページをご覧いただければと思います。
① テストフェーズごとのテスト観点整理
(概要)品質特性×テスト観点をマッピングし、単体・結合・システムテストフェーズごとに定義
(導入結果)単体テストフェーズを中心に不具合検出率が向上
② QAによる仕様レビュープロセスの導入
(概要)(1)SQiP「レビューオリエンテーションキットを用いた、育成によるレビュー文化の形成」のレビュープロセスを導入、(2)仕様レビュー用練習教材の作成
(導入結果)設計工程での不具合検出が増加、QAレビューを必須とする開発文化の形成
③ GQM法による品質特性毎のメトリクス設定
(概要)要件定義からシステムテストまで、各工程で担保すべき品質特性を明らかにし、G(Goal)、Q(Question)、M(Metric)を設定して統一した基準で品質を評価
(導入結果)マネージメント層の承認が得られなかったため、導入ならず。仮に承認が得られたとしても、適応範囲が広すぎ・導入後のイメージが具体化できていなかったため、有効な効果が出せなかった可能性あり
④ 開発テストの最適化:モブテスト(MobTesting)の導入
(概要)単体テスト時に開発とQAで一つの画面を見ながら探索的にテスト
(導入結果)まだ導入過程にあるため、結果はこれから
現場の数だけシフトレフトの施策あり。どんなQAアプローチを採択するかは、現場の状況に合わせて柔軟に検討する必要がありそうです。
導入失敗となった事例「③ GQM法による品質特性毎のメトリクス設定」においては、これを成功に導くための糸口として「規模と対象を小さく始めること」とのお話がありました。規模とは「巻き込む人」のこと、対象とは「適用範囲」と理解しました。
成功の糸口として、具体的に以下のように解説がありました。
- 規模は「4~5人程度(できるだけプロジェクトのキーマンの協力を仰ぐ)」
- 対象は「必要なものを見極めた上で、まずは1つから」
こちらは、今後シフトレフトにチャレンジする際にぜひ心得ておきたいポイントだと思います。
余談ですが、講演中にDiscodeで多く質問が寄せられたのは③の「GQM法」についてでした。こちらについて、登壇者の高橋信弘さんご本人より</Sqripts>「JaSST’23Tokyo B7シフトレフトの失敗事例から学ぶ次のアプローチのあとがきとおまけ」の記事の中でさらに詳しいお話が掲載される予定ですので、ぜひそちらも覗いてみてください。
学び3 シフトレフトのシフトレフト
高橋信弘さんは「課題分析・施策検討・導入はQAが主導しないといけないと思い込んでいた。開発と「共に考える」という発想がなかった。あるべき未来は、分析段階からQAの垣根を超えて行う『品質支援アプローチ』だ」と提唱されました。
この考えを前提に取り組みを開始した「④ 開発テストの最適化:モブテスト(MobTesting)の導入」では、QAで行った分析結果の共有から開発の協力を得て活動を行ったそうです。
この施策冒頭では、QAが単体テストの理想と現状を整理・可視化して「開発テストに一部不足がありそう」ということがわかり、「単体テストの観点リストを作成する」という改善方針を打ち出しました。この分析結果について開発と認識合わせを行った結果「分析時に不足と思っていた単体テストは足りていた」ことと「観点リストでは効果が薄い」ことのフィードバックを受けます。ここで、開発から「開発テスト工程でQAの観点を取り入れることで精度をあげられるのでは?」と提案が!そこで開発QAで共に考え、新たな施策「モブテスト」を導入することになったとのことです。
より良いシフトレフトは、QAが主導して実施時のみ開発に協力を仰ぐのではなく、早期段階から開発と協力して役割の垣根を越えてより良い品質を追い求めて共に活動する。この点について(以下私見ですが)仮に”シフトレフト”の意味を「より左側(早期)に動かすこと」といった英語の直訳として広義にとらえた場合、
『シフトレフト施策において、役割の垣根を超えた活動を「より早期段階から行う」こと』は、『シフトレフトのシフトレフト』といっても過言ではないかもしれません。
まとめ
私がこの講演で得られた、シフトレフトについての学びを簡単にまとめます。
- 開発やステークホルダーをできるだけ早期に巻き込もう。相手がシフトレフトに理解があるとは限らない。普段からコミュニケーションをとりやすい関係を築こう(雑談もアリ)
- シフトレフトにおける品質支援のアプローチは、多様化する現場や環境に合わせて柔軟に採択しよう
- 最初は小さいサイズ(参加メンバー、適用対象)から初めて、徐々に範囲を広げていこう
また、講演の中で にし やすはる 先生の「シフトレフトって何をシフトするのなの?」の記事内容のご紹介がありました。さすが にし先生、シフトレフトのマインドについて理解しやすくライトにまとめてくださっています。とても印象に残ったため、こちらでも改めてご紹介します。
それでは、講演の最後にご紹介のあった「アフリカの古いことわざ」で私もしめたいと思います。
私は現在、アジャイル開発の現場でQAが仕様検討やユーザーストーリーの策定などの上流工程から参画しており、QA活動にも理解のある恵まれた環境にあります。JaSST’23Tokyoのテーマ「相互理解で広がる世界」を、実践的なシフトレフトでぜひ実現したいと思いました!(私のシフトレフトの挑戦がうまくいったら/いかなくても、また</Sqripts>でご紹介できるとうれしいです^^)
最後まで読んで頂き、ありがとうございました。