테스트 결과 이해

노트

Cloud Manager에서 Cloud Services 파이프라인에 대해 지원하는 테스트 결과 및 테스트에 대해 알아보려면 여기를 참조하십시오.

파이프라인 실행 중에 많은 지표가 캡처되어 비즈니스 소유자가 정의한 주요 성과 지표(KPI) 또는 Adobe Managed Services에서 설정한 표준과 비교됩니다.

이 섹션에 정의된 대로 3계층 게이팅 시스템을 사용하여 보고됩니다.

파이프라인 실행 중 3계층 게이트

파이프라인에는 세 개의 게이트가 있습니다.

  • 코드 품질
  • 성능 테스트
  • 보안 테스트

이러한 각 게이트에 대해 게이트로 식별되는 문제에 대한 3층 구조가 있습니다.

  • 위험 - 파이프라인의 즉각적인 실패를 야기하는 게이트로 식별되는 문제입니다.
  • 중요 - 게이트에서 식별된 문제로 인해 파이프라인이 일시 중지 상태로 전환됩니다. 배포 관리자, 프로젝트 관리자 또는 비즈니스 소유자는 파이프라인이 진행되는 경우 문제를 무시하거나 문제를 수락할 수 있습니다. 이 경우 파이프라인이 오류로 중단됩니다. 중요한 실패를 재정의하면 시간 초과가 적용됩니다.
  • 정보 - 정보 제공용으로만 제공되며 파이프라인 실행에 영향을 주지 않는 게이트에서 식별되는 문제입니다.
노트

코드 품질 전용 파이프라인에서 코드 품질 테스트 단계가 파이프라인의 마지막 단계이므로 코드 품질 테스트 게이트에서의 중요한 오류를 무시할 수 없습니다.

코드 품질 테스트

이 단계에서는 애플리케이션 코드의 품질을 평가합니다. 이는 코드 품질 전용 파이프라인의 핵심 목표이며, 모든 비프로덕션 및 프로덕션 파이프라인에서 빌드 단계 바로 다음에 실행됩니다. 다른 유형의 파이프라인에 대한 자세한 내용은 CI-CD 파이프라인 구성 을 참조하십시오.

코드 품질 테스트 이해

코드 품질 테스트에서 소스 코드가 특정 품질 기준을 충족하는지 검사합니다. 현재 SonarQube와 OakPAL을 사용하는 컨텐츠 패키지 수준 검사 및 Dispatcher 최적화 도구를 사용하는 디스패처 유효성 검사의 조합을 통해 구현됩니다. 일반 Java 규칙과 AEM 관련 규칙을 결합하는 규칙이 100개 이상 있습니다. AEM 관련 규칙 중 일부는 AEM Engineering의 우수 사례를 기반으로 작성되며 사용자 지정 코드 품질 규칙이라고 합니다.

이 단계의 결과는 Rating​으로 전달됩니다. 아래 표에는 다양한 테스트 기준에 대한 등급이 요약되어 있습니다.

이름 정의 카테고리 실패 임계값
보안 등급 A = 0 취약성
B = 최소 1개의 작은 취약성
C = 최소 1개의 주요 취약성
D = 최소 1개의 중요 취약성
E = 최소 1개의 차단기 취약성 취약성
중요 < B
신뢰성 등급 A = 0 버그
B = 최소 1개의 부 버그
C = 최소 1개의 주 버그
D = 최소 1개의 중요 버그
E = 최소 1개의 차단기 버그
중요 사항 < C
유지 관리 등급 코드 냄새에 대한 뛰어난 치료 비용은 다음과 같습니다.
  • <>
  • 6~10% 사이의 등급은 B입니다
  • 11~20% 평가
  • 평점은 21~50% 사이에서 D
  • 50%가 넘는 것은 E입니다
중요 사항 < A
범위 다음 공식을 사용하여 단위 테스트 라인 커버리지 및 조건 커버리지의 혼합입니다.
Coverage = (CT + CF + LC)/(2*B + EL)
위치:CT = 단위 테스트
CF = 장치 테스트 실행 중 'false'로 평가된 조건을 한 번 이상 'true'로 평가한 조건
LC = 적용 라인 = lines_to_cover - indexed_lines

B = 총 조건 수
EL = 총 실행 라인 수(lines_to_cover)
중요 사항 < 50%
건너뛴 단위 테스트 건너뛴 단위 테스트 수입니다. 정보 > 1
열린 문제 전체 문제 유형 - 취약점, 버그 및 코드 냄새 정보 > 0
중복된 선 중복 블록에 관련된 라인 수입니다.
중복으로 간주되는 코드 블록의 경우:
  • 비 Java 프로젝트:
  • 연속되는 토큰이 100개 이상 있어야 합니다.
  • 이러한 토큰은 적어도 다음에 배포해야 합니다.
  • COBOL용 코드 30줄
  • ABAP용 20줄의 코드
  • 다른 언어용 코드 10줄
  • Java 프로젝트:
  • 토큰 및 줄 수에 관계없이 10개 이상의 연속된 문과 중복되는 문이 있어야 합니다.

중복을 검색하는 동안 들여쓰기 및 문자열 리터럴의 차이는 무시됩니다.
정보 > 1%
Cloud Service 호환성 식별된 Cloud Service 호환성 문제 수입니다. 정보 > 0
노트

자세한 정의는 지표 정의 를 참조하십시오.

노트

Cloud Manager에서 실행되는 사용자 지정 코드 품질 규칙에 대한 자세한 내용은 사용자 지정 코드 품질 규칙을 참조하십시오.

긍정 오류 처리

품질 스캔 프로세스는 완벽하지 않으며, 실제로 문제가 되지 않는 문제를 잘못 식별하기도 합니다. 이를 "거짓 양성"이라고 합니다.

이러한 경우 규칙 ID를 주석 속성으로 지정하는 표준 Java @SuppressWarnings 주석으로 소스 코드에 주석을 달 수 있습니다. 예를 들어, 하나의 일반적인 문제는 하드코딩된 암호를 검색하는 SonarQube 규칙이 하드코딩된 암호를 식별하는 방법에 대해 공격적일 수 있다는 것입니다.

특정 예를 보려면, 일부 외부 서비스에 연결할 코드가 있는 AEM 프로젝트에서 이 코드가 일반적입니다.

@Property(label = "Service Password")
private static final String PROP_SERVICE_PASSWORD = "password";

그러면 SonarQube가 차단기 취약성을 높입니다. 코드를 검토한 후 취약점이 아님을 식별하고 적절한 규칙 ID로 여기에 주석을 달 수 있습니다.

@SuppressWarnings("squid:S2068")
@Property(label = "Service Password")
private static final String PROP_SERVICE_PASSWORD = "password";

그러나 반면에 코드가 실제로 다음과 같은 경우:

@Property(label = "Service Password", value = "mysecretpassword")
private static final String PROP_SERVICE_PASSWORD = "password";

그런 다음 하드코딩된 암호를 제거하는 것이 올바른 방법입니다.

노트

@SuppressWarnings 주석을 가능한 한 구체적으로 만드는 것이 가장 좋은 방법이지만, 예를 들어 문제를 일으키는 특정 문이나 블록에만 주석을 다는 것은 클래스 수준에서 주석을 달 수 있습니다.

보안 테스트

Cloud Manager 배포 후 기존 AEM 보안 상태 확인 단계를 실행하고 UI를 통해 상태를 보고합니다. 결과는 환경의 모든 AEM 인스턴스에서 집계됩니다.

이러한 상태 확인은 웹 콘솔 또는 작업 대시보드를 통해 언제든지 실행할 수 있습니다.

인스턴스 중 하나라도 지정된 상태 검사에 대한 오류를 보고하는 경우 전체 환경​이 해당 상태 확인에 실패합니다. 코드 품질 및 성능 테스트와 마찬가지로 이러한 상태 검사는 카테고리로 구성되어 있으며 3계층 게이팅 시스템을 사용하여 보고됩니다. 유일한 차이점은 보안 테스트의 경우 임계값이 없다는 것입니다. 모든 상태 검사는 그냥 통과되거나 실패합니다.

다음 표에는 현재 검사가 나열됩니다.

