20101130 南東京iphone開発3
TRANSCRIPT
テスト技法を覚えてみよう!南東京iPhone開発者勉強会
2010年11月30日 @ニフティ
自己紹介
南東京iPhone開発者勉強会2
名前 加瀬 正樹
所属 ニフティ株式会社http://www.nifty.co.jp/
会員向けのメールサービスのシステム開発や迷惑メール対策への取り組み
活動 ブログhttp://softest.cocolog-nifty.com/blog/
http://twitter.com/softest
勉強会「ソフトウェアテスト技法ドリル」勉強会第1回 11/2
第2回 12/3
第3回 来年2月予定
はじめに
南東京iPhone開発者勉強会3
テストって?
テスト技法を知ろう
同値分割・境界値テスト
デシジョンテーブル
HAYST法・直交表
状態遷移テスト
注意しておきたいこと
もっとテスト技法を学ぶには
テストって?
南東京iPhone開発者勉強会4
ソフトウェア開発の中でバグを見つける活動全般
さまざまな管理(構成、リスク、バグ、etc)
レビュー(仕様、設計、コード、テストケース、etc)
テスト
今日はココのお話
よりよいテストとは?
多くのバグを見つけられる(効果的なテスト)
少ない時間でバグ見つけられる(効率的なテスト)
範囲を漏れなくテストする(網羅的なテスト)
テスト技法は、よりよいテストを実施するための道具
テスト技法を知ろう(1/4)
南東京iPhone開発者勉強会5
同値分割
同じ出力・結果をもたらす入力値について、ひとまとまりと考えて代表値だけをテストする技法
必要なテストを実施し、無駄なテストはしない
例) 設定できるパスワードは英数字5文字以上16文字以下とする
パスワード文字数の範囲を数直線で表すと、
4 5 16 170
設定可能 エラーエラーテスト不可
-1
テスト技法を知ろう(1/4)
南東京iPhone開発者勉強会6
境界値テスト
同値分割されたグループ(同値クラス)の端っこ・境界をピンポイントでテストする技法
端っこはバグが多いことを利用
例) 設定できるパスワードは英数字5文字以上16文字以下とする
パスワード文字数の範囲を数直線で表すと、
4 5 16 170
設定可能 エラーエラーテスト不可
-1
テスト技法を知ろう(1/4)
南東京iPhone開発者勉強会7
同値分割・境界値テストは本能的に使っている
見方を変えると違う同値分割・境界値が見えてくる
英字、数字の文字数
操作初回、2回目、・・・
etc
無効値はひとつずつテストする
無効値を組み合わせるとバグを見落とすかもしれない
パスワード文字列が“#123”(4文字で記号を含む)の場合、文字数エラーか文字種別エラーかわからない
わからなくなったら絵・線を描こう
ベン図や数直線で整理しよう
図にすることで仕様バグが見つかるかもしれない
テスト技法を知ろう(2/4)
南東京iPhone開発者勉強会8
デシジョンテーブル
起こりうる入力値の組合せと、その出力・結果をまとめた対応表で、論理関係をテストするためのツール
もともとはビジネスルールを整理したり、プログラム設計をするためのツールでもある
例) 動物園の入園料・6歳以下で地元住民なら割引・65歳以上も割引
割引 #
1
#
2
#
3
#
4
6歳以下 Y Y N N
65歳以上 N N Y N
地元住民 Y N - -
割引 ○ ○
テスト技法を知ろう(2/4)
南東京iPhone開発者勉強会9
テーブル化で仕様を整理する
論理関係の矛盾や考慮漏れなどを見つけ、コーディング前にバグを潰す目的もある
文章や箇条書きの仕様をよりわかりやすく表現できる
複雑な論理関係には CEG や CFD
CEG(原因結果グラフ)とは、論理関係をブールグラフに変換して可視化し、組合せを自動生成
CFD(Cause Flow Diagram)とは、処理の流れを図式化して、デシジョンテーブルを作成
原因結果グラフ(CEG) 流れ図(CFD)
テスト技法を知ろう(3/4)
南東京iPhone開発者勉強会10
HAYST法・直交表
直交表の特徴を活かして、2因子間組合せを「まんべんなく」に網羅するようにテストする技法
バグが2因子間組合せまでに集中していることに着目
例) メールソフト受信テスト・Becky!/Thunderbird
・POP3/IMAP4
・Proxy設定あり/なし・SSLあり/なし
ソフト プロトコル
Proxy SSL
1 Becky! POP3 あり あり
2 TB IMAP4 なし なし
3 TB IMAP4 あり あり
4 Becky! POP3 なし なし
5 TB POP3 なし あり
6 Becky! IMAP4 あり なし
7 Becky! IMAP4 なし あり
8 TB POP3 あり なし全組合せ=24=16通り2因子間網羅=8通り
テスト技法を知ろう(3/4)
南東京iPhone開発者勉強会11
HAYST法の FV表と FL表
HAYST法は、秋山浩一氏(富士ゼロックスAT)が考案したテスト設計プロセス
FV表(Function Verification)による検証対象の分析
FL表(Factor Level)による因子・水準の抽出
直交表への割付
AllPair法という技法もある
直交表と同様、2因子間網羅を実現
一般的に直交表よりも表を小さくできる
フリーソフト「PICT」 http://msdn.microsoft.com/en-us/testing/bb980925.aspx
テスト技法を知ろう(4/4)
南東京iPhone開発者勉強会12
状態遷移テスト
仕様から状態とイベントを抜き出し、状態遷移図・状態遷移表を作成してテスト設計する技法
例) ストップウォッチ・右ボタンで計測スタート・計測中に右ボタンを押すと停止・停止中に右ボタンを押すと再開・停止で左ボタンを押すとリセット
リセット 計測中 停止中
右 右
右
左
右ボタン 左ボタン
リセット 計測中 N/A
計測中 停止中 N/A
停止中 計測中 リセット
状態遷移図
状態遷移表
テスト技法を知ろう(4/4)
南東京iPhone開発者勉強会13
遷移バグ、仕様バグを見つけよう
状態遷移表の N/A もテストして、予期しない遷移バグを見つける
図や表に整理することで、曖昧な仕様や仕様バグを見つける
カバレッジ基準
ノード網羅(状態網羅)
リンク網羅(0スイッチカバレッジ)
1スイッチカバレッジ
状態遷移表を行列とみなして、行列の積を計算
対角線上(ループ)にバグが潜む
(参考)テスト技法ポジショニングマップ
南東京iPhone開発者勉強会14
出典: http://hayst.com/positioning.aspx
注意しておきたいこと
南東京iPhone開発者勉強会15
テスト技法は万能ではない
それぞれのテスト技法には得手・不得手がある
「武器」にはなるが、「銀の弾丸」ではない
テスト技法にとらわれない
不安だったら、テストを追加してみる
同僚に見てもらう
品質とはユーザへ提供する価値
バグがなくても使いやすくなければならない
バグがなくても運用しやすくなければならない
もっとテストについて学ぶには
南東京iPhone開発者勉強会16
WACATE http://wacate.jp/
ソフトウェアテストワークショップ
若手テストエンジニア向けの1泊2日勉強会合宿
でも参加者の1/3は開発エンジニア
TEF http://www.swtest.jp/wiki/index.php?swtest.jp/wiki/forum
ソフトウェアテスト技術者交流会
1000名以上が参加するMLと不定期勉強会
JaSST http://www.jasst.jp/
国内最大のソフトウェアテストシンポジウム
全国6か所(東京,関西,北海道,東海,九州,四国)
次回はJaSST11東京(1/25,26 @ 目黒雅叙園)
南東京iPhone開発者勉強会17
ご清聴ありがとうございました