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

hirschkalb's blog

"I beseech you, in the bowels of Christ, think it possible that you may be mistaken."

ソフトウェアテストエンジニアのための精神安定剤 - ひとつは書くこと

ソフトウェア開発の現場から

無駄なテスト削減のための提案が、設計者の理解を得られなかったとき、提案者がその悲しみを分かち合おうとすることは精神衛生上、よきことと思います。

テスタ: Bの発生にはAが必要です。つまり、Bが発生しているとき、Aは必ず発生しています。したがって、「AもBも発生しているならば」という判定は「Bが発生しているならば」という判定に変えることができます。そちらのほうが、単純です。無駄なテストをしなくて済みます。現状だと、この判定文が正しいことを確認するためだけのために「Bが発生していて、かつ、Aが発生していない」という、現実にはありえない環境を無理に作り出さなければなりません。


設計者: ・・・ん。何を気にしているの?


テスタ: いま申し上げたようなことをそのままの意味で気にしています。無駄なテストが増えるのでは?


設計者: そんなに気になるなら、お客さんに聞いてみるといいよ。何を気にしているのか分からないけど・・・。

人間は感情の動物

このテスタは*1「合理的な提案は、必ず誰にでも受け入れられねばならぬ」と思っていました。

しかし、振り返れば私も日常、「言っていることはもっともだ。しかし、何だか言うことを聞きたくない」と思うことはあります。上の例でいえば、テスタは、設計者にそのような感情を抱かせるような発話者であったということです。

即ち次のような要因が、提案の受け入れを阻害していたことでしょう。

  1. そもそもテスタの挙げている前提が真であることの確証が得られない。
  2. その提案を受け入れて問題が発生した場合に責任を負うのはテスタではない。
  3. 下っ端の提案を受け入れるのは、その提案が合理的であればあるほど屈辱的である。
  4. この提案を受け入れて、楽をするのはテスタである。一方、面倒なのは設計者である。

つくづくコミュニケーションスキル向上の必要性を痛感させられます。このような設計者を動かせてこそ、真の「技術者」などと思うのです。

おまけ: 脳の体操

次のようなクイズを与えられたのだと考えるならば、「脳にうれしい」のかもしれません。

人が自明の解をあえて受け入れないとき、その理由は一体何なのだろうか?

おまけ: 理解力のある設計者チェッカー Ver.0.1

次のテストに合格する設計者ならば、上記のような提案も通るかもしれません。

バグを検出したとき、発話Bを行う設計者であるか?YESならば合格。

A: バグを見つけてしまった・・・。最悪だ。
B: バグを見つけた。よかった。

このテストは、「人のために仕事をしているのか、それとも、自分のために仕事をしているのか」をテストしていることにほかなりません。

今回の場合、近視眼的には、たしかにテスタが楽になるだけに違いありません。しかし、将来このモジュールに改造が入るたびに苦労するのは、初代設計者以外の、すべての将来の担当者です。

*1:まあ私ですが

広告を非表示にする