料理を開発に例えて、テストについて考えてみる
※この記事は「ソフトウェアテスト Advent Calendar」12月25日の記事です。
家の壁に貼るホワイトボードを導入したなそです。好きなだけ書けるのはとても楽しいです。AdventCalenderの書くことをいろいろマインドマップで考えて今回はソフトウェア開発がよく例えられる料理の話を考えてみたいと思います!
何かに規模の小さなものに例えることで、大きなソフトウェア開発の全体を理解が進むと思っています。
きっかけ
さて、そもそもなぜこの話をするかというと、ソフトウェア開発におけるテストフェーズが料理における「味見」に当たるのが納得できていないということがきっかけです。ツィッターでは「味見」でした。「お毒見」とかもありました。
レシピを設計書、調理は実装となるっていうのはわかるけど、テストはどう考えればいいんだろう・・・。レシピを見ても具材わからんし、調味料とか無理だし・・・っていつも思う。
— なそ@さとうひろゆき (@hiroyuki3gou) 2017年12月17日
やっぱり味見がテストなのか?
料理と開発の工程を比べてみましょう。今回は夕食を作る場合を想定して開発に照らし合わせています。
工程(料理:開発)
- 食べたいもの:要求
- 作れるもの:要件
- 作るもの:設計
- 調理:製造
- 味見?:テスト
- 盛り付け:リリース
- 片付け:運用
こういう風に考えてみると確かに味見が該当します。そして、この味見はお惣菜(OSS)やコンビニ弁当(外部サービス)を買ってきたときには必要ないので、確かに味見がテストフェーズと言っても過言ではないでしょう。お惣菜をそのまま食べる場合は味見の必要がないですが(食べたらそれはつまみ食い)、ひと手間加えた場合、味見が必要になりますね。
QCD(料理:開発)
- おいしさ?:品質
- 夕食に使えるお金:予算
- 夕食の時間:納期
次はQCDを考えた場合、Qに当たる部分が人によって意見が分かれるような気がします。おいしさ度外視(言い過ぎ)で栄養のバランス、カロリー重視、手を汚さずに食べれる等々私が思いつく限りでも複数あるので、もっとありそうですね。予算、納期に関してはそんなに意見が分かれない気がします。
そもそもQが一つだけだとは限らないでしょう。複数の要素があるので、料理における品質特性(おいしさ、栄養のバランス、カロリー、彩り、温度等)を定義するべきでしょう。当然いま5つですが、ここに該当しないものもあるでしょう。家庭の夕食に厳格な栄養のバランスを求めていると予算と納期が大変なことになりますが、「1日30品目食べましょう」などはQCDを考える上で良いバランスに感じます。
結論?
料理におけるテストフェーズは「料理における品質特性」+「家庭の伝統」を加味して家族が健康であることが担保できるような活動全般を指すのではないでしょうか?
その中の手法の一つが「味見」であるということです。味見は属人性を含んだテストにおける探索的テストですね。栄養のバランスとかカロリーは素材をカウントするので、テストケースで確認できるかもしれません。
余談1 食べたいものがしっかり言えないと・・・
「今晩何食べたい?」とよく母親に聞かれたことがあり、何でもいいと答えていたのですが、よくよく考えると要求で「良しなに作ってくれ」といって丸投げしていたということですね。よくこのプロジェクトが失敗しなかったと改めて母親に感謝してますm(__)m
しかし、食べたいものが出てくる確率は低いことは確かでした。一緒に暮らしている母親でさえこうなるので、大人数がかかわるソフトウェアの開発では「ほしいもの」が完成することはまずないでしょう。「ほしいもの」を要求できなかったことでトラブルになった例はいくつもあります。この辺は有名ですね。京都市の場合は現在内容の確認中なので、何とも言えませんが可能性があると示唆されています。
余談2 一汁三菜ってさ・・・
ご飯の基本は一汁三菜って、教えてもらいましたが、
- ご飯
- 汁物
- 主菜
- 副菜1
- 副菜2
ざっと見ただけでも、サブシステムが5つもあります。これを決められた予算と納期でしかも品質を担保しながらと考えると、無理な気がします・・・。っていうか普段料理する私も毎日は無理です。(せいぜい一汁一菜。茶色い・・・)
しかもこれらを考えながら、季節の食材や素材の数を横串で見ながら考えないといけないという。主婦はプロジェクトマネージャに向いているのではないかと本気で考えてます。
余談3 作るもの・・・
料理のレシピは、材料と手順が書かれています。レシピがなかったら属人性を持った家庭の味になります。レシピ化することで人に教える、次に作る時にも同じ料理がつくれたりしますね。
「ぎゅーんとやって、スパッとひゅんとしてぐつぐつするとできるよ」じゃ伝わるものも伝わりませんよね。似たような話をテストラジオでも話をしています。
あとがき
余談のほうが長くなった気がしますが、ノルマ(テストラジオの広告)も達成したのでこのくらいにします!
料理の作業工程とソフトウェア開発の工程は例えとして優秀です。誰でも料理をしたことがあるので想像しやすいはず・・・。この例えは今後も使っていきたいと思います。
それでは、なそがお送りしました!