DevOps 테스트 도구 통합

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기9분
  • 테스트 도구 통합을 사용하면 , , Azure DevOpsGitHub, GitHub Enterprise 및 GitLab 단위, 기능 및 성능 테스트에 대한 Jenkins테스트 결과를 DevOps 볼 수 있습니다.

    및 Jenkins의 경우 GitLab JUnit 테스트 유형 통합만 지원됩니다.

    주:
    다른 테스트 유형의 경우 DevOps APIDevOps - POST /devops/tool/{capability} 엔드포인트를 사용합니다.
    • TestNG를 사용하여 실행 및 게시된 Selenium 테스트는 에 대한 ServiceNow DevOps플러그인에 의해 보고됩니다Jenkins.
    • 테스트 유형 범주화가 지원됩니다.
    • Apache JMeter와 같은 도구에서 보고한 추가 테스트 결과는 사용자 지정 워크플로우 스튜디오 하위 플로우를 DevOps 사용하여 처리할 수 있습니다(파이프라인 변경 필요 없음).
    범주 테스트 유형
    단위

    JUnit(기본값)

    NUnit

    XUnit

    단위 테스트

    주:
    • 및 Jenkins의 경우 GitLab JUnit 테스트 유형 통합만 지원됩니다.
    • ADO, GitHub 및 GitHub Enterprise의 경우 JUnit, NUnit, XUnit 및 단위 테스트 유형 통합이 지원됩니다.

    다음을 수정하여 기본 테스트 유형을 변경할 수 있습니다. [sn_devops.default_test_type] DevOps 속성.

    기능
    • 통합
    • 회귀
    • 연기
    • 시스템
    • 사용자 수용
    성능 로드

    테스트 유형 매핑

    테스트 유형 매핑은 테스트 DevOps 중인 테스트 유형 및 엔터티를 도구(DevOps > 통합 > 테스트 유형 매핑 모듈.)

    테스트 유형 매핑

    테스트 유형 매핑이 정확하면 테스트 유형이 항상 테스트 요약 결과에 의도한 대로 표시됩니다.

    필드 설명
    테스트 유형
    • JUnit
    • Nunit
    • 엑스유니트
    • 단위 테스트
      주:
      • 및 Jenkins의 경우 GitLab JUnit 테스트 유형 통합만 지원됩니다.
      • ADO, GitHub 및 GitHub Enterprise의 경우 JUnit, NUnit, XUnit 및 단위 테스트 유형 통합이 지원됩니다.
    • 통합
    • 회귀
    • 연기
    • 시스템
    • 사용자 수용
    • 로드
    DevOps 엔터티 ID 테이블 이름

    DevOps 테스트 결과(테스트 보고서 페이로드)에 연결된 엔터티가 포함된 테이블 이름입니다.

    • [sn_devops_step] 단계
    • 파이프라인 [sn_devops_pipeline]
    주:
    단계 및 파이프라인 테이블만 DevOps 지원됩니다.
    문서

    선택한 테이블에 지정된 엔터티의 이름입니다.

    예를 들어 단계, 파이프라인, 아티팩트 또는 패키지의 이름입니다.

    테스트 파일 경로

    Jenkins(테스트만 해당)

    서버에서 생성된 테스트 결과 파일의 Jenkins 경로입니다.

    이는 JUnit 또는 TestNG 구현을 준수하지 않는 속성이 있는 테스트 보고서(예: JMeter)를 통해 계속 활용할 DevOps수 있도록 유용합니다.

    여러 파일을 쉼표로 구분합니다.

    주:
    원시 테스트 페이로드를 변환하려면 하위 플로우를 워크플로우 스튜디오 사용해야 합니다.
    도구 통합

    테스트를 실행하는 도구입니다.

    DevOps 테이블

    DevOpsDevOps 엔터티 ID 설정의 테이블 이름에 해당하는 테이블입니다.

    그림 1. DevOps 테스트 유형 매핑
    DevOps 테스트 유형 매핑
    그림 2. ADO 단위 테스트의 예제 yaml 파일
    ADO 단위 테스트의 예제 yaml 파일
    그림 3. GitHub 단위 테스트의 예제 yaml 파일
    GitHub 단위 테스트의 예제 yaml 파일

    원시 테스트 페이로드 변환

    예를 들어 DevOps 테스트 하위 플로우 정책 결정 테이블을 구성하여 사용자 지정 하위 플로우(결정 테이블 > 결정 테이블 모듈).
    주:
    원시 테스트 페이로드를 변환하는 사용자 지정 워크플로우 스튜디오 하위 플로우를 만들어야 합니다.

    성능 스테이지에 테스트 유형이 두 개 이상 있는 경우 DevOps 테스트 유형 정책 결정 테이블을 사용하여 각 테스트에 대한 테스트 유형을 구성하여 테스트 결과 페이로드가 올바르게 변환되도록 할 수 있습니다.

    그림 4. DevOps 결정 테이블
    DevOps 결정 테이블
    표 1. DevOps 결정 테이블
    결정 테이블 목적 구성
    DevOps 테스트 하위 플로우 정책

    도구에서 받은 원시 페이로드를 변환하는 사용자 지정 하위 플로우를 자동으로 호출합니다.

    결정 입력:

    • 테스트 결과 페이로드
    • 테스트 유형

    원시 페이로드가 수신될 때 호출할 사용자 지정 하위 플로우를 지정하는 결정을 생성합니다.

    원시 페이로드에 포함될 필드를 포함할 조건을 설정합니다.

    예를 들어, BZ 성능 테스트 사용자 지정 하위 플로우를 호출 Jenkins 하려면 다음을 수행합니다.

    조건:
    • 테스트 유형은 로드입니다.

      (부하는 성능 테스트를 위해 구성된 테스트 유형임)

    • 테스트 결과 페이로드에 처리량이 포함되어 있습니다.
    • 테스트 결과 페이로드에 동시 허용 사용자 수가 포함되어 있음

    정답: 플로우: Jenkins BZ 성능 테스트

    DevOps 테스트 유형 정책

    성능 테스트 스테이지에 둘 이상의 테스트 유형이 구성된 경우 테스트 유형을 자동으로 설정하려면

    이는 두 번째 테스트 유형의 결과가 올바르게 변환되도록 하기 위해 필요합니다.

    예를 들어 부하 성능 테스트와 JUnit 성능 테스트가 모두 동일한 DevOps 단계에서 매핑되는 경우 결정이 생성되지 않는 한 JUnit 테스트 결과의 형식이 올바르게 지정되지 않습니다.

    결정 입력:
    • 단계
    • 테스트 결과 페이로드
    • 도구 통합
    • 파이프라인

    성능 테스트 스테이지에서 각 테스트 유형에 대한 결정을 생성하여 테스트 유형을 설정합니다.

    부하 테스트:
    • 조건:
      • 단계는 성능 테스트입니다.
      • 테스트 결과 페이로드에 처리량이 포함되어 있습니다.
      • 테스트 결과 페이로드에 동시 허용 사용자 수가 포함되어 있음
    • 정답: TestType: 로드

    JUnit 테스트:

    • 조건:
      • 단계는 성능 테스트입니다.
      • 테스트 결과 페이로드에 처리량이 포함되어 있지 않습니다.
      • 테스트 결과 페이로드에 동시성이 포함되어 있지 않습니다.
    • 정답: TestType: JUnit

    그림 5. DevOps 여러 성능 테스트 유형
    DevOps 다중 성능 테스트 유형
    그림 6. DevOps 다중 테스트 유형 매핑
    DevOps 테스트 유형 매핑
    그림 7. DevOps 결정 테이블 결정
    DevOps 결정 테이블 결정

    테스트 요약 결과

    다음과 같은 방법으로 테스트 요약 결과를 볼 수 있습니다.
    그림 8. DevOps 성능 테스트 요약 예
    DevOps 성능 테스트 요약

    예상 표준 JSON 알림 역량 페이로드 - 테스트 도구

    기능:
    { 
    "name": "CorpSite-selenium#55", 
    "duration": 78.802, 
    "passedTests": 4, 
    "failedTests": 0, 
    "skippedTests": 0, 
    "blockedTests": 0, 
    "totalTests": 4, 
    "startTime": "2020-06-30T18:12:31Z", 
    "finishTime": "2020-06-30T18:12:31Z", 
    "passingPercent": 100, 
     
     
    // Use Artifact OR Package OR Build + Stage + PipelineName Attributes 
    
    Send only one Attribute combination. For example, send Attributes of either  Artifact or Package, or the combination of Build + Stage + PipelineName.
    
    If you send more than one Attribute, priority is given in the following order and the low priory one is ignored. For example, if you send attribute for both packages and artifacts, then attribute of package is considered and the attribute of artifacts is ignored.
    
    1.packages
    2.artifcats
    3.buildNumber + stageName + pipelineName
    
    "packages": [{"name": "CorpSite-pkg1"}], 
    "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], 
    "buildNumber": "55", 
    "stageName": "test", 
    "pipelineName": "CorpSite-selenium", 
    } 
    
    Notes:
    - The pipelineName attribute value must be same as the value in the Orchestration pipeline field of the Pipeline [sn_devops_pipeline] table.
    - The stageName attribute value must be same as the value in the Orchestration stage field of the Step [sn_devops_step] table.
    공연:
    { 
    "name": "Performance Tests", 
    "url": "http://abc.com", 
    "startTime": "2020-06-30T18:12:31Z", 
    "finishTime": "2020-06-30T18:12:31Z", 
    "duration": 78.802, 
    "maximumVirtualUsers": "", 
    "throughput": "", 
    "maximumTime": "", 
    "minimumTime": "", 
    "averageTime": "", 
    "ninetyPercent": "", 
    "standardDeviation": "", 
     
    // Use Artifact OR Package OR Build + Stage + PipelineName Attributes 
    
    Send only one Attribute combination. For example, send Attributes of either  Artifact or Package, or the combination of Build + Stage + PipelineName.
    
    If you send more than one Attribute, priority is given in the following order and the low priory one is ignored. For example, if you send attribute for both packages and artifacts, then attribute of package is considered and the attribute of artifacts is ignored.
    
    1.packages
    2.artifcats
    3.buildNumber + stageName + pipelineName
    
    "packages": [{"name": "CorpSite-pkg1"}], 
    "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], 
    "buildNumber": "55", 
    "stageName": "test", 
    "pipelineName": "CorpSite-Performance", 
    } 
    
    Notes:
    - The pipelineName attribute value must be same as the value in the Orchestration pipeline field of the Pipeline [sn_devops_pipeline] table.
    - The stageName attribute value must be same as the value in the Orchestration stage field of the Step [sn_devops_step] table.