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

>& STDOUT

主にソフトウェアに関する日々の標準出力+標準エラー出力

詳解 コピー&ペースト&モディファイ法

※推奨してません

 

「コピー&ペースト&モディファイ法」は2012年現在、日本国内において最も普及しているテスト開発手法である。手法の名前で全てのアクティビティを表してしまっている、あるいは、バカバカしすぎて解説する気にもなれない、等の理由から、その普及度合いに反してなかなか陽の目をみなかったこの手法について、"せっかくだから" この場を借りて正面から取り組んでみたい。

「コピー&ペースト&モディファイ法」はテスト開発手法であるから、当然テストプロセスのいずれかのフェーズを担うことになるのだが、この手法の最も画期的な点は、テストベースからテスト設計を無配慮にすっとばし、機械的にテスト実装できるところにある。その意味においては、「考えていない」というささいな点以外は近未来テスト技術の寵児たるモデルベースドテストと思想を同じくする。では、その実際の様子を順を追って解説していこう。

1.テストベースを準備する 

テスト開発における設計工程はテストベースを準備するところから。これはこの天衣無縫なテスト手法においても変わりはないが、他のテスト設計技法においては無上の入力となる図表やテーブルが、本手法においてはゴミ同然であることに注意されたい。我々が求めているのは母国語でベタ書きされた仕様書である。もしそれが構造化されておらず、ただひたすら「〜しなければならない」調であるなら言うことなしである。そういう意味では、原則テキストベースで提供されるRFC文書等は要求強度が明示されている点からも非常に有力なテストベースとなる。実際筆者もやったが10年前なので時効であろう。たぶん時効である。時効なんじゃないかな。ま、ちっとは後略。

2.テストベースから要求っぽいところをみつけてコピーする

賢明な読者ならとうにお気づきのことと思うが「コピー&ペースト&モディファイ法」の第一ステップは、「コピー」である。ここで肝要なのはその操作ではなく、テストベースとなる文書から「要求っぽいところ」を見つける点にある。この手法のクオリティを保つためにも、ぜひ「っぽい」にこだわって欲しい。決して、開発チームに「これって要求ですかね?だとしたらどういう条件で発火してどういう振る舞いを…」などと確認してはいけない。ここでも、本手法のポリシーたる「考えていない」を遵守するためのテクニックが存在する。すなわち、「生成する」「変更する」「削除する」「xxしないこと」「xxすること」など、「ソフトウェアのふるいまい」+「サ変活用」に注目しながら仕様書を追っていき、発見次第無心でコピーしていく。考えるな、捉えるんだ。

3.テスト仕様書にペーストする

賢明な読者ならとうにお気づきのことと思うが「コピー&ペースト&モディファイ法」の第二ステップは、「ペースト」である。本ステップにおいても肝要なのは操作ではなく、ペースト先である。本手法を適切に運用した結果生まれる出力は「最高にいけてないテスト仕様書」であるから、テスト仕様書そのものにペーストすることが望ましい。この時、決して機能の構造に対応させたテスト仕様書の構造化などを考えてはならない。断じて、機能の親子関係やそこに与えられるパラメータの種別、などをスプレッドシートに、大、中、小項目と振り分けていく過程で網羅性に不安をもちはじめた挙句、「もう少し列挙した項目に合理的な理由をつける方法を考えよう」などと思ってはいけない。繰り返すが、本手法を駆使して我々が目指すのは「最高にいけてないテスト仕様書」である。

4.語尾を書き換える

賢明な読者ならそろそろこの枕にも辟易していることと思うが「コピー&ペースト&モディファイ法」の最後のステップは「書き換え」=「モディファイ」である。ステップ2を適切に行えていればここでも「考える」ことなく機械的な作業に徹することが可能となる。具体例を見てみよう。

 

コピー&ペーストされた仕様記述の例:

 1.入力された年齢が18歳未満の場合は入場不可のメッセージを表示したあとYahooに遷移する

 2.プルダウンメニューからジャンルを選択すると、そのジャンルのタグがついた作品のみを表示する

 3.新着、高評価、視聴履歴で並べ替えができる 

モディファイしたテストケースの例:

 1.入力された年齢が18歳未満の場合は入場不可のメッセージを表示したあとYahooに遷移することを確認する

 2.プルダウンメニューからジャンルを選択すると、そのジャンルのタグがついた作品のみを表示することを確認する

 3.新着、高評価、視聴履歴で並べ替えができることを確認する

 

いかがであろうか。筆者がこの間違い探しのようなテスト仕様を開発するのに掛かった時間は約4秒である。驚異的な速さではなかろうか。入力する年齢も、そもそも受け付けている文字種すらも、メッセージの文言も、Yahooがどこなのかも、ジャンルには何があるのかも、並べ替えはジャンルと併存できるのかも一切問わない、実行するテストオペレータの腕に100%依存する、ある意味人間賛歌なテスト仕様であるとも言えよう。だったら仕様記述だけで良くないですか、などと考えたそこの君は、まだ信心が足りないようだ。

 

以上が、国内の底辺ソフトウェア企業を中心に最も普及している「コピー&ペースト&モディファイ法」の全貌である。紙面の関係上、まったく省略することなくつまびらかにしたつもりではあるが、この座興の粋を尽くしたテスト手法のいけてなさの一端でも感じて頂ければ、これに勝る幸せはない。

 

…え。これでもけっこうバグが見つかる?それはたぶん、作り方の方を先に考えなおしたほうがよい。