14. 보고서 대시보드 생성

JMeter는 테스트 계획에서 그래프와 통계를 얻기 위해 대시보드 보고서 생성을 지원합니다.
이 장에서는 생성기를 구성하고 사용하는 방법에 대해 설명합니다.

14.1 개요

대시보드 생성기는 JMeter의 모듈식 확장입니다. 기본 동작은 CSV 파일에서 샘플을 읽고 처리하여 그래프 보기가 포함된 HTML 파일을 생성하는 것입니다. 부하 테스트가 끝날 때 또는 요청 시 보고서를 생성할 수 있습니다.

이 보고서는 다음 측정항목을 제공합니다.

  • 허용 및 충족된 임계값에 대해 구성 가능한 값을 기반으로 모든 트랜잭션에 대해 APDEX를 계산하는 APDEX (응용 프로그램 성능 지수) 테이블
  • 성공 및 실패한 요청(트랜잭션 컨트롤러 샘플 결과는 고려되지 않음) 백분율을 보여주는 요청 요약 그래프:
  • 구성 가능한 3개의 백분위수를 포함하여 트랜잭션당 모든 메트릭의 요약을 하나의 테이블에 제공하는 통계 테이블:
  • 전체 요청에서 모든 오류 및 해당 비율에 대한 요약을 제공하는 오류 테이블:
  • 모든 샘플러에 대해 제공하는 샘플러별 상위 5개 오류(기본적으로 트랜잭션 컨트롤러 제외) 상위 5개 오류:
  • 모든 거래를 확인/선택 취소하여 표시/숨길 수 있는 확대/축소 가능한 차트:
    • 시간 경과에 따른 응답 시간(트랜잭션 컨트롤러 샘플 결과 포함):
    • 응답 시간 시간에 따른 백분위수(성공적인 응답만 해당):
    • 시간 경과에 따른 활성 스레드:
    • 시간 경과에 따른 바이트 처리량(트랜잭션 컨트롤러 샘플 결과 무시):
    • 시간 경과에 따른 지연 시간(트랜잭션 컨트롤러 샘플 결과 포함):
    • 시간 경과에 따른 연결 시간(트랜잭션 컨트롤러 샘플 결과 포함):
    • 초당 적중 횟수(트랜잭션 컨트롤러 샘플 결과 무시):
    • 초당 응답 코드(트랜잭션 컨트롤러 샘플 결과 무시):
    • 초당 트랜잭션(트랜잭션 컨트롤러 샘플 결과 포함):
    • 응답 시간 대 초당 요청(트랜잭션 컨트롤러 샘플 결과 무시):
    • 대기 시간 대 초당 요청(트랜잭션 컨트롤러 샘플 결과 무시):
    • 응답 시간 개요(트랜잭션 컨트롤러 샘플 결과 제외):
    • 응답 시간 백분위수(트랜잭션 컨트롤러 샘플 결과 포함):
    • 시간 대 스레드(트랜잭션 컨트롤러 샘플 결과 포함):
      분산 모드에서 이 그래프는 가로축에 1개의 서버에 대한 스레드 수를 표시합니다. 현재 제한 사항입니다
    • 응답 시간 분포(트랜잭션 컨트롤러 샘플 결과 포함):

14.2 대시보드 생성 구성

대시보드 생성은 JMeter 속성을 사용하여 보고서를 사용자 정의합니다. 일부 속성은 일반 설정에 사용되고 다른 속성은 특정 그래프 구성 또는 내보내기 구성에 사용됩니다.

모든 보고서 생성기 속성은 reportgenerator.properties 파일에서 찾을 수 있습니다 . 이러한 속성을 사용자 지정하려면 user.properties 파일에 복사하여 수정해야 합니다.

14.2.1 요구 사항

14.2.1.1 필터링 구성

모든 것을 원하지 않는 경우 보고서에 원하는 트랜잭션만 유지하도록 jmeter.reportgenerator.exporter.html.series_filter 속성을 설정했는지 확인하십시오 .
아래 예에서는 Search|Order 만 수정 하고 나머지는 유지해야 합니다.
jmeter.reportgenerator.exporter.html.series_filter=^(검색|주문)(-성공|-실패)?$

14.2.1.2 서비스 구성 저장

생성기가 작동하려면 JMeter에 의해 생성된 CSV 파일에 JMeter 의 마지막 라이브 버전에서 기본적으로 올바른 특정 필수 데이터가 포함되어야 합니다 .
해당 설정을 수정한 경우 JMeter 구성이 다음 설정(기본값)을 따르는지 확인하십시오.

jmeter.save.saveservice.bytes = 사실
# HttpClient4에서만 사용 가능
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = 사실
jmeter.save.saveservice.thread_counts = 참
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = 참
jmeter.save.saveservice.connect_time = true
jmeter.save.saveservice.assertion_results_failure_message = true
# 타임스탬프 형식은 시간을 포함해야 하고 날짜를 포함해야 합니다.
# 예를 들어 epoch 이후의 밀리초인 기본값은 다음과 같습니다.
jmeter.save.saveservice.timestamp_format = ms
# 또는 다음도 적합합니다.
# jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
                        

14.2.1.3 트랜잭션 컨트롤러 구성

트랜잭션 컨트롤러 를 사용하는 경우 가장 정확한 결과를 얻으려면 다음을 수행하십시오.

  • 확인란의 선택을 취소합니다( 기본 구성 임): 상위 샘플 생성
  • 트랜잭션 컨트롤러 가 Ajax 호출을 트리거할 HTML 페이지에 대한 요청을 나타내는 컨테이너로 사용되며 보고서에서 트랜잭션 컨트롤러만 원하는 경우 노드를 마우스 오른쪽 버튼으로 클릭하고 이름 지정 정책 적용
    당신은 이것을 얻을 것입니다:

14.2.2 일반 설정

모든 속성에는 접두사를 붙여야 합니다.
jmeter.reportgenerator.

매개변수

기인하다
설명
필수의
보고서 제목
생성된 보고서에 사용된 제목입니다.
기본값: "Apache JMeter 대시보드"
아니
날짜 형식
Locale.ENGLISH가 있는 SimpleDateFormat Java API 의 기본 날짜 형식입니다 .
기본 날짜 형식은 yyyyMMddHHmmss
입니다. 부하 테스트 후 보고서를 생성하고 결과 파일에 다른 시간대의 타임스탬프가 포함되어 있을 때 유용합니다. 이 경우 날짜 형식에는 시간대(zzz)가 포함되어야 합니다.
jmeter.save.saveservice.timestamp_format 에 연도가 포함되어 있지 않으면 1970을 연도로 사용 하십시오.

예: dd/MM/yyyy HH:mm:ss zzz
아니
시작일
보고서에 사용할 데이터 범위의 시작 날짜입니다.
날짜 형식은 date_format 속성에 의해 정의됩니다.
기본값: 데이터 범위가 처음부터 사용됨을 의미하는 채워지지 않음
아니
종료일
보고서에 사용할 데이터 범위의 종료 날짜입니다.
날짜 형식은 date_format 속성에 의해 정의됩니다.
기본값: 채워지지 않음은 데이터 범위가 끝까지 사용됨을 의미합니다.
아니
전체_세분성
시간 경과에 따른 그래프의 세분성. 데이터는 1분 틱으로 집계됩니다.
세분성은 1초(1000)보다 높아야 합니다. 그렇지 않으면 처리량 그래프가 정확하지 않습니다.
기본값: "60000"(1분)
아니
apdex_satisfied_threshold
APDEX 계산 에 대한 만족 임계값을 설정합니다 (ms 단위).
기본값: 500
아니
apdex_tolerated_threshold
APDEX 계산에 대한 허용 한계 임계값(ms)을 설정합니다.
기본값: 1500
아니
jmeter.reportgenerator.apdex_per_transaction
특정 샘플에 대한 만족 및 허용 한계 임계값을 설정합니다.
샘플 이름 또는 정규식을 사용합니다.
형식은 sample_name:satisfaction|tolerance[;]
입니다. 값은 밀리초 단위입니다.
샘플 이름과 값 사이의 콜론, 임계값 사이의 파이프 및 끝에 있는 세미콜론을 확인하여 다른 샘플을 구분합니다. 여러 줄에 걸쳐 있는 세미콜론 뒤에 이스케이프하는 것을 잊지 마십시오.
예시:
jmeter.reportgenerator.apdex_per_transaction=샘플(\\d+):1000|2000;\
    샘플12:3000|4000;\
    시나리오01-12:5000|6000
