중합 비교 차트 JMeter를를 사용하여 보고서 생성

배경

최근에 다른 성능 테스트를 수행하기 위해 프로젝트 팀을 돕기 위해, 도구는 JMeter가 있습니다. 기록 인터페이스와 사람의 파라미터를 이미 완료하기 전에, 내 주요 작업은 시험 보고서를 작성, 스크립트를 실행하는 것입니다. 상황이, 그것을 할, 복잡하지 않습니다 그것은 매우 시간이 많이 걸리는 단점이있다.

첫째,이 각각 여섯 개 그룹 계정, 여섯 가지 BU, BU는 차례로 각각 1,10,20,30 압력 모드 네 가지 종류를 수행 할 필요가 있기 때문이다. 당신이 실행하는 GUI 모드를 사용하는 경우, 당신은 노력을 낭비하는 것입니다, 때마다는 자신의 매개 변수를 변경해야 24 회를 수행해야합니다.

둘째, 리포트 결과에 따라 생성하여 JMeter 플러그를 사용한 중합 결과. 이 시험의 첫 번째 라운드이기 때문에, 내 동료를 수행하기 전에, 단지 인터페이스, 페이지, 오류율 세 가지 차원에서 보고서를 작성, 전혀 비교가 없습니다. 그리고 시각적 결과를 표시하기 위해이 이전 결과 그래프를 생성 할 필요가있다. 처음 시작했을 때, 나는 해당 인터페이스를 찾아, 필요에 따라이었고, 페이지, 엑셀로 이동 차트를 생성하는 Excel을 사용했다. 그러나 실수는 기진 맥진하게하다, 쉽게, 또한 쉽게 장님이다.

솔루션

1

첫 번째 문제를 해결하기 위해, 내 생각은 다른 구성으로하여 JMeter 테스트 스크립트 구성 파일 여러 개 배치를 찾은 다음 여러 박쥐 때마다 수행하는 스크립트를 사용하는 것입니다.

먼저 원래의 테스트 스크립트 JMX는 다른 폴더로 눌러 환경을 여러 개 파일, 아래와 같이 한 후, 스레드의 수를 분류 :

 

 

 

 

JMX 때문에 실제로 구성 스크립트를 저장하는 XML 파일 형식입니다, 그래서 그들은 이렇게 빨리 구성을 완료, 일괄 교체하십시오 VS 코드 폴더를 여는 데 사용할.

 

 

 

쓰기 박쥐 스크립트 후, 스크립트 실행 JMX 명령 줄 모드 및 테스트 보고서를 생성합니다.

원하는 마무리에 실행 (즉, 주문 전화입니다)하고 다음으로 진행, 호출 방법을 사용하는 경우, 배치 파일에서 여러 명령을 실행합니다. 다음과 같습니다 :

 

 

전화 % USERPROFILE % \ 바탕 화면 \ 아파치 JMeter를-3.3 \ 빈 \에서는 jmeter.bat -n -t 'CP BU.jmx'-l test_report.csv -e - 오 cp_test_report 
전화 % USERPROFILE % \ 바탕 화면 \ 아파치 JMeter를-3.3 \ 빈 \에서는 jmeter.bat -n -t 'FA BU.jmx'-l test_report.csv -e -o fa_test_report

사용자 \ XXX를 \ : % USERPROFILE % 시스템 변수, 사용자 양식 C를 대신하여 디렉토리입니다. 이러한 호출은 재사용 성을 개선하고 만 실행하려면 바탕 화면에 JMeter를 할 필요가 컴퓨터를 사용할 수 있습니다.

비 GUI 모드에서 -n 비 GUI를 실행

-t 테스트 파일 스크립트 파일이 실행되는

중합 보고서를 생성 할 수 있습니다 후 -l 로그 파일은 결과 파일을 기록

저장된 경로 -o 출력 HTML 보고서

 

 그래서 각 번호에 대한 각각의 배치 파일 실행 스레드, 당신은 자동으로 보고서를 생성하고 수행 할 수 있습니다.

사실, 경로는 보고서를 생성 할 수 있습니다, 함께 특정 규칙에 따라, 파라 메트릭 구성을한다. 그러나 또한 멀티 스레드 박쥐 파일과는 함께이 훨씬 쉽습니다. 이러한 최적화 할 수있는 장소입니다

보고서의이 부분은 문제의 일부를 비교합니다. 초기 아이디어는, 이전 및 새 매크로 보고서에서 데이터를 읽을 차트를 생성 한 후 비교 차트의 라이브러리를 생성하는 데 사용하는 것입니다. 비교 차트, 그들은 훨씬 덜이, 결국 그림이 천 개 단어 일이 가치가있을 것이라고 말한다.

그의 동료가 실제로 보고서에서 JMeter를 직접 붙여, 및 스크립트 생성 된 HTML 보고서 전에 같은 장소가 없습니다. 또한, 데이터를 읽을 수 없습니다 HTML 파일은 엑셀에서 데이터를 비교하기는 어렵다.

