Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÔÚJMeterÖÐʵÏÖÊý¾ÝÇý¶¯²âÊÔ
 
  2564  次浏览      17
 2019-1-25
 

 

±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚ¼òÊ飬±¾ÎÄÕÂÖ÷ÒªÏêϸ½éÉÜÁËÈçºÎͨ¹ý´æ´¢ÊäÈëÊý¾ÝºÍ½á¹ûµÄÊÇExcelÎļþ£¬ÔÚJMeterÖÐʵÏÖÊý¾ÝÇý¶¯²âÊÔ£¬Ï£Íû¶ÔÄúµÄѧϰÓаïÖú¡£

Data Driven Testing (DDT)¼´Êý¾ÝÇý¶¯²âÊÔ£¬ÊÇÒ»ÖÖÓÃÓÚ´´½¨×Ô¶¯»¯²âÊԵķ½·¨£¬»òÕß»»¾ä»°Ëµ£¬ÊÇÒ»Öּܹ¹¡£ÕâÖÖ·½·¨µÄ±¾ÖÊÊÇ£¬²âÊÔÊäÈëµÄÊý¾ÝºÍÓÃÕâЩÊý¾Ý»ñµÃµÄ½á¹û£¬Óë²âÊÔ±¾Éí·Ö¿ª´æ´¢¡£´æ´¢ÊäÈëÊý¾ÝºÍ½á¹ûµÄÊÇExcelÎļþ¡£Ð´ÈëExcelÎļþµÄ½á¹ûÊÇÎÒÃdzɹ¦Í¨¹ý²âÊÔµÄÔ¤ÆÚ½á¹û¡£

DDTµÄÒ»¸öÓŵãÊDzâÊÔÈËÔ±²»±ØΪÿһ¸öÊäÈëÊý¾Ý´´½¨Ò»¸öµ¥¶ÀµÄ²âÊÔ¡£²âÊÔÔÚÒ»¸öʵÀýÖд´½¨£¬²¢ÇÒÊäÈëÊý¾ÝºÍÓÃÓÚÓëʵ¼Ê½á¹û½øÐбȽϵÄÔ¤ÆÚ½á¹û´ÓÎļþÖлñÈ¡¡£

ΪÁËʹÓÃDDT´´½¨Ò»¸ö²âÊÔ£¬¼ÙÉèÎÒÃÇÓÐÒ»¸ö½ÓÊÜÓû§µÄLOGINºÍPASSWORD×÷Ϊ´«ÈëÖµµÄAPI¡£

¶ÔÓÚAPI£¬´æÔÚÒÔÏÂÒªÇó£ºÓû§µÇ¼ÃûÖ»ÄÜ°üº¬Ó¢ÎÄ×Ö·û¡£·ñÔò£¬ÇëÔÚAPIÏìÓ¦Öзµ»ØÒÔÏ´íÎóÏûÏ¢£º¡°Óû§µÇ¼ÊäÈë´íÎ󡱡£

Ò»¡¢ÏÂÔØjar°ü

ÔÚJmeterÖд´½¨²âÊÔ֮ǰ£¬ÎÒÃÇÊ×ÏÈÐèÒªÏÂÔØÈçÏÂjar°ü£¬²¢½«Æ俽±´µ½jmeterµÄlibĿ¼ÖУº

1.Apache POI 3.17

2.Apache POI-OOXML 3.17

3.Apache Commons IO 2.6

4.OOXML Schemas 1.3

5.Apache Commons Collections 4.1

6.XmlBeans 2.6

¶þ¡¢´´½¨Ò»¸öÈçÏÂͼËùʾµÄExcelÎļþ£º

ÔÚÕâ¸öÎļþÖУ¬´ÓµÚ¶þÐпªÊ¼µÄÿһÐж¼ÊÇÎÒÃǵIJâÊÔÓÃÀý¡£ ÌîдÒÔÏÂ×ֶΣº

1.²âÊÔÓÃÀýÃèÊö - ÊÖ¶¯Ìîд

2.µÇ¼ - ¡°µÇ¼¡±²ÎÊýµÄÖµ£¬ÓÃÓÚÐγɶÔAPIµÄÇëÇó

3.ÃÜÂë - ¡°ÃÜÂ롱²ÎÊýµÄÖµ£¬ÓÃÓÚÉú³É¶ÔAPIµÄÇëÇó

4.ÇëÇó - ÔÚ´ËÁÐÖУ¬JMeter½«ÏòAPIдÈëÇëÇó

5.ʵ¼Ê½á¹û - ÔÚ´ËÁÐÖУ¬JMeter½«Ð´ÈëAPIµÄÏìÓ¦

6.Ô¤ÆÚ½á¹ûÊÇÎÒÃÇÆÚÍû´ÓAPI»ñµÃµÄ½á¹û¡£ ÊÖ¶¯Ìîд

7.״̬ - ÔÚ´ËÁÐÖУ¬JMeter½«¼Ç¼²âÊÔÓÃÀýͨ¹ý»òδͨ¹ýµÄ״̬

»ùÓÚÉÏÊöExcelÎļþ£¬ÎÒÃǽ«Ö´ÐÐ7¸ö²âÊÔÓÃÀý¡£ ¶ÔÓÚÿ¸ö²âÊÔÓÃÀý£¬ÎÒÃǶ¼Ï£ÍûAPIÓÐÒÔÏÂÏìÓ¦£º¡°{" message ":" User login is not entered correctly "}¡±£¬ÒòΪ¸ù¾ÝÎÒÃǵÄÒªÇ󣬵Ǽ²»ÄÜ°üº¬Ó¢ÎÄ×Ö·û¡£

´´½¨µÄExcelÎļþ¿ÉÒÔ±£´æÔÚÈκÎĿ¼ÖС£

Èý¡¢JmeterÅäÖÃ

1.Right Click -> Add -> Threads(Users) -> Thread Group

2.Thread Group -> Right Click -> Add -> Config Element -> User Defined Variables

´´½¨Ò»¸öÃûΪ¡°pathToFile¡±µÄ±äÁ¿£¬±äÁ¿µÄֵΪÎÒÃÇÉÏÃæ´æ´¢ExcelÎļþµÄ·¾¶£º

3.¸ù¾ÝexcelÎļþ´´½¨Ò»¸öWorkbook¶ÔÏó

Thread Group -> Right Click -> Add -> Sampler ->JSR223 Sampler

Ìí¼ÓÈçÏ´úÂëʾÀý£º

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import java.io.*;
XSSFWorkbook book = "";
try {
InputStream inputStream = new FileInputStream(new File("${pathToFile}"));
book = new XSSFWorkbook(inputStream);
inputStream.close();
} catch (Exception e) {
log.info("!!!!!!!!" + e.getMessage() + "!!!!!!!!!!!!!!!");
}
if (!book.equals("")) {
vars.putObject("book", book);
} else {
SampleResult.setStopTestNow(true);
}

4.Ìí¼ÓÒ»¸öWhile Controller

While Controller½«ÓÃÓÚÏòAPI·¢ËÍÇëÇóµÄ´ÎÊýÓëÎÒÃǵÄExcelÎļþ°üº¬µÄ´«ÈëÊý¾ÝµÄÐÐÊýÏàͬ¡£ ÔÚÎÒÃǵÄÓÃÀýÖУ¬ÊÇÆߴΡ£

Thread Group -> Right Click -> Add -> Logic Controller -> While Controller*

Ìí¼ÓÈçÏ´úÂ룺

${__javaScript("${stopWhile}" != "OK")} #´Ë´úÂëÓÃÓÚÍ£Ö¹While Controller

5.Ìí¼ÓÒ»¸öCounter

While Controller -> Add -> Config Element -> Counter

1.Start = ¡°1¡± is the initial value that is assigned to the variable "counter" before sending the first request to the API.
2.Increment = ¡°1¡± is the value that is added to the value of the variable "counter" before sending the second request to the API.
3.Reference Name = "counter" is the name of the variable

6.While Controller -> Right Click -> Add -> Sampler -> JSR223 Sampler

ÔÚÕâÒ»²½ÖУ¬ÎÒÃÇ´Ó¶ÔÏ󣬵¥Ôª¸ñÖµµÄÐÐÖлñÈ¡×Ö·û´®£¬²¢½«ÕâЩֵ´æ´¢ÔÚ±äÁ¿ÖС£

Ìí¼ÓÈçÏ´úÂ룺

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import java.io.*;
int i = Integer.parseInt(vars.get("counter"));
XSSFRow row = vars.getObject("book").getSheetAt(0).getRow(i);
vars.putObject("row", row);
for (int j = 1; j <= vars.getObject("book").getSheetAt(0).getRow(0).getLastCellNum(); j++) {
if (row.getCell(j) == null) {
row.createCell(j).setCellValue("");
}
}
String login = row.getCell(1).toString();
vars.put("login",login);
String password = row.getCell(2).toString();
vars.put("password",password);
String expectedResult = row.getCell(5).toString();
vars.put("expectedResult",expectedResult);

7.While Controller -> Add -> Sampler ->jp@gc-Dummy Sampler

´Ë²½ÖèµÄÄ¿µÄÊÇÄ£Äâ²âÊԵķþÎñ¡£

{"login":"${login}", "password":"${password}"}
{"message":"User login is not entered correctly"}

8.Dummy Sampler -> Right Click -> Add -> Assertions -> BeanShell Assertion

´Ë²½Öè±È½ÏAPIµÄʵ¼ÊÏìÓ¦ºÍÔ¤ÆÚÏìÓ¦£¬²¢ÔÚ¹¤×÷²¾¶ÔÏóÖмǼÇëÇó£¬ÏìÓ¦ºÍ״̬¡£

Ìí¼ÓÈçÏ´úÂ룺

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
String requestToApi = SampleResult.getSamplerData();
String responseFromApi = SampleResult.getResponseDataAsString();
String status = null;
if (vars.get("expectedResult").equals(responseFromApi)) {
status = "Passed";
} else {
status = "Failed";
}
vars.getObject("row").createCell(3).setCellValue(requestToApi);
vars.getObject("row").createCell(4).setCellValue(responseFromApi);
vars.getObject("row").createCell(6).setCellValue(status);
String stopWhile = null;
int i = Integer.parseInt(vars.get("counter"));
if (i >= vars.getObject("book").getSheetAt(0).getLastRowNum()) {
stopWhile = "OK";
vars.put("stopWhile",stopWhile);
}

9.Thread Group -> Right Click -> Add -> Sampler ->JSR223 Sampler

´Ë²½Ö轫½á¹û¸´ÖƵ½Êµ¼ÊµÄexcelÎļþÖС£

´úÂëʾÀý£º

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import java.io.*;
try {
FileOutputStream out = new FileOutputStream(new File("${pathToFile}"));
vars.getObject("book").write(out);
vars.getObject("book").close();
> } catch (Exception e) {
log.info("!!!!!!!!" + e.getMessage() + "!!!!!!!!!!!!!!!");
}

ÒÔÉϾÍÊÇÈ«²¿µÄjmeterÅäÖã¬ÕûÌåµÄĿ¼½á¹¹ÈçÏÂͼËùʾ£º

ÔËÐвâÊÔ£¬½«ËùÓвâÊÔÓÃÀý½á¹ûдÈëExcelÎļþºó£¬ÄúµÄÎļþ½«ÈçÏÂËùʾ£º

 

   
2564 ´Îä¯ÀÀ       17
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù