機械語と数学とことば

更新が進みません.

【プログラミング】知識ゼロから学ぶソフトウェアテストから見える人の認知バイアスとフレーム問題(書評)

ごく気が向いた時にしかブログを更新しないのですが,せっかく読み終えた本があったので,こちらに紹介します. ちなみに,

知識ゼロから学ぶソフトウェアテストを読みました![書評] | 酒と涙とRubyとRailsと

こちらのブログを読んで,他のブログにも幾つか紹介されていたので,いい本なんだろうな~と思い,しかもKindle版は安かったので読みました.どんな内容があるかという話は上のブログを読んでもらえればいいと思いますが,私として気になった一点だけを特に絞ってここに書きます.

知識ゼロから学ぶソフトウェアテスト 【改訂版】

知識ゼロから学ぶソフトウェアテスト 【改訂版】

それは,「バグを1つ見つけると背後に多くのバグが潜んでいる」ということ.

これは最近私の個人的な仕事においても同様なことが起こっているのですが,システムから一つのコードのバグを発見すると,それを「精緻化しよう」とするプロセスの中で更にバグが発見されるということです.

これは,バグを一度発見すると,

1.「もっとバグが有るんじゃないか?」と考えてしまう心理的な要因と

2.「バグは単体のものではなく,様々な要素が絡み合い,大きくなったものがある閾値を超えることで発見される」というシステム的な構造の要因

の2つから起こるものではないかなと思いました. ただ,これらの,この本でのことばから言うには,「致命的なバグ」の発見は, 簡単にできるものではないことも,「テストの難しさ」を表していると思います. なので,「バグの発見数曲線が落ち着いてきたらリリースかな」というのは 理にかなった,というかそうする以上のことは出来ない,ということなのだと思います.

はじめからすべて「完全な形」で組む事のできるシステムなど,よほど単純なシステム (例えば掛け算をするシステム等)以外にはありえないということを考えると やはり 「可能な限り現在まで有用だとわかっているテストは実行しつつ,あとは気合で細かくチェックするしかない」 のかなーとも思っています.「境界に注意しろ」というのもまったくもってそのとおりですね. 私も良く書いたコードで境界のミスが生じることは多くあります.

[asin:B00NH1JM8A:detail]

昨年の終わりにはこの本を読みつつ実行していましたが,

テスト駆動開発」というのも,テストを先に書いてそれをクリアしていくやりかたは,

「完全なコード」を書けそうでもありますが,なかなか実際にはそう行かない,という現状を

この本に書いてありました.

「テスト」はまだまだ未成熟の学問分野らしく,この辺りのトピックは,プログラミング,情報工学というよりもむしろ,人間の認知,認知科学認知心理学人工知能などに近い問題と似ている(エラーが起こるまで気づかない問題は,カーネマンのバイアスや,ロボットのフレーム問題に相当する)ため,今後(既にしているかもしれませんが)学問間の横断と融合でなにか新しい手法の開発がされるのではないかな―とも思っています.いずれにせよ今後が楽しみな分野でありつつ,現状のベーシックを取り入れていきたいなーと思います.