ソフトウェア開発のテストに含まれていること

何かしら文章を書きたい気分なので、文章を書こうと思う。とはいえ、今のところブログに書きたい話も特にないので、今日読んでいた本の話をしようと思う。
 
今日もパーフェクトソフトウェアっていう本を読んでいた。パーフェクトソフトウェアという本は、ジェラルド・ワインバーグ(1933~)の著書の一つ。ソフトウェア開発の世界では、有名な人だと思うので、知らない人は調べてみてもいいと思う。簡単にいうと、ソフトウェア開発仙人みたいな人。
 
そして、パーフェクトソフトウェアは、ソフトウェア開発が大好きなジェラルド・ワインバーグがソフトウェア開発のテストについて書いた本。まだ、少ししか読んでいないけど、話の密度が濃い。
 
話の密度が濃すぎるので、とりあえず、SEやプログラマになりたての人にはオススメできないし、ソフトウェア開発が好きじゃない人にもオススメできないと思ってる。でも、ソフトウェア開発をより良くしたいと思っている人なら、一読する価値はあると思う。
 
今回は、パーフェクトソフトウェアの4章「テストとデバッグはどう違う?」を読んだ。そこでは、一般的にテスト、と言われているものが、どういうもので何を含んでいるかを話していた。個人的にすごく興味のあるはなし。
 
なぜかというと、最近、ソフトウェア開発の一つ一つのタスクが大きすぎることについて悩んでいて、それを整理したいと思っていたからだ。これについては、詳しく書くことがあったので、また今度書くことにする。
 
そんなことを考えながら、ソフトウェア開発の中にやることって何が含まれているんだろうとか考えていた。それで本を読んでいたら、パーフェクトソフトウェア、という本に出会って、その中で、テストがどういうもので、何をやるべきなのかについて書いていた。
 
この本によると、テストには、次のような工程が入り乱れている。

発見のためのテスト・・・新しい情報が見つけようとする。

絞り込み・・・バグが発生する条件を特定しようとする。

特定・・・バグを修正できるようにコードの中のバグの位置を探す。

重要度の決定・・・修正したことによるリスクと、バグを修正しないことの影響を天秤にかける

修正・・・コードを修正する

トラブルシューティング・・・ソフトウェアの動作の障害を取り除いたり回避したりする。

学習のためのテスト・・・ソフトを使うために試行錯誤する。または遊ぶ。

 

1人でやっているときは、これらを好きな時間にスイッチすればいいが、複数人でやっていたり、組織的にやっているときは、これの役割分担がしっかりしていないと揉め事が起きるよ、という話をワインバーグはしている。

 

 

 

これまで、ソフトウェアを開発しているときに、自分がやっていたことをこういう風に可視化されると、もう少し管理しやすくなるような気がした。

とはいえ、これをどうやって管理しよう?という部分までは今のところ考えが及んでいないんだけど・・・。