아니
샘플 필터
그래프 및 통계 생성을 위해 보관할 샘플 필터를 설정합니다. 값이 비어 있으면 필터링이 비활성화됩니다.
형식: 정규식.
기본: ""
아니
임시 디렉토리
파일 I/O 작업이 필요한 경우 생성 프로세스에서 사용하는 임시 디렉터리를 설정합니다.
기본값: 임시
아니
statistic_window
백분위수 평가에 사용되는 슬라이딩 윈도우의 크기를 설정합니다. 주의: 값이 높을수록 정확도가 향상되지만 더 많은 메모리가 필요합니다.
기본값: 20000
아니
요약 테이블 및 백분위수 그래프에서 사용하는 백분위수는 3가지 속성을 사용하여 다른 값으로 조정할 수 있습니다.
  • aggregate_rpt_pct1 : 기본값은 90입니다.
  • aggregate_rpt_pct2 : 기본값은 95입니다.
  • Aggregate_rpt_pct3 : 기본값은 99입니다.
상대 경로는 JMeter 작업 디렉토리(기본값: bin )에서 빌드됩니다.

생성기 구성에서 사용되는 일부 전체 속성을 정의할 수 있습니다. 이러한 속성의 이름은 자유롭게 지정할 수 있지만 접두사를 사용해야 합니다.

jmeter.reportgenerator.
속성 중복을 피하기 위해.

예:

속성 정의:
jmeter.reportgenerator.overall_granularity=60000
속성 참조:
${jmeter.reportgenerator.overall_granularity}

14.2.3 그래프 설정

그래프 구성을 설명하는 각 속성에는 접두사를 붙여야 합니다.

jmeter.reportgenerator.graph.
다음에 그래프 식별자가 옵니다.

14.2.3.1 일반 속성

모든 그래프는 다음 속성을 지원합니다.

매개변수

기인하다
설명
필수의
학명
그래프의 정규화된 클래스 이름 그래프 의 클래스는 org.apache.jmeter.report.processor.graph.AbstractGraphConsumer
를 확장해야 합니다 . 자세한 내용은 기본 그래프 섹션 을 참조하십시오.
제외_컨트롤러
그래프가 컨트롤러 샘플을 버릴지 여부를 정의합니다. 기본값: 거짓
아니
제목
그래프의 제목을 설정합니다. 기본: ""
아니

14.2.3.2 특정 속성

특정 그래프 속성은 접두사를 사용해야 합니다.

jmeter.reportgenerator.graph.<graph_id>.property
속성의 이름은 낙타 대소문자 변환을 사용하여 매핑되고 클래스의 일치하는 메서드는 속성 값을 인수로 사용하여 호출됩니다.

예:

jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150
그래프 인스턴스에서 setGranularity(150) 메서드 호출을 유도합니다 .

14.2.4 내보내기 설정

내보내기 구성을 설명하는 각 속성에는 접두사를 붙여야 합니다.

jmeter.reportgenerator.exporter
그 뒤에 수출자 식별자가 옵니다.

14.2.4.1 일반 속성

모든 내보내기는 다음 속성을 지원합니다.

매개변수

기인하다
설명
필수의
학명
내보내기의 정규화된 클래스 이름 내보내기 의 클래스는 org.apache.jmeter.report.dashboard.DataExporter
를 구현해야 합니다 .
filter_only_sample_series
series_filter (아래 참조)가 샘플 시리즈에만 적용 되는지 여부 를 정의합니다. 기본값:
아니
시리즈_필터
시리즈의 필터를 설정합니다. 값이 비어 있으면 필터링이 비활성화됩니다. 비어 있지 않은 경우 정규식은 (-success|-failure)?$
형식으로 끝나야 합니다. 형식: 정규식. 기본: ""
아니
show_controllers_only
컨트롤러 시리즈만 표시할지 여부를 정의합니다. 기본값: 거짓
아니

