±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬±¾ÎÄÕÂÖ÷ÒªÏêϸ½éÉÜÁËÈçºÎͨ¹ý´æ´¢ÊäÈëÊý¾ÝºÍ½á¹ûµÄÊÇ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Îļþºó£¬ÄúµÄÎļþ½«ÈçÏÂËùʾ£º

|