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

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

一、瞭解一下HTTP與RPC

1. HTTP(HyperText Transfer Protocol)

說明:超文本傳輸協議,是互聯網上應用最為廣泛的一種網絡協議。

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

流程圖:

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

2. RPC(Remote Procedure Call)

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

優點:提升系統可擴展性,傳輸效率更快,安全性更高。

流程圖:

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

二、HTTP接口測試

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

1)get型接口

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

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

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

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

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

2)post型接口

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

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

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

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

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

3)put型接口

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

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

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

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

4)delete型接口

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

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

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

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

----- 此部分摘抄自:https://blog.csdn.net/github_36032947/article/details/78222654

三、RPC接口測試

1)RPC接口其應用框架比較多,各有特色,廣泛使用的有RMI、Hessian、Dubbo等,這次我們主要介紹一下Dubbo框架。

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

2)流程圖:

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

3)測試環境搭建:

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

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

 

com.test.unicorn
base-service-core
0.0.1-SNAPSHOT


org.springframework.boot
spring-boot-starter-actuator


org.springframework.cloud
spring-cloud-starter-hystrix


com.google.guava
guava




commons-logging
commons-logging
1.2
test


jdk.tools
jdk.tools
1.8
system
${JAVA_HOME}/lib/tools.jar


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

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

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
















url="dubbo://localhost:20880" timeout="10000" />
接口測試總結分享(http與rpc)

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

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

@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 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);
}
}
接口測試總結分享(http與rpc)

四、接口測試用例設計

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

五、測試思路總結

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

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

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

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

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

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

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

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

----- 以上僅為個人測試經驗,當然接口測試不僅僅如此,更多還需要大家自己去發掘,同時歡迎各路大神指點。


分享到:


相關文章: