SlideShare a Scribd company logo
1 of 29
Copyright 2018 FUJITSU LABORATORIES LTD.
バグ自動修正ツールって
本当に使えるの?
~自動デバッグ技術の現状と課題~
2018年12月14日
株式会社富士通研究所
徳本 晋
0
自己紹介
 氏名:徳本 晋(とくもと すすむ)
 所属:㈱富士通研究所 ソフトウェア研究所
早稲田大学 招聘研究員
 専門:ソフトウェア工学
 特にソフトウェアテスト、デバッグ
 最近の対外的な活動
 情報処理学会誌 2019年1月号 「特集」機械学習工学 一部記事執筆
 QA4AIコンソーシアム メンバー
 国際会議APSEC2018 SEIP track PC member / Session chair
 国際会議ICST2017 Registration chair
 ソフトウェアエンジニアリングシンポジウム2018 プログラム委員
 ソフトウェアエンジニアリングシンポジウム2017 インタラクティブ賞
 トップエスイーコンテスト2017 モデルチェッキングコンテスト優勝
Copyright 2018 FUJITSU LABORATORIES LTD.1
ソフトウェアデバッグの費用
Copyright 2018 FUJITSU LABORATORIES LTD.
34兆円/年
- Cambridge University
Research Study[2]
7兆円/年
-NIST
Survey [1]
2003 2013
1) Tassey, Gregory. "The economic impacts of
inadequate infrastructure for software testing."
National Institute of Standards and Technology,
RTI Project 7007.011 (2002).
2) http://www.prweb.com/releases/2013/1/prwe
b10298185.htm
ソフトウェア開発者は
開発時間の 50% を
バグの局所化と修正に
費やしている
6ヶ月
バグ修正の平均期間
オープンソースソフトウェア
商用ソフトウェア - Coverity® Scan Open Source
Report 2014
2
バグ自動修正技術を使うと・・・
新しいバグ
の報告
バグのトリアージ バグの割り振り バグ修正
修正確認 アップロード版
の構築
バグ自動修正ツール
手動のプロセス: 数カ月
自動修復: 数時間
従来のバグ修正プロセス新しいバグ修正プロセス
Copyright 2018 FUJITSU LABORATORIES LTD.3
それ本当なの?
Copyright 2018 FUJITSU LABORATORIES LTD.4
Copyright 2018 FUJITSU LABORATORIES LTD.
 修正パターンからパッチを探索的に生成し、
テストがすべて通るパッチを出力する
どうやってバグを見つけて直すのか?
バグ局所化
パッチ生成
パッチ検査
バグを含む
プログラム
テストスイート
(失敗含む) 正しい
パッチ
成功
失敗
バグ個所を
絞り込み
誤った
パッチ
(テスト
漏れ)
パッチ
なし
全てのパッチ
をテスト済み
プログラム
を変更
5
バグ局所化では何をやっているか?
Copyright 2018 FUJITSU LABORATORIES LTD.
バグ局所化
バグを含む
プログラム
バグ個所を
絞り込み
int mid(int x,
int y,
int z){
S1 int m = z;
S2 if (y < z)
S3 if (x < y)
S4 m = y;
S5 else if (x < z)
S6 m = y;
S7 else
S8 if (x > y)
S9 m = y;
S10 else if (x > z)
S11 m = x;
S12 return m;
}
Susp 𝑆6
=
1
1
1
1
+ 1
5
3,
3,
5
1,
2,
3
3,
2,
1
5,
5,
5
5,
3,
4
2,
1,
3
Susp.
50.0%
50.0%
62.5%
0%
71.4%
83.3%
0%
0%
0%
0%
0%
50.0%
● ● ● ● ● ●
● ● ● ● ● ●
● ● ● ●
●
● ● ●
● ●
● ●
● ●
●
●
● ● ● ● ● ●
P P P P P F
6
パッチ生成では何をやっているか?
Copyright 2018 FUJITSU LABORATORIES LTD.
パッチ生成
プログラム
を変更
変更タイプ1:ステートメントレベル
if(a==0){
exit(0);
}
foo(b);
if(a==0){
foo(b);
}
exit(0);
if(a==0){
foo(b);
exit(0);
}
foo(b);
交換
複製
削除
if(a==0){
exit(0);
}
代表的なツール:
GenProg, RSRepair
探索範囲が広いため、
探索方法に工夫が必要
変更タイプ2:テンプレートベース
if(a==0){
exit(0);
}
foo(b);
if(a==0 || b!=0){
exit(0);
}
foo(b);
代表的なツール:
Prophet, PAR
if(a!=0){
exit(0);
}
if(b!=0)
foo(b);
条件
追加
if文
追加
探索コストは低いが
直せる範囲は
テンプレート依存
7
パッチ検査では何をしているか?
Copyright 2018 FUJITSU LABORATORIES LTD.
パッチ検査
テストスイート
(失敗含む) 正しい
パッチ
成功
誤った
パッチ
(テスト
漏れ)
バグ局所化
失敗
8
Copyright 2018 FUJITSU LABORATORIES LTD.
 修正パターンからパッチを探索的に生成し、