방법 대부분의 지방 뇌는 자연스럽게 나는 밖으로 열한 데이터를 붙여 원래의 방식에 따라 다시 다시 실행, 그래서 같은 형식에 대한 결과 만 재사용 나쁘지는 간주되지 않습니다. 당신은 HTML 보고서가 열립니다에서 플러그 읽기 표를 사용하여 간단한 방법을 사용하고자하는 후. 시도 원, 크롬 플러그인이나 전용 HTTP와 페이지에 대한, 또는 비효율적이다. UI 경로에서 시도 (RPA 도구, 최근 일부 자습서를했다), 추출이 성공하지만, 아마도 몇 가지 요소 요소의 테이블로 확인되지 않은 페이지와 일치에 행의 수를 보인다. 절망에서 만 보고서의 이전 버전과 비슷한 기존의 보고서 생성의 사용에 대해 생각할 수 있습니다. 중합 보고서로 변환하는 jemter 명령 JTL (JMeter가 테스트 결과를) 찾았지만, 스크립트는이 플러그인의 부족 하다며 실행되지 않을 수 있지만, JMeter를 업로드 플러그인이 항상 실패 이후, 방법이 없습니다. 자신은 jemter 인터페이스에서 중합 보고서 플러그인 전에 생성 된 수입 csv 파일을 시도합니다. 성공이 시간뿐만 아니라이 보고서의 역할에 대한 약간의 이해. 이 플러그인은 실제로 로그 파일 구성, 가장 우려의 몇 가지를 보여 다시 계산 될 것이다.

 

이것은 일관된 데이터 형식을 보장합니다. 다음 단계는 데이터를 읽는 고려하는 것입니다. 내 첫번째 생각은 데이터 저장 Dataframe 형식 팬더을 사용하는 것입니다.

읽는 방법을 쓰기 :

데프 read_reports_csv (폴더) :
    cp_df = pd.read_csv (os.path.join (폴더 ' cp.csv ' ))
    mc_df = pd.read_csv (os.path.join (폴더 ' mc.csv ' ))
    mcp113_df = pd.read_csv (os.path.join (폴더 ' mcp113.csv ' ))
    mcproject_df = pd.read_csv (os.path.join (폴더 ' mcproject.csv ' ))
    pa_df = pd.read_csv (os.path.join (폴더 ' pa.csv ' ))
    fa_df = pd.read_csv (os.path.join (폴더 ' fa.csv ' ))
     복귀 cp_df, mc_df, mcp113_df, mcproject_df, pa_df, fa_df

차트를 생성 할 때, 나는 pyecharts 생각하고 있습니다.

다음과 같은 예 그래프 :

에서 pyecharts.charts 가져올 에서 pyecharts의 수입 의 opts로 옵션을


막대 = (
바 ({ " " : " 800 픽셀 " , " 높이 " : " 750px " ,}) #는 차트의 폭과 높이를 초기화 
.add_xaxis (목록 (last_label)) #의 X 축 수가 
.add_yaxis ( ' 응답 시간 시간 평균이를 ' 목록 (this_average)) #는 이 결과, Y 축이 증가 
(.add_yaxis를 ' 응답 시간 평균 마지막 ' 목록 (last_average)) #는 Y 축이 증가하고 최종 결과 
.set_global_opts을 ( # 설정 전역 설정 
    title_opts = opts.TitleOpts (제목 = '평균 응답 시간 비교 차트 인터페이스 ' ), # 설정 제목 
    xaxis_opts =의 opts.AxisOpts (axislabel_opts = opts.LabelOpts (회전 = 15)), #의 텍스트가 표시 긴 텍스트에 대해 기울어 설정 X 주, 
    legend_opts의 =의 OPTS (is_show = 사실, pos_right = 10) .LegendOpts # 전설 
)
)

차트이 주로 매개 변수를 이해하지 못하고, 오랜 시간 동안 인터넷을 검색 생성합니다. 마지막으로 모든 공식 문서의 최종 답변을 찾을 수 있습니다. 말을, 때로는 자신의 긴급한 요구를 충족 할 수있는 결과를 밖으로 검색 바이두, 공식 문서 까다로운, 때때로 패치 워크이며, 품질이 높지 않다. 또는 구글을 다 사용합니다. 그러나 pyechart 자체 것은 아마 많은 정보, 추정 된 몇 가지 외국 사람들과, 바이 라이브러리에서 파생됩니다.

다음 차트는 여기에 가장 문제 장소, 다음의 주요 포인트는, 박제 데이터로 나갈 수 있습니다 :

이전과 인터페이스의 구현 후 1. 정렬 할 데이터를 직접 비교, 분류 라벨 레이블을 할 수있는 방법을 정확하게 동일하지 않습니다.

일부 매개 변수 인터페이스 요구가 동적 2. 방법은 인터페이스 이름이 죽은 쓸 수 있습니다.

판정 차트 올 후에 표시 데이터 세척 헤드가 발생되며 심한 것이다. 내 솔루션의 아이디어는 인터페이스와 페이지 매개 변수화 비교하는 것입니다, 다음 데이터를 보유하는 것은 비교되는, 어느 레이블 필드 각각 신규 및 기존 데이터에 대한 검색, 이전 및 설정 새로운 생성 된 데이터를 비교하기 위해, 다음 데이터 정렬 구성, 일관된 순서를 확인합니다. Dataframe 지원 작업이 내가 아는 한, 기성품 솔루션을 찾을 수 없습니다, 이미 많은, 그들은 이러한 목표를 달성하기 위해 몇 가지 작은 방법을 썼다. 특정 코드는 다음과 같이 :

데프 df_contains (DF, partial_labels) :
     '' '
    이 단계와 비교하는 데이터를 찾을 수 있습니다
    목록을 통해 현재의 문자열을 포함 Dataframe을, 일치, 밖으로
    '' ' 
    result_df 없다 = 없음
     에 대한 라벨 partial_labels :
        X = DF [DF [ ' 라벨 ' ] .str.contains (상표)]
         경우 result_df가 없다 없음 :
            result_df = X
         다른 :
             만약  하지 x.empty :
                result_df = result_df.append (X, ignore_index = 참)
     복귀 result_df.drop_duplicates (서브셋 = ' 라벨 ' , ' 보통 ' , ' 중간 ' , 유지 = ' ' )
데프 replace_digits_in_df (DF, 라벨) :
     '' '
    이 단계는 라벨 번호를 제거하는 것입니다
    JMeter를 스크립트, 일련 번호를 추가 정렬에 영향을 미칠 것입니다 각 요청의 앞에 기록, 우리는 단결을 제거 할 필요가
    물론, 어쩌면 JMeter를 그 자체로는 설정할 수 있습니다,하지만 난 몰라
    '' ' 
    에 대한에서 ) (df.iterrows :
        _ = 로우 [1 ] .Label
        df.loc [행 [0], 레이블] =의 re.sub ( ' \의 D + ' , ' , _)
     복귀 DF
데프 draw_api (last_df, this_df 열)
     '' '
    last_df : 이전 결과, pd.Dataframe
    this_df : 결과, pd.Dataframe
    창 :도 기둥 콘트라스트, HTML 직접 유도 될 수있는 노트북 플롯 수
    '' 
    last_temp = replace_digits_in_df (last_df, ' 라벨 ' )
    마지막 = df_contains의 (last_temp, api_labels) .sort_values (= 의해 [ ' 라벨 ' ])
    
    this_temp = replace_digits_in_df (this_df, ' 라벨 ' ) df_contains (this_df, api_labels)를 .sort_values = (= 그래피 [ ' 라벨 ' ])
   
    인쇄 (this.Label)
     인쇄 ( ' -------- ' )
     인쇄 (last.Label)

    # 다음은 이전 데이터 어긋남 방지, 비교 설정된 새로운 교차점 데이터를 제거하는 
    this_del_index = this.append (마지막 정렬 = 거짓) .drop_duplicates을 (부분적인 = ' 라벨 ' ] = 계속 거짓)있는 .index = this.drop (this_del_index)를
    
    last_del_index = last.append (이 정렬 = 거짓) .drop_duplicates (서브셋 = " 레이블 " , 유지 = 거짓)있는 .index
    마지막 = last.drop (last_del_index)
    

    
    this_average = 이 [칼럼]
    this_label = this.Label
    last_average = 마지막 [칼럼]
    last_label = last.Label
    

    막대 = (
    바 ({ " " : " 800 픽셀 " , " 높이 " : " 750px " ,})
    .add_xaxis (리스트 (last_label))
    .add_yaxis ( ' 응답 시간 평균이 시간 ' ,리스트 (this_average))
    .add_yaxis ( ' 응답 시간 평균 마지막으로 ' 목록 (last_average))
    .set_global_opts (
        title_opts = opts.TitleOpts (표제 = ' 인터페이스의 평균 응답 시간 비교표 ' )
        xaxis_opts = opts.AxisOpts (axislabel_opts에서의 opts.LabelOpts = (= 15 회전 )),
        legend_opts = opts.LegendOpts (is_show = 사실, pos_right = 10 )
    )
    )
    반환

물론, 이러한 방법은 규칙을 쓰기 천천히 앞뒤로 여러 번 시도됩니다. 비교를 위해 두 개의 실행은 데이터가 오정렬되는 일은 없다. 사실, 이것은 가장 시간이 많이 걸리는 부분입니다.

또한, jupyter 노트북 실시간 차트는 그것을 사용하는 것이 좋습니다, 그것은 편리 생성 볼 수 있습니다. 단, 최종 차트 개체를 생성 render_notebook () 메소드가 될 수 있습니다 호출해야합니다. 다음도 비교 마침내 생성 :

 

 

 

코드 주소 :

https://github.com/MRFF/Learning-Python/blob/master/compare_reports.py

참고 링크 :

https://pandas.pydata.org/pandas-docs/stable/

https://pyecharts.org /

추천

출처www.cnblogs.com/yifeixu/p/11742452.html