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

オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 

What's hot (20)

Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命
 
東京大学 メディアコンテンツ特別講義 Sustainability
東京大学 メディアコンテンツ特別講義 Sustainability東京大学 メディアコンテンツ特別講義 Sustainability
東京大学 メディアコンテンツ特別講義 Sustainability
 
ネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのかネットワークでなぜ遅延が生じるのか
ネットワークでなぜ遅延が生じるのか
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
 
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
 
「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について
 
【初心者向】ロジカルシンキングをゼロからはじめる
【初心者向】ロジカルシンキングをゼロからはじめる【初心者向】ロジカルシンキングをゼロからはじめる
【初心者向】ロジカルシンキングをゼロからはじめる
 
Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
品質と開発スピードの両立と、OSSのリスク低減策のご紹介 / GTMF2019
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
スクラム再入門
スクラム再入門スクラム再入門
スクラム再入門
 
振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)
 
小さく始める大規模スクラム
小さく始める大規模スクラム小さく始める大規模スクラム
小さく始める大規模スクラム
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
「人為ミス防止」フレームワークと「プロセス可視化」ツールを使って プロセス改善を実践してみた
「人為ミス防止」フレームワークと「プロセス可視化」ツールを使って プロセス改善を実践してみた「人為ミス防止」フレームワークと「プロセス可視化」ツールを使って プロセス改善を実践してみた
「人為ミス防止」フレームワークと「プロセス可視化」ツールを使って プロセス改善を実践してみた
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
5分で分かるアジャイルムーブメントの歴史 拡大版
5分で分かるアジャイルムーブメントの歴史 拡大版5分で分かるアジャイルムーブメントの歴史 拡大版
5分で分かるアジャイルムーブメントの歴史 拡大版
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 

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

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】アジャイルとテスト自動化導入の勘所
 

Recently uploaded

Recently uploaded (10)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

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

Editor's Notes

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