論文の概要: Generating executable oracles to check conformance of client code to requirements of JDK Javadocs using LLMs
- arxiv url: http://arxiv.org/abs/2411.01789v1
- Date: Mon, 04 Nov 2024 04:24:25 GMT
- ステータス: 翻訳完了
- システム内更新日: 2024-11-05 14:50:17.237020
- Title: Generating executable oracles to check conformance of client code to requirements of JDK Javadocs using LLMs
- Title(参考訳): LLMを使用したJDK Javadocsの要件に対するクライアントコードの適合性をチェックするための実行可能なオラクルの生成
- Authors: Shan Jiang, Chenguang Zhu, Sarfraz Khurshid,
- Abstract要約: 本稿では,広く使用されているJavaライブラリ,例えば java.lang や java.util パッケージのクライアントに対するテストオーラクルの自動化に焦点を当てる。
大規模な言語モデルを、テストオラクル自動化のフレームワークに関する洞察を具現化するための技術として使用しています。
- 参考スコア(独自算出の注目度): 21.06722050714324
- License:
- Abstract: Software testing remains the most widely used methodology for validating quality of code. However, effectiveness of testing critically depends on the quality of test suites used. Test cases in a test suite consist of two fundamental parts: (1) input values for the code under test, and (2) correct checks for the outputs it produces. These checks are commonly written as assertions, and termed test oracles. The last couple of decades have seen much progress in automated test input generation, e.g., using fuzzing and symbolic execution. However, automating test oracles remains a relatively less explored problem area. Indeed, a test oracle by its nature requires knowledge of expected behavior, which may only be known to the developer and may not not exist in a formal language that supports automated reasoning. Our focus in this paper is automation of test oracles for clients of widely used Java libraries, e.g., java.lang and java.util packages. Our key insight is that Javadocs that provide a rich source of information can enable automated generation of test oracles. Javadocs of the core Java libraries are fairly detailed documents that contain natural language descriptions of not only how the libraries behave but also how the clients must (not) use them. We use large language models as an enabling technology to embody our insight into a framework for test oracle automation, and evaluate it experimentally. Our experiments demonstrate that LLMs can generate oracles for checking normal and exceptional behaviors from Javadocs, with 98.8% of these oracles being compilable and 96.4% accurately reflecting intended properties. Even for the few incorrect oracles, errors are minor and can be easily corrected with the help of additional comment information generated by the LLMs.
- Abstract(参考訳): ソフトウェアテストは、コードの品質を検証する最も広く使われている方法論である。
しかし、テストの有効性は、使用するテストスイートの品質に大きく依存する。
テストスイートのテストケースは、(1)テスト中のコードの入力値、(2)それが生成するアウトプットの正しいチェックの2つの基本部分で構成されます。
これらのチェックは一般にアサーションとして書かれ、テストオラクルと呼ばれる。
過去数十年間、ファジングとシンボリック実行を使用して自動テスト入力生成、例えば、多くの進歩があった。
しかし、テストオラクルの自動化はいまだに研究の少ない問題領域である。
実際、テストのオラクルはその性質上、期待される振る舞いの知識を必要とするが、これは開発者によってのみ知られ、自動推論をサポートする形式言語には存在しないかもしれない。
本稿では,広く使用されているJavaライブラリ,例えば java.lang や java.util パッケージのクライアントに対するテストオーラクルの自動化に注目します。
私たちの重要な洞察は、豊富な情報ソースを提供するJavadocsは、自動テストオラクルの生成を可能にします。
コアJavaライブラリのJavadocは、ライブラリの振る舞いだけでなく、クライアントがそれを使う(使わない)方法の自然言語記述を含む、かなり詳細なドキュメントです。
私たちは大規模な言語モデルを、オラクルの自動化をテストするフレームワークに関する洞察を具現化するための技術として使用し、それを実験的に評価します。
実験の結果, LLM は Javadoc から通常の動作や例外的な動作をチェックするためのオラクルを生成することができ,98.8% がコンパイル可能であり,96.4% が意図した特性を正確に反映していることがわかった。
誤りがいくつかあるとしても、誤りは小さく、LLMによって生成された追加のコメント情報の助けを借りて容易に修正できる。
関連論文リスト
- Do LLMs generate test oracles that capture the actual or the expected program behaviour? [7.772338538073763]
大きな言語モデル(LLM)は、開発者のようなコードやテストケースを生成するために、膨大な量のデータに基づいて訓練されています。
この調査には、開発者によって書かれ、自動生成されるテストケースと、24のオープンソースJavaリポジトリのオーラクルが含まれている。
LLMは正しいオーラクルを分類するよりもテストオーラクルを生成する方が優れており、コードが有意義なテスト名や変数名を含む場合、よりよいテストオーラクルを生成することができる。
論文 参考訳(メタデータ) (2024-10-28T15:37:06Z) - Multi-language Unit Test Generation using LLMs [6.259245181881262]
静的解析を組み込んだジェネリックパイプラインを記述し,コンパイル可能な高カバレッジテストケースの生成においてLCMをガイドする。
パイプラインをさまざまなプログラミング言語、特にJavaとPython、そして環境モックを必要とする複雑なソフトウェアに適用する方法を示します。
以上の結果から,静的解析によって導かれるLCMベースのテスト生成は,最新のテスト生成技術と競合し,さらに性能も向上することが示された。
論文 参考訳(メタデータ) (2024-09-04T21:46:18Z) - Test Oracle Automation in the era of LLMs [52.69509240442899]
大規模言語モデル(LLM)は、多様なソフトウェアテストタスクに取り組むのに顕著な能力を示した。
本研究の目的は, 各種のオラクル生成時に生じる課題とともに, LLMs によるオラクルの自動化の可能性について検討することである。
論文 参考訳(メタデータ) (2024-05-21T13:19:10Z) - TOGLL: Correct and Strong Test Oracle Generation with LLMs [0.8057006406834466]
テストオラクルはソフトウェアテストにおいて重要な役割を担い、効果的なバグ検出を可能にします。
初期の約束にもかかわらず、自動テストオラクル生成のための神経ベースの手法は、しばしば多数の偽陽性をもたらす。
本研究は,LLMの正当性,多種多様性,強靭性テストオラクルの創出能力に関する総合的研究である。
論文 参考訳(メタデータ) (2024-05-06T18:37:35Z) - Protecting Copyrighted Material with Unique Identifiers in Large Language Model Training [55.321010757641524]
大きな言語モデル(LLM)のトレーニングに関する主要な公的な懸念は、著作権のあるオンラインテキストを悪用するかどうかである。
事前の会員推定法は、大量のトレーニングデータに類似した例によって誤解されることがある。
本稿では,Webユーザとコンテンツプラットフォームがtextbftextitunique 識別子を使用することを推奨する代替のtextitinsert-and-detection 手法を提案する。
論文 参考訳(メタデータ) (2024-03-23T06:36:32Z) - GPT-HateCheck: Can LLMs Write Better Functional Tests for Hate Speech Detection? [50.53312866647302]
HateCheckは、合成データに対してきめ細かいモデル機能をテストするスイートである。
GPT-HateCheckは,スクラッチからより多彩で現実的な機能テストを生成するフレームワークである。
クラウドソースのアノテーションは、生成されたテストケースが高品質であることを示しています。
論文 参考訳(メタデータ) (2024-02-23T10:02:01Z) - Prompting Code Interpreter to Write Better Unit Tests on Quixbugs
Functions [0.05657375260432172]
単体テストは、ソフトウェア工学において、記述されたコードの正確性と堅牢性をテストするために一般的に使用されるアプローチである。
本研究では,コードインタプリタが生成する単体テストの品質に及ぼす異なるプロンプトの影響について検討する。
生成した単体テストの品質は、提供されたプロンプトのマイナーな詳細の変更に敏感ではないことがわかった。
論文 参考訳(メタデータ) (2023-09-30T20:36:23Z) - ALGO: Synthesizing Algorithmic Programs with LLM-Generated Oracle
Verifiers [60.6418431624873]
大きな言語モデル(LLM)は、機能記述からコードを実装するのに優れているが、アルゴリズムの問題に悩まされている。
我々は,アルゴリズムプログラムを LLM 生成 Oracle で合成するフレームワーク ALGO を提案し,その生成をガイドし,その正確性を検証する。
実験の結果,ALGOを装着すると,Codexモデルよりも8倍,CodeTよりも2.6倍の1サブミッションパス率が得られることがわかった。
論文 参考訳(メタデータ) (2023-05-24T00:10:15Z) - LEVER: Learning to Verify Language-to-Code Generation with Execution [64.36459105535]
本稿では,プログラムの実行結果の検証を学習することで,言語からコードへの生成を改善するシンプルな手法であるLEVERを提案する。
具体的には、LLMからサンプリングされたプログラムが、自然言語入力、プログラム自体とその実行結果に基づいて正しいか否かを判定するために、検証者を訓練する。
LEVER はベースコード LLMs (4.6% から 10.9% まで) を継続的に改善し、それらすべてに対して新しい最先端の結果を得る。
論文 参考訳(メタデータ) (2023-02-16T18:23:22Z) - Perfect is the enemy of test oracle [1.457696018869121]
テストのオーラクルは、テストが失敗する(バグを検出する)か通過するかを判断するために、正しい動作とバギーな動作を区別できる地平線に依存しています。
本稿では,テストアサーションが存在しない場合には,テスト対象のメソッド(MUT)で単体テストが通過するか失敗するかを判定できる,学習に基づくSEERを提案する。
さまざまなオープンソースのJavaプロジェクトから5K以上のユニットテストにSEERを適用する実験は、生成したオラクルがフェールやパスラベルを予測するのに有効であることを示している。
論文 参考訳(メタデータ) (2023-02-03T01:49:33Z) - Interactive Code Generation via Test-Driven User-Intent Formalization [60.90035204567797]
大きな言語モデル(LLM)は、非公式な自然言語(NL)の意図からコードを生成する。
自然言語は曖昧であり、形式的な意味論が欠けているため、正確性の概念を定義するのは難しい。
言語に依存しない抽象アルゴリズムと具体的な実装TiCoderについて述べる。
論文 参考訳(メタデータ) (2022-08-11T17:41:08Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。