年間およそ300種類の製品をリリースする米Microsoft。同社のテスト部門は、9800人のテストエンジニアを抱える。年間1500万件ものバグを扱うという膨大なテストをどうさばき、いかにしてソフトウエアの品質を確保しているのか。

 米Microsoftでこれまでさまざまな製品のテストを担当し、現在はWindows Phoneチームのテスト責任者を務めるBj Rollison氏(写真)に、ソフト開発におけるテストの現状や課題、同社のテスト自動化の取り組みなどを聞いた。

(聞き手は森重 和春=日経SYSTEMS

Microsoftではどういう体制でテストを実施しているのか。

米Microsoft Principal Test Lead Bj Rollison氏
米Microsoft Principal Test Lead Bj Rollison氏
[画像のクリックで拡大表示]

 当社には、WindowsやOfficeといったポピュラーなもの以外にも多数の製品があり、年間約300種類もの製品をリリースしている。これだけの数のソフトウエアを世の中に送り出すため、9800人のテストエンジニアを抱えている。そして、継続的にテストの自動化を推進し、より効率良くテストを実施するやり方を追求している。

 自動化の推進によって、テストの効率は5年前と比べても格段に上がっている。ツールの活用やモデルベースのテストの採用などによって、より良いテスト設計、より広範なカバレッジでテストができるようになった。

テストの自動化を推進する上で重要なことは。

 より技術力の高いエンジニアの採用だ。我々はテストの自動化を推し進めるために、2003年に採用の方針を変えた。コンピュータサイエンスの知識を持つ、技術力の高いエンジニアを採用している。

 採用方針の変更に加え、「Senior IC」「Test Architect」と呼ぶポジションを用意したことも特徴だ。テスターからマネジャーになるというキャリアパスの代わりに、よりエンジニアリングにフォーカスしたシニアな立場の技術者のポジションを用意した。

そうした人材や体制の変更にはどういうメリットがあるのか。

 技術力の高いエンジニアを採用することで、自動化に多くの投資ができるようになった。コーディングまで分かるエンジニアの採用により、ホワイトボックステストも実施できるようになり、APIレベルでのテストの自動化も改善できた。

 重要なのは、問題が発生してから修正するのではなく、問題を発生させないようにすることだ。以前は、テストエンジニアと開発者の関係は良好とはいえなかったかもしれないが、現在は高い技術力を持ったテストエンジニアが開発者と緊密に連携している。開発者と一緒にソフトウエアの設計についても議論するし、テストエンジニアがバグを見つけたときに、開発者のデバッグに協力することもできる。

多くのソフト開発の現場では、テスト計画やテスト準備に大きな負担を感じている。自動化によってこの領域の負担を軽減することはできないのか。

 我々がここ数年間で実践してきた変更の一つが、利用者のシナリオ重視のテストだ。利用者のペルソナを基に、顧客が機能をどう使うのかというストーリーを考える。このストーリーの部分は自動化ができない部分だ。まずはペルソナとストーリーを描き出し、そこからエンジニアリングに持っていく。

 テストの実行部分を徹底的に自動化することで、浮いた時間を、マニュアルテストやさらなる問題発見、そしてテストのシナリオ作りに割くことができる。

テスト業務における今後の課題は。

 自動化における大きな課題は、GUIの部分だ。顧客に使いやすいソフトウエアを提供しようとすればするほど、ソフトウエアの複雑性は増し、テストの複雑性も高まっている。

 もう一つ課題として考えるべきなのは、クラウドサービスがいかにテストに影響を及ぼしているかという点だ。我々は、一つひとつの“サイロ”の中でテストをすることに慣れてしまっている。まず機能のサイロでテストをし、製品のサイロでテストをする。今後は、サイロ型のテストだけをやっていればいいわけではない。

 例えば携帯電話一つとっても、まず写真を撮って、それをSkyDriveにアップロードし、再び自宅の電子フォトフレームにダウンロードする。電子メールも使うし、ゲームもある。我々は、こうした顧客の使い方を理解してテストを実施しなければいけない。今はつながっていることがすべてだ。

 テストエンジニアがより積極的にテストに関与することも重要だ。チャレンジを続けることで、燃え尽き症候群に陥らないようにすることが大事だ。テストという仕事がただバグを見つけるものではなく、プロジェクトの成功に貢献していると我々自身が認識する必要がある。