接口自動化—剖析接口本質并搭建接口自動化環(huán)境


一绅喉、接口的本質

接口就是一個函數(shù),通過將接口部署到web容器(tomcat捣卤,jboss屏箍,weblogic等),發(fā)布服務后嗤军,就可以通過一個url地址去訪問到接口了。而接口文檔里面描述的接口參數(shù)呢其實就是函數(shù)的參數(shù),接口的返回數(shù)據(jù)就是函數(shù)的返回值匙奴。即:接口=函數(shù),接口參數(shù)=函數(shù)參數(shù)妄荔,接口返回值=函數(shù)返回值泼菌。以如下接口項目中的“獲取用戶列表”接口為例,它其實就對應了后臺的一個這樣的一個同名函數(shù):

????/**

?* 獲取用戶列表

?*

?* @return

?*/

@RequestMapping

public@ResponseBodyResult list() {

????Result result =?null;

????try{

????????List<Member> members = memberService.list();

????????result =?newResult(true, Ret.MEMBER_LIST_SUCCESS.code(), members, Ret.MEMBER_LIST_SUCCESS.value());

????}?catch(Exception e) {

????????logger.error(e);

????????result =?newResult(false, Ret.MEMBER_LIST_FAIL.code(), Ret.MEMBER_LIST_FAIL.value());

????}

????returnresult;

}???????

二啦租、接口測試跟ui測試的本質區(qū)別

UI測試更專注于ui頁面哗伯,而不關注系統(tǒng)內部實現(xiàn),一個功能模塊是否有bug篷角,所有的判斷依據(jù)都直接來自于前端頁面反饋焊刹,跟我們的預期對比,一樣就測試通過恳蹲,不一樣就是bug虐块。而接口不一樣,需要借助某些客戶端工具模擬前端頁面發(fā)送接口請求阱缓,測試人員通過判斷接口返回數(shù)據(jù)與預期是否一致非凌,對測試人員的技術要求更高。

接口測試到底是在項目哪個階段去做荆针?

接口測試可以在項目的任意階段做敞嗡,只要接口已經(jīng)開發(fā)出來了,提前介入航背,就能提前發(fā)現(xiàn)問題喉悴,不管系統(tǒng)是不是已經(jīng)將頁面與后臺接口集成了,項目時間充足的前提下都最好對接口進行一輪或者多輪測試玖媚,基于兩點原因:1)某些請求如果繞過前端直接往接口發(fā)送非法數(shù)據(jù)箕肃,而接口也有相應處理措施,那么將最大限度的降低了系統(tǒng)的風險今魔;2)后端控制好了勺像,所有的問題就集中與前端這一塊了障贸。

  手工測試接口有哪些工具:Postman,jmeter吟宦,Soapui篮洁,F(xiàn)iddler等主流的工具都能完成。

  什么是接口自動化??通過代碼驅動測試而非人工殃姓。

  為什么需要做接口自動化??通過機器來替代人工袁波,解放生產(chǎn)力。

  如何做接口自動化??通過http技術處理接口調用蜗侈。

三篷牌、接口自動化環(huán)境如何搭建

  1.創(chuàng)建maven項目,為什么用maven項目踏幻,最重要最直接的原因是希望maven來管理咱們的項目依賴枷颊,這樣我們就不需要滿世界的找各種jar包去下載了。

  2.集成HttpClient叫倍,在maven項目引入HttpClient-4.5.2這個框架的依賴偷卧,這個框架提供了一些http技術可以幫助咱們去發(fā)起接口調用并處理接口返回數(shù)據(jù)豺瘤,以下是依賴描述吆倦。

<dependency>

????<groupId>org.apache.httpcomponents</groupId>

????<artifactId>httpclient</artifactId>

????<version>4.5.2</version>

</dependency>

  3.集成testng,利用testng這個測試框架來幫助咱們來更好的管理測試類坐求,以及它提供了豐富的注解蚕泽,方便咱們去實現(xiàn)多場景測試設計。以下是依賴描述桥嗤。

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>6.8.8</version>

<scope>test</scope>

</dependency>

  4.至于項目的其他依賴在后面的接口自動化框架實現(xiàn)過程中再給大家補充须妻,本節(jié)只為實現(xiàn)一個最簡單的環(huán)境和一個接口調用案例。

小試牛刀:通過http技術post一次接口請求泛领,完成對于登錄接口(login)的調用荒吏,并得到接口返回數(shù)據(jù)。代碼如下

packagecom.lemonban;

importjava.io.UnsupportedEncodingException;

