Skip to main content
QUICK REVIEW

[論文レビュー] Automatic Software Diversity in the Light of Test Suites

Benoît Baudry, Simon Allier|arXiv (Cornell University)|Sep 1, 2015
Software Testing and Debugging Techniques参考文献 27被引用数 6
ひとこと要約

本論文は、テストスイートのパス率を維持したまま文を変更することでプログラムバリアントを生成する『sosiefication』という技術を用いて、自動ソフトウェア多様化を調査している。主な発見は2点である:(1) テストスイートのカバレッジ強度が高いほどバリアント合成の難易度が上昇するが、高いテストカバレッジを持つコードに対してもバリアントは依然として実現可能である;(2) 特にハッシュ関数においては、複数の正当な実装が共存する『プラスティック仕様』と呼ばれる特性が見られ、これが強力な多様化を可能にする。

ABSTRACT

A few works address the challenge of automating software diversification, and they all share one core idea: using automated test suites to drive diversification. However, there is is lack of solid understanding of how test suites, programs and transformations interact one with another in this process. We explore this intricate interplay in the context of a specific diversification technique called "sosiefication". Sosiefication generates sosie programs, i.e., variants of a program in which some statements are deleted, added or replaced but still pass the test suite of the original program. Our investigation of the influence of test suites on sosiefication exploits the following observation: test suites cover the different regions of programs in very unequal ways. Hence, we hypothesize that sosie synthesis has different performances on a statement that is covered by one hundred test case and on a statement that is covered by a single test case. We synthesize 24583 sosies on 6 popular open-source Java programs. Our results show that there are two dimensions for diversification. The first one lies in the specification: the more test cases cover a statement, the more difficult it is to synthesize sosies. Yet, to our surprise, we are also able to synthesize sosies on highly tested statements (up to 600 test cases), which indicates an intrinsic property of the programs we study. The second dimension is in the code: we manually explore dozens of sosies and characterize new types of forgiving code regions that are prone to diversification.

研究の動機と目的

  • テストスイートが自動ソフトウェア多様化の効率および実現可能性に与える影響を理解すること。
  • プログラム構造、テストスイートのカバレッジ、およびコード変換の相互作用が、正当なプログラムバリアントの生成に与える影響を調査すること。
  • 多様化に大きな影響を与える許容性の高いコード領域およびプラスティック仕様を特定・特徴付けること。
  • 現実世界のソフトウェアシステムに内在する内在的多様性に関する実証的および定性的な知見を提供すること。

提案手法

  • 6つのオープンソースJavaプログラムにsosieficationを適用し、24,583個のプログラムバリアント(sosies)を生成した。
  • 実行シグネチャ(各文が実行されたテストケース数)を、仕様カバレッジの代理指標として算出。
  • 定量的分析を通じて、実行シグネチャ値とsosiefication成功確率との相関関係を、異なる文に対して評価。
  • 数十のsosiesを手動で検査し、許容性の高いコード領域を分類し、多様性のパターンを同定。
  • 異なるレベルのテストカバレッジにおけるsosieficationの結果を比較し、バリアント合成を可能にする構造的および仕様レベル要因を同定。
  • 研究結果を、フォールトトレランス、レジリエンス、進化可能なシステムといったソフトウェア工学の主題に文脈づけて考察。

実験結果

リサーチクエスチョン

  • RQ1ある文をカバーするテストケースの数が、正当なsosieバリアントを生成する難易度にどのように影響するか?
  • RQ2どの種類のコード領域がテストスイートに準拠したまま多様化されやすいか?
  • RQ3非常に高いテストカバレッジ(例:600テストケース)を持つ文に対し、どの程度のプログラムバリアントを生成できるか?
  • RQ4強いテストカバレッジにもかかわらず、高影響力の多様化を可能にする構造的または仕様レベルの特性は何か?
  • RQ5『プラスティック仕様』といった内在的なプログラム的特性—特に特定のコードパターンに限定されないが、変更に対して本質的に許容的である—は存在するか?

主な発見

  • sosieficationの成功確率は、文ごとのテストスイートカバレッジが高くなるほど低下し、well-testedなコード領域ではバリアント生成がより困難であることが示された。
  • 最高で600件のテストケースをカバーする高いカバレッジに対しても、正当なsosieバリアントが実際に合成可能であったことから、現実世界のプログラムに内在的な多様性が存在することが明らかになった。
  • ハッシュ関数において特に顕著な『プラスティック仕様』という新しいカテゴリが同定された。これは、明確なが存在するが、強い正しさ契約のもとで複数の正当な実装が可能であるためである。
  • 手動での分析により、従来の許容性の高い構文(最適化コードや動画コーデックなど)に限定されない、許容性の高いコード領域が同定された。
  • コードの追加や削除が、多様で正当なバリアントを生成するのに有効であることが確認された。これは、OS保護やフェイルオーバラントコンピューティングの応用を支援する。
  • プラスティック仕様を持つ許容性の高い領域の存在は、多様化が特定のコードパターンに限定されるのではなく、より深い仕様レベルの特性に起因することを示唆している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。