レポート

マイクロソフトのテスト環境はどう進化したか?-ソフトウェアテストシンポジウム 2012基調講演レポート

この記事を読むのに必要な時間:およそ 3 分

不具合は“より上流”で対処する

次にRollison氏はMicrosoftのテスト戦略について紹介しました。まず日常行っているブラックボックステストとして,探索的テスト,定義済みテストケース,GUI/APIの自動テスト,それにからめ,ユーザをリサーチして典型的な使い方のシナリオを作成し,自動テストに反映させているそうです。

これらに加えて,⁠ドッグフーディング」⁠セルフホスティング」と呼ばれる特徴的なプロセスがあります。ドッグフーディングとは,まさにドッグフードを食べるように,普通は食べないようなまずいものを毎日食べること,つまり毎日作られる最新のビルドを自分のマシンに入れて使ってみるというものです。⁠責任ある者として,ユーザの痛みを感じるため,時にはメールやメッセージが動かないようなものを使います。そうすると,どれに優先して対応すべきかが見えてくるのです」⁠Rollison氏⁠⁠。

またセルフホスティングは,同じように最新のビルド自体でテストも行うことで,Rollison氏は会社のご自身の使うマシンにWindows 8を入れ,テスト作業を行う中,何か問題が起きた際にいつでも開発チームにレポートを送ることができるようになっているそうです。

「ユーザの痛みを感じるため⁠ドッグフーディング⁠は欠かせません」

「ユーザの痛みを感じるため“ドッグフーディング”は欠かせません」

より重要なのがホワイトボックステストで,ビルド前にデベロッパと打ち合わせてコードレビューやインスペクションを行うことで,実際にプログラムを動かす前に問題点を見つけるしくみができあがっているそうです。またカバレッジを上げるテストも常に実行され,解析ツールが整っています。

そしてこれらを維持するテストサイクルについては,⁠常にテストは続いているので,サイクルをはっきりと認識するのは難しい」としながらも,どのテストを優先して行うかについては常に検討しているとのことです。振り返りも常に行っており「私は『死亡解剖』と読んでいますが(笑⁠⁠,入社以来振り返りの作業は17年間ずっと続けています」と語りました。

そうした中で,作ったものをただ大勢の人に使って(テストして)もらう方法ではテストや開発の効率は上がらないと指摘します。できた後で不具合を見つけても,手戻りが発生してより多くの時間が費やされます。先に挙げたように開発前にバグの出そうなところを予測して,防止するほうが効率は格段に上がります。そのためには欠陥予防や,より上流での不具合予測ができるエンジニアリングを確立する必要があるのです。

テスト効率を上げるための工夫

Microsoftではこうした取り組みを支援するため,各種の自動化システムやツールが日々開発されています。たとえばどのテストを行うかという優先順位を判断するのにチャーンメトリック(churn metric=前回ビルドから新たに変更/削除/追加されたコードの量)を指標としています。またゲームに特化した話では,ユーザがゲームのどこを最もプレイするか,といったデータを指標としています。こうしたツールを自動化システムと組み合わせて,効率的なテスト運用が可能となっています。

Xboxのゲームに特化されたツール。バグの発生したところまで自動的にゲームを進めてくれるもの。このツールによって重複バグの発生率が35%→7%に改善されたそうです。

Xboxのゲームに特化されたツール。バグの発生したところまで自動的にゲームを進めてくれるもの。このツールによって重複バグの発生率が35%→7%に改善されたそうです。

多くの便利なツールは社外に公開することができませんが,その知見や機能は最新のVisual Studioに反映されてきているそうです。⁠開発者だけが満足できるツールだったのが,テストエンジニアの重要性に気づいてくれたのは嬉しいですね」⁠Rollison氏⁠⁠。

また,同種の不具合,同じ部分についての別の不具合を見つけやすくするという観点から,Microsoftでは全社で同じバグトラッキングシステムを使っていると言います。バグを見つけたら必ずそのシステムに入って報告することが義務づけられています。

同じように,社内のよく見える場所に設置されたモニタに,そのとき行われているテストの結果が刻々と表示されるシステムもあります。テスターのみならず,開発に関わる全員がすぐに目を通す体制ができあがっているのです。

また,継続的な修正の一環として,よくWindowsを使っていてエラーが出た場合に表示される,Microsoftへのエラー報告のダイアログについての説明がありました。⁠送信ボタンを押すと,あなたの銀行口座番号がMicrosoftに送られるんですが…冗談です(笑⁠⁠。あれはエラー時のメモリダンプ情報を送るもので,送られた情報は同じエラーごとに⁠バケツ⁠に入れられます。バケツの項目が溢れるとバグフィクスマネージャ送られ,対応待ちとなります。ですから,直して欲しい不具合があるときは,エラー時に送信ボタンを押せばそれだけ対応が早くなるのです」⁠Rollison氏⁠⁠。

エラー報告ダイアログ

エラー報告ダイアログ

情報の選択とそのポイント

Rollison氏はまとめとして,テストを取り巻く状況の変化,それに対応する重要性を説きました。GUIの発達で,テストの複雑化にも拍車がかかっています。日々のルーチンに追われて「燃え尽きてしまう」テスターも問題になってきました。これに歯止めをかける意味でも,テストの効果を上げ効率化する『トリアージ』やより上流での不具合予測を追求する必要があります。テスターに新しい刺激を与えて,仕事が伸びている実感を持たせるためにも重要といえるでしょう。

また,自動化されたテストにより膨大なデータが集まるようになりました。これらのログや指標をすべて使うのはかえって無駄だと言います。またデータの集めすぎにも注意が必要です。ではどのような指標に注目すべきでしょうか?「現在はすべてのソフトや機器,そして開発者,顧客が連携していることを考えなければなりません。⁠コネクティッド・カルチャー』なのです。顧客がどのような組み合わせで,どういうデータを使っているのか,それを考えると,どこに注目すべきなのか,おのずとわかってくることでしょう」⁠Rollison氏⁠⁠。

著者プロフィール

小坂浩史

gihyo.jp編集部 所属。最近では電子書籍の制作にも関わる。