接口測試總結分享(http與rpc)

  

    接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。

 

1、瞭解一下HTTP與RPC

  1. HTTP(HyperText Transfer Protocol) git

    說明:超文本傳輸協議,是互聯網上應用最爲普遍的一種網絡協議。github

    優勢:就是簡單、直接、開發方便,利用現成的http協議進行傳輸。spring

    流程圖:數據庫

    

  2. RPC(Remote Procedure Call)api

    說明:遠程過程調用,它是一種經過網絡從遠程計算機程序上請求服務,而不須要了解底層網絡技術的協議。安全

    優勢:提高系統可擴展性,傳輸效率更快,安全性更高。服務器

    流程圖:網絡

    

 

2、HTTP接口測試

  常見請求類型: post(增)、get(查)、put(改)、delete(刪)等。app

  1)get型接口框架

    格式: 請求數參數寫在網址後面,用"?"鏈接,多個參數之間用"&"鏈接。如:https://api.douban.com/v2/book/search?q='',這是一個豆瓣查詢圖書信息的開發api,q='',單引號裏就是查詢的參數,

  如查詢《小王子》這本書的信息,則q='小王子',使用postman工具來試驗一下,以下圖:

  

    場景: get型接口用於獲取信息,多用於查詢數據,如列表查詢功能,點擊查詢按鈕就調用一個get接口,而後把信息返回出來。

    特色: 請求數據量小,參數暴露於url地址中,故存在安全隱患。

 

  2)post型接口

    說明: 向指定資源位置提交數據(如提交表單、上傳文件)來進行請求,post請求可能會致使新資源的創建

    場景: 如註冊、上傳、發帖等功能,如用戶在豆瓣網站對某本書進行收藏、寫筆記、發表評論

    特色: 請求數據量大,安全性高

    如豆瓣的發表評論的開放api,見下圖:

     

 

  3)put型接口

    說明:  put請求用於向指定資源位置上傳最新內容

    場景:  如用戶在豆瓣網站修改對某本書的收藏、修改某篇筆記或修改評論

    如豆瓣的修改評論的開放api,見下圖:

     

 

  4)delete型接口

    說明: 請求服務器刪除請求裏url所標識的資源

    場景: 如用戶在豆瓣網站取消對某本書的收藏、刪除某篇筆記或刪除評論

    如豆瓣的刪除評論的開放api,見下圖:

    

----- 此部分摘抄自:http://www.javashuo.com/article/p-wjeahddv-ba.html

  

3、RPC接口測試

  1)RPC接口其應用框架比較多,各有特點,普遍使用的有RMI、Hessian、Dubbo等,此次咱們主要介紹一下Dubbo框架。

  Dubbo是一個高性能、輕量級的RPC框架。主要提供三個關鍵功能,包括基於接口的遠程調用、容錯和負載平衡、以及自動服務註冊和發現。

  2)流程圖:

   

  3)測試環境搭建:

  a.  pom.xml引入相關service應用jar依賴(示例:)

    <dependencies>
        <dependency>
            <groupId>com.test.service</groupId>
            <artifactId>base-service-test</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>  
            <groupId>jdk.tools</groupId>  
            <artifactId>jdk.tools</artifactId>  
            <version>1.8</version>  
            <scope>system</scope>  
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>  
        </dependency>
    </dependencies>

 

  b.  dubbo服務spring配置(示例:)

<!-- 引入資源配置 -->
<import resource="spring-resource.xml"/>
<!-- 具體的實現bean -->
<bean id="demoServer" class="com.dub.provider.impl.DemoServerImpl" />
<!-- 提供方應用信息 -->
<dubbo:application name="xs_provider" />
<!-- zookeeper服務器地址 -->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 用dubbo協議暴露服務 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 聲明須要暴露的服務接口 -->
<dubbo:service interface="com.dub.provider.DemoServer" ref="demoServer" />
<!------------------------------------------------------------------------>
<!-- 在工程resources下添加其資源配置文件-->
<dubbo:application name="hjy_consumer" />
    <dubbo:reference interface="com.dub.provider.DemoServer" id="demoServer"
        url="dubbo://localhost:20880" timeout="10000" />

 

  c.  基於TESTNG數據驅動編寫方法(示例:)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/spring.xml"})
@Configuration
//++++++++++++繼承方法++++++++++++ public class BaseTestNGTest extends AbstractTestNGSpringContextTests {  
//++++++++++++數據收集++++++++++++ @DataProvider(name = "testdata") public Object[][] dataprovide()throws IOException{   System.out.println("dataprovide");   // return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}};   Object[][] testData =ExcelHandle.readXlsx(excel, "sheet2");   return testData; } //++++++++++++數據傳遞++++++++++++ @Test(dataProvider="testdata") public void test_case_1(HashMap<String, String> map) throws Exception {   operatorUserId=Integer.valueOf(map.get("userId"));   exceptedvalue=Integer.valueOf(map.get("excepted"));   //++++++++++++實際值++++++++++++   Integer actual_value=billService.getUserEmailNameCount(operatorUserId);    //++++++++++++預期值++++++++++++   Integer excepted_value=get_excepted_value(operatorUserId);    //+++++++++++++驗證+++++++++++++   Assert.assertEquals(actual_value,exceptedvalue); } }

 

4、接口測試用例設計

5、測試思路總結

  1)查看接口文檔,瞭解接口功能及其業務邏輯

  2)肯定接口調用協議(http、rpc等)

  3)肯定請求類型(post、get等)

  4)肯定請求地址/調用方法

  5)組裝請求報文 ☆☆☆☆☆(參考測試設計)

  6)選用適用工具或編寫腳本測試

  7)檢查返回碼,及其描述

  8)檢查返回值,及其對應數據庫數據變化

 

 

 

----- 以上僅爲我的測試經驗,固然接口測試不單單如此,更多還須要你們本身去發掘,同時歡迎各路大神指點。

相關文章
相關標籤/搜索