您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源性能測(cè)試工具 > Jmeter
Jmeter讀取執(zhí)行Case插入DB生成報(bào)表和備份記錄
作者:niuzhigang 發(fā)布時(shí)間:[ 2017/4/24 11:35:55 ] 推薦標(biāo)簽:性能測(cè)試工具 Jmeter

  有2點(diǎn)說明:讀取csv文件亂碼問題和讀取關(guān)閉文件(因?yàn)榻Y(jié)束后會(huì)有備份歷史記錄,因此必須關(guān)閉CSV文件)
  亂碼問題解決方案不要用FileReader而是InputStreamReader可以指定讀取編碼
public CsvUtil(String fileName) throws Exception {
this.fileName = fileName;
//FileReader可能會(huì)根據(jù)不同的環(huán)境造成從CSV讀取時(shí)亂碼
br = new BufferedReader(new FileReader(fileName));
//解決亂碼
br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"utf-8"));
String stemp;
while ((stemp = br.readLine()) != null) {
list.add(stemp);
}
//關(guān)閉csv文件
br.close();
}
  代碼開發(fā)基本完成,差數(shù)據(jù)備份了,數(shù)據(jù)備份的代碼如下:
package excFile;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class renFile {
public static boolean renameFile(String path,String oldname,String newname){
File file=new File(path+oldname);
if(file.exists())
{
file.renameTo(new File(path+newname));
return true;
}
return false;
}
public static String currTime(){
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//設(shè)置日期格式
String now = df.format(new Date());// new Date()為獲取當(dāng)前系統(tǒng)時(shí)間
return now;
}
public static void main(String[] args) {
String path = "d:\";
String oldname = "excResult.csv";
String newname = "excResult"+renFile.currTime()+".csv";
System.out.println("獲取當(dāng)前時(shí)間:"+renFile.currTime());
System.out.println("獲取新的名稱:"+renFile.renameFile(path, oldname, newname));
}
}
  恭喜,代碼開發(fā)基本結(jié)束,那么如何被jmeter引用?
  把開發(fā)的代碼export為jar包
  如導(dǎo)出jar包名為excDB.jar
  由于插入DB要有jdbc依賴包。(mysql-jdbc.jar)
  導(dǎo)出后,把2個(gè)jar放到j(luò)meter的lib/ext目錄下,重啟jmeter 即可引用。
  如下:在jmeter的beanshell(取樣器)工具中寫入調(diào)用函數(shù)腳本即可
import readDB.*;
import excFile.*;
String excVersion = "9.1.2";
String excTerminal = "App";
String path = "D:\excResult.csv";
String primaryTitle = CsvUtil.getPryKey(path);
log.info("獲取接口名稱:"+primaryTitle);
String excRate = CsvUtil.getExcRate(path);
log.info("獲取單個(gè)接口用例通過率:"+excRate);
CsvUtil util = new CsvUtil(path);
int rowNum = util.getRowNum();
//log.info("獲取行數(shù):"+rowNum);
int caseTotalNum = rowNum -1;
log.info("獲取用例總數(shù):"+caseTotalNum);
int caseSucNum = CsvUtil.getSucNum(path);
log.info("獲取用例通過數(shù)量:"+caseSucNum);
for(int i=1;i<rowNum;i++){
String secordaryTitle = util.getString(i, 2);
log.info("獲取用例名稱:"+secordaryTitle);
String excResult = util.getString(i, 7);
log.info("獲取用例執(zhí)行結(jié)果:"+excResult);
//執(zhí)行insertDB---詳細(xì)數(shù)據(jù)
CsvUtil.insertDetailDB(primaryTitle, secordaryTitle, excVersion, excTerminal, excResult);
}
////執(zhí)行insertDB---統(tǒng)計(jì)數(shù)據(jù)
CsvUtil.insertTotalDB(primaryTitle, excVersion, excTerminal, excRate, caseTotalNum, caseSucNum);
String dir = "d:\";
String oldname = "excResult.csv";
log.info("獲取新文件名稱:"+renFile.currTime());
String newname = "excResult"+renFile.currTime()+".csv";
log.info("獲取新文件名稱:"+newname);
renFile.renameFile(dir, oldname, newname);

  導(dǎo)入DB的jmx文件腳本有幾個(gè)變量強(qiáng)調(diào)下:
 、賓xcVersion---版本號(hào)(如9.1.0)
 、趀xcTerminal---終端類型(如App、網(wǎng)站、M站)
  ③path---csv文件路徑(如d:excResult.csv)
 、躣ir---csv在哪個(gè)目錄下(如d:)
 、輔ldname---csv文件名(如excResult.csv)
  其中import這2個(gè)包名要準(zhǔn)確,是你在開發(fā)這些class文件時(shí)創(chuàng)建的包名
  import readDB.*;
  import excFile.*;
  如:

  這樣會(huì)把存入DB的jmx文件和用例的jmx文件放在一個(gè)文件夾下執(zhí)行,執(zhí)行循序會(huì)根據(jù)jmx文件修改時(shí)間的正序來執(zhí)行,因此一定要確保執(zhí)行case的jmx文件時(shí)間要在導(dǎo)入DB的jmx文件前面。
  當(dāng)然也可以把所有按照接口生成的的jmx文件和分別導(dǎo)入DB的jmx文件放在一個(gè)文件夾下,但必須渠道入到的CSV文件名不相同,每個(gè)對(duì)應(yīng)讀取CSV導(dǎo)入DB的jmx文件的指向路徑也不同。
  基本完成,執(zhí)行結(jié)果如上面的導(dǎo)入DB的數(shù)據(jù)一樣。
  這樣整個(gè)開發(fā)到此結(jié)束!!!
  還有是接口名稱和用例名稱命名規(guī)范的問題!
  有2個(gè)要求:
  第一個(gè)要求:由于代碼做了接口名稱獲取的規(guī)則,是獲取第一條接口case名稱但不是單純的獲取,是截?cái)嗔饲懊?個(gè)字符,后面所有字符作為接口名稱。
  因此要求case輸出者在輸出接口自動(dòng)化時(shí)第一條case名稱命名為“校驗(yàn)XXXX接口”!!這樣根據(jù)截?cái)嘁?guī)存入DB的接口名稱為“XXXX接口”,才符合接口名稱命名規(guī)范。
  第二個(gè)要求:jmx文件,一個(gè)接口自動(dòng)化場(chǎng)景輸出一個(gè)jmx文件,不要在此jmx文件上輸出其它的接口case,在這個(gè)接口的基礎(chǔ)上輸出不同場(chǎng)景的case。
  否則會(huì)把不同接口統(tǒng)計(jì)到一個(gè)接口中去!
  備份的歷史記錄文件如下:(原文件名+時(shí)間戳)。
  為什么要renName?
  一方面:也是renName的根本原因,因?yàn)槊看螆?zhí)行的CSV文件,如果在執(zhí)行接口自動(dòng)化的jmx文件前不刪除,會(huì)把本次的執(zhí)行結(jié)果追加到原csv文件!!
  另一方面:保存歷史記錄。

上一頁12下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd