介面測試實踐
介面測試
介面測試是測試系統元件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。
--百度百科
為什麼介紹介面測試?
介面常被開發掛在嘴邊,在開發過程中無處不在,但對於測試人員來說,它又如此朦朧,無形無色無味,難以觸碰。相信這也是測試人員比較難理解的一種測試型別。查詢的大部分資料都是介紹一堆模糊的概念。所以,我打算以淺薄的認知來介紹介面測試,當然會舉例子。
我所知道的介面測試
我所瞭解的模組介面測試大體分為兩類:模組介面測試和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介面同樣注重效能,這直接影響使用者的使用體驗。如果我搜索一個關鍵字半天結果都沒返回,果斷棄用。
===================
講這個話題我是比較冒險,對於介面測試我並沒有全面的理解和認識。歡迎留言說出你對介面測試的理解。