- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
JUnit テストレポートファイルは、テスト名とスイート名、合格/不合格ステータス、期間、場合によってはエラーログなどのテスト実行情報を含む XML ファイルです。JUnit テストフレームワークによって導入されましたが、他の多くの一般的なフレームワークは、この形式を使用して結果を出力できます。
テストフレームワークで JUnit XML のテストレポートを生成できる場合、Datadog トレーサーを使用したネイティブのテストインスツルメンテーションに代わる軽量な方法として、これらを使用することができます。JUnit XML レポートからインポートされたテスト結果は、トレーサーからレポートされたテストデータと一緒に表示されます。
npm
を使用して datadog-ci
CLI をグローバルにインストールします。
npm install -g @datadog/datadog-ci
CI で Node.js をインストールすることに問題がある場合は、スタンドアロンバイナリが Datadog CI リリースで提供されています。linux-x64、darwin-x64 (MacOS)、win-x64 (Windows) のみがサポートされています。インストールするには、ターミナルで以下を実行します。
curl -L --fail "https://github.com/DataDog/datadog-ci/releases/latest/download/datadog-ci_linux-x64" --output "/usr/local/bin/datadog-ci" && chmod +x /usr/local/bin/datadog-ci
次に、datadog-ci
と任意のコマンドを実行します:
datadog-ci version
curl -L --fail "https://github.com/DataDog/datadog-ci/releases/latest/download/datadog-ci_darwin-x64" --output "/usr/local/bin/datadog-ci" && chmod +x /usr/local/bin/datadog-ci
次に、datadog-ci
と任意のコマンドを実行します:
datadog-ci version
Invoke-WebRequest -Uri "https://github.com/DataDog/datadog-ci/releases/latest/download/datadog-ci_win-x64.exe" -OutFile "datadog-ci.exe"
次に、Start-Process -FilePath "datadog-ci.exe"
と任意のコマンドを実行します:
Start-Process -FilePath "./datadog-ci.exe" -ArgumentList version
JUnit XML テストレポートを Datadog にアップロードするには、次のコマンドを実行し、--service
パラメーターを使用してテストされたサービスまたはライブラリの名前と、XML レポートファイルまたはそれらを含むディレクトリへの 1 つ以上のファイルパスを指定します。
datadog-ci junit upload --service <service_name> <path> [<path> ...]
DATADOG_API_KEY
環境変数に有効な Datadog API キーを指定し、DD_ENV
環境変数にテストが実行された環境を指定します (たとえば、開発者ワークステーションから結果をアップロードする場合は local
、CI プロバイダーから結果をアップロードする場合は ci
)。例:
DD_ENV=ci DATADOG_API_KEY=<api_key> DATADOG_SITE= datadog-ci junit upload \
--service my-api-service \
unit-tests/junit-reports e2e-tests/single-report.xml
ステータスチェック関数を使用します。
steps:
- name: Run tests
run: ./run-tests.sh
- name: Upload test results to Datadog
if: always()
run: datadog-ci junit upload --service service_name ./junit.xml
after_script
セクションを使用します。
test:
stage: test
script:
- ./run-tests.sh
after_script:
- datadog-ci junit upload --service service_name ./junit.xml
post
セクションを使用します。
pipeline {
agent any
stages {
stage('Run tests') {
steps {
sh './run-tests.sh'
}
post {
always {
sh 'datadog-ci junit upload --service service_name ./junit.xml'
}
}
}
}
}
CI システムがサブシェルを許可している場合
$(./run-tests.sh); export tests_exit_code=$?
datadog-ci junit upload --service service_name ./junit.xml
if [ $tests_exit_code -ne 0 ]; then exit $tests_exit_code; fi
注: 250 MiB より大きいレポートは欠落したテストかログに終って完全に処理されないかもしれません。最高の体験を得るために、レポートは 250 MiB 以下であることを確認してください。
これは、datadog-ci junit upload
コマンドを使用するときに使用できるオプションの完全なリストです。
--service
(必須)DD_SERVICE
my-api-service
--env
DD_ENV
ci
--tags
key:value
形式のキーと値のペア (--tags
パラメーターは複数回指定できます)。DD_TAGS
を使用してタグを指定する場合は、カンマを使用してタグを区切ります (例: team:backend,priority:high
)。DD_TAGS
team:backend
--tags
と DD_TAGS
環境変数を使用して指定されたタグがマージされます。--tags
と DD_TAGS
の両方に同じキーが表示される場合、環境変数 DD_TAGS
の値が優先されます。--xpath-tag
key=expression
の形式で指定します。これにより、ファイル内のテスト用タグをカスタマイズできます (--xpath-tag
パラメーターは複数回指定できます)。test.suite=/testcase/@classname
--xpath-tag
を使用し、--tags
または DD_TAGS
環境変数とともに指定されたタグはマージされます。xpath-tag の値は通常テストごとに異なるため、最優先されます。--logs
(ベータ版)<system-out>
、<system-err>
、<failure>
内のコンテンツはログとして収集されます。<testcase>
内の要素からのログは自動的にテストに接続されます。DD_CIVISIBILITY_LOGS_ENABLED
false
--max-concurrency
20
--dry-run
false
.xml
ファイルを検索します。次の環境変数がサポートされています。
DATADOG_API_KEY
(必須)さらに、選択したサイトを使用するように Datadog サイトを構成します ():
DATADOG_SITE
(必須)datadoghq.com
Datadog は、テスト結果を可視化し、リポジトリやコミットごとにグループ化するために Git 情報を使用します。Git のメタデータは、Datadog の CI CLI が CI プロバイダーの環境変数やプロジェクトパスのローカルな .git
フォルダ (あれば) から収集します。このディレクトリを読み込むには、git
バイナリが必要です。
サポートされていない CI プロバイダーでテストを実行する場合や、.git
フォルダがない場合は、環境変数を使って Git の情報を手動で設定することができます。これらの環境変数は、自動検出された情報よりも優先されます。Git の情報を提供するために、以下の環境変数を設定します。
DD_GIT_REPOSITORY_URL
git@github.com:MyCompany/MyApp.git
、https://github.com/MyCompany/MyApp.git
DD_GIT_BRANCH
develop
DD_GIT_TAG
1.0.1
DD_GIT_COMMIT_SHA
a18ebf361cc831f5535e58ec4fae04ffd98d8152
DD_GIT_COMMIT_MESSAGE
Set release number
DD_GIT_COMMIT_AUTHOR_NAME
John Smith
DD_GIT_COMMIT_AUTHOR_EMAIL
john@example.com
DD_GIT_COMMIT_AUTHOR_DATE
2021-03-12T16:00:28Z
DD_GIT_COMMIT_COMMITTER_NAME
Jane Smith
DD_GIT_COMMIT_COMMITTER_EMAIL
jane@example.com
DD_GIT_COMMIT_COMMITTER_DATE
2021-03-12T16:00:28Z
datadog-ci
バージョン 2.9.0
以降では、CI Visibility は Git のメタデータ情報 (コミット履歴) を自動的にアップロードします。このメタデータには、ファイル名は含まれていますが、ファイルのコンテンツは含まれていません。この動作を無効にしたい場合は、フラグ --skip-git-metadata-upload
を渡します。
Datadog では、特別な専用タグを使用して、OS、ランタイム、デバイス情報など、テストが実行される環境の構成を特定します (該当する場合)。同じコミットに対する同じテストが複数の構成で実行される場合 (例えば、Windows 上と Linux 上)、タグは障害やフレーク性の検出におけるテストの区別に使用されます。
これらの特別なタグは、 datadog-ci junit upload
を呼び出すときに --tags
パラメーターを使用するか、環境変数 DD_TAGS
を設定することで指定することができます。
これらのタグはすべて任意であり、指定したものだけが環境構成の区別に使用されます。
test.bundle
ApplicationUITests
、ModelTests
os.platform
windows
、linux
、darwin
os.version
10.15.4
、14.3.2
、95
os.architecture
x64
、x86
、arm64
runtime.name
.NET
、.NET Core
、OpenJDK Runtime Environment
、Java(TM) SE Runtime Environment
、CPython
runtime.version
5.0.0
, 3.1.7
runtime.vendor
AdoptOpenJDK
、Oracle Corporation
runtime.architecture
x64
、x86
、arm64
モバイルアプリの場合 (Swift、Android):
device.model
iPhone11,4
、AppleTV5,3
device.name
iPhone 12 Pro Simulator
、iPhone 13 (QA team)
アップロードされた XML レポートに含まれるすべてのテストにカスタムタグをグローバルに適用する --tags
CLI パラメーターと DD_TAGS
環境変数に加え、--xpath-tag
パラメーターは、XML 内の各種属性から各テストにタグを追加するカスタムルールを提供します。
提供されるパラメーターは key=expression
の形式でなければならず、key
は追加されるカスタムタグの名前、expression
はサポートされている有効な XPath 表現になります。
XPath 構文が馴染みが深いため使用されますが、サポートされている表現は下記のみとなります。
/testcase/@attribute-name
<testcase attribute-name="value">
の XML 属性。/testcase/../@attribute-name
<testcase>
の親 <testsuite attribute-name="value">
の XML 属性。/testcase/..//property[@name='property-name']
<testcase>
の親の <testsuite>
内の<property name="property-name" value="value">
の value
属性。/testcase//property[@name='property-name']
<testcase>
内の <property name="property-name" value="value">
value
属性。例:
テストの test.suite
タグは、デフォルトで <testsuite name="suite name">
から読み込まれます。ただし、一部のプラグインでは、<testcase classname="TestSuite">
でより良い値が報告される可能性があります。
test.suite
タグを value 1
、value 2
から SomeTestSuiteClass
、OtherTestSuiteClass
に変更する方法:
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite tests="1" failures="0" time="0.030000" name="value 1">
<testcase classname="SomeTestSuiteClass" name="test_something" time="0.030000"></testcase>
</testsuite>
<testsuite tests="1" failures="0" time="0.021300" name="value 2">
<testcase classname="OtherTestSuiteClass" name="test_something" time="0.021300"></testcase>
</testsuite>
</testsuites>
datadog-ci junit upload --service service_name \
--xpath-tag test.suite=/testcase/@classname ./junit.xml
各テストに value 1
、value 2
の値とともに custom_tag
を追加する方法:
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite tests="1" failures="0" time="0.020000" name="SomeTestSuiteClass">
<testcase name="test_something" time="0.010000" attr="value 1"></testcase>
<testcase name="test_other" time="0.010000" attr="value 2"></testcase>
</testsuite>
</testsuites>
datadog-ci junit upload --service service_name \
--xpath-tag custom_tag=/testcase/@attr ./junit.xml
各テストに value 1
、value 2
の値とともに custom_tag
を追加する方法:
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite tests="1" failures="0" time="0.030000" name="SomeTestSuiteClass">
<properties>
<property name="prop" value="value 1"></property>
</properties>
<testcase name="test_something" time="0.030000" attr="value 1"></testcase>
</testsuite>
<testsuite tests="1" failures="0" time="0.021300" name="OtherTestSuiteClass">
<properties>
<property name="prop" value="value 1"></property>
</properties>
<testcase name="test_something" time="0.021300" attr="value 1"></testcase>
</testsuite>
</testsuites>
datadog-ci junit upload --service service_name \
--xpath-tag custom_tag=/testcase/..//property[@name=\'prop\'] ./junit.xml
注: 名前は引用符で囲む必要があります。Bash では、バックスラッシュを使って引用符をエスケープしなければなりません。例えば、[@name='prop']
は `[@name='prop'] と入力します。
<property>
要素によるメタデータの提供特定のテストに追加のタグを指定するもう 1 つの方法は、<testsuite>
または <testcase>
要素内に <property name="dd_tags[key]" value="value">
要素を含める方法です。これらのタグを <testcase>
要素に追加すると、そのテストスパンにタグが格納されます。タグを <testsuite>
要素に追加すると、そのスイートの全てのテストスパンにタグが格納されます。
この処理を行うには、 <property>
要素の name
属性が dd_tags[key]
という形式である必要があります。ここで key
は追加されるカスタムタグの名前です。その他のプロパティは無視されます。
例: <testcase>
要素にタグを追加する。
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite tests="1" failures="0" time="0.030000" name="SomeTestSuiteClass">
<testcase classname="SomeTestSuiteClass" name="test_something" time="0.010000">
<properties>
<property name="dd_tags[custom_tag]" value="some value"></property>
<property name="dd_tags[runtime.name]" value="CPython"></property>
</properties>
</testcase>
</testsuite>
</testsuites>
例: <testsuite>
要素にタグを追加する。
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite tests="1" failures="0" time="0.030000" name="SomeTestSuiteClass">
<properties>
<property name="dd_tags[custom_tag]" value="some value"></property>
<property name="dd_tags[runtime.name]" value="CPython"></property>
</properties>
<testcase classname="SomeTestSuiteClass" name="test_something" time="0.010000"></testcase>
</testsuite>
</testsuites>
Datadog に送信する値は文字列なので、ファセットは辞書順で表示されます。文字列の代わりに整数を送信するには、--metrics
フラグと DD_METRICS
環境変数を使用します。
お役に立つドキュメント、リンクや記事: