ソフトウェアテストを学ぶ その1.ソフトウェアテストって何なのさ?
はじめまして。左投げ右打ちのふっくら太郎です。
本記事は、「極私的ソフトウェアテスト」の記念すべき初投稿記事ですので、簡単に自己紹介と本ブログについて説明したいと思います。
自己紹介 (読まなくても良いYo!)
私は関西のとある「神戸」+「組み込み」な会社でテストエンジニアをしてます。
テストの管理業務や、雑用、いえ、PMO (Project Management Office)をしてます。
エディーマーフィーと北大路欣也に良く似ているナイスガイです。
さて、「極私的ソフトウェアテスト」ですが、
- テストエンジニアになったのは良いが、右も左も分からんぞ!コノヤロー!
- 開発者になったのは良いが、単体テスト何ぞ分からんぞ!コノヤロー!
- 俺orあたいは学生だが、ソフトウェアテストに興味があるんだ!コノヤロー!
な若いエンジニア(または可哀想なシニアエンジニア)、学生さんに向けて、ソフトウェアテストに関するあれこれを扱っていく予定です。
空前絶後の超絶孤高の大企業。マネーを愛し、マネーに愛された開発会社に所属している開発者・テストエンジニアは、ソフトウェアテストについて社内でしっかりと教育を受けることができます。しかし、中々、そのような恵まれた環境下でソフトウェアテストについて学べる機会は多くありません。
そんなこんなで、将来を担う迷える若いエンジニア、学生のため、少しでもお役に立てるように老体に鞭を入れ、本ブログを立ち上げた次第です。
基本的に世の中に出ている名著に頼りつつ、タイトルにある通り、ちょくちょく私的な意見を挟んでいきます。
但し、昆虫なみの文章力と読解力しかないので、読んでて良くわからないこと、間違っていることが多々出てくると思いますので、ご指摘頂ければと思います。
また、記事の最後に参考にした名著の紹介をしていますので、ぜひ読んで頂ければと思います。
以上、自己紹介&ブログの紹介でした。
では、本編です。
最初のお題です。
まず、ソフトウェアテストってそもそも何なのさ?について勉強したいと思います。
世間一般では、
ソフトウェアテスト = バグを見つけるための活動
ってイメージで捉えられていることが多いですが、本当にそれだけなのでしょうか?
ソフトウェアテストはバグを見つけること以外にも様々な重要な役割を持っています。
今回はそれについて説明したいと思います。
ソフトウェアテストで行う作業
ある特定の条件下で、ソフトウェアを動かして期待通り動作することを確認する作業。
-
ある特定の条件
= テスト項目
-
期待通り
= 要求仕様、外部仕様、内部仕様に書かれている通り動作すること
-
確認する作業
= 動作結果を観察、記録して評価すること
ソフトウェアテストは、要求仕様、外部仕様、内部仕様に従いソフトウェアが作られていることを証明する作業です。場当たり的に行うのではなく、試験条件、期待動作、確認方法を明確にした上で実施しなければなりません。
ソフトウェアテストの目的
品質の高いソフトウェアを作るために、ソフトウェアの品質レベルの計測、問題の検出を行い、分析、改善を行う活動。
- ソフトウェアが動作することを示すこと
= 要求仕様、外部仕様、内部仕様通りソフトウェアが動作することを確認する
- ソフトウェアが動かないことを示すこと
= 欠陥を見つけて、ソフトウェアに問題があることを示す
- ソフトウェアの品質レベルを示すこと
= ソフトウェアの品質を客観的に判断できるように、検出した欠陥や故障を
分析・計測して、定量的に示す
[品質を計測するための方法]
・テストカバレッジ(テスト網羅率)
・テスト消化件数と不具合発生件数
・性能試験の結果(応答時間やスループットなどの性能に関するデータ)
- 欠陥の作り込みを防止すること
= 欠陥や故障の分析結果を、開発プロセスに取り込み、欠陥の作り込みを防止
する
[欠陥・故障の分析結果をどの様にフィードバックする?]
・要件定義、外部設計、内部設計、コードレビューの内容を改善
・開発担当者の教育、情報展開
ソフトウェアテストを通じて、各種仕様通り動作することの確認と、欠陥の検出を行い、ソフトウェアの品質を計測します。
ソフトウェア品質の計測は、客観的に品質を評価、判断できるように指標、計測方法を決めた上で実施します。
計測したソフトウェア品質情報を分析し、今後のソフトウェア開発に生かせるよう、開発プロセスを改善し、欠陥の作り込みを防止します。
ソフトウェアテストの必要性
ソフトウェアテストを行わないとソフトウェアは期待通り動作せず、ユーザーに以下のような不都合を与える。よって、ソフトウェアテストは必要。
- 経済的損失
= 欠陥があるソフトウェアの修正、再テスト等にかかるコスト
= クレーム受付や、製品回収等のサポートコスト
= ソフトウェアを使用しているユーザーの損失への補償
- 時間の消費
= ソフトウェアの修正に伴うスケジュール変更、他作業への影響
= 開発担当者の労務時間増加
- 信用の失墜
= 品質低下による競合製品、メーカーとの競争力低下
= ブランドイメージの低下
- 障害や死亡事故
= ソフトウェアの欠陥によるインフラ障害や死亡事故
ソフトウェアが市場にリリースされる前にソフトウェアテストを行い、欠陥を検出し、修正することで、様々な不都合(経済的損失、時間の消費、信用の失墜、障害や死亡事故)が発生するリスクを軽減することができます。
まとめ
「ソフトウェアテストで行う活動」、「目的」、「必要性」の3つの視点からソフトウェアテストを掘り下げることで・・・
- ソフトウェアテストは所定の手続き、ルールに基づき行う活動
- ソフトウェアテストの目的は、「テストを行うこと」では無く、「ソフトウェアの品質を計測し、高めること」
- ユーザーがソフトウェアを使用する際に、様々な不都合(経済的損失、時間の消費、信用の失墜、障害や死亡事故)が発生するリスクを軽減するため、ソフトウェアテストは必要
ということが分かりました。
これら活動を実現、成功させるためには、プロジェクト全体の品質保証活動という範囲で、テスト担当者だけでは無く、開発者、ステークホルダーが一丸となりソフトウェアテストについて考えなければなりません。
[参考]
ソフトウェアテスト教科書 JSTQB Foundation 第3版
- 作者: 大西建児,勝亦匡秀,佐々木方規,鈴木三紀夫,中野直樹,町田欣史,湯本剛,吉澤智美
- 出版社/メーカー: 翔泳社
- 発売日: 2011/11/12
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 85回
- この商品を含むブログ (12件) を見る