June 17, 2007

知識ゼロから学ぶ ソフトウェアテスト


知識ゼロから学ぶ ソフトウェアテスト

キーワード:
 高橋寿一、ソフトウェテスト、基本、技法、境界値分析
著者はマイクロソフト、ソニー、SAPなどを渡り歩いてきたソフトウェアテストの専門家。テストの基本的なことが書いてある。以下のような内容となっている。
  1. テストをはじめる前に(「バグ」とは何かを考える)
  2. ソフトウェアテストの基本(ホワイトボックステスト)
  3. エンジニアが最もよく使う手法(ブラックボックステスト)
  4. ソフトウェアの性能をチェックする(システムテスト)
  5. 攻撃に耐えうるソフトウェアの構築(セキュリティテスト)
  6. その他のテスト手法(スモークテストと回帰テスト)
  7. ソフトウェアテスト運用の基本(テスト成功の方程式)
  8. ソフトウェア品質管理の基本(ソフトウェア品質のメトリックス)
  9. テストの自動化という悪魔(なぜ自動化は失敗するのか)
このように基本的なことが網羅的に書いてある。全て説明するのは冗長なので、気になった部分を絞って解説。

まず1章で、そもそもソフトウェアにはバグは絶対潜んでいるものであり、全てのバグを取り除くことは不可能であることを認識せよとある。そして先人のテストの格言のごとく、著者なりの格言が示されている。
ソフトウェアテストで重要なのは、どの部分に
バグが出やすいのか、そこにどのようなテスト手法を
適用すれば十分な品質が得られるかを知ることである。
―― by Juichi Takahashi
(pp.8)
そしてソフトウェアテスト工程はプログラミング工程ど同等に困難で創造的な仕事であるとあり、それを素人程度のスキルの低い新人にやらせることはそのソフトウェアの品質や企業の良識を疑われることになるとある。確かにそのとおりだよなと思う。単純にテスト結果をPass、Failと記録するだけなら新人でもできるが、バグを網羅的に発見できるテストケースを書くのはかなり困難だよなと最近実体験から思う。

3章では、エンジニアが最も使う手法であるブラックボックステストがあるが、これは『プログラムを一種のブラックボックスと見立て、様々な入力を行うことによってソースコードを利用せず(見ずに)にテストを行う方法です。(pp.46)』と示されている。そのブラックボックステストの基本に同値分割法と境界値分析法があるようだ。特に参考になったのは同値分割法で、どのようにテストケースを減らすべきかという部分。A,Bという変数のとりうる入力値の範囲を座標で示し、その中で重複している部分は除くことができると示されている。ただ、その省略されたテストケースでバグを発生させてはいけないとあるのでもっともだと思った。

また、分岐などの境界になる値を調べる境界値分析法では、0は常にバグになりやすい数であるので、境界であるか否かとは無関係にチェックするべきだとあり、参考になった。

5章で示されている、セキュリティテストとはハッキングなどに耐えうるシステムをテストすることであるが、その手法がまだまったく確立されていないのが現状なようだ。そもそも従来のソフトウェアテストはプログラムミスによるバグの障害を防ぐことを目的とされた方法論だったのに対し、セキュリティテストは従来のテスト手法から逸脱、もしくは著しく乖離せざるを得ないからのようだ。この章のコラムにセキュリティテストができる人材を確保するのは非常に困難であるとある。なぜなら、一般的なテストスキルのほかに、暗号化、セキュリティシステム、最低限のアセンブラの知識が必要になるからのようだ。もし社内にセキュリティに非常に関心を持ち、かつテストをすることも好きな人がいたらどんなに高収入を払っても辞めないようにするべきだとある。なるほどなぁと思った。

他にも面白かったコラムとして、『テストの才能のある人とは』というものがあった。テストの分野において才能のある人は普通の人の10倍の数のバグを見つけられるようで、そういう人をテスト担当者として雇うべきだとある。また、そのような人は見つけるのが困難で、学歴や頭の切れとは全然関係ないようだ。なるほどなぁと思った。テストの才能と言うと、あらゆる動作確認を網羅的にかつ地道にこなせるかどうかじゃないかと思う。そういうのを楽しめるかどうかが分かれ目なのではないかと思う。もしくは他人のあら捜しが好きな人とかwww。そうなったら、テスト担当者は開発者からの嫌われ役だな。

ソフトウェアテストの基本は、計画をきちんと立て、スケジュールを守り、テストケースを的確に実行するだけだとある。それによりバグのない製品ができるようだ。その基本的なことは、マイクロソフト、ソニー、SAPでもそんなに変わらないとある。そのとおりだよなと思う反面、テスト工程をしっかり重要視しているかどうかでその差が出るのではないかと思った。

テストに関する基本的なことが学べてよかった。著者はソフトウェアテストの専門家で博士号を持っているが、研究一筋ということではなく現場のプロジェクトでの知見が基に書かれているので、信頼性が高いと思われる。単純なテスト手法の解説だけではなく、テスト時の運用におけるコストに関することまで網羅されているので参考になった。

また、著者はテストマネージメントは基本が大事というよりも広範な知識が必要だと主張しており、以下の2冊をお薦め本として挙げている。この二つもチェックしようと思った。
基本から学ぶソフトウェアテスト―テストの「プロ」を目指す人のために
基本から学ぶテストプロセス管理―コンピュータシステムのテストを成功させるために

読むべき人:
  • ソフトウェアテストについて基礎から学びたい人
  • 同値分割法、境界値分析法について知りたい人
  • テストケースが思うように書けない人
Amazon.co.jpで『ソフトウェアテスト』の他の本を見る



トラックバックURL

トラックバック一覧

基本から学ぶソフトウェアテスト?テストの「プロ」を目指す人のために 赤線でいっぱいになった。 障害報告の形式とか、即実践N..

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星