SlideShare una empresa de Scribd logo
1 de 10
国際会議で学んだ
  “Mutation testing”
          takehikom
          2013年2月
このファイルは,大学院ゼミ向けに2012年10月に作成した
内容をWeb公開にあたり改変したものです.


                                1 /10
国際会議 JCKBSE 2012
• 2012年8月23~26日,
  ロドス(ギリシャ)にて
• Joint Conference on Knowledge-
  Based Software Engineering
     2年おきに欧州で開催
      前回はカウナス(リトアニア)
     日本人参加者が多い
     出席して初日に座長(session chair)を務め,2日目に
      発表し,guided tourは寝過ごして参加できず


                                     2
Mutation testing
• 関心を持った経緯
    座長を担当した,最初の質疑が噛み合わず
     • 「ソースを改変して,なぜ良くなるの?」
    2つの論文とWebの情報を通じて,面白さを理解
     • M. Papadakis and N. Malevris: Killing mutants effectively - a
       search based approach, Proc. JCKBSE 2012, pp.217-226,
       doi:10.3323/978-1-61499-094-9-217.
     • R. Lacanienta, S. Takada, H. Tanno, X. Zhang and T. Hoshino:
       A mutation test based approach to evaluating test suites for
       Web applications, Proc. JCKBSE 2012, pp.227-236,
       doi:10.3323/978-1-61499-094-9-227.


                                                                       3
ソフトウェアテスト
                         Test suite


Test case 1   Test case 2             ...   Test case n

【 ソースコード 】
…
y = x + 1;
…


Output 1      Output 2                ...   Output n


                         出力が期待したものと異なる
                         ⇒ソースコードを修正                       4
Mutation testing
                        Test suite


Test case 1    Test case 2           ...       Test case n

【 Original 】           1か所だけ          【Mutant】                Mutantは
…                     改変 (mutant      …                      多数作られる
                        operator)                            ランダムでは
y = x + 1;                            y = x – 1;               ない
…                                     …


Output 11
 Output        Output 22
                Output               ...       Output nn
                                                Output

                        出力が異なる
                        ⇒mutantはkilled                           5
killできないmutant
• (あるテストケースで)出力が異なる ⇒ killed
• では,出力が同じなら?

• Unkilled mutant
     テストスイートを充実させれば,killedになる.
• Equivalent mutant
                              【 Original 】   【Mutant】
     どんなにテストスイートを            …              …
      充実させても,killedに          x = y;         x = y;
      ならない.                   if (z < y)     if (z < x)
     例(Lacanienta et al.):   …              …
                                                          6
スコアの算出                   unkilledかequivalentか
                                              の識別は…
                                       “one of biggest obstacles”
• 4種類のmutantの関係                             (ムズい!)




                       #(killed)
• Mutation score =
                   #(non-equivalent)
     Mutation score = 1
      ⇒ non-equivalentならばkilled
      ⇒ テストはコード全体を網羅している
     Mutation score < 1
      ⇒ non-equivalentかつunkilledなmutantがある
      ⇒ テストスイートを充実させる必要あり
                                                            7
Mutation testingから学んだこと
 • ソフトウェアの品質を向上させたい.


 • テストスイートが,ソースコードの
   すべてを網羅するようにしたい.


 • ソースコードを改変してテストする
   ことで,網羅率が算出できる.
           Mutantは,テストスイートを
           より良くさせる手段となるが,
           直接ソースコードを改善しない.    8
関連情報
• http://en.wikipedia.org/wiki/Mutation_testing
• http://www.simple-talk.com/dotnet/.net-
  tools/mutation-testing/
• http://d.hatena.ne.jp/takehikom/20120829/134625
  2399

• 画像の出典
     http://www.mofa.go.jp/mofaj/area/greece/
     http://en.wikipedia.org/wiki/Mutation

                                                    9
おしまい!
  10

Más contenido relacionado

Similar a Mutation Testing (Aug 2012)

ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストToru Tamaki
 
ユニットテスト 1日目
ユニットテスト 1日目ユニットテスト 1日目
ユニットテスト 1日目Yoshiki Shibukawa
 
