テスト技法を覚えてみよう!
南東京iPhone開発者勉強会
2010年11月30日 @ニフティ
自己紹介
南東京iPhone開発者勉強会2
名前 加瀬 正樹
所属 ニフティ株式会社
http://www.nifty.co.jp/
会員向けのメールサービスのシステム開発
や迷惑メール対策への取り組み
活動 ブログ
http://softest.cocolog-nifty.com/blog/
Twitter
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
ご清聴ありがとうございました

20101130 南東京iphone開発3

Editor's Notes

  • #6 赤は無効同値クラス、青は有効同値クラス
  • #7 文字数でいえば、未入力、4文字、5文字、16文字、17文字をテストする。
  • #8 実はみんな同値分割と境界値テストは無意識的に使っているはず。もっと知ることでもっとうまくなる。基礎技法。
  • #9 3つの条件なので全8通りあるが、4通りのテストをすればよい