14.2.4.2 특정 속성

특정 내보내기 속성은 접두사를 사용해야 합니다.

jmeter.reportgenerator.exporter.<exporter_id>.property

매개변수

기인하다
설명
필수의
output_dir
생성된 html 페이지의 대상 디렉토리를 설정합니다. 기본값: 보고서 출력
아니
템플릿_디렉토리
html 페이지가 생성되는 템플릿 파일의 소스 디렉토리를 설정합니다. 기본값: 보고서 템플릿
아니

14.2.4.3 그래프 속성

그래프 속성을 사용하면 내보내기가 일부 그래프 데이터를 덮어쓸 수 있습니다.
접두사를 사용해야 합니다.

jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id>

매개변수

기인하다
설명
필수의
말괄량이
그래프의 최소 가로 좌표를 설정합니다.
아니
맥스X
그래프의 최대 가로 좌표를 설정합니다.
아니
최소
그래프의 최소 세로 좌표를 설정합니다.
아니
최대 Y
그래프의 최대 세로 좌표를 설정합니다.
아니

14.2.4.4 필터링 메커니즘

계산 전에 데이터를 버리는 일반 속성 섹션의 필터링과 달리 여기에서 필터링은 계산 후에 수행되며 최종 보고서를 단순화하는 역할을 합니다.

series_filter 속성 을 사용하면 계열 이름(행 관련)과 일치하는 정규식을 사용하여 그래프의 계열(요약 테이블 관련 행)을 필터링할 수 있습니다. 그러나 계열의 이름(해당 행)이 필터와 일치하더라도 다른 필터링 속성의 설정이 무시될 수 있습니다. 반대로 일치하는 항목이 없으면 다른 속성에서 이를 유지하도록 허용할 수 있습니다.

다음 표는 필터링 속성 설정이 작동하는 방식을 보여줍니다.

패턴 매칭이 있는 경우 폐기하는 경우
filter_only_sample_series 그래프/요약은 컨트롤러 식별을 지원합니다. 현재 시리즈는 컨트롤러 시리즈입니다. show_controllers_only 폐기
거짓 거짓 - 거짓 거짓
진실
- 거짓
진실
진실 거짓 거짓
진실
진실 거짓
진실
진실 거짓 - 거짓
진실
- 거짓
진실
진실 거짓 거짓
진실 진실
진실 거짓 거짓
진실

패턴 매칭이 없는 경우 보유 사례
filter_only_sample_series 그래프/요약은 컨트롤러 식별을 지원합니다. 유지된
거짓 거짓 거짓
진실
진실 거짓 진실
진실 거짓

잘못된 필터 구성으로 인해 빈 그래프/요약 테이블이 생성될 수 있습니다.
  • show_controllers_only 속성을 설정 하고 그래프가 컨트롤러를 제외하도록 구성된 경우.
  • series_filter 속성이 시리즈와 일치하지 않는 경우.

14.2.5 샘플 구성

보고서 생성기를 테스트하기 위해 다음 구성을 user.properties 파일에 복사할 수 있습니다.

# 보고서 제목을 변경하려면 이 속성을 구성합니다.
#jmeter.reportgenerator.report_title=Apache JMeter 대시보드

# 시간 경과 그래프의 세분성을 변경하려면 이 매개변수를 변경하십시오.
# 입도는 1000(1초)보다 높아야 합니다. 그렇지 않으면 처리량 그래프가 올바르지 않습니다.
# 버그 60149 참조
#jmeter.reportgenerator.overall_granularity=60000

 응답 시간 분포의 세분성을 변경하려면 이 매개변수를 변경하십시오.
# 기본적으로 100ms로 설정
#jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100

# APDEX 만족도 임계값을 재정의하려면 이 매개변수를 변경합니다.
jmeter.reportgenerator.apdex_satisfied_threshold=1500

# APDEX 허용 오차 임계값을 무시하려면 이 매개변수를 변경하십시오.
jmeter.reportgenerator.apdex_tolerated_threshold=3000

# 생성된 html 페이지의 대상 디렉토리를 설정합니다. 매 세대마다 변경하는 것이 좋습니다.
# 이것은 -o 명령줄 옵션을 통해 설정된 값을 무시합니다.
# jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report

# 필터링된 그래프 시리즈를 나타냅니다(정규 표현식).
# 아래 예에서는 검색 및 주문 샘플을 필터링합니다.
# 패턴의 끝에는 항상 (-success|-failure)?$가 포함되어야 합니다.
# 초당 트랜잭션 접미사는 "-success" 또는 "-failure"가 있는 트랜잭션입니다.
# 결과에
#jmeter.reportgenerator.exporter.html.series_filter=^(검색|주문)(-성공|-실패)?$

# 시리즈 필터가 샘플 시리즈에만 적용되는지 여부를 나타냅니다.
jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
                    
환경에 맞게 output_dir 매개변수 를 조정 합니다.

이 구성을 통해 다음과 같은 경우 보고서를 생성할 수 있습니다.

  • 시간 경과에 따른 그래프의 시간 단위는 1분입니다.
  • ADPEX 계산을 위한 만족 임계값은 1초 반입니다.
  • ADPEX 계산을 위한 허용 한계 임계값은 3초입니다.
  • HTML 파일은 /tmp/test-report 디렉토리에 생성됩니다 .
  • 이름이 " s0 " 또는 " s1 "로 시작하는 시리즈만 표시됩니다.
  • 이전 필터는 계열(해당 행)이 샘플과 일치하는 그래프(해당 요약 테이블)에만 적용됩니다.

14.3 보고서 생성

보고서 생성은 샘플 로그 파일에서 독립 실행형 프로세스로 수행하거나 부하 테스트를 실행한 후 자동으로 수행할 수 있습니다.

14.3.1 기존 샘플 CSV 로그 파일에서 생성

다음 명령을 사용합니다.

jmeter -g <로그 파일> -o <출력 폴더 경로>

14.3.2 부하 테스트 후 생성

다음 명령을 사용합니다.

jmeter -n -t <테스트 JMX 파일> -l <테스트 로그 파일> -e -o <출력 폴더 경로>

14.3.3 GUI 도구 메뉴를 사용한 생성

도구 → HTML 보고서 생성 메뉴 항목을 사용하여 HTML 보고서를 생성할 수 있습니다 .

그림 14.1.  HTML 보고서 대화 상자 메뉴
그림 14.1. HTML 보고서 대화 상자 메뉴

각 매개변수에 대해 다음 표를 참조하십시오.

매개변수

기인하다
설명
필수의
결과 파일(csv 또는 jtl)
테스트 실행의 CSV 출력
user.properties 파일
부하 테스트를 실행하는 데 사용되는 user.properties 파일
출력 디렉토리
보고서를 생성할 디렉토리(비어 있어야 함)
아니

출력 디렉토리가 정의되지 않은 경우 컨트롤러는 ${JMETER_HOME}/bin/report-output 을 사용 합니다.

그런 다음 보고서 생성 버튼을 클릭하고 정보 대화 상자가 나타날 때까지 기다리기만 하면 됩니다.

보고서 생성이 2분 이상 걸리면 generate_report_ui.generation_timeout 속성을 조정하십시오.

14.4 기본 그래프

이 초기 버전의 제한 사항으로 인해 각 기본 그래프는 JMeter 속성에서 선언되어야 합니다. 그렇지 않으면 그래프 보기가 비어 있습니다.

이 보고서 엔진에서 제공하는 모든 그래프는 org.apache.jmeter.report.processor.graph.impl 패키지에 있습니다.

대시보드 생성기는 다음 그래프 클래스를 제공합니다.