R Study Tokyo03
R Study Tokyo03R Study Tokyo03
R Study Tokyo03Yohei Sato
 
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16Takuto Wada
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suharasleepy_yoshi
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suharasleepy_yoshi
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?Shinichi Hirauchi
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 

Similar a Mutation Testing (Aug 2012) (10)

ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
 
ユニットテスト 1日目
ユニットテスト 1日目ユニットテスト 1日目
ユニットテスト 1日目
 
R Study Tokyo03
R Study Tokyo03R Study Tokyo03
R Study Tokyo03
 
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
 
Scrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pubScrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pub
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suhara
 
Chap12 4 appendix_suhara
Chap12 4 appendix_suharaChap12 4 appendix_suhara
Chap12 4 appendix_suhara
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 

Último

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Último (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Mutation Testing (Aug 2012)

  • 1. 国際会議で学んだ “Mutation testing” takehikom 2013年2月 このファイルは,大学院ゼミ向けに2012年10月に作成した 内容をWeb公開にあたり改変したものです. 1 /10
  • 2. 国際会議 JCKBSE 2012 • 2012年8月23~26日, ロドス(ギリシャ)にて • Joint Conference on Knowledge- Based Software Engineering  2年おきに欧州で開催 前回はカウナス(リトアニア)  日本人参加者が多い  出席して初日に座長(session chair)を務め,2日目に 発表し,guided tourは寝過ごして参加できず 2
  • 3. Mutation testing • 関心を持った経緯  座長を担当した,最初の質疑が噛み合わず • 「ソースを改変して,なぜ良くなるの?」  2つの論文とWebの情報を通じて,面白さを理解 • M. Papadakis and N. Malevris: Killing mutants effectively - a search based approach, Proc. JCKBSE 2012, pp.217-226, doi:10.3323/978-1-61499-094-9-217. • R. Lacanienta, S. Takada, H. Tanno, X. Zhang and T. Hoshino: A mutation test based approach to evaluating test suites for Web applications, Proc. JCKBSE 2012, pp.227-236, doi:10.3323/978-1-61499-094-9-227. 3
  • 4. ソフトウェアテスト Test suite Test case 1 Test case 2 ... Test case n 【 ソースコード 】 … y = x + 1; … Output 1 Output 2 ... Output n 出力が期待したものと異なる ⇒ソースコードを修正 4
  • 5. Mutation testing Test suite Test case 1 Test case 2 ... Test case n 【 Original 】 1か所だけ 【Mutant】 Mutantは … 改変 (mutant … 多数作られる operator) ランダムでは y = x + 1; y = x – 1; ない … … Output 11 Output Output 22 Output ... Output nn Output 出力が異なる ⇒mutantはkilled 5
  • 6. killできないmutant • (あるテストケースで)出力が異なる ⇒ killed • では,出力が同じなら? • Unkilled mutant  テストスイートを充実させれば,killedになる. • Equivalent mutant 【 Original 】 【Mutant】  どんなにテストスイートを … … 充実させても,killedに x = y; x = y; ならない. if (z < y) if (z < x)  例(Lacanienta et al.): … … 6
  • 7. スコアの算出 unkilledかequivalentか の識別は… “one of biggest obstacles” • 4種類のmutantの関係 (ムズい!) #(killed) • Mutation score = #(non-equivalent)  Mutation score = 1 ⇒ non-equivalentならばkilled ⇒ テストはコード全体を網羅している  Mutation score < 1 ⇒ non-equivalentかつunkilledなmutantがある ⇒ テストスイートを充実させる必要あり 7
  • 8. Mutation testingから学んだこと • ソフトウェアの品質を向上させたい. • テストスイートが,ソースコードの すべてを網羅するようにしたい. • ソースコードを改変してテストする ことで,網羅率が算出できる. Mutantは,テストスイートを より良くさせる手段となるが, 直接ソースコードを改善しない. 8
  • 9. 関連情報 • http://en.wikipedia.org/wiki/Mutation_testing • http://www.simple-talk.com/dotnet/.net- tools/mutation-testing/ • http://d.hatena.ne.jp/takehikom/20120829/134625 2399 • 画像の出典  http://www.mofa.go.jp/mofaj/area/greece/  http://en.wikipedia.org/wiki/Mutation 9