ソフトウェアテスト勉強会~やってみよう!同値分割&境界値分析~ | 仙台ソフトウェアテスト勉強会のブログ

仙台ソフトウェアテスト勉強会のブログ

2012年から立ち上げた仙台ソフトウェアテスト勉強会のことなどを綴っていきます。

本日はソフトウェアテスト勉強会~やってみよう!同値分割&境界値分析~編。今回はJSTQBの第4章の中の同値分割&境界値分析について考えてみました。
最初にゴメンなさい。写真取り忘れました。。。


同値分割?簡単でしょと侮るなかれ、たかが同値分割、されど同値分割です。


前回に引き続き今日も誕生日の人が居ました!
なんとも幸せな勉強会です♪
そして恒例のお菓子は"カレーたい焼き"!!めちゃ美味しかったです。



仙台テスト勉強会のブログ-たいやき



今回は初参加の方も居ました。よく聞いてみると会社の先輩に面白いからと誘われたらしいです。

その先輩・・・最高でーす!!こういう声が本当に嬉しいです。ありがとうございます。


まずは今回から取り入れたワンポイント用語説明。
今回は①回帰試験と②システムテストと受け入れテストの違い。
これは前回のアンケートで、分らなかったことが挙げられていたので取り上げました。


①回帰試験の回帰試験ですが、JSTQBの説明には、自動化できるようにしておくべきということで、JUnit&Jenkinsのコラボレーションを高橋さんにデモしてもらいました。
やっぱり実際に見ると違いますねぇ。
こうやってテストコードを作っておくといつも実行できるのは本当にいいですね。
自分の部署でも本当に取り入れたい!!
JenkinsはJavaだけではなくRubyでも.NETでも対応していますとのことなので、興味がある人は是非実施してみてください。


②システムテストと受け入れテストの違いも説明しました。
受け入れテストは名前の通り、誰か他の人が作ったものを受け入れるということですね。もう少し詳しく考えてみたい人は仙台で講義してくれた鈴木三紀夫さんの以下のエントリが参考になると思います。
システムテスト - たまゆら雑記
http://d.hatena.ne.jp/mkoszk/20110103/p3
受け入れテスト - たまゆら雑記
http://d.hatena.ne.jp/mkoszk/20110104/p1



