嫌われプログラミングの代弁者

「何で頭ごなしに嫌う人間が居るのか」を色々考える

smallで無いテストの困難さ 1

どの様な話?

ソフトウェア開発での、束構造の因果ダイアグラムは、

  • 上限が「システムを作ろうとする発端」で、
  • 上限方向のグラフの半分が「原因が、複数の独立・直交した部分原因に分かれる」過程で有り、
  • グラフの真ん中の一番「太った」部分に、一番小さいプログラムの部分が置かれ、
  • その後、下限方向のグラフの半分にて、より大きいプログラムの部分へ集約されて行き、
  • 下限が「システム完成」を表す

と想定されますが、

一番小さいプログラムの部分が、より大きいプログラムの部分へ集約されて行くというグラフは、
合流点(合流点 (統計学) Wikipedia 日本語版)を成すのでは無いかと思う様になりました。

 

 

それは何か悪い事が有るのでしょうか?

そもそもsmallやlargeに限らず、大抵の自動テストは、サンプリングを基本としていると思います。テスト対象の母集団から、一部を抜き出して検証します。

しかも、合流点ですよ、皆さん!!!

合流点バイアスが起きる非常に有望な苗床としか見えません。

 

 

後、経験(n=1)からの話ですが、

後、経験(n=1)からの話ですが、

  • 所与の原因から結果として得られる、小さいプログラムの部分(複数)を、
  • 集約する事で、より大きいプログラムの部分になるが、
  • その際の気づきとして、
  • 小さいプログラムの部分が、原因を十全に実現せずに結果としている場合が有り、
  • より大きいプログラムの部分を構成して見て初めて不足が分かる

事が良く有ります。

小さいプログラムの部分(=small なテストの範囲)では合格だったにもかかわらず、全体としては不合格になり得るという、話です。

これもサンプリングを基本としている自動テスト、特にsmall な自動テストでは気づかない可能性が大です。

要するにsmall な自動テストが「出来る」のは、

  • 「完全に理解した」

状態で有り、よりlarge 方向へのテストで、

  • 「なにもわからない」、「チョットデキル」

状態に移行するので、small で無いテストは困難なのでは無いでしょうか?
また、それには、この視点での合流点バイアスが関係している様に思えてなりません。

 

 

結論

これからも「smallで無いテストの困難さ」でプログラミングが嫌いになる人は存在し続けることでしょう。