何かしら文章を書きたい気分なので、文章を書こうと思います。
とはいえ、今のところブログに書きたい話も特にないので、今日読んでいた本の話をしようと思います。
今日もパーフェクトソフトウェアっていう本を読んでいました。
パーフェクトソフトウェアという本は、ジェラルド・ワインバーグ(1933~)の著書の一つです。
ソフトウェア開発の世界では、有名な人だと思うので、知らない人は調べてみてもいいと思います。簡単にいうと、ソフトウェア開発仙人みたいな人です。
そして、パーフェクトソフトウェアは、ソフトウェア開発が大好きなジェラルド・ワインバーグがソフトウェア開発のテストについて書いた本です。まだ、少ししか読んでいないけど、話の密度が濃いと思います。まあ、ワインバーグの本は、全部そんな感じなのですが・・・。
で、話の密度が濃すぎるので、とりあえず、SEやプログラマになりたての人に誰でもオススメできないと思っていますし、ソフトウェア開発が好きじゃない人にもオススメできないと思っています。でも、ソフトウェア開発をより良くしたいと思っている人なら、一読する価値はあると思います。
今回は、パーフェクトソフトウェアの4章「テストとデバッグはどう違う?」を読みました。そこでは、一般的にテスト、と言われているものが、どういうもので何を含んでいるかを話していました。個人的にすごく興味のあるはなしです。
なぜかというと、最近、ソフトウェア開発の一つ一つのタスクが大きすぎることについて悩んでいて、それを整理したいと思っていたからです。これについては、詳しく書くことがあったので、また今度書くことにします。
そんなことを考えながら、ソフトウェア開発の中にやることって何が含まれているんだろうとか考えていました。それで本を読んでいたら、パーフェクトソフトウェア、という本に出会って、その中で、テストがどういうもので、何をやるべきなのかについて書いていました。
この本によると、テストには、次のような工程が入り乱れています。
- 発見のためのテスト
- 絞り込み
- 特定
- 重要度の決定
- 修正
- トラブルシューティング
- 学習のためのテスト
発見のためのテスト・・・新しい情報が見つけようとする。
絞り込み・・・バグが発生する条件を特定しようとする。
特定・・・バグを修正できるようにコードの中のバグの位置を探す。
重要度の決定・・・修正したことによるリスクと、バグを修正しないことの影響を天秤にかける
修正・・・コードを修正する
トラブルシューティング・・・ソフトウェアの動作の障害を取り除いたり回避したりする。
学習のためのテスト・・・ソフトを使うために試行錯誤する。または遊ぶ。
1人でやっているときは、これらを好きな時間にスイッチすればいいものの、複数人でやっていたり、組織的にやっているときは、これの役割分担がしっかりしていないと揉め事が起きるよ、という話をワインバーグはしています。
これまで、ソフトウェアを開発しているときに、自分がやっていたことをこういう風に可視化されると、もう少し管理しやすくなるような気がしました。
とはいえ、これをどうやって管理しよう?という部分までは今のところ考えが及んでいないんだけど・・・。