ソフトウェアテストは「段階」ではなく「活動」である──ブロッコリー氏が問う、プロダクトに求められる品質とは何か
【16-C-7】テストの完了をゴールにしない!~仮説検証を繰り返し、開発・QA・ユーザーが交流しながら開発することで見えてくる理想の姿~
DevOpsの重要性が認識されている昨今、シフトレフト・シフトライトのテストアプローチへの注目度が高まっている。株式会社10X・品質管理部のブロッコリー氏は「本来、テストは開発のすべてのプロセスにおいて行われるべきもの。一般的な『テストの完了』がエンジニアのゴールではない」とその奥深さを語る。プロダクトの品質を高め、ユーザーに利益をもたらすためのテストはどうあるべきか? 10Xでの実践例について、同氏が講演を行った。
常に行う「アクティビティ」としてのテスト
講演の始めに、ブロッコリー氏は「機能開発はしたものの、本当にユーザーの課題解決につながっているのか不安になったことはありませんか」と聴衆に問いかけた。
プロダクトを開発するにあたり、エンジニアはつい、こなしたタスクやリリースの多さというアウトプット量を意識してしまいがちだ。しかし、本当に重要なのはユーザーの課題解決や行動変容、すなわちアウトカムである。冒頭の質問はこのようなズレから発されたものだが、覚えがあるオーディエンスが多いのか、会場では多くの手が挙がった。
会場の反応を確認したブロッコリー氏は、講演を通した主張として、「エンジニアは、一般的な『テストの完了』をゴールに置くべきではない」と説く。一般にテストはコードをマージしてビルドする際に行うものという認識を持たれることが多いが、アウトカムを重視した立ち回りをするのであれば、コード実装前(シフトレフト)やリリース後(シフトライト)のテストも重視すべきだと言うのだ。「テストはもはやフェーズではなく、常に行っていくアクティビティ(活動)」。そんなブロッコリー氏の考えを表したのが、以下に示す「継続的テストモデル」だ。
本日のテーマを確認したところで、話は実践例に移る。ブロッコリー氏は10Xにおけるシフトライト・レフトの具体的な活動を紹介する前に、コンテクストを合わせるため同社の事業を簡単に紹介した。10XではStailerという小売・流通事業者向けのECプラットフォームを開発しており、ユーザー向けのアプリだけでなく、注文後にスタッフがピッキングやパッキングを行って配達するまで、一連の業務管理を担う店舗アプリ開発も行っている。
今回の講演では、このアプリにおけるピッキング・パッキングに着目する。たとえばネットスーパーにおいては、ユーザーAから牛乳2本・ユーザーBから3本という注文が入った場合でも、すぐに個数を確定させることはない。ときにはユーザーが考えを変え、注文をキャンセルする可能性もあるためだ。
そのため裏側のシステムには、オーダー後の変更締め切り時間が設けられている。これを過ぎると発注内容が確定し、店舗スタッフが5本の牛乳を実際の店舗内の陳列からピックアップ(ピッキング)する流れだ。あとはこれらをバックヤードに持ち込み、バーコードを読み込んだ後、注文ごとに商品を梱包(パッキング)して配達することになる。このオペレーションについて、どのようなテストが可能だろうか。
まずシフトレフトについては、TDD(テスト駆動開発)よりもさらに前段階である、プランやブランチの段階でもテスト活動が可能だという。これは受け入れ基準(タスクチケットの完了基準)を作成する際の活動であり、とくにスクラムにおけるリファインメントの部分で行うものだ。なお10Xの場合、リファインメントは開発者だけでなく、POのようなビジネス関係者とQAの3者で協調しながら進める3amigosという考え方を用いる場合がある。
先ほどのオペレーションについては、もともと「hogehogeメソッドが注文の締め切り時間の前に呼ばれているので対応する」という受け入れ基準が定義されていた。それに対してQAであるブロッコリー氏は、リファインメントの場で「コードの内容は分かった。でも、これはアプリの振る舞いでいうと、どの画面をどう操作したときに発生するんだろう」と疑念を投げかけた。
そうして調査を進めると、「注文確定前の段階にもかかわらずピッキングを終わらせてパッキングまで進んだ場合、完了ボタンを押すとエラーになり、前画面に戻る」というものだとわかった。また「完了ボタンを押さずとも、その画面で15秒放置した場合もエラーを返す」という振る舞いを行うことも判明した。
ブロッコリー氏は「このように書くと、何をもってこのタスクが『完了』になるのかがはっきりする。特に15秒放置するケースは、最初の『hogehogeメソッドの〜』という記述だけではよく分からなかったかもしれない」と振り返る。また余談として、「今回のように早い段階で行うべきことをはっきりしていると、そもそもバグが作られずに済むため追加コストが不要になる」と、副産物も示した。
会員登録無料すると、続きをお読みいただけます
この記事は参考になりましたか?
- Developers Summit 2024 セッションレポート連載記事一覧
-
- 『システム障害対応 実践ガイド』著者が語る、1000件の事例から学んだ障害対応のベストプラ...
- 「どこか他人ごと」な防災DX、実際どれだけ進んでいる? 国・自治体が提供しているシステムと...
- ソフトウェアテストは「段階」ではなく「活動」である──ブロッコリー氏が問う、プロダクトに求...
- この記事の著者
-
中島 佑馬(ナカシマ ユウマ)
立命館大学卒業後、日刊工業新聞社にて経済記者として勤務。その後テクニカルライターを経て、2021年にフリーランスライターとして独立。Webメディアを中心に活動しており、広くビジネス領域での取材記事やニュース記事、SEO記事の作成などを行う。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