さてさて、最初は「技法」の話。
テスト技法のポジショニングマップを紹介しました。
http://www.hayst.com/Pages/positioning.aspx
ってかこんなに技法があるなんてビックリですよね・・・
ピンポイントで出したいのか、網羅したいのかによって使う技法は異なります。
ドラクエでいうと、メタルスライムを倒すときには毒針恋の矢使いますよね?
あんなイメージです(笑


今回の1つめのネタの同値分割に行きます。
お題の元ネタはTEF道で実施したワークショップを元ネタにしました。
どうもありがとうございます。


最初の同値分割①はS市杜王町の美術展の入場システム。
********************************************************
S市杜王町のとある美術展の入場料金は以下のようになっている。
「3歳以下は無料」 「12歳以上は1800円」
「3歳以上12歳未満は1200円」「60歳以上は1000円」
********************************************************


これはみなさんサクサクと解いてました。
ひっかけの3歳はどっち?というのにも一切引っかからず、ヤレヤレだぜ(笑
でも、実務をやっていくと仕様書間違っていることもありますからね。
そういうときは必ず"聞いて"から進めてください。

ここで伝えたことは軸を意識するということ。
自分は何について同値分割をしたのか、名前を付けるといいよという話。


さて続きまして、同値分割②の問題。
********************************************************
これもS市杜王町のタクシー料金の話です。
初乗運賃:乗り始めてから1600mまで650円。
加算運賃以後300mごとに80円。
法令により、1万円を超える請求は出来ない。(メーターは1万円を超えない)
********************************************************


これは皆さん数学に苦戦していましたね。手で割り算とかなかなかしないですからね。
そんな義務教育を思い出せるのもこのテスト勉強会ならでは!
料金という軸で同値分割をすると、なんと有効同値クラスで118クラスでます。
もう少し簡単にできる方法はないんでしょうか、ということから料金体系に注目した同値分割を行いました。おー これだと有効同値クラスは3つです!!
さらに一歩踏み込んで、コードをイメージすることにより5つにしました。


JSTQB的にはブラックボックスに分類されている同値分割だけど、実務で使うときはコードも確認した方が安心するよねという話をしました。(グレーボックス)
MECEというのも調べてみてください。ロジカルシンキングに近い考えになると思います。



そして同値分割③のラスボスことExcelのフォントサイズのテスト。
これがまた大変でした。。。
********************************************************
エクセルの「フォントサイズ機能」をテストしようとしています。
このフォントサイズの入力値を同値分割してください。
なお、フォントサイズのドロップダウンの値は以下とします。
「8,9,10,10.5,11,12,14,16,18,20,24,26,28,36,48,72,96」
********************************************************
Excel持っている人に動作仕様を確認してもらっていましたが、皆さんそのうちExcelのテストを始めました(笑
これ、実はモデルを作っているのですね。中身はどういう実装になっているのだろう?どういうコードなんだろうと想像し、法則を見つけているですね。この新しくモデルを作るということがテスト設計のポイントになってくるんだと思っています。

この問題は心理的なトリックもあって、もし全く知らないアプリの題材だと提示した問題の記述だけではテストもモデルを作ることもできないんですよ。でも、Excelって知っているので、過去の経験と手元にあるExcelを使ってでどんどん調べていくんですよね。実は「できません!」と言われてもおかしくない問題です(笑


ここでは色々な軸がでていました。
入力方式だったり、桁数だったり、カウントアップの幅だったり・・・。

参加者から質問があって、桁数の同値分割って意味あるのでしょうか?とのこと。これは例えばテストの目的が選択後の表示が切れていないかということであれば、意味あると思います。目的によって同値分割の仕方(=モデルの作り方)は変わってきますね。


他の参加者の一人に話を聞いてみるとドロップダウンの入力方式は内部的には配列になっていると思うので、自分は全部試験しますということ。なるほどです!!
今回はコードが見れないので、不安があれば確かにそうですね。


また同値分割には"深さ"という概念があるということも説明しました。
これもどこまでの細かく実施するかバランスがキモになると思います。
この深く見たり、浅く見たりすることをズームイン、ズームアウトと呼ぶ人もいますので覚えておくと良いかもしれません。
ズームイン/ズームアウト - たまゆら雑記
http://blog.goo.ne.jp/mickey_suzuki/e/cdabcdb1612fcb82ef399365539e86a9

ってか、Microsoftさんはどうやってテストしているんでしょうか?見てみたいですね。

参加者の感想にはExcelをさらに深く知ることができた!ということも書かれていました。見てみると確かにスゴイです。
11.2 → 11へ
11.3 → 11.5へ
これは分かる気がしますね。
さらに深く見てみると
11.22 → 11へ
11.23 → 11.5へ
どんなロジックで作っているんでしょうか???謎は深まります。
同値分割も難しいですね・・・


ここまででかなり盛り上がってしまいました。
境界値分析の時間が少なかったのですが、先ほど同値分割した問題を使って、境界値分析を行っていきます。境界値分析を行うとテストケースが大分はっきり見えてきますね。でもやはりどのように同値分割するかがキモですね。同値分割が間違えていると、もちろん境界値も間違えちゃいますよね。


ここで使っていた用語の訂正(代表値→中間値)があります。
代表値というのは同値分割したクラスから導き出す値のことでした。
ということで、「基本の代表値はハジ・ハジ・中間値」ということです。
お詫びして訂正しますm(__)m


ということで、今回も無事に終わりました。
基本とも言える同値分割と境界値分析は如何だったでしょうか?
たかが同値分割、されど同値分割です。


アンケートではとても楽しかったという意見を頂きました。
自分も沢山勉強になっています。本当にありがとうございます。


また是非一緒に学んでいきましょう!!
そして、ちょこっとでもいいので実践で使ってみてくださいね!