이름 상태 확인 구현 카테고리
Deserialization 방화벽 연결 API 준비 상태가 허용 가능한 상태입니다. Deserialization Firewall Attach API Readiness 중요
역직렬화 방화벽이 작동합니다. Deserialization Firewall Functional 중요
deserialization 방화벽이 로드됨 Deserialization Firewall Loaded 중요
AuthorizableNodeName 구현에서는 노드 이름/경로에 인증 가능한 ID를 표시하지 않습니다. 승인 가능한 노드 이름 생성 중요
기본 암호가 변경되었습니다. 기본 로그인 계정 중요
Sling 기본 GET 서블릿은 DOS 공격으로부터 보호됩니다. Sling Get Servlet 중요
Sling Java 스크립트 핸들러가 적절하게 구성되어 있습니다 Sling Java Script Handler 중요
Sling JSP 스크립트 핸들러가 적절하게 구성되어 있습니다 Sling JSP 스크립트 처리기 중요
SSL이 올바르게 구성됨 SSL 구성 중요
안전하지 않은 사용자 프로필 정책이 없습니다. 사용자 프로필 기본 액세스 중요
Sling 레퍼러 필터가 CSRF 공격을 방지하도록 구성되어 있습니다 Sling Referrer Filter 중요 사항
Adobe Granite HTML 라이브러리 관리자는 적절하게 구성됩니다 CQ HTML 라이브러리 관리자 구성 중요 사항
CRXDE 지원 번들을 사용할 수 없습니다 CRXDE 지원 중요 사항
Sling DavEx 번들 및 서블릿은 비활성화됩니다 DavEx 상태 검사 중요 사항
샘플 콘텐츠가 설치되지 않았습니다. 컨텐츠 패키지 예 중요 사항
WCM 요청 필터와 WCM 디버그 필터가 모두 비활성화됩니다 WCM 필터 구성 중요 사항
Sling WebDAV 번들 및 서블릿은 적절히 구성됩니다 WebDAV 상태 검사 중요 사항
웹 서버는 클릭재킹을 방지하기 위해 구성되었습니다 웹 서버 구성 중요 사항
복제가 'admin' 사용자를 사용하지 않습니다. 복제 및 전송 사용자 정보

성능 테스트

AEM Sites

Cloud Manager는 AEM Sites 프로그램에 대한 성능 테스트를 실행합니다. 성능 테스트는 실제 사용자를 시뮬레이션하여 스테이지 환경에서 페이지에 액세스하여 트래픽을 시뮬레이션하는 가상 사용자(컨테이너)를 방사하여 최대 30분 동안 실행됩니다. 이 페이지는 Crawler를 사용하여 찾습니다.

  1. 가상 사용자

    Cloud Manager에서 분리된 가상 사용자 또는 컨테이너의 수는 비즈니스 소유자 역할에서 사용자가 정의한 KPI(응답 시간 및 페이지 보기 수/분)에 의해 제어되고 프로그램을 만들거나 편집하는 동안 파생됩니다. 정의된 KPI를 기준으로 실제 사용자를 시뮬레이션하는 최대 10개의 컨테이너가 분할됩니다. 테스트를 위해 선택한 페이지는 분할되어 각 가상 페이지에 할당됩니다.

  2. 크롤러

    30분 테스트 기간이 시작되기 전에 Cloud Manager는 고객 성공 엔지니어가 구성한 하나 이상의 시드 URL을 사용하여 단계 환경을 크롤링합니다. 이 URL부터 각 페이지의 HTML이 검사되고 링크가 폭 우선 탐색됩니다. 이 크롤링 프로세스는 최대 5000페이지로 제한됩니다. Crawler의 요청에는 10초의 고정 시간 제한이 있습니다.

  3. 테스트를 위한 페이지 세트

    페이지는 세 개의 페이지 세트로 선택됩니다. Cloud Manager는 프로덕션 및 스테이지에서 AEM 인스턴스의 액세스 로그를 사용하여 다음 세 개의 버킷을 결정합니다.

    • 인기 있는 라이브 페이지:이 옵션은 라이브 고객이 액세스하는 가장 방문 빈도가 높은 페이지를 테스트하도록 선택합니다. Cloud Manager는 액세스 로그를 읽고 라이브 고객이 가장 많이 액세스한 상위 25개의 페이지를 확인하여 상위 Popular Live Pages 목록을 생성합니다. 그런 다음 스테이지에 있는 이러한 집합의 교차 지점은 스테이지 환경에서 크롤링됩니다.

    • 기타 라이브 페이지:이 선택 사항은 인기 있는 상위 25개 라이브 페이지를 벗어나지만 테스트하는 것이 중요한 페이지를 벗어나도록 선택합니다. 인기 있는 라이브 페이지와 유사하며 액세스 로그에서 추출되며 스테이지에도 있어야 합니다.

    • 새 페이지:이 옵션은 스테이지에만 배포되고 아직 프로덕션에 배포되지 않았을 수 있지만 테스트해야 하는 새 페이지를 테스트하기 위해 선택합니다.

      선택한 페이지 세트 간에 트래픽 배포

      파이프라인 구성(삽입 링크)의 '테스트' 탭에서 1개에서 3개 세트 모두를 선택할 수 있습니다. 트래픽 분배는 선택한 집합 수를 기반으로 합니다. 즉, 세 개 모두 선택한 경우 총 페이지 보기의 33%가 각 집합에 배치됩니다.두 개를 선택하면 50%가 각 세트로 이동합니다.하나를 선택하면 트래픽의 100%가 해당 세트로 이동합니다.

      예를 들어, 방문 빈도가 높은 라이브 페이지와 새 페이지 세트(이 예에서 다른 라이브 페이지가 사용되지 않음) 간에 50% - 50% 분할이 있고 새 페이지 세트에 3000페이지가 포함되어 있다고 가정합니다. 분당 페이지 보기 수 KPI는 200로 설정됩니다. 30분 테스트 기간:

      • 인기 있는 라이브 페이지 세트의 25개 각 페이지에 120회 - ((200 * 0.5) / 25) * 30 = 120회 히트

      • 새 페이지 세트의 3000개 각 페이지가 한 번 히트(200 * 0.5) / 3000) * 30 = 1

