コードの分析およびテスト

SAP Joule を使用した ABAP ユニットテストの生成

Objectives

After completing this lesson, you will be able to:
  • ADT に統合された AI ベースの ABAP Unit 機能の概要を示します。
  • SAP Joule を使用して ABAP ユニットテストを生成します。

ADT の AI ベースの ABAP Unit 機能

概要

ABAP 開発者は、コードの品質と信頼性の向上に常に努めています。徹底したユニットテストの作成は、この取り組みの土台となりますが、時間がかかる場合があります。SAP Joule for Developers, ABAP AI Capabilities では、ABAP Unit テストを生成することで、このプロセスを大幅に迅速化することができます。これにより、包括的な対象範囲を確保するために、それらを改良してカスタマイズすることに集中することができます。

使用シナリオ

SAP Joule for Developers, ABAP AI Capabilities では、Eclipse の ABAP 開発ツール (ADT) に直接統合された ABAP ユニットテストの作成に関する強力な支援が提供されます。この AI 主導の機能により、以下が可能になります。

  • 開発時間の短縮: 初期テスト方法を自動的に生成し、定型コードを記述する労力を節約します。
  • テスト範囲の改善:見逃した可能性のあるテストケースと依存関係を特定します。
  • コード品質の向上:ベストプラクティスとコーディング標準に準拠するために、生成されたテストコードをリファクタリングします。

機能

SAP Joule for Developers, ABAP AI Capabilities は、ADT に統合された AI ベースの ABAP Unit 機能を ABAP 開発者に提供します。これらの機能には ABAP Unit チャットからアクセスでき、テストをより効率的に作成および改善できるように設計されています。概要は以下のとおりです。

  • テスト生成: ADT 内のさまざまな場所から ABAP ユニットテストを生成します。
  • 依存関係分析: ユニットテストを改善するための、テストが苦手な依存関係を特定します。
  • テストダブルサポート: テスト非フレンドリな依存関係をテストダブルに置き換えて分離します。
  • テストコードの説明: テストコード説明を使用してインサイトを取得し、テスト臭いを特定してテストパターンを理解します。
  • 生成されたテストコードリファクタリング:品質基準およびコーディングスタイル設定を満たすために生成されたテストコードをリファクタリングします。
  • テストクラスとテストメソッドの分割: テストクラスとメソッドを分割してコード構造を改善します。

ABAP ユニットテストの生成

ABAP Unit チャットを使用したテストの生成

Joule および ABAP Unit チャットを使用して ABAP ユニットテストを生成する例を見てみましょう。

注記

ここに表示される内容に加えて、Joule チャット内でフリースタイルプロンプトを使用して、AI 搭載の ABAP Unit 機能と対話することもできます。

シナリオ: メソッド FIND_PASSENGER_FLIGHT を持つローカルクラス LCL_CARRIER を含むグローバル ABAP クラス ZCL_00_SOLUTION があります。このクラスには、テストクラス LTCL_FIND_FLIGHTS に実装されている ABAP ユニットテストがすでに存在します。

ABAP Unit チャットの開始

ABAP Unit チャットを使用してテストを生成するには、ソースコードエディタ内で右クリックし、JouleStart Chat for ABAP Unit を選択します。ABAP Unit チャットが開き、クラスでの処理を尋ねられます。

テストの生成

コードをチェックするための ABAP ユニットテストを登録する場合は、テスト生成を選択します。

テスト臭いがある場合や使用されているテストパターンなど、既存の ABAP Unit テストに関する詳細を明確に理解するには、Explain <テストクラス名> を選択します。この場合、テストクラスの名称は LTCL_FIND_FLIGHTS です。

テストコードを改善するためのテスト非フレンドリな依存関係を特定する場合は、テスト非フレンドリな依存関係の検索を選択します。

チャットに入力することで、単純なフリースタイルプロンプトを使用することもできます。

ABAP ユニットテストを追加するため、テスト生成を選択します。次のステップでは、テストメソッドを生成するための以下のオプションがあります (ここでは表示されていません)。

  • 選択されたメソッド...: このオプションを使用して、ABAP ユニットテストを生成するグローバルクラスのメソッドを選択することができます。

  • 選択されたローカルクラス...: このオプションでは、ABAP ユニットテストを生成するローカルクラスとその対応するメソッドを選択することができます。

ここでは、ローカルクラス LCL_CARRIER のメソッド FIND_PASSENGER_FLIGHT に対する ABAP ユニットテストの生成を選択します。

テストの追加

次のステップでは、<既存のテストクラスの名称> へのテスト追加 (ここでは LTCL_FIND_FLIGHTS) と新規テストクラスへのテスト追加のいずれかを選択することができます。最初のオプションを選択します。

生成されたコードのレビュー

次のステップでは、生成されたコードが表示され、コードの上にあるボタンのいずれかを選択することができます。

  • Insert を選択して、生成されたコードを現在のカーソル位置に挿入します。

  • コピーを選択して、生成されたコードをクリップボードにコピーします。

リファクタリング生成済テストコード

Joule を使用してユニットテストを生成した後、Joule チャットでフリースタイルプロンプトを直接入力することで、生成されたコードをリファクタリングできます。

リファクタリングは、AI を使用してユニットテストを生成する際に重要なステップです。これにより、テストコードが品質基準を満たし、好みのコーディングスタイルに適合していることが確認されます。生成されたコードをリファクタリングするには、Joule チャットでフリースタイルプロンプトとして指示を入力します。

以下の例は、Joule に実行を依頼できることを示しています。

  • ハンガリー語表記を避ける (接頭辞なし)

  • 段取方法での CUT 登録

  • パラメータ化されたカスタムアサーションの抽出と使用

  • インラインでカスタムアサーションを削除

  • クラスではなくインタフェースに対するプログラム

  • インライン宣言の使用

  • コンストラクタ式を使用した構造およびテーブルへの書込

  • アサート命令を 1 行に書き込む

これで例は終了です。Joule では、テストされたメソッドのロジックに基づいて、より複雑なテストを生成することができます。生成されたコードは、特定のテストニーズを満たすように、必ずレビューして絞り込んでください。

まとめ

  • SAP Joule for Developers, ABAP AI Capabilities により、ABAP Unit テストの作成が加速され、コード品質が改善され、開発時間が短縮されます。
  • このプロセスには、ABAP Unit チャットの開始、メソッドの選択、テストクラスの選択、および生成されたテストコードのレビュー/挿入が含まれます。
  • ADT に統合された AI ベースの ABAP Unit 機能には、テスト生成、依存関係分析、テストダブルサポート、テストコード説明、生成されたテストコードリファクタリング、およびテストクラスとテストメソッドの分割が含まれます。
  • ABAP Unit チャットでは、フリースタイルプロンプトで AI 搭載の ABAP Unit 機能と対話することができます。