![TEF-DO-ほよこ_前](https://stat.ameba.jp/user_images/20130427/16/tef-do/df/30/p/t02200254_0800092512515618243.png?caw=800)
またまたやりました。
書籍
『ソフトウェアテスト技法ドリル』
著:秋山 浩一
![$TEF-DO-ソフトウェアテスト技法ドリル](https://stat.ameba.jp/user_images/20130427/16/tef-do/43/9a/j/t02200220_0300030012515622743.jpg?caw=800)
を使った勉強会。
開催日:5/14
内容:
本の要約解説しながら、参加者同士でディスカッション。
最後にアル課題を使ってワーク。
範囲:第2章
~線を意識する~
連続して変化するモノを意識する
「同値分割」と「境界値分析」についてさらりと説明。
ある果物の個数と単価を算出するシステムについて、ディスカッション。
①1個~4個:単価200円
②5個~9個:単価170円
③10個以上:単価160円
まずは、これに対して「同値分割」と「境界値分析」をやってみると、
こんな回答が出てきました。
有効値の境界の確認:1,4,5,9,10
無効値の確認:0
まあ、この値を選択するのがベターな気がします。
ここで参加者にこの問題をプログラミングした場合のロジックを考えてもらい、
それに対して先に出したケースでテストするとどうなるか?
をやってみる。
出てきたロジックはこんな感じ
------------------------------------------------
If( ( 1 <= n ) && ( 4 >= n ) )
{
price = 200;
}
else if ( ( 5 <= n ) && ( 9 >= n ) )
{
price = 190;
}
else if ( 10 <= n )
{
price = 160;
}
else
{
price = 0;
}
------------------------------------------------
とりあえず、問題なさそう。
仕様通りの振る舞いを確認できる様子。
みんな完璧だね!!
めでたし、めでたし~。
では、終わらせない。
これって、本当にバグが見つかりますか?
というツッコミをしみてる。
(参加者「???」)
もし、
“else if ( 10 <= n )”
が
“else if ( 10 == n )”
となっていたとします。
このコーディングミスをレビューで取り除けなかった場合、
先のテストケースで間違いを見つけれますか?
はい、見つかりません。
ここで、
Beizer(バイザー)の方法
と
Jorgensen(ジョーゲンセン)の方法
を紹介。
(詳しくは参考情報②を参照)
“10”の境界について、Jorgensenの方法で境界値を求めると
9,10,11の3通りが出てきます。
そうすると先の間違いを見つけることができますね。
めでたし、めでたし~。
でも終わらせない。
なんか、テストケースが増えちゃった気がしますね。
そして、いったいこのテストはいつやるの?
いまでしょ!!(違っ
システムテストのときにやる?
遅い気がしませんか?
誰がこのテストやるの?第三者でしょうか?
ロジックわからないですよね?
という感じで深ぼる。
すると単体テストで開発者が妥当かも?
という意見に落ち着く。
では、その逆に
システムテストで第三者がやるとしたら、どんなテストケース?
というのも確認。
単体テスト時に上記のようなテストケースを実行してたとすると、
システムが動くことを確認できれば良さそうなので、
無効値の0、有効値のいずれかぐらいで良いかも。
また、単体テストの実施状況が不明な場合などは、
システムテストでも境界値を細かく攻める必要がありそう。
※ただしこの場合はテスターが泣きます。
と結論になりました。
最後は第2章の内容を踏まえて、
今回もSESSAMEの組込みシステム教育教材
『話題沸騰ポット GOMA-1015型』
要求仕様書の温度表示に関する仕様を抜き出したものを課題として、
「同値分割」、「境界値分析」を実施。
![$TEF-DO-ドリる2課題](https://stat.ameba.jp/user_images/20130531/21/tef-do/51/d7/j/t02200142_0717046212559273416.jpg?caw=800)
出てきたテストケースを抜粋
サーミスタの範囲
-11、-10、-9、149、150、151
水の温度を考え
-1、0、1、99、100、101
表示の範囲を考え
マイナス表示含めて4桁まで確認出来ると良い
-1000、-999
四捨五入と有効桁
*.3、*.4、*.5、*.6 *は任意値
まとめ
・何のため
・どのタイミング
・誰が
・何を
を意識するのが大切。
あと、
最後にまとめてテストするのではなく、
段階的にテストすることが大事。
品質は積み上げですね~。
【参考情報】
①組込みシステム教育教材話題沸騰ポット
(http://www.sessame.jp/workinggroup/WorkingGroup2/POT_Specification.htm)
②JaSST’11四国「実践!同値分割と境界値分析とドメイン分析
(http://www.jasst.jp/archives/jasst11t/pdf/s2-1.pdf)
③仙台ソフトウェアテスト勉強会のブログ
同値分割・境界値分析の2値の選択と3値の選択
(http://ameblo.jp/sendai-test/entry-11417704966.html)
![TEF-DO-ほよこ_後](https://stat.ameba.jp/user_images/20130427/16/tef-do/23/30/p/t02200216_0800078412515618242.png?caw=800)