テストがすべて通るパッチを出力する
どうやってバグを見つけて直すのか?
バグ局所化
パッチ生成
パッチ検査
バグを含む
プログラム
テストスイート
(失敗含む) 正しい
パッチ
成功
失敗
バグ個所を
絞り込み
誤った
パッチ
(テスト
漏れ)
パッチ
なし
全てのパッチ
をテスト済み
プログラム
を変更
9
Copyright 2018 FUJITSU LABORATORIES LTD.
 富士通研で定義したバグ自動修正レベル
どのようなバグが直せるのか?直せないのか?
レベ
ル
名称 定義 自動修復タ
スクの実施
システム
出力
バグの
原因箇所
バグの
再現性
正しいパッチ
であるかの判
断
0自動修復なし 開発者が全ての修復タ
スクを実施
人
ー ー ー ー
1バグ箇所特定 システムが修復箇所の
特定を実施
人+システ
ム
バグ個所
ー ー ー
2単純バグ自動
修復
システムが再現可能な
単一原因箇所バグに対
して修復パッチを生成
人+システ
ム
パッチ 単一原因箇
所バグ
再現可能 人
3複雑バグ自動
修復
システムが再現可能な
複数原因箇所バグに対
して修復パッチを生成
人+システ
ム
パッチ 複数原因箇
所バグ
再現可能 人
4高度バグ自動
修復
システムが確率的に再
現可能なバグに対して
修復パッチを生成
人+システ
ム
パッチ 単一/複数
原因箇所バ
グ
再現可能/
確率的に再
現可能
人
5完全自動修復 正しいパッチであるか
の判断までシステムが
行う
システム パッチ 単一/複数
原因箇所バ
グ
再現可能/
確率的に再
現可能
システム
直せる
直せない
10
バグ自動修正技術の現在の実力
小規模バグのみ修正可能
ただし誤った修正を行う場合もあり
•修正はされるが、他の動作への意図しない副作用が発生
主な技術的課題:パッチ探索の時間
内部でテストを繰り返し実行しながら修正を試みるため
1回のテスト実行が数分~数十分かかるプロジェクトも
少なくない
制約:修正品質がテスト品質に大きく依存
テストが不十分だと誤った修正をしてしまう
テストが自動化されていないと、そもそも利用できない
Copyright 2018 FUJITSU LABORATORIES LTD.11
直せるバグの例
 企業システムで使われているJavaプログラム(215KLOC)に
