...

ソフトウェアテスト入門(1)

by user

on
Category: Documents
8

views

Report

Comments

Transcript

ソフトウェアテスト入門(1)
ソフトウェアテスト入門(1)
2007/11/29
ディノ 竹腰彰成
目的・ターゲット

目的
◦ テストの基本的手法を身につける
⇒経験的になんとなくやる、ではなく
やるべきテストを判断できるようになる

ターゲット
◦ テストについて勉強したことのない人
◦ テスト経験の浅い人
内容(予定)
テストの目的とは
 テストフェーズの分類
 テストの難しさを認識する
 テスト技法
 Webアプリのテスト

3回に分けて実施(予定)
テストの目的
テストの目的は2つ

バグ出し
◦ コーティングミスを探し出し、修正する

品質保証
◦ テスト仕様書は品質を示す客観資料
 「このシステムの品質は?」
「これだけのテストにパスしてます」
 納品物に含まれることも多々ある
品質保証に重点をおいて話を進めます
テストフェーズの分類
どんなテストがあるか

品質保証したい対象ごとにある
受け入れ
テスト
要件定義
外部設計
総合テスト
内部設計
実装

結合テスト
このあたりの
話をします
単体テスト
それぞれの設計書をもとに実施
テストの難しさを認識する
始める前に

みなさんどの程度できますか?
◦ 知っているつもりでも意外と難しい
演習問題:テストケース作成

次のプログラムについてテストケース
を作ってみましょう
◦ 入力した三角形の種類を答えるプログラ
ム
 正三角形
 二等辺三角形
 ただの三角形(丌等辺三角形)
◦ 1~100の整数のみ受けつける
演習問題:テストケース作成
制限時間:5分
 メモ書きでOK
 着眼点があっていればOK
 仕様にない部分も書いてみてください

入力した三角形の種類を答えるプログラム
・正三角形
・二等辺三角形
・ただの三角形(丌等辺三角形)
1~100の整数のみ受けつける
答え合わせ:レベル1

正常系:表示結果確認
◦ 3辺が同じ長さで「正三角形」と表示
◦ 2辺のみが同じ長さで「二等辺三角形」
 3通り全部実施(5-5-3, 5-3-5, 3-5-5)
◦ 3辺とも違う長さで「ただの三角形」

正常系:1~100を受付
◦
◦
◦
◦
すべてに
1を入力
すべてに 100を入力
それぞれに
0を入力
それぞれに101を入力
⇒
⇒
⇒
⇒
OK
OK
NG
NG
答え合わせ:レベル2

異常系:入力形式の異常
◦ 3辺それぞれに数字以外の入力
◦ 入力が2辺以下
◦ 入力が4辺以上

異常系:入力値の異常
◦ それぞれに0を入力
◦ それぞれに負の数を入力
◦ それぞれに小数を入力
答え合わせ:レベル3

異常系:三角形にならない
 2辺の和 =残りの1辺
 2、3、5など
 2辺の和 < 残りの1辺
 2、4、8など
直線に
なっちゃう
2
3
5
とどかない!
2
4
8
仕様抜け:対象システムの理解が重要
演習問題で何が言いたかったか
このプログラム自体は簡単
 テストの難しさはそれに関係ない

◦ きっちりやるとかなり難しくなる
テスト技法
技法をつかう目的

全部を入力するわけにはいかない
◦ 三角形の入力
100 × 100 × 100 = 100万パターン
◦ 現実的に無理、省略しよう
どう省略する?

省略した入力パターンで
バグをだしてはいけない!

バグのありそうなところだけを
もれなくテストする
技法を使って
もれなく・効率的に
テスト技法の種類

ブラックボックステスト
◦
◦
◦
◦
同値分割
境界値分析
デシジョンテーブル
原因結果グラフ
今回はこれだけ
残りは次回
ホワイトボックステスト
 モンキーテスト

ブラックボックステスト
ブラックボックステストとは
ブラックボックス = 中が見えない
 箱の中のロジックは考慮しない

◦ 入力と出力のみで判断
出力
入力
中で何をしているか分からないけど
期待通りの動きをすればOK
同値分割
同値分割
入力値を意味ごとに分ける
 それぞれの代表値でテスト

もれなく ⇒ 意味別に全部網羅
効率的に ⇒ 代表値だけ
英字のみ受けつける
有効な値
無効な値
a b c d e f……
……V W X Y Z
!#$%&()?/
@ * ¥ { } ……
代表値「a」
代表値「@」
同値分割の例

入力フォーム:フリガナ
◦ 全角カナ・半角カナともにOK
◦ それ以外はNG
有効な値
無効な値
アイウ……ワヲン
ガギグ……ブベボ
パピプペポ
ア イ ウ …… ワ ヲ ン
ガギグ…… ブベボ
パピプペポ
あいう……
亜意卯……
! # $ % & ……
さらに分割可能
全角・半角・ひらがな・漢字・記号
どこまで分割する?

「動作が変わらない」値に分類
◦ 仕様上、変わらない
◦ 経験上、変わらない
 ひらがなと漢字を分割するかどうか
 XSSを考えると < などは他の記号とは別
 セキュリティ関係は別テストに分ける?

最終的には工数と重要度を考えて判断
どれを代表値にする?

バグが出やすそうなもの
◦ 経験上出やすい:「ソ」とか
◦ 理論上出やすい:境界値分析(これから説明します)

よく使われる値
◦ 真ん中ぐらいの値とか
境界値分析
境界値分析

処理の境目にバグはひそみやすい
◦ for文で丌等号を間違えるとか
// 1~100までのfizzbuzz
for ($i = 1; $i < 100; $i++) {
if ($i % 15 == 0) {
echo 'fizzbuzz ';
} elseif ($i % 3 == 0) {
echo 'fizz ';
} elseif ($i % 5 == 0) {
echo 'buzz ';
} else {
echo $i;
}
}
あれ?
境目をテスト!
境界値分析の例

ページャを考えてみる
◦ 1ページに5件まで表示
◦ 6件以上のときは目次を表示
1ページだけ
2ページ以上
<< 1 2 3 >>
・チリチリ
・カリガリ
・gooz
・チリチリ
・カリガリ
・gooz
・ゴールドラッシュ
・つけ麺大臣
<< 1 2 3 >>
目次の表示をテスト

同値分割
◦ 目次が表示されない:0~5件
◦ 目次が表示される :6~∞件

5件と6件で動作が変わる

「5件」と「6件」が境界値
「0」例外的な値

「0」はバグが出やすい
⇒常にテストすべき
◦ 数字の「0」
◦ 入力が「0件」
◦ (PHP)null、空文字列、falseとも関係
最低限これだけはしたい

0件表示
◦ データがなくてもエラーにならないこと

5件表示
◦ ページいっぱいに表示
◦ 目次は表示されない

「0」は
常にテスト対象
6件表示
◦ 1件のみ表示
◦ 目次が表示される
動作が変わるポイ
ントをテスト
(ほか、目次の表示形式に関するテストなどが必要になる)
「1件のみ表示」は?
「1件」も境界値だけどやらないの?
 「5件表示」とほぼ同じテストになる

◦ 無駄ではないけど重要度がやや低め
1件のみ
・チリチリ
5件
・チリチリ
・カリガリ
・gooz
・ゴールドラッシュ
・つけ麺大臣
今日のまとめ

テストの目的とは
◦ バグ出し・品質保証
◦ 品質保証したい対象ごとにテストがある

演習問題
◦ きっちりやるのは結構大変

テスト技法
◦ 同値分割
◦ 境界値分析
ご清聴ありがとうございました
Fly UP