Trainocate Japan, Ltd.

Win Win Windows
ホーム > Win Win Windows > .NET Framework ; システム開発 > 第51回 [開発スキル再始動特集4] 世界はそれを探索的テストと呼ぶのです

Win Win Windowsコラム
第51回 [開発スキル再始動特集4] 世界はそれを探索的テストと呼ぶのです
執筆:鈴木和久

[第36回 テスト工程を凜として粛々と乗り切るのです] と、前回の [第50回 [開発スキル再始動特集3] そのプログラムのテスト ケース、網羅されてますか?] で、テスト自動化のメリットと課題についてお話してきましたが、今回は自動化できないテストについて取り上げます。


■あらゆる可能性を排除しない


週末の夜に某テレビ局で放映されている「病名推理エンターテインメント番組」を時々見ています。経験豊富な総合診療医が過去に実際に経験した症例中、病名特定の難易度が高かったケースを題材に、3 人の研修医がその診療過程を疑似体験しながら病名特定に挑むという内容です。
問診、触診などの基礎的な診察プロセスに始まり、病因の仮説を立てそれを検証する検査を実施し、その検査結果から次の仮説を組み立てるということを繰り返しながら診療データを積み重ねていくのですが、そのデータ単体ではミスリードしてしまいそうなものも多く含まれます。「診察プロセス中に、あらゆる可能性を排除しないことが結局は近道」であり可能性の大小に関わらず丹念に「点」としてのデータを収集し「線」として繋げていくことが重要だと気づかされます。もちろん、人命が関わることなので、対応のスピードもとても重要です。


■原因不明のエラーは「探索的テスト」で対処


ソフトウェア開発の世界でも「原因不明のエラー」に遭遇することがあります。

原因を特定するために、まずは対象ソフトウェアを実行しエラーの状況を再現させようと試行錯誤するのですが、これが容易ではないケースが少なからずあります。「原因不明のエラー」が発生するのはテスト工程の後期から運用開始後のタイミングであり、その段階のソフトウェアは予め想定されるテスト ケースに基づくテストによって、完成度が高くなっているため簡単にはエラーが発生しないはずだからです。
この厄介なエラー状況を再現するためには、前述の総合診療医のチームと同じ作業が必要になります。エラー原因としての仮説を立てその仮説を検証する新たなテストを実行し、そのテスト結果をもとに新たな仮説を立てることを繰り返しながら核心に迫っていく訳です。ここで行われるテストは、予め準備されたテスト ケースには無い、言わばその場の思い付きのものであるため過去の経験を活かした戦略的な試行錯誤が重要になります。このようなテスト手法は「探索的テスト(Exploratory Testing)」と呼ばれます。


■「チーム」で一丸となって対応するために


Visual Studio と Team Foundation Server を組み合わせれば、探索的テストを効率化することができます。Microsoft テスト マネージャーというツールから探索的テスト セッションを開始すると、テスト ランナーと呼ばれる機能がテスト中にアプリケーションに対して行った GUI 操作の手順を漏らさず記録してくれます。また目的のエラーが再現できた時に、その場で障害発生報告書(チケット) を発行することができます。このチケットは「バグ作業項目」と呼ばれエラーを再現させた操作手順とエラー発生時のイベント ログなどの基礎情報、エラー画面のスクリーン ショットなどがアタッチされます。エラー再現手順を含め、ほとんどの情報が自動的に収集されバグ作業項目にアタッチされますので、作業記録としてのエビデンスの取得漏れを防ぐことができ、後続作業を担当するチーム メンバーの作業迅速化を強力にサポートします。
診療データのすべてが「電子カルテ」に集約され、病因を特定するプロセスに関わる複数の医師だけでなく原因判明後の治療にあたるすべての医師にも共有されるように、「バグ作業項目」は複数の運用担当者、アーキテクト、プログラマーなどのチーム メンバーによってプログラム修正などの対策が完了するまでアクティブな状態で共有されます。


Ticket.jpg


■探索的テスト結果からのテスト ケースの新規作成


「原因不明のエラー」はデータ入出力の微妙なタイミングに起因するものだったり、特定リソースの使用に関して、しきい値を超える状況がトリガーとなって発生するなど様々な理由により発生します。探索的テストセッション中に自動記録されたエラーの再現手順は、新たなテスト ケースのテスト ステップとして再利用することができます。このテスト ケースは障害対策後の確認テストとして使えるだけでなく、想定内のテスト ケースとして次回以降の開発作業で有効活用されることになるでしょう。テスト ランナーには「バグ作業項目」作成と同様に「テスト ケース」を新規作成する機能が含まれますので、バグ作業項目作成後すぐにテスト ケースを作成されると良いでしょう


探索的テストを含む戦略的なテスト方法と、チーム開発の活性化に関連する研修として以下をご紹介します。

その他、システム開発系の情報は「Visual Studioによるアプリケーション開発とライフサイクル管理(ALM) 」でご紹介しています。ぜひご覧ください。

[.NET Frameworkシステム開発][2014年9月23日配信]

 

※Microsoft、Windowsは、米国Microsoft社の登録商標です。
※Oracleは、米国オラクル・コーポレーションおよびその子会社、関連会社の米国およびその他の国における登録商標です。
※PMI、PMP、PMBOKは、プロジェクトマネジメント協会(Project Management Institute, Inc.)の登録商標です。
※ITIL®はAXELOS Limited の登録商標です。
※American Management Association は、米国アメリカン マネジメント アソシエーションの登録商標です。
※BOOT CAMP、NEW TRAIN、Glovalueはトレノケート株式会社の登録商標です。
※その他このサイトに掲載された社名、製品名は、各社の商標、または登録商標です。

© Trainocate Japan, Ltd. 2008-2017, All Rights Reserved.
  • Get ADOBE READER