40 likes | 126 Views
修正履歴 を用いたデバッグ / テスト支援システム 塩塚 大 鵜林 尚靖 (九州工業大学). ②類似したエラーを参照したい. テストの作成手 順を参考にしたい. ③過去の修正履歴 を 参照したい. アプローチ デバッグ関心事グラフ( DCG )の提案. 上記の関心事をグラフで表現し,TDDの過程で対話的にグラフを作成,活用. DCGは関心事グラフの概念をTDDに応用..
E N D
修正履歴を用いたデバッグ/テスト支援システム塩塚 大 鵜林 尚靖 (九州工業大学) ②類似したエラーを参照したい テストの作成手 順を参考にしたい ③過去の修正履歴を参照したい • アプローチ • デバッグ関心事グラフ(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. • 研究目的 • テスト駆動開発(TDD)の際に発生する関心事(修正履歴,修正理由,参照したドキュメント)の蓄積と再利用.
デバッグ関心事グラフ(DCG) TDDプロセス テスト実行 テスト失敗 テスト再実行 テスト成功 テスト作成 コード修正 [蓄積]実行結果 実行時間 [蓄積]エラー情報 失敗回数 [蓄積]テスト情報 [蓄積]実行回数 実行時間 [蓄積]成功回数 [蓄積]差分情報 DCG 蓄積 開発者が対話的に作成 類似したバグの修正方法を利用したい バグ修正過程を登録したい テスト実行情報 実行結果 実行回数 バグ修正の DCGの作成 類似したバグ修正 のDCGの利用 テストプログラム テストケース プログラム ・修正理由 ・修正履歴 ・参照したドキュメント ・エラー情報,実行回数 ・修正理由の確認 ・履歴からの修正 クラス リポジトリ
DCGの作成 DCG作成のプロセス DCG名 TDD insertメソッドのバグ修正 a) テスト作成/実行/失敗 b) コード修正 c) テスト再実行/成功 ① 空のDCGの作成 ② insertメソッド(Ver. 0.1)の追加 ③ testInsertテストの追加 ④ insertメソッド(Ver. 0.2)の追加 ⑤ 修正理由の追加 ⑥ 修正履歴の追加 ⑦ 参照したドキュメントの追加 DCG DCG作成の動機 ・コンパイラを開発中. ・insertメソッド(AST上に式を 挿入)を作成. ・testInsertテストで失敗. ・バグ修正過程を記録したい. DCG ① adds to リポジトリ insertのバグ修正(ルート) adds to looks ③ ⑤ testInsert 修正理由 adds to a) b, c) succeeds looks fails ⑥ looks ④ ② ⑦ 修正履歴 insert(Ver. 0.1) insert(Ver. 0.2) 参照したドキュメント ① ⑦ ② ⑤ (Ver0.1) ④ (Ver0.2) ⑥ ③ 追加 IDE上での作成イメージ
DCGの利用と成長 DCG利用と成長のプロセス 新規DCG名 TDD replaceメソッドのバグ修正 a) テスト作成/実行/失敗 b) コード修正 c) テスト再実行/成功 ⑦ replaceメソッド(Ver. 0.2) の追加 ⑧ 修正理由の共有 ⑨ 修正履歴の追加 ④ 「insertメソッドのバグ 修正」DCGの参照 ⑤ 修正理由の確認 ⑥ 修正履歴の取出しと 修正方法の決定 ① 空のDCGの作成 ② replaceeメソッド(Ver. 0.1) の追加 ③ testReplaceテストの追加 DCG利用の動機 DCG ・testReplaceテストで失敗. ・replaceメソッドとinsertメソッド は機能上似ている. ・「insertメソッドのバグ修正」 DCGを再利用したい. ・replaceメソッドのバグ修正 過程も記録したい. DCG リポジトリ ① adds to replaceのバグ修正(ルート) adds to ③ testReplace adds to looks succeeds a) ⑦ fails b, c) ⑨ looks ② looks 修正履歴 replace(Ver. 0.2) replace(Ver. 0.1) ⑧ ④ adds to looks 修正理由 adds to insertのバグ修正 testInsert ⑤ adds to succeeds fails looks looks 修正履歴 insert(Ver. 0.1) insert(Ver. 0.2) 参照したドキュメント ⑥ 今後の予定 ・Eclipse上でJUnitと連携させシステムを完成させる.