読者です 読者をやめる 読者になる 読者になる

ゆきばた

ゆきばたの果てしない戯言

プロダクト開発におけるテストってなぜ難しい?

ソフトウェアを開発するときに切っても切り離せない項目の1つが「テスト」です。

「バグ」があれば、ソフトウェアの価値は下がりますし、何よりバグのあるソフトウェアを認めてくれるようなことなんてありません。

 

しかしながら、「バグ」は永遠の友達であって、

開発をすれば、一生ついてきます。

 

f:id:yukibata:20161112131057j:plain

 

今回は、テストの専門家ではない私ですが、日々の開発プロセスで感じている「テスト」について書いていきます。

 

そもそもテストって何か?

 

プロダクト(ソフトウェア、アプリケーションなど)を開発するのは簡単なことではありません。

「こう作りたい」という要求の下、開発者は「どうつくるか」を一生懸命考え、作っていきます。そして、ときには複雑で面倒な機能を作ることもあります。

 

必死に考えても「想定外」といった部分は、必ずと言っていいほど出てきます。

プログラムが正しく動かない「バグ」です。

 

f:id:yukibata:20161112131117j:plain

 

バグが認められるプロダクトはありませんので

リリースをする前にすべてのバグを消す必要があり、テストを行う必要があります。

 

では、テストはどのタイミングでどのようなテストを行えばよいのか、これが非常に難しい課題になるのです。

 

なぜテストは難しい?

 

答えは、条件が異なるから難しいのです。

 ・メンバーが違う

 ・納期が違う

 ・プロダクトが違う

同じものはありません。だから正解が無いのです。

 

例えば、

一気に開発を行って、各メンバーが作ったプログラムをくっつけて、「さぁテストするぞ!」という状況があったとします。

予め用意していた100個のテストをしていて、50個目でバグを見つけ、プログラムを修正しました。

 

さて、テストの続きは51個目からやればよいでしょうか?

実は23個目が、バグの修正によって、別のバグを生んでいる可能性がないでしょうか?

1個目からやり直し?テストが1500個あったらどうする?

バグの修正の影響範囲を確認して、対象を絞ればよい?

その絞り方は本当に正しい?100%の自信がある?

 

また、致命的なバグがあったらテストがいったんストップしてしまいます。

じゃあ事前にある程度のテストをしておくべき?

ある程度って何?それはいつやるの?

不安は尽きません・・・・

 

テストって難しいのです

 

みんなどうやってテストをしているの?

 

前述でテストのやりかたに正解は無いと書きましたが、

「考え方」はあります。

 

f:id:yukibata:20161112131151j:plain

 

 ・1つのプログラムを作ったら、そのときにテストする

 ・1つの機能を作ったら、そのときにテストする

 ・すべてのプログラムがそろったら、そのときにテストする

 

という、プログラムの「単位」に分けてテストをすることです。

「コンポーネントテスト」「単体テスト」「ユニットテスト」「結合テスト」「シナリオテスト」とったように、それぞれに名前がついています。

 

これらのテストを「リソース」や「スケジュール」を踏まえ、

どのテストをいつ実施するかをチームで決めておいて実施するというパターンが多いと思います。

 

しかしながら、どんなプロセスを踏んでも

やっぱりバグは出てしまいます。

そのたびにプロセス改善を実施します。

 

私自身も、いろいろなバグに出会い、冷や汗をかいた経験がたくさんあります。

これから、何度かに分けてテストについて書いていきますので、

続編をお読みください!

 

 

 [Image From]
http://hdwpro.com/tag/friend
http://www.skepticalob.com/2013/06/surprise-there-were-homebirth-deaths-in-the-dutch-study-that-claimed-to-show-that-homebirth-has-lower-risks.html/surprised-girl
http://www.kathyloperevents.com/gwm/