食品開発とソフトウェア開発におけるテスト


はじめまして。サイボウズ株式会社でQAをしている@hitomi___ktです。
自社クラウドサービスのkintoneを開発するチームに所属しています。
QAになって2年目ですが、前職は食品メーカーで開発(食品の配合や製法を考える仕事)を担当していました。
食品開発にもソフトウェア開発にも「テスト」が存在するのですが、今回は私が感じた両者の違いと共通点をご紹介します。

前提

私の経験した食品開発では、開発者と企画者がペアを組んで製品開発をします。
開発者は企画者からフィードバックを受けながら試作を重ね、レシピを決定します。
決定したレシピを元にして工場で製造した製品がお客様に届けられます。
テストは主に開発者が実施します。

私の所属するチームのソフトウェア開発では、スクラム開発を採用しています。
新規機能開発の場合、プロダクトマネージャーが作るバックログを元にプログラマが実装し、QAがテストを実施します。

注意

ここに書く「食品開発」「ソフトウェア開発」は、あくまでも私が経験したものです。
業界・会社・製品によって異なることをご了承ください。

違い

工場の有無

食品は工場で製造されたものがお客様に届けられます。
どんなに試作段階で高い評価を得ても、工場で再現できないレシピでは製品になりません。
試作段階でもできるだけ工場を意識しますが、使う機械・製造場所の温度・製造量など違う要素も多いので、必ず工場での製造テストを実施します。
製造テストでは試作の何倍もの原材料を使う上に、工場の設備や人を動かすので、お金も時間もかかります。
何回もできるものではないので、製造テストを成功させなければ、というプレッシャーは大きかったです。

一方でソフトウェアには工場がありません。
完成したアーカイブを手元の試験環境で動かせるので、機能が実装されたらすぐにテストすることができます。
もちろん試験環境と本番環境は違うのですが、リリース予定の製品を手元で確認できる点は食品開発とは違うなと感じました。

リリース後の変更

食品は工場で作られたら完成です。
完成後に個々の製品に対して変更を加えることは、メーカー側ではできません。(お客様側での調理やアレンジによる変更はあります)
食中毒や異物混入など命に関わる事態につながる可能性もあるので、特に安全性のテストは慎重に実施していました。

一方でソフトウェアは、各リリースバージョンにFixはあるものの最終的な完成型がありません。
特にクラウド製品では、リリース後も機能追加やバグ修正など製品に対して変更を加えることができます。
メリットとデメリットを比較しながら柔軟にリリース内容や時期を変更できる点は、食品開発とは違うなと感じました。

共通点

使用状況や時間経過による影響

食品は、保管状態や時間経過によってカビが生えたり味が落ちたりすることがあります。
そのため保管温度や時間経過による影響を検証する保存テストは必須です。(ちなみに保存テストの結果は、賞味期限・消費期限の決定材料になります)
私が経験した保存テストは数ヶ月〜半年ほどかかりました。

ソフトウェアも、使われ方や時間経過によって状態が変化します。
ソフトウェアは物理的に腐ることはありませんが、アクセス集中による負荷や蓄積したデータベースのデータ量によって問題が出ることがあります。
そのため、使用状況を意識したテストも必要です。
入社当時は「ソフトウェアは腐らないから楽な部分もあるのかな」と思っていたのですが、開発に関わる中で全くの勘違いであることに気付きました。

数値化できない要素

食品の味は数値化することができません。
糖度計や味覚センサーで数値化できる部分もありますが、味そのものを数字だけで表すことは難しいです。
そのため、いろいろな人に試食してもらいフィードバックをもらうことで改善点を見つけていきます。
今ふりかえると、試食もテストの1つだったなと思います。

ソフトウェアにも、使い勝手など数値化できない要素があります。
そのため、ユーザビリティテストなどでユーザーからフィードバックをもらうことで改善点を見つけていきます。
入社当時は、ソフトウェアははっきりした判断ができる要素ばかりだと思っていたのですが、開発に関わる中で違うことを知りました。

違いをふりかえってみて

製品の特性・開発手法・ユーザーが違えば適切なテストも違います。
一方で業界や製品が違っても、似たような目的で実施しているテストもあります。
どんなテストも、品質向上のために取り組んでいる点は同じです。
この記事を書いてみて、もしかしたらソフトウェア開発に活かせる食品開発の知見もあるかも、と気付きました。