テストカテゴリの出し方(機能編)を考えてみた

WACATEに参加して、ゆもつよメソッドについて以下の理解が足りないということが分かった。
少し考えてみないとダメだね。。。でもそれが分かったことも収穫だった!

  • テストカテゴリの出し方(機能/非機能両方)
  • テストタイプの網羅性とテストカテゴリの網羅性
  • テストカテゴリの数と粒度
【そもそもテストカテゴリとは?】
既に選択したテストタイプに対して、どのようなテストケース条件で
変化を与えるべきかを考えたものがテストカテゴリになります。
(ソフトウェアテストPRESS Vol.10 P20)

JaSSTのサトミ塾の例。 http://jasst.jp/symposium/jasst12tokyo/pdf/A2-6.pdf P10のデジカメの例を考えてみる。

上記資料でもテストPressのVol.10でも機能モデルから出しているのですが、、、 自分の結論は機能モデルは"無理"です。 この機能モデルを常に上手く出せる気がしないっす。。。 (1) (2)

ってことで自分が考えた結果は、データ中心のシナリオから出すのがいいと思いました。

デジカメの例で考えてみると・・・

【写真を撮るときのシナリオ】
1. ユーザーがシャッターボタンを押して、
2. 写真のデータが、SDカード内部に保存される。
3. そのときにJpegに変換される。
4. 保存されたデータはSDカード内部から読み出されて、
5. 液晶ディスプレイに表示される。

ここから動詞を抜き出すと以下のような感じ

  • ボタンを押す
  • データの保存
  • データの変換
  • データの読み出し
  • ディスプレイへの表示
【写真を見るときのシナリオ】
1. ユーザーが再生ボタンを押して、
2. 写真のデータがSDカードから読み出されて、
3. 液晶ディスプレイに表示される
4. ユーザーは進むボタン/戻るボタンを押し、
5. 写真のデータがSDカードから読み出されて、
6. 液晶ディスプレイに表示される

ここから動詞を抜き出すと以下のような感じ

  • ボタンを押す
  • データの読み出し
  • ディスプレイへの表示

エラー系だとフォーマットが違いますって出て表示できないこともあるので、それを考えると実は読み出した後にフォーマットのチェックをしている模様。するともう1つカテゴリがでるかな。

シナリオを何個か書き出してあげると大体の機能のテストカテゴリは出すことができそう。
自分は結構スッキリしました(笑

機能モデルに近いクラス図からも出す方法も考えたんだけど、 クラスというより、もう1つ上の概念、レイヤーとかパッケージとかそれくらいになる気がする。 でもその場合は例えばチェックとかそういうのって、クラスだったり、メソッドだったりのレベルだと思うので、レイヤーとかとは粒度が違うので出にくい感じがしてるんだよなー

あとは感覚的にはマインドマップ本のテスト対象分析のやり方でも出せるような気がしている。 簡単なアプリから考えてみるともう少し分かる気がする。

※考え方とか間違っていたら指摘ください♪

(*1) どうやら機能モデルはシステムによってそんなに変わらないらしい。 http://jasst.jp/symposium/jasst12tokyo/pdf/A2-6.pdf のP7

(*2) みきおさんから以下のコメントを頂きました。 機能モデルはプログラム・スケルトンを用いた構造化プログラミングっぽいので、クラス図に慣れていると違和感を持つかもしれませんね。