그래프 설명 컨트롤러 식별 지원
ActiveThreadsGraph소비자 이 그래프는 시간 경과에 따른 활성 스레드 수를 나타냅니다. 거짓
BytesThroughputGraphConsumer 이 그래프는 시간 경과에 따른 송수신 데이터의 처리량을 나타냅니다. 거짓
CodesPerSecondGraphConsumer 이 그래프는 시간 경과에 따른 응답 코드 비율을 나타냅니다. 거짓
HitsPerSecondGraphConsumer 이 그래프는 시간 경과에 따른 완료된 요청의 비율을 나타냅니다. 거짓
LatencyOverTimeGraphConsumer 이 그래프는 시간 경과에 따른 평균 대기 시간을 나타냅니다. 진실
ConnectTimeOverTimeGraph소비자 이 그래프는 시간에 따른 연결 시간을 나타냅니다. 진실
LatencyVSRequestGraphConsumer 이 그래프는 현재 요청 수에 따른 중간 및 평균 지연 시간을 나타냅니다. 거짓
ResponseTimeDistributionGraphConsumer 이 그래프는 경과 시간과 이름에 따른 샘플의 분포를 나타냅니다. 진실
ResponseTimeOverTimeGraph소비자 이 그래프는 시간 경과에 따른 평균 응답 시간을 나타냅니다. 진실
ResponseTimePercentilesGraphConsumer 이 그래프는 시간 경과에 따른 경과 시간의 백분위수를 나타냅니다. 진실
ResponseTimePercentilesOverTimeGraphConsumer 이 그래프는 시간에 따른 최소/최대 및 3백분위수 응답 시간을 보여줍니다. 진실
ResponseTimeVSRequestGraph소비자 이 그래프는 현재 요청 수에 따른 중앙값 및 평균 응답 시간을 나타냅니다. 거짓
TimeVSThreadGraph소비자 이 그래프는 현재 활성 스레드 수에 따른 평균 응답 시간을 나타냅니다.

*-aggregated 시리즈는 현재 활성 스레드 수에 관계없이 평균 응답 시간을 나타냅니다. 이러한 계열은 현재 활성 스레드의 수가 평균으로 집계되기 때문에 단독 점으로 표시됩니다. 따라서 이러한 점에 대해:

  • 가로축은 시리즈의 샘플이 완료될 때 현재 활성 스레드 수의 평균입니다.
  • 세로 좌표는 현재 활성 스레드 수에 관계없이 시리즈 샘플에 대한 응답 시간의 평균입니다.

진실
TransactionsPerSecondGraphConsumer 이 그래프는 시간 경과에 따른 샘플 이름별 트랜잭션 비율을 나타냅니다. 진실

14.5 시간 경과에 따른 커스텀 그래프 생성

시간 경과에 따라 샘플_변수를 CSV로 그래프로 나타낼 수 있으며 user.properties 파일에서 속성을 설정하여 그래프를 사용자 정의할 수 있습니다.
id 접두사 custom_ 을 사용해야 합니다 .

jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>
이 그래프를 사용자 정의 그래프로 지정하려면 다음을 수행하십시오.
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer

매개변수

기인하다
설명
필수의
set_X_Axis
그래프의 X축 이름을 설정합니다.
set_Y_Axis
그래프의 Y축 이름을 설정합니다.
set_Content_Message
커서가 그래프의 한 지점에 있을 때 표시되는 메시지를 설정합니다.
set_Sample_Variable_Name
csv에 그래프로 표시하려는 열의 이름입니다.

다음은 ts-hit 변수를 그래프로 표시하는 사용자 정의 그래프 구성의 예입니다 .

jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
jmeter.reportgenerator.graph.custom_testGraph.title=청크 히트
jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=적중 횟수
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=시간 경과에 따른
jmeter.reportgenerator.graph.custom_testGraph.property.set_granularity=60000
jmeter.reportgenerator.graph.custom_testGraph.property.set_Sample_Variable_Name=ts-hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Content_Message=적중 횟수:
                        

14.6 보고서 대시보드를 개선하고 싶으십니까?

새 그래프에 기여하거나 현재 그래프를 개선하려면 이 개발자 문서 를 읽을 수 있습니다 . 기여에 대한 이 문서
를 읽으십시오 .
Go to top