2014年11月9日日曜日

ソフトウェアテスト研修に参加してきました

新卒の会社でweb開発に携わるようになって4か月。

先月、ソフトウェアテスト研修というものに参加する機会があったので、習ったことをまとめておこうと思います。恥ずかしながら、「テストの一般原則」も十分に知りませんでした。普段、テストの手法や、その背後にある考え方について、体系立てて勉強する機会は多くなかったので、後で見返してさらに勉強できる…といいですが。笑

ちなみに、内容はこの参考図書に沿ってるということなので、詳細が気になったら確認してみようと思います。

【参考図書/リンク】
・『いちばんやさしいソフトウェアテストの本』


・『【この1冊でよくわかる】ソフトウェアテストの教科書 - 品質を決定づけるテスト工程の基本と実践』石原一宏、田中英和 著

・Qbook(キューブック) - ソフトウェアに関する品質向上のトータルサポートサイト 


研修でのキーメッセージはシンプルで、

「品質はユーザの満足度である」「V字モデルの初期段階でなるべく多くのバグを取り除こう」「完璧な文書化、自動化を目指すよりも、まずできる範囲で改善を始める」ということでした。

V字モデルの各段階で1回レビュー(上流での設計レビュー、下流でのテスト)をしたときに、上流と下流ではバグが取り除かれる割合がかなり違うこと、チーム内の役割に関わらず、全てのメンバーが品質作りに貢献できること、手書きでもいいから制御フロー図を書いておくこと、は改めて認識したいと思います。


【ソフトウェアの品質】
・"品質" = "ユーザの満足度"
・基本要求、変動要求、潜在要求
ある製品に対するユーザの要求を、この3つに分類して整理することで、不要な機能を追加したり、逆に必要不可欠な機能で不具合を起こしたりして品質を下げてしまうことを防ぐ。

※ 要求の中身は、当然、時代によって変わる可能性がある。


例: テレビ
基本要求…その製品が最低限満たしているべき要求→画面が表示されること。
変動要求…ユーザによって、満たされていて欲しいかどうかが変わる要求→数字ボタンでチャンネルを変えられること(矢印ボタンだけで十分な人もいるかもしれない)。BSが見れること。
潜在要求…もし満たされていたら非常に満足度の高い要求→2つ以上の番組を同時に表示できる

・Verification(検証)とValidation(妥当性評価)という2つの視点
「検証」は「製品が仕様書を実現しているか」という開発者の視点、「妥当性評価」は「製品がユーザの要求を満たしているかどうか」というユーザの視点から、ソフトウェア製品を検討する。

・V字モデル
(上流)要件定義、基本設計、詳細設計
(下流)単体テスト、結合テスト、システムテスト
からなる、IT製品開発手法の一つ。(図は http://ja.m.wikipedia.org/wiki/Vモデル を参照)
・1:10:100の法則
数字は、V字モデルの各段階でバグを取り除くのに必要なコストの割合を表す。この数字から、上流過程でバグを取り除くことがいかに大事か分かる。

・静的テスト/ 動的テスト
上流過程での設計レビュー/ 下流過程でのテストがそれぞれ対応する。


【ブラックボックステスト】
仕様に基づいて、製品の振る舞いを確かめるテスト。
・境界値分析
境界値とは、出力が変わる入力値のこと。
例: 19 を入力すると「未成年」が出力され、20を入力すると「成人」が出力される。

・同値クラス分割
同値クラスは、出力が同じになる入力値の集合。
例: 0〜19、20〜はそれぞれ同値クラス。
→それぞれの同値クラスから、代表値を選んでテストの入力値とする。

・状態遷移テスト
状態遷移図: システムが、複数の状態をどのように遷移するのかを表現した図。
→仕様からテストに必要な情報の抽出ができる
→仕様を図として表現できるので、全体像の把握が容易
状態遷移表: 状態とイベントをマトリクスで表現したもの。
→状態とイベントの組み合わせが過不足ないか確認しやすい
→ある状態から別の状態への無効なパスが明らかになる

・回帰テスト、スモークテスト、簡略テスト、構成テスト、非機能テスト


【ホワイトボックステスト】
プログラムの情報処理フローに基づいて振る舞いを確かめるテスト。

・モジュールの相関や、ソフトウェアの内部構造を図に残すことは重要
・coverage(網羅率): システム全体のパスをどの程度カバーしたか
C0カバレッジ (ステートメントカバレッジ): モジュール中の全てのステートメントが、テスト中に少なくとも1回実行されている。
C1カバレッジ (デシジョンカバレッジ): 全ての分岐(例: if文)が、テスト中に少なくとも1回実行されている。
C2カバレッジ (複合コンディションカバレッジ): 条件文の全ての真/偽の組み合わせが少なくとも1回実行されている。

・制御フローテスト
プログラムを基に制御フローグラフを作成する静的テスト。
・データフローテスト
(静的) 机上で 制御フローグラフを使用し、定義→使用→消滅の流れが正しいかどうか判断する。
(動的) プログラムにデータを入力し、実行して出力結果の整合性を判断する。

・サイクロマチック数 C 
プログラムがどの程度複雑かを表す
制御フロー図において、C = (エッジの数) - (ノードの数) + 2
Cは、直列の組み合わせにおいて可能な、モジュールを通過する全てのパスを生成できる、基礎パスの最小数。→C1カバレッジの最小テストケース数と一致。



0 件のコメント:

コメントを投稿