以下為大家介紹http請求測試方法,從而實現日常、預發、線上三套環境的監控。
做了半年的個性化推薦業務,發現很多資源位的推薦都是以http請求方式提供出來。由于前端資源相對緊張,經常需要在前端還未開發出來之前,就要針對http請求返回的json字符串進行測試,面對滿屏的字符串,基本上沒有辦法通過肉眼進行測試。后續發現了瀏覽器的json插件,可以格式化json數據,但針對json數據仍然很難進行測試。因此就想到了獲取http請求返回的json字符串,對其進行解析,再針對解析出來的數據通過腳本用例來測試返回的結果。
另外當線http請求布滿全站,無處不在時,怎樣才能知道哪些接口在正常工作,哪些接口沒有返回數據呢?通過http請求測試方法,可以實現日常、預發、線上三套環境的監控。
http請求不像其它接口,受環境的限制。只要知道對應的ip或域名,再加上對應的參數就可以獲取http請求返回的結果,因此對于日常、預發、線上三套環境均可以通過腳本用例進行自動化測試。http請求測試的主要思路是創建基于itest的mvn工程,通過HttpURLConnection得到http請求的返回結果,解析返回的字符串,結合itest編寫用例,驗證返回的內容,執行用例,自動化回歸用例。
http請求測試方法如下:
1、 創建基于itest的mvn工程
2、 修改pom.xml文件,添加解釋json相關的依賴
3、 執行mvn eclipse命令,將工程打包后導致入eclipse。此時工程中包含了itest做接口測試的示例:
數據庫連接、數據準備、hsf服務依賴等都可以在此基礎上進行擴充
4、 在BaseTestCase中添加對http請求返回結果的處理,本文通過HttpURLConnection得到http請求的返回結果,還有很多其它獲取請求返回結果途徑,如httpClient等,有興趣的同學可以嘗試一下。
public String urlToString(String strUrl, String charset) {
URL url = null;
HttpURLConnection urlconnection = null;
DataInputStream input = null;
String str = “”;
try {
url = new URL(strUrl);
urlconnection = (HttpURLConnection) url.openConnection();
input = new DataInputStream(urlconnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(input, charset));
String line = “”;
while ((line = reader.readLine()) != null) {
if (null != line && line != “”){
str += line;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlconnection != null) {
urlconnection.disconnect();
}
try {
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return str;
}
5、 還可以在BaseTestCase中添加其它公共方法:字符串轉換成json對象、json數據,去重等
6、 創建測試類,編寫測試用例,執行用例
如:測試如下http請求,根據ip的不同,可以實現對日常、預發、線上三套環境的測試
http://ald.taobao.com/urlstring?parameter=someone
public String daily_demo = “1.1.1.1″;
public String prepub_demo = “2.2.2.2″;
public String online_demo = “ald.taobao.com”;
@Test
public void test_demo(){
String parameter= “someone”;
String charset = “XXXX”;
String str = urlToString(“http://”+online_demo+”/urlstring?parameter=”+parameter, charset);
//截掉返回結果中構成json對象多余的字符
String sub = str.substring(1, str.length()-1);
JSONObject jsonObject = jsonstringToObject(sub);
//返回結果的內容
JSONArray data = jsonObject.getJSONArray(“data”);
//校驗返回結果中的字段
for(Object dataContent : data){
String field= ((JSONObject)dataContent).get(“field”).toString();
Assert.assertTrue(field.indexOf(“XXXX”)>-1);
}
}
7、 提交用例到kelude平臺,創建實驗室,配置命令執行,同時也可以將實驗室復制到全網回歸,對用例進行每日回歸
截止目前aladdin-httptest已經多次發現推薦接口bug
8、 http-demo svn地址:
請咨詢本人。
原文轉自:http://tmalltesting.com/archives/519