Python의 경우: ddtrace 패키지 버전 4.11.0 이상 및 pytest를 사용합니다.
JavaScript의 경우: v5의 경우 dd-trace 패키지 버전 5.111.0 이상, v6의 경우 v6.0.0 이상, Node.js 및 지원되는 프레임워크 버전을 사용합니다. Cucumber.js, Cypress, Mocha, Playwright 및 Vitest는 ddtest 1.6.0 이상이 필요합니다.
--platform은 언어 플랫폼을 식별하고, --framework는 테스트 프레임워크를 식별합니다. 지원되는 모든 값과 기본값은 구성을 참조하세요.
계획 단계에서는 테스트를 검색하고, 테스트 기간 및 Test Impact Analysis 데이터를 가져오며, 병렬 처리 수준을 선택합니다. 이 단계에서 테스트를 실행하지는 않습니다. 생성된 .testoptimization/ 디렉터리에는 실행을 위해 선택된 테스트 파일과 분할이 포함되어 있습니다.
2. 계획 검사
다음 명령은 CI 로그에서 제안된 러너 수와 테스트 파일을 검사하는 한 가지 방법입니다.
# Show the number of runners selected by ddtest.cat .testoptimization/runner/parallel-runners.txt
# Count the test files selected for execution.wc -l .testoptimization/runner/test-files.txt
# Preview the first 20 test files to verify test discovery.sed -n '1,20p' .testoptimization/runner/test-files.txt
# Optional: List the per-runner split files to see how ddtest distributed the tests.find .testoptimization/runner/tests-split -maxdepth 1 -type f -print
또는 .testoptimization/ 디렉터리를 CI 아티팩트로 다운로드하여 편집기에서 파일을 열어 보세요.
test-files.txt에 실행할 파일 목록이 포함되어 있는지 확인하세요. Test Impact Analysis가 활성화된 경우, 테스트가 모두 건너뛰어진 파일은 계획에서 제외됩니다.
3. 기존 테스트 명령 교체
계획에 예상된 테스트가 포함된 다음에는 기존 테스트 명령을 다음으로 교체합니다.
bin/ddtest run \
--platform <PLATFORM> \
--framework <FRAMEWORK>
ddtest run은 워크플로에서 이전에 생성된 계획을 재사용합니다. CI 아키텍처에 따라 선택된 분할을 실행하는 방법을 선택하세요.
단일 CI 노드에서 워커 실행
단일 CI 노드에서는 ddtest plan이 선택 사항입니다. ddtest run을 직접 실행하거나, 계획을 먼저 검사하려면 동일한 작업에서 ddtest plan 및 ddtest run을 연속으로 실행하세요. 선택된 병렬 처리 수준은 ddtest가 시작하는 로컬 워커 프로세스의 수입니다. 이 명령은 추가 옵션이 필요하지 않습니다.
CI 노드 간에 테스트 분산
계획 작업에서 ddtest plan을 한 번 실행하세요. .testoptimization/ 디렉터리 전체를 테스트 작업과 공유하고, 선택한 병렬 처리를 사용하여 CI 매트릭스 크기를 정의합니다. 각 노드에서 다음을 실행하세요.
모든 워커가 하나의 CI 노드에서 실행되는 경우, 병렬 실행은 CI 노드 수를 변경하지 않고 테스트 단계를 단축합니다. 각 워커가 별도의 CI 노드에서 실행되는 경우, parallel-runners.txt의 러너 수를 사용하여 CI 매트릭스 크기를 조정하세요. Test Impact Analysis는 ddtest가 러너 수를 선택하기 전에 영향을 받지 않는 테스트를 제거하므로, 변경 범위가 작을수록 시작되는 CI 노드 수가 줄어들 수 있습니다.
--max-parallelism을 사용하여 CI 용량을 제한하세요. 플래너는 --ci-job-overhead를 통해 각 추가 러너의 설정 비용을 고려합니다. 이러한 설정에 대한 자세한 내용은 구성을(를) 참조하세요.
.gitignore에.testoptimization/을 추가하세요. 각 CI 워크플로 실행에 대해 새로운 계획을 생성하고, 동일한 소스 수정 버전 및 실행 환경에 대한 작업 간에만 공유하세요. 동일한 작업 디렉터리에서 계획 및 테스트를 실행합니다. 생성된 파일에 대한 자세한 내용은 계획 아티팩트를 참조하세요.
CI 예시
GitHub Actions 및 CircleCI의 시작점으로 다음 예시를 활용하세요.
Ruby
계획 작업은 CI 노드 수를 선택하고 매트릭스를 내보냅니다. 테스트 작업은 .testoptimization/ 아티팩트를 다운로드하고 해당 매트릭스 노드에 할당된 파일만 실행합니다.
name:CI with Test Parallelizationon:[push]env:DD_TEST_OPTIMIZATION_RUNNER_PLATFORM:rubyDD_TEST_OPTIMIZATION_RUNNER_FRAMEWORK:rspecDD_TEST_OPTIMIZATION_RUNNER_MIN_PARALLELISM:1DD_TEST_OPTIMIZATION_RUNNER_MAX_PARALLELISM:8jobs:dd_plan:runs-on:ubuntu-latestoutputs:matrix:${{ steps.dd_plan.outputs.matrix }}steps:- uses:actions/checkout@v4- name:Download ddtest binaryrun:| mkdir -p bin
gh release download --repo DataDog/ddtest --pattern "ddtest-linux-amd64" --dir bin
mv bin/ddtest-linux-amd64 bin/ddtest
chmod +x bin/ddtestenv:GH_TOKEN:${{ github.token }}- name:Setup Rubyuses:ruby/setup-ruby@v1with:bundler-cache:true- name:Configure Datadog Test Optimizationuses:datadog/test-visibility-github-action@v2with:languages:rubyapi_key:${{ secrets.DD_API_KEY }}site:datadoghq.com- id:dd_planname:Plan test executionrun:bin/ddtest plan- uses:actions/upload-artifact@v4with:name:dd-artifactspath:.testoptimizationinclude-hidden-files:truedd_test:runs-on:ubuntu-latestneeds:[dd_plan]strategy:fail-fast:falsematrix:${{ fromJson(needs.dd_plan.outputs.matrix) }}steps:- uses:actions/checkout@v4- name:Download ddtest binaryrun:| mkdir -p bin
gh release download --repo DataDog/ddtest --pattern "ddtest-linux-amd64" --dir bin
mv bin/ddtest-linux-amd64 bin/ddtest
chmod +x bin/ddtestenv:GH_TOKEN:${{ github.token }}- uses:actions/download-artifact@v4with:name:dd-artifactspath:.testoptimization- name:Setup Rubyuses:ruby/setup-ruby@v1with:bundler-cache:true- name:Configure Datadog Test Optimizationuses:datadog/test-visibility-github-action@v2with:languages:rubyapi_key:${{ secrets.DD_API_KEY }}site:datadoghq.com- name:Run testsrun:bin/ddtest run --ci-node ${{ matrix.ci_node_index }}
설정 워크플로는 ddtest plan을 실행하고 .testoptimization/을 저장하며, 선택된 CI 노드 수로 테스트 워크플로를 계속 진행합니다.
Ruby 및 Python 예시와 동일한 계획 및 테스트 작업 구조를 사용합니다. `DD_TEST_OPTIMIZATION_RUNNER_FRAMEWORK`를 `cucumber`, `cypress`, `jest`, `mocha`, `playwright` 또는 `vitest`로 설정하세요. 다음 예제는 Jest를 사용합니다. `jest`를 테스트 모음에 맞는 프레임워크로 바꾸세요.
CircleCI 워크플로에서 ddtest 다운로드, 계획, 캐시 및 연속 단계를 유지하세요. 테스트 작업에서 종속성을 설치하고, JavaScript를 자동 계측하며, CircleCI 노드 인덱스를 ddtest에 전달합니다.
- run:name:Install JavaScript dependenciescommand:npm ci- test-optimization-circleci-orb/autoinstrument:languages:jssite:datadoghq.com- run:name:Run testscommand:| NODE_INDEX=${CIRCLE_NODE_INDEX:-0}
bin/ddtest run --platform javascript --framework jest --ci-node "${NODE_INDEX}"
`ddtest`는 JavaScript 워커 프로세스에 `NODE_OPTIONS=-r dd-trace/ci/init`를 추가하므로, `ddtest plan` 이전에 설치된 프로젝트 종속성에 `dd-trace`가 포함되어야 합니다. 이는 프레임워크별 [Test Optimization 설정][8]을 대체하지 않습니다. 예를 들어, Cypress는 구성 파일에서 수동 계측이 필요합니다.