対してバグ自動修正ツールGenProgを用いて修正できた例
Copyright 2018 FUJITSU LABORATORIES LTD.
内藤他, “企業のソフトウェア開発に対する自動プログラム修正技術適用の試み,” SES2018より引用
12
直せないバグの例
• 例:メモリリーク、性能・ユーザビリティなどの問題
• 例:テストで通ってない箇所、期待値設定が不十分な場合
• 失敗テストを手掛かりに探索的にパッチを生成するため
自動テストで
検出できないバグ
• 組合せ爆発が起こるため
原因個所が複数に
またがるバグ
• 例:リソース競合、デッドロック、ライブロックなど
• パッチが正しいかはテストが通るかによって決まるため
確率的に
発生するバグ
• 例:設定ファイル、インフラ、外部ライブラリなど
対象プログラム
以外の不具合
• 例:変数宣言、メソッド定義、複雑な条件式、
修正パターン
にないバグ
Copyright 2018 FUJITSU LABORATORIES LTD.13
9月にFacebookがバグ自動修正ツールを発表
Copyright 2018 FUJITSU LABORATORIES LTD.14
一部で話題に・・・
Copyright 2018 FUJITSU LABORATORIES LTD.15
SapFixはどうやってバグを直しているか?
Copyright 2018 FUJITSU LABORATORIES LTD.
修正テンプレートから
パッチを生成する
バグ混入前の版に戻すバグ混入前の版に戻す 単純な変更を
網羅的に試す
(わかる範囲では)特別なことはやっていないが割り切りがよい
・直すよりも元に戻すことを優先(Revertをする)
・修正対象は実行時エラーに絞っている
(既発表ツール)
遺伝的アルゴリズム
を用いたファジング
16
富士通でもバグ自動修正技術やってます!
Copyright 2018 FUJITSU LABORATORIES LTD.17
ELIXIR: AIを活用したバグ自動修正ツール
Copyright 2018 FUJITSU LABORATORIES LTD.
バグを含む
プログラム
(Java 7 or 8
& Maven)
バグ
修正済み
プログラム
テスト失敗
(JUnit)
ELIXIR
ソフトウェア開発者
ビッグコード
テスト成功
過去の修正履歴から学習する
ことで正しい修正方法を発見
CI/CDに組み込んで
自動的に実行可能
ユーザーは確認するだけ
このパッチは
正しい!
バグ修正
パッチ
入力
学習
出力 確認 適用
小規模バグであれば3件に
1件程度を正しく修正可能
米国富士通研究所
(FLA)との共同研究
public StringBuffer format(Calendar calendar, StringBuffer buf) {
if (mTimeZoneForced) {
+ calendar.getTime();
calendar = (Calendar) calendar.clone();
calendar.setTimeZone(mTimeZone);
}
return applyRules(calendar, buf);
} 実際のバグ修正例
新たなコード追加が
必要なバグ修正も可能
18
ELIXIRはどのようにパッチを生成するのか
Copyright 2018 FUJITSU LABORATORIES LTD.
バグを含む
プログラム
(Java 7 or 8
& Maven)
テスト失敗
(JUnit)
ELIXIR
バグ修正
パッチ
①バグ局所化
②パッチ生成
③パッチ検査失敗
バグ個所を
絞り込み
プログラム
を変更
1.
2.
n.
機械学習で
ランク付け
学習
修正パターンから
パッチ候補を生成
修正
パターン
出力入力
19
Elixirはどれだけバグを直せるか?
 82件の小規模バグのうち、26件を正しく修正(世界トップ)
 計231KLOCの複数のOSSを用いた実験結果
Copyright 2018 FUJITSU LABORATORIES LTD.
26/15
18/5
10/-
5/30
3/-
5/22
0 5 10 15 20 25 30 35 40 45
jGenProg
(仏・INRIA)
PAR
(米・CMU)
NOPOL
(仏・INRIA)
HD-Repair
(米・CMU)
ACS
(中・北京大)
ELIXIR
正しいパッチ 誤ったパッチ
N/A
N/A
20
機械学習によって適合率、
修正パターンによって再現率
がそれぞれアップ
ELIXIR適用事例(ELIXIR自身への適用)
Copyright 2018 FUJITSU LABORATORIES LTD.
開発者による
パッチ
Elixirが生成した
パッチ
0 10 20 30 40 50 60 70
Elixirによる修正時間
開発者による修正時間
5分
1時間
21
自分のPJでも使ってみたい!
Copyright 2018 FUJITSU LABORATORIES LTD.22
あなたのPJはどれだけ「バグ自動修正」readyか
チェックしてみよう!
1. 自動テストがある
2. 自動テストのカバレッジに基準を設けている(〇〇%以上)
3. 単体テストと結合テストの両方でテストを自動化している
4. CIを取り入れている
5. 自動テストの実行時間は規模に対して十分に短い(1テスト
ケースあたり平均〇ms以内)
6. バグが発生したときに再現テストコードを書く文化がある
7. ミューテーションテストでテスト品質を確認している
Copyright 2018 FUJITSU LABORATORIES LTD.
自動テストの品質が重要
23
テストコードの品質を測定しよう!
Copyright 2018 FUJITSU LABORATORIES LTD.
富士通研究所で開発
24
バグ自動修正技術で開発スタイルが変わる
Copyright 2018 FUJITSU LABORATORIES LTD.
コードと
テストケース
コミット
リポジトリ
コンパイル
ビルドテスト
継続的インテグレーション
トリガー
テスト成功?
パッチ
データ
取得
レビュー
開発者
通知
トリガー
1 2
3
4
5
6
End
マージ
リクエスト
AI
モデル
LIXIR BotE
パッチ生成?
単純なバグは
Botに直してもらう
25
まとめ
 近年、バグ自動修正技術への注目度が高まっている
 バグ自動修正技術により単純バグは数時間で修正可能
 Facebookでも実用化に取り組んでいる
 富士通では最先端のバグ自動修正技術を研究開発している
 過去の修正履歴を学習することで精度アップ
 小規模バグ3件に1件を正しく修正
 開発スタイルも変わっていく
 将来的には軽微なバグはツールで直すようになっていくのでは
 自動テストの品質が上がればバグ自動修正は現実的になっていく
Copyright 2018 FUJITSU LABORATORIES LTD.26
27
OSS化されているツール
 C/C++
 GenProg:https://github.com/squaresLab/genprog-code
 Prophet: http://groups.csail.mit.edu/pac/patchgen/
 Java
 kGenProg:https://github.com/kusumotolab/kGenProg
 Astor: https://github.com/SpoonLabs/astor
 ACS: https://github.com/Adobee/ACS
Copyright 2018 FUJITSU LABORATORIES LTD.
※すべて研究用途として実装されていることに注意
28

More Related Content

What's hot

DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
5分で分かる自己組織化マップ
5分で分かる自己組織化マップ5分で分かる自己組織化マップ
5分で分かる自己組織化マップDaisuke Takai
 
ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】Yuki Arase
 
BERTをブラウザで動かしたい! ―MobileBERTとTensorFlow.js―
BERTをブラウザで動かしたい!―MobileBERTとTensorFlow.js―BERTをブラウザで動かしたい!―MobileBERTとTensorFlow.js―
BERTをブラウザで動かしたい! ―MobileBERTとTensorFlow.js―Shion Honda
 
ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争Yosuke Shinya
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)Yamato OKAMOTO
 
20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdfKazuaki Ishizaki
 
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~株式会社MonotaRO Tech Team
 
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Shohei Hido
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language ModelsDeep Learning JP
 
条件付き確率場の推論と学習
条件付き確率場の推論と学習条件付き確率場の推論と学習
条件付き確率場の推論と学習Masaki Saito
 
How Much Position Information Do Convolutional Neural Networks Encode?
How Much Position Information Do Convolutional Neural Networks Encode?How Much Position Information Do Convolutional Neural Networks Encode?
How Much Position Information Do Convolutional Neural Networks Encode?Kazuyuki Miyazawa
 
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。Narichika Kajihara
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)Kentaro Minami
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 

What's hot (20)

DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
5分で分かる自己組織化マップ
5分で分かる自己組織化マップ5分で分かる自己組織化マップ
5分で分かる自己組織化マップ
 
ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】
 
BERTをブラウザで動かしたい! ―MobileBERTとTensorFlow.js―
BERTをブラウザで動かしたい!―MobileBERTとTensorFlow.js―BERTをブラウザで動かしたい!―MobileBERTとTensorFlow.js―
BERTをブラウザで動かしたい! ―MobileBERTとTensorFlow.js―
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
Semantic segmentation
Semantic segmentationSemantic segmentation
Semantic segmentation
 
ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争ディープラーニングのフレームワークと特許戦争
ディープラーニングのフレームワークと特許戦争
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)Domain Adaptation 発展と動向まとめ(サーベイ資料)
Domain Adaptation 発展と動向まとめ(サーベイ資料)
 
20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf
 
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
 
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
条件付き確率場の推論と学習
条件付き確率場の推論と学習条件付き確率場の推論と学習
条件付き確率場の推論と学習
 
How Much Position Information Do Convolutional Neural Networks Encode?
How Much Position Information Do Convolutional Neural Networks Encode?How Much Position Information Do Convolutional Neural Networks Encode?
How Much Position Information Do Convolutional Neural Networks Encode?
 
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 

Similar to バグ自動修正ツールって本当に使えるの? ~自動デバッグ技術の現状と課題~

九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会Rina Fukuda
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからKeizo Tatsumi
 
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナーソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナーNaoya Maekawa
 
機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動Hideto Ogawa
 
世界のソフトウェアテストの会議 (JaSST 2018 東京)
世界のソフトウェアテストの会議 (JaSST 2018 東京)世界のソフトウェアテストの会議 (JaSST 2018 東京)
世界のソフトウェアテストの会議 (JaSST 2018 東京)Keizo Tatsumi
 
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善Mizuho Wakai
 
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリングMasanori Kaneko
 