importjava.util.ArrayList;

importjava.util.List;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.entity.UrlEncodedFormEntity;

importorg.apache.http.client.methods.CloseableHttpResponse;

importorg.apache.http.client.methods.HttpGet;

importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.client.utils.URLEncodedUtils;

importorg.apache.http.impl.client.CloseableHttpClient;

importorg.apache.http.impl.client.HttpClients;

importorg.apache.http.message.BasicNameValuePair;

importorg.apache.http.util.EntityUtils;

importorg.testng.annotations.Test;

publicclassHelloWorld {

????@Test

????publicvoidtest(){

????????String restUrl =?"http://116.23.246.159:8380/lmcanon/mvc/member/api/member/login";

????????//1.決定接口提交的方式(post/get)渊鞋,此處以post為例

????????HttpPost httpPost =?newHttpPost(restUrl);

????????//2.準備提交參數(shù)

????????List<NameValuePair> params =?newArrayList<NameValuePair>();

????????BasicNameValuePair basicNameValuePair1 =?newBasicNameValuePair("nickname",?"admin");

????????BasicNameValuePair basicNameValuePair2 =?newBasicNameValuePair("password",?"d5149ce361d6ee80eeccc260795eb1d1");

????????params.add(basicNameValuePair1);

????????params.add(basicNameValuePair2);

????????//3.參數(shù)封裝到請求體當中

????????try{

????????????httpPost.setEntity(newUrlEncodedFormEntity(params));

????????????//4.準備客戶端(HttpClient)

????????????CloseableHttpClient httpClient = HttpClients.createDefault();

????????????//5.提交請求

????????????CloseableHttpResponse httpResponse = httpClient.execute(httpPost);

????????????String name = httpResponse.getFirstHeader("Set-Cookie").getName();

????????????String value = httpResponse.getFirstHeader("Set-Cookie").getValue();

????????????HttpUtils.addHeader(name, value);

????????????System.out.println("name="+name+",value="+value);

????????????//6.解析接口返回數(shù)據(jù)

????????????String result = EntityUtils.toString(httpResponse.getEntity());

????????????System.out.println("*********返回數(shù)據(jù):"+result);

????????}?catch(Exception e) {

????????????// TODO Auto-generated catch block

????????????e.printStackTrace();

????????}

????}

}

四绰更、代碼執(zhí)行結果

五、總結

以上代碼是一個簡單的案例锡宋,離我們的接口自動化框架還差十萬八千里儡湾。我們的最后的測試框架是針對于不同類型接口項目的自動化測試統(tǒng)一解決方案,因此兼容性执俩,復用性都要達到最大化徐钠,而這些都需要好的設計思想去支撐,以下為我們在實現(xiàn)這個測試框架中需要去逐步解決的幾個問題:創(chuàng)建了一個測試交流群役首,如果對軟件測試尝丐、接口測試显拜、自動化測試、面試經(jīng)驗交流感興趣可以加測試交流群:829792258爹袁,還會有同行一起技術交流

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末讼油,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呢簸,更是在濱河造成了極大的恐慌矮台,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件根时,死亡現(xiàn)場離奇詭異瘦赫,居然都是意外死亡,警方通過查閱死者的電腦和手機蛤迎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門确虱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人替裆,你說我怎么就攤上這事校辩。” “怎么了辆童?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵宜咒,是天一觀的道長。 經(jīng)常有香客問我把鉴,道長故黑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任庭砍,我火速辦了婚禮场晶,結果婚禮上,老公的妹妹穿的比我還像新娘怠缸。我一直安慰自己诗轻,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布揭北。 她就那樣靜靜地躺著扳炬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罐呼。 梳的紋絲不亂的頭發(fā)上鞠柄,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音嫉柴,去河邊找鬼厌杜。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的夯尽。 我是一名探鬼主播瞧壮,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匙握!你這毒婦竟也來了咆槽?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤圈纺,失蹤者是張志新(化名)和其女友劉穎秦忿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛾娶,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡灯谣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛔琅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胎许。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖罗售,靈堂內的尸體忽然破棺而出辜窑,到底是詐尸還是另有隱情,我是刑警寧澤寨躁,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布穆碎,位于F島的核電站,受9級特大地震影響朽缎,放射性物質發(fā)生泄漏惨远。R本人自食惡果不足惜谜悟,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一话肖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧葡幸,春花似錦最筒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔑水,卻和暖如春邢锯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搀别。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工丹擎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓蒂培,卻偏偏與公主長得像再愈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子护戳,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348