테스트 및 보고

Cloud Manager는 30분 테스트 기간 동안 스테이지 게시 서버에서 페이지(기본적으로 인증되지 않은 사용자)를 요청하고 (가상) 사용자가 생성한 지표(응답 시간, 오류율, 분당 보기 등)를 측정하여 AEM Sites 프로그램에 대한 성능 테스트를 실행합니다 모든 인스턴스에 대한 다양한 시스템 수준 지표(CPU, 메모리, 네트워킹 데이터)는 물론 각 페이지마다 다릅니다.
다음 표에는 3계층 게이팅 시스템을 사용하는 성능 테스트 지표가 요약되어 있습니다.

다음 표에는 3계층 게이팅 시스템을 사용하는 성능 테스트 매트릭스가 요약되어 있습니다.

지표 카테고리 실패 임계값
페이지 요청 오류율 % 중요 >= 2%
CPU 사용률 중요 >= 80%
디스크 IO 대기 시간 중요 >= 50%
95번째 백분위수 응답 시간 중요 사항 >= 프로그램 수준 KPI
최대 응답 시간 중요 사항 >= 18초
분당 페이지 보기 수 중요 사항 < Program-level="" KPI="">
디스크 대역폭 사용률 중요 사항 >= 90%
네트워크 대역폭 사용률 중요 사항 >= 90%
분당 요청 수 정보 >= 6000

사이트 및 자산에 대한 성능 테스트에 기본 인증을 사용하는 방법에 대한 자세한 내용은 아래 섹션, 인증된 성능 테스트​를 참조하십시오.

노트

게시 및 작성자에 대해 테스트 기간 동안 각 인스턴스가 모니터링됩니다. 한 인스턴스에 대한 지표를 얻을 수 없는 경우 해당 지표는 알 수 없음으로 보고되며 해당 단계가 실패합니다.

인증된 성능 테스트

이 기능은 사이트 선택 사항입니다.
인증된 사이트를 보유한 AMS 고객은 Cloud Manager가 사이트 성능 테스트 중에 웹 사이트에 액세스하는 데 사용할 사용자 이름과 암호를 지정할 수 있습니다.
사용자 이름과 암호는 CM_PERF_TEST_BASIC_USERNAMECM_PERF_TEST_BASIC_PASSWORD 이름을 사용하는 파이프라인 변수로 지정됩니다.
엄격히 요구되지는 않지만 사용자 이름에 문자열 변수 유형을 사용하고 비밀번호에 secretString 변수 유형을 사용하는 것이 좋습니다. 이 두 항목이 모두 지정되면 성능 테스트 Crawler 및 테스트 가상 사용자의 모든 요청에 이러한 자격 증명이 HTTP Basic 인증으로 포함됩니다.

Cloud Manager CLI를 사용하여 이러한 변수를 설정하려면 다음을 실행하십시오.

$ aio cloudmanager:set-pipeline-variables <pipeline id> --variable CM_PERF_TEST_BASIC_USERNAME <username> --secret CM_PERF_TEST_BASIC_PASSWORD <password>

API를 사용하는 방법에 대해 알아보려면 변수를 참조하십시오.

AEM Assets

Cloud Manager는 30분 테스트 기간 동안 자산을 반복적으로 업로드하여 AEM Assets 프로그램에 대한 성능 테스트를 실행합니다.

  1. 온보딩 요구 사항

    Assets 성능 테스트의 경우 고객 성공 엔지니어는 작성자가 스테이징으로 온보딩 환경에 대해 cloudmanager 사용자(및 암호)를 만듭니다. 성능 테스트 단계에는 cloudmanager 이라는 사용자와 CSE에서 설정한 관련 암호가 필요합니다. 이는 작성자에서 제거되거나 사용 권한으로 변경되지 않아야 합니다. 이렇게 하면 자산 성능 테스트가 실패할 수 있습니다.

  2. 테스트용 이미지 및 자산

    고객은 테스트를 위해 자체 자산을 업로드할 수 있습니다. 이 작업은 파이프라인 설정 또는 편집 화면에서 수행할 수 있습니다. JPEG, PNG, GIF 및 BMP와 같은 일반적인 이미지 형식은 Photoshop, Illustrator 및 Postscript 파일과 함께 지원됩니다. 그러나 이미지가 업로드되지 않으면 Cloud Manager에서는 테스트에 기본 이미지와 PDF 문서를 사용합니다.

  3. 테스트를 위한 자산 배포

    파이프라인 설정 또는 편집 화면에서 분당 업로드되는 각 유형의 자산 수에 대한 분산이 설정됩니다.
    예를 들어 아래 그림과 같이 70/30 분할을 사용하는 경우 분당 10개의 자산이 업로드되고 분당 7개의 이미지가 업로드되고 3개의 문서가 업로드됩니다.

  4. 테스트 및 보고

    Cloud Manager는 위에 언급된 대로 #1(온보딩 요구 사항)의 CSE에서 사용자 이름 및 암호 설정을 사용하여 작성자 인스턴스에 폴더를 만들고 오픈 소스인 라이브러리를 사용하여 폴더에 자산을 업로드합니다. Assets 테스트 단계에서 실행하는 테스트는 이 오픈 소스 라이브러리를 사용하여 작성됩니다. 각 자산에 대한 처리 시간과 다양한 시스템 수준 지표가 30분 테스트 기간에 걸쳐 측정됩니다. 이 기능은 이미지와 PDF 문서를 모두 업로드할 수 있습니다.

    노트

    성능 테스트 구성에 대한 자세한 내용은 CI/CD 파이프라인 구성에서 확인할 수 있습니다. 프로그램을 설정하고 KPI를 정의하는 방법에 대해 알아보려면 프로그램 설정을 참조하십시오.

성능 테스트 결과 그래프

새 그래프 및 다운로드 옵션이 성능 테스트 결과 대화 상자에 추가되었습니다.

성능 테스트 대화 상자를 열면 지표 패널을 확장하여 그래프를 표시하거나 다운로드에 대한 링크를 제공합니다.

Cloud Manager 릴리스 2018.7.0의 경우 이 기능은 다음 지표에 사용할 수 있습니다.

  • CPU 사용률

    • 테스트 기간 동안의 CPU 사용률 그래프입니다.
  • 디스크 I/O 대기 시간

    • 테스트 기간 동안의 디스크 I/O 대기 시간 그래프
  • 페이지 오류율

    • 테스트 기간 동안의 분당 페이지 오류 그래프입니다.
    • 테스트 중에 오류가 발생한 페이지를 나열하는 CSV 파일입니다.
  • 디스크 대역폭 사용률

    • 테스트 기간 동안의 디스크 대역폭 사용률 그래프입니다.
  • 네트워크 대역폭 사용률

    • 테스트 기간 동안의 네트워크 대역폭 사용률 그래프입니다.
  • 최대 응답 시간

    • 테스트 기간 동안의 분당 최대 응답 시간 그래프입니다.
  • 95번째 백분위수 응답 시간

    • 테스트 기간 동안 분당 95번째 백분위수 응답 시간의 그래프입니다.
    • 95번째 백분위수 응답 시간이 정의된 KPI를 초과하는 페이지를 나열하는 CSV 파일.

다음 이미지는 성능 테스트 그래프를 표시합니다.

이 페이지에서는