音声によるデバイスWebAPIの操作
音声によるデバイスWebAPIの操作音声によるデバイスWebAPIの操作
音声によるデバイスWebAPIの操作Device WebAPI Consortium
 
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用tomohiro odan
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際Satsuki Urayama
 
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~Masanori Kaneko
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方KLab Inc. / Tech
 
1時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac20141時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac2014Kazuhiro Suzuki
 
システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章mirer
 
20190327_ICON技術セミナー9_永井
20190327_ICON技術セミナー9_永井20190327_ICON技術セミナー9_永井
20190327_ICON技術セミナー9_永井ICT_CONNECT_21
 
塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へtoshihiro ichitani
 
テスト自動化クロニクル (JaSST 東海 2016)
テスト自動化クロニクル (JaSST 東海 2016)テスト自動化クロニクル (JaSST 東海 2016)
テスト自動化クロニクル (JaSST 東海 2016)Keizo Tatsumi
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてFixstars Corporation
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所Kotaro Ogino
 

Similar to バグ自動修正ツールって本当に使えるの? ~自動デバッグ技術の現状と課題~ (20)

九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
 
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナーソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
ソフトウェアエンジニアでなくてもアジャイルが分かるセミナー
 
Androidテスティング実践2 システムテスト編
Androidテスティング実践2 システムテスト編Androidテスティング実践2 システムテスト編
Androidテスティング実践2 システムテスト編
 
機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動
 
世界のソフトウェアテストの会議 (JaSST 2018 東京)
世界のソフトウェアテストの会議 (JaSST 2018 東京)世界のソフトウェアテストの会議 (JaSST 2018 東京)
世界のソフトウェアテストの会議 (JaSST 2018 東京)
 
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善
 
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
 
音声によるデバイスWebAPIの操作
音声によるデバイスWebAPIの操作音声によるデバイスWebAPIの操作
音声によるデバイスWebAPIの操作
 
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
 
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
XP祭り2019 - 日立・ソフトウェア革新部会 ~会社を越境する社内コミュニティ~
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方
 
1時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac20141時間で分かるSTA (Software Test Automation) #stac2014
1時間で分かるSTA (Software Test Automation) #stac2014
 
システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章
 
20190327_ICON技術セミナー9_永井
20190327_ICON技術セミナー9_永井20190327_ICON技術セミナー9_永井
20190327_ICON技術セミナー9_永井
 
塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ
 
テスト自動化クロニクル (JaSST 東海 2016)
テスト自動化クロニクル (JaSST 東海 2016)テスト自動化クロニクル (JaSST 東海 2016)
テスト自動化クロニクル (JaSST 東海 2016)
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
 
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
【JaSST'18 Tokai】アジャイルとテスト自動化導入の勘所
 

バグ自動修正ツールって本当に使えるの? ~自動デバッグ技術の現状と課題~

Editor's Notes

  1. 0
  2. ・高品質の要求、複雑化、環境の多様化によりデバッグの費用が世界的にも増えている
  3. 5
  4. 9
  5. 10
  6. 次に研究所で取り組んでいるJava向けのバグ自動修正ツールElixirを紹介します。Elixirは基本的には他のバグ自動修正ツールと同じように、バグを含むソースコードとそれを発見したテストコードを入力として、そのテストをすべて成功させるようなパッチ候補を出力するものですが、このとき、既存の大規模資産からソースコードとテストコードの類似度などの重みを機械学習したモデルを用いることにより既存技術よりも高い精度で正しい修正パッチが生成できます。生成したパッチはユーザーが正しいパッチかを確認し、プログラムに適用することでバグ修正が完了します。こちらが実際のバグ修正例ですが、メソッド追加のようなバグも修正可能です。
  7. さらにElixirの詳細についてご説明します。Elixirに限らず多くのバグ自動修正ツールは内部で3つのステップを経ることで修正パッチを生成しておりまして、最初にバグ箇所を絞り込むバグ局所化、次に絞り込んだ箇所に適合するパッチを生成し、最後にそのパッチでテストが成功するかを調べるパッチ検査を行い、検査が通ればそのパッチを出力し、検査に通らなければ、また新たな箇所や新たなパッチを探すためバグ局所化やパッチ生成をやりなおすという流れになります。Elixirはパッチ生成のステップで特徴がありまして、バグ被疑箇所に対して修正パターンを適用してパッチ候補を生成するのですが、その修正パターンは統計的にバグになりやすいものを集めています。また、パッチ候補の中から既存の大規模資産を用いた機械学習により、より正しいそうなパッチをランク付けすることで