JMeter рд╕реЗ рдкрд╛рда рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЯреНрд░реА рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!


рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдПрдХреАрдХрд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ (IBM WAS, WebSphere MQ, Oracle) рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЦреВрдиреА рдЙрджреНрдпрдо рдХреЛ JMeter рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдПрдХ рд╡реЗрдм рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ, рдЬреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдмреЗрдВрдЪ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдИ рдмрд┐рд▓реНрдб рдХреА рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж рдЬреЗрдирдХрд┐рдВрд╕ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдкрд░ рдЙрдарддрд╛ рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рддреА рдЧрдИ, рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдЕрджреНрдпрддрди рд░рдЦрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред


JMeter рдореЗрдВ рд╣реА рдЯреЗрд╕реНрдЯ рдЯреНрд░реА рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИ - рдЯреНрд░реЗрдб рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдЯреНрд░реЗрдбреЛрдВ рдХреЗ рдЕрдВрджрд░ рдкрд░реАрдХреНрд╖рдг рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдореВрдирд╛ рдПрдХ рдЕрд▓рдЧ рдЪрд░рдг рд╣реЛрддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЬреИрд╕реЗ рдЕрдкрд╡рд╛рдж, рдЯрд╛рдЗрдорд░, рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред


рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рд╕рдЯреАрдХ рдЪрд┐рддреНрд░ рд╣реИ:


рдЫрд╡рд┐

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреВрдП рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдкреНрд░рдмрдВрдзрдХ рдШрд░ рдкрд░ рдЬреЗрдореАрдЯрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХрд╛ рд╕рдВрдЧрдо рд╣реИред
рдореИрдВ JMeter рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд╡рд░реНрдгрди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдЧрдо рдкреГрд╖реНрда рдкрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рдерд╛ред рд╣рддрд╛рд╢ рдЧреБрдЧреНрд▓рд┐рдВрдЧ рдиреЗ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ - рдореБрдЭреЗ рдЬреЗрдПрдордЯрд░ рд╕реЗ рдкрд╛рда рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдФрд░ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ ( рдпрджрд┐ рдХреЛрдИ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╕рд┐рд░ рд╕реЗ рд░рд╛рдЦ рдЫрд┐рдбрд╝рдХреВрдВрдЧрд╛ "рдореИрдВ" рдЧреВрдЧрд▓ "рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ" )ред


JMX рдлрд╝рд╛рдЗрд▓ (JMeter рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ рдХреЗ рдорд╛рдирдХ рд╡рд┐рд╕реНрддрд╛рд░) рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж , рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЬрд┐рди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдореЗрд░реА рд░реБрдЪрд┐ рд╣реИ рдЙрдиреНрд╣реЗрдВ testname рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ :


рдирдореВрдирд╛ JMX рдлрд╝рд╛рдЗрд▓ рд╕реНрд▓рд╛рдЗрд╕
<AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="1.4.2   " enabled="true"> <collectionProp name="AuthManager.auth_list"> <elementProp name="" elementType="Authorization"> <stringProp name="Authorization.url">http://${ipKvp}:${portKvp}/TKVPImportTemporary</stringProp> <stringProp name="Authorization.username">${userKvp}</stringProp> <stringProp name="Authorization.password">${passKvp}</stringProp> <stringProp name="Authorization.domain">${domainKvp}</stringProp> <stringProp name="Authorization.realm"></stringProp> </elementProp> </collectionProp> <boolProp name="AuthManager.clearEachIteration">true</boolProp> </AuthManager> 

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЪрд╛ рд╣реИ, рдЬреЛ рд╣реИ:


  1. JMX рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪрд░рдг \ test \ рд╕рдореВрд╣ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╡рд╛рдВрдЫрд┐рдд рдкрд╛рда
  2. рдирд┐рд░реНрдмрд╛рдз рд╡рд╕реНрддреБрдУрдВ (рдореБрдЦрд░, рдЯрд╛рдЗрдорд░, рдЖрджрд┐) рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЗрдВ рдлреЗрдВрдХрддрд╛ рд╣реИ
  3. рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд▓рд┐рдЦреЗрдЧрд╛ рддрд╛рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдПрдХ рдЕрдХреЗрд▓рд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛ

рдЕрдиреБрдЪреНрдЫреЗрдж 1 рдХреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛:


(<? testname = \ ") (ред *) ((? = \")

рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдзрд┐рдЧреНрд░рд╣реАрдд xpath рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╡рд░реНрдд рдиреЗ рдореБрдЭреЗ xpath рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рдпрд╛ред


рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдкреЗрдбрд╝ рдореЗрдВ рд╕реЗрд╡рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирдВрдмрд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдЯрдо 2 рдХреЛ рдПрдХ рд▓реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


  • рдореБрдЭреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкрд╣рд▓рд╛ рдХрд┐рд░рджрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ
  • рдореИрдВ рдЗрдВрдЯ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реВрдБ
  • рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рддреЛ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦреЗрдВ
  • рдЕрдиреНрдпрдерд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ
      try (BufferedReader br = new BufferedReader(new FileReader(JMX_FILE))) { String line; while ((line = br.readLine()) != null) { Matcher m1 = p.matcher(line); if (m1.find()) { try { Integer.parseInt(m1.group().substring(0, 1)); matchd.add(m1.group()); } catch (NumberFormatException e) { System.out.println(m1.group().substring(0, 1) + ": excluding non-number string"); } } } } 

рдФрд░ рдЪреВрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ + рдкреЗрдбрд╝ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рддрд░реНрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдЯрдо 3 рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рдХреБрдЫ рднреА рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА:


  FileWriter writer = null; try { writer = new FileWriter(RESULT_FILE); for (String str : matchd) { writer.write(str + "\n"); } } finally { if (writer != null) { writer.close(); } } 

рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЫреЛрдЯреЗ (~ 50 рд▓рд╛рдЗрдиреЛрдВ) рд╡рд░реНрдЧ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ:


рд╕реНрд░реЛрдд рдХреЛрдб
 import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class App { private static final String SAMPLER_NAME_REGEXP = "(?<=testname=\")(.*)(?=\" )"; private static final File JMX_FILE = new File("C:\\temp\\Test-plan.jmx"); private static final File RESULT_FILE = new File("C:\\temp\\output.txt"); public static void main(String[] args) throws IOException { Pattern p = Pattern.compile(SAMPLER_NAME_REGEXP); List<String> matchd = new ArrayList<>(); try (BufferedReader br = new BufferedReader(new FileReader(JMX_FILE))) { String line; while ((line = br.readLine()) != null) { Matcher m1 = p.matcher(line); if (m1.find()) { try { Integer.parseInt(m1.group().substring(0, 1)); matchd.add(m1.group()); } catch (NumberFormatException e) { System.out.println(m1.group().substring(0, 1) + ": excluding non-number string"); } } } } if (RESULT_FILE.delete()) { System.out.println("Deleting previous result file"); } else { System.out.println("Creating new result file"); } FileWriter writer = null; try { writer = new FileWriter(RESULT_FILE); for (String str : matchd) { writer.write(str + "\n"); } } finally { if (writer != null) { writer.close(); } } } } 

рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕реАрдзреЗ JMeter рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЧрд▓рддрдлрд╣рдореА рд╡рд╛рд▓реЗ рдЬреЗрдирд░рд┐рдХ рдФрд░ рдЖрдпрд╛рдд рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдФрд░ рдЕрдм рддрдХ IDEA рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдкреЗрдбрд╝ рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред


рдЕрдкрдиреЗ рд╕рдордп рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдВред рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред


рдЫрд╡рд┐

Source: https://habr.com/ru/post/hi413481/


All Articles