接口測試
接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。
--百度百科
為什么介紹接口測試?
接口常被開發掛在嘴邊,在開發過程中無處不在,但對於測試人員來說,它又如此朦朧,無形無色無味,難以觸碰。相信這也是測試人員比較難理解的一種測試類型。查詢的大部分資料都是介紹一堆模糊的概念。所以,我打算以淺薄的認知來介紹接口測試,當然會舉例子。
我所知道的接口測試
我所了解的模塊接口測試大體分為兩類:模塊接口測試和web接口測試。
模塊接口測試
模塊接口測試是單元測試的基礎。它主要測試模塊的調用與返回。
package com.java.base; public class InterfaceTest { //求兩個整數相加的和
public static int add(int a, int b){ return a + b; } public static void main(String[] args) { //測試整數相加
int resule = add(1,2); if(resule == 3){ System.out.println("success!"); }else{ System.out.println("fail!"); } } }
我擦!這明明是一個沒有使用單元測試框架的單元測試嘛!但其實我們也可以把add()方法看成一個接口,這個接口接收兩個整數並返回兩個整數的和。
通過這個例子放大了來看,假如幾個開發人員去完成一個系統,他們分別開發一些功能模塊,最終數據會在這些功能模塊之間傳遞。當A開發好自己負責的功能模塊后會提供相應的接口(類方法、函數),B肯定需要模擬數據調用A寫的接口,檢查返回值是否正確。
當然,測試的手段遵循測試的一些要點。
1、檢查接口返回的數據是否與預期結果一致。
2、檢查接口的容錯性,假如傳遞數據的類型錯誤時是否可以處理。例如上面的例子是支持整數,傳遞的是小數或字符串呢?
3、接口參數的邊界值。例如,傳遞的參數足夠大或為負數時,接口是否可以正常處理。
4、接口的性能,接口處理數據的時間也是測試的一個方法。牽扯到內部就是算法與代碼的優化。
5、接口的安全性,如果是外部接口的話,這點尤為重要。
web接口測試
web接口測試又可分為兩類:服務器接口測試和外部接口測試。
服務器接口測試:是測試瀏覽器與服務器的接口。這個很容易理解,我們知道web開發一般分前端和后端,前端開發人員用html/css/javascript等技術。后端開發人用php/java/python/ruby等各種語言。用戶輸入的數據是輸入到的前端頁面上,怎樣把這些數據傳遞的后台的呢?通過http協議的get與post請求來實現前后端的數據傳遞。這也可認為是接口測試,調用的登錄接口還是查詢接口,傳參的是用戶密碼還是搜索關鍵字。
外部接口測試:這個很典型的例子就是第三方登錄,比如你做的新系統免於新用戶重新注冊的麻煩會提供第三方登錄,那用戶在登錄的時候調用的就是第三方登錄的接口,由第三方驗證用戶名和密碼並且返回給當前系統。
對於服務器接口測試,我們來看例子。
==================================
准備:
Python 下載地址: https://www.python.org/
Flask 微型web框架。flask安裝:> pip install flask
==================================
查看flsk是否安裝成功。
來寫一個例子hello.py:
from flask import Flask app = Flask(__name__) @app.route("/user/<name>") def user(name): return "<h1>hello %s !</h1>" %name if __name__ == '__main__': app.run(debug=True)
運行hello.py
通過瀏覽器訪問:http://127.0.0.1:5000/user/zhangsan
這是一個最簡單的get請求,我們可以把“zhangsan”改成任意字符來時行測試。
對於web接口測試來說有哪些測試要點:
1、請求是否正確,默認請求成功是200,如果請求錯誤也能返回404、500等。
2、檢查返回數據的正確性與格式;json是一種非常創建的格式。
3、接口的安全性,一般web都不會暴露在網上任意被調用,需要做一些限制,比如鑒權或認證。
4、接口的性能,web接口同樣注重性能,這直接影響用戶的使用體驗。如果我搜索一個關鍵字半天結果都沒返回,果斷棄用。
===================
講這個話題我是比較冒險,對於接口測試我並沒有全面的理解和認識。歡迎留言說出你對接口測試的理解。