修正履歴を用いたデバッグ/テスト支援システム 塩塚 大 鵜林 尚靖 (九州工業大学) • 研究目的 – テスト駆動開発(TDD)の際に発生する関心事(修正履歴,修正理由, 参照したドキュメント)の蓄積と再利用. ① テストの作成手 順を参考にしたい • アプローチ ②類似したエラー を参照したい ③過去の修正履 歴を参照したい – デバッグ関心事グラフ(DCG)の提案. – 上記の関心事をグラフで表現し,TDDの過程で対話的にグラフを作 成,活用. – DCGは関心事グラフの概念をTDDに応用. [1] Martin P. Robillard, Gail C. Murphy, “Concern Graphs: Finding and Describing Concerns Using Structural Program Dependencies, “ In Proc. of ICSE’02, pp.406-416. [2] Martin P. Robillard, Gail C. Murphy, “ FEAT A Tool for Locating, Describing, and Analyzing Concerns in Source Code,” In Proc. of ICSE’03, pp.822-823. [3] Martin P. Robillard, “Automatic generation of suggestions for program investigation,” In Proc. of ESEC/FSE’05, pp.11-20. 1 デバッグ関心事グラフ(DCG) TDDプロセス テスト実行 テスト作成 [蓄積]テスト情報 [蓄積]実行結果 実行時間 テスト失敗 コード修正 [蓄積]エラー情報 失敗回数 [蓄積]差分情報 [蓄積]実行回数 実行時間 DCG バグ修正の DCGの作成 テスト成功 [蓄積]成功回数 蓄積 開発者が対話的に作成 バグ修正過程を 登録したい テスト再実行 類似したバグの修正 方法を利用したい テスト実行情報 実行回数 実行結果 類似したバグ修正 のDCGの利用 テストプログラム テストケース プログラム ・修正理由 ・修正履歴 ・参照したドキュメント クラス ・エラー情報,実行回数 ・修正理由の確認 ・履歴からの修正 リポジトリ 2 DCGの作成 DCG作成のプロセス DCG名 insertメソッドのバグ修正 DCG作成の動機 ・コンパイラを開発中. ・insertメソッド(AST上に式を 挿入)を作成. ・testInsertテストで失敗. ・バグ修正過程を記録したい. TDD DCG a) テスト作成/実行/失敗 ① insertのバグ 修正(ルート) looks looks ⑥ 説明 adds to DCGに要素(クラス,メソッド, テスト,フィールド)を追加. looks DCGにコメント,ドキュメントな どのメモを追加. succeeds 成功したバージョンのメソッド を取得. fails 失敗したバージョンのメソッド を取得. error 実行時にエラーが発生した バージョンのメソッドを取得. calls 呼び出しているメソッドを取得. ④ insertメソッド(Ver. 0.2)の追加 ⑤ 修正理由の追加 ⑥ 修正履歴の追加 ⑦ 参照したドキュメントの追加 adds to ③ リポジトリ adds to testInsert 修正理由 項目名 c) テスト再実行/成功 ① 空のDCGの作成 ② insertメソッド(Ver. 0.1)の追加 ③ testInsertテストの追加 DCG ⑤ b) コード修正 ⑦ 修正履歴 looks adds to a) ② 参照したド キュメント fails insert(Ver. 0.1) b, c) succeeds ④ insert(Ver. 0.2) ① ⑤ ⑥ ⑦ ② ④ ③ (Ver0.1) (Ver0.2) IDE上での作成イメージ 追加 3 DCGの利用と成長 DCG利用と成長のプロセス 新規DCG名 replaceメソッドのバグ修正 DCG利用の動機 ・testReplaceテストで失敗. ・replaceメソッドとinsertメソッド は機能上似ている. ・「insertメソッドのバグ修正」 DCGを再利用したい. ・replaceメソッドのバグ修正 過程も記録したい. looks TDD a) テスト作成/実行/失敗 DCG ① 空のDCGの作成 ② replaceeメソッド(Ver. 0.1) の追加 ③ testReplaceテストの追加 ① リポジトリ ③ a) looks 修正履歴 testReplace fails ② ⑤ looks 参照したド キュメント succeeds ⑦ adds to adds to testInsert adds to looks b, c) replace(Ver. 0.2) replace(Ver. 0.1) ④ insertのバグ修正 ⑥ adds to adds to ⑨ 修正履歴 adds to replaceのバグ 修正(ルート) looks looks c) テスト再実行/成功 ④ 「insertメソッドのバグ ⑦ replaceメソッド(Ver. 0.2) の追加 修正」DCGの参照 ⑧ 修正理由の共有 ⑤ 修正理由の確認 ⑥ 修正履歴の取出しと ⑨ 修正履歴の追加 修正方法の決定 DCG ⑧ 修正理由 b) コード修正 fails insert(Ver. 0.1) succeeds insert(Ver. 0.2) 今後の予定 ・Eclipse上でJUnitと連携させシステムを完成させる. 4
© Copyright 2025 ExpyDoc