2011年10月13日木曜日

僕はこんなことを考えている。(テストの視点の話)

-ちょっと修正:2011/10/18
風使いになりたい。
暑いときには扇風機がわりにできるし
寒いときは温かい空気を送ったりできるし、
刃物もカマイタチがあればいいし、走るときはいつも追い風だ。
そして何より「神風の術」が使える。スンバラシイ。


ども。コヤマンです。


なんだかドタバタしていたけれど、少し落ち着いてきたので考えていることなどを簡単に書き出してみる。

テストの視点の話。

大雑把な書き方なので何を言いたいのかよくわからないと思いますが、
僕がテストを考えるときに何を考えているのか、という"視点"を大雑把に出してみた。


  • モノ
  • コト
  • ドメイン(背景など、対象を取り巻く世界)
こんだけ。んで、これって何かモノを作るときと全く同じだよなーと思った。
モノを作るとき、同じことを考える。
※もちろんこれは僕の個人的意見に過ぎないので、異論はあるかと思う。
 なるほど、テストを開発する、と考えると

 「何かを作る」ときに共通に使える概念かもしれない。

では話を戻して、
「開発成果物の作成」「テスト開発成果物の作成」では、
決定的に何が違うのか? 

と考えた場合に以下の視点が増えた。
  • モノ:
    • 開発成果物そのもの
    • 開発成果物の持つ癖
  • コト:
    • 開発成果物が実現したこと、実現出来なかったこと
    • 現在の開発成果物をユーザが思うこと
  • ドメイン:
    • 開発成果物を作るうえで関係した背景(基盤技術やドメインの特性、使用した技術の特徴など)
    • 開発チームを取り巻く環境(コミュニケーション状況や組織状況)
つまり、モノを作りましょうといった時に考えることよりも少し考えることが増えた。
基本的には変わらないのだけれど、
複雑に作れば作るほど、考える幅が増えるんだろうというのがよく分かった。


図であらわすとこうなる。
考えているものを3つの視点で見る
テストはそれもひっくるめてさらに3つの視点で見る
複雑に作ると
視点は変わらないが、幅が広がる
これをまぁよく理解せずに
「ボクちゃん後工程だからそもそもの背景とか考えなくていいんだもんね!」
とか言っちゃう人もまれに?いるが、
それだと論拠・根拠が無くなるため、何をやっているんだかわからなくなるうえ、主体性がなくなる。

僕が
「ウチは後工程だから考えなくていいんだよ」
「言われたことだけやってりゃいいんだよ」
「開発者がいいと言えばいいの!」
と言われた時に感じる"気持ち悪さ"というか違和感はどうやらここにあるようだ。
※ただし、スコープの定義の話は勿論別だある。
根拠のあるスコープの中での定義であれば違和感はない。

なのでまぁ、簡単に言うと3種類の視点で考えていて、
その中の「要素」が沢山あって、それをテストする立場で見る
んだな、と。

でまぁ、この「要素」というのがたぶん肝なんだな、と。
といっても大雑把な話だとよくわからないと思うので具体例を列挙してみる。

  • モノ
    • 部品などの構成要素
    • 部品の特性
    • 流用したベースとなる存在

  • コト
    • 要求(満たしたいこと)
    • ちょっとした制限事項
    • 自分がなんか怪しいと思うこと

  • ドメイン
    • なぜ、そのものが産まれたのか
    • 業界の標準や常識
    • どんな人が使うのか
と、こんな感じ。
定量的に説明出来ないが、僕はこんなことを考えている。


でまぁ、最近色々考えさせて頂く機会があって、実践もさせていただける場所もある。
そこでちょこちょこ実践しているのだがー

…これがまぁ、なかなか上手く出来ないw


いや、そこそこは出来るんだけど、考えることが多すぎてイッパツでバシッと決まらない。
何回も何回も修正する羽目になる。

朝起きると「あぁっこんな事も考えられるじゃないか!」と閃いちゃったりして
モンモンとしながら会社に行ったりする。モンモン通勤。


でもまぁ、それはそーゆーもんだ、と割り切ることにした。
イッパツでバシッとキマると格好いいんだろうけど、僕はそんなに格好いいタイプではないし、頭もポンコツなのでそのくらいが丁度いい。
何回も何回も修正するけど、それなりにいいテストが出来るなら、それがいい、と考えた。

予め予測出来ることを全て列挙するよりは、いくつかガイドワードから導きだすフレームワークの方がテストに向いてる気がする。
→理由としては、考えることを全て出すと恐らくコストに見合わない。
ガイドワードから、というのはミッキーさんの意地悪漢字なども参考にできるだろう。

まだ予想に過ぎないが、ドメインを固定したときには、そのガイドワード、
あるいはいくつかの「要素」がスケルトンやパターンのように生成されればいい気がする。

とか考えてたら、僕の考えている範囲はアーキ生成モデルなのか?とか思ったりしたり。


…脱線した。

まぁ、そんな感じでどうやら僕は割りと単純な視点でものを見ていて、
ときどき考え方を流用して「要素」の抜き出しをするらしい、ということが分かった。

この考え方や説明がわかりにくかったり、そうではなくてこうなのでは?
と思われた方は是非、教えていただけるととても嬉しい。

-----
★にしさん(@YasuharuNishi)
★あきやまさん(@akiyama924)
★きょんさん(@kyon_mm)
コメント有り難うございます!