【重要】接口測試----必知常見問題解答(面試常會被問到)-轉載

聲明:原文作者:Syw? ? 出處:http://www.cnblogs.com/syw20170419/?

業(yè)務穩(wěn)定為啥要測接口?

  為了回歸。而且接口有個好處,定位問題簡單,一出問題基本都是服務端的問題,而且肯定是和這個接口相關的代碼,不用花時間再去抓包->分析(->撕逼)

對于page的接口測試,測試點如何設計?

  第一頁、中間頁、最后一頁,那么如何獲取到的頁數就是最后一頁?讓開發(fā)協(xié)助寫獲取最后一頁的接口,測試來調用。

接口測試是否成功的校驗點是?

 ?。?)從reponse中是否包含指定內容開始。

 ?。?)擴展到數據庫的校驗


接口測試的用例驗證點(容錯性驗證)?

  ADD/MOD(添加/修改):

 ?。?)字段邊界值,最大最小字符,為空以及格式校驗

  (2)重復提交相同的參數

 ?。?)權限校驗

  (4)業(yè)務邏輯

  DEL:(刪除)

 ?。?)刪除不存在的

 ?。?)刪除無權限刪除的

  (3)刪除后再添加相同的

 ?。?)重復刪除

  LST:(列表)

 ?。?)為空時獲取

 ?。?)數量大時獲取

  (3)分頁

 ?。?)獲取無權限獲取的


接口測試的本質?

  通過測試參數的排列組合驗證返回值/數據庫變更是否符合預期,從而確定接口相關代碼是否正確。


接口測試的優(yōu)點?

 ?。?)簡單(對于開發(fā)基礎比較好的同學來說)

 ?。?)穩(wěn)定(成功率高,很少出現ui自動化的各種狀況)

 ?。?)效率(1個接口下的100條用例幾秒可執(zhí)行完成)

 ?。?)可信(ui自動化測試報告天天執(zhí)行,一堆fail,由于各種環(huán)境問題、兼容等問題導致排查測試報錯的原因較麻煩)

 ?。?)時間(用例編寫時間短,相對來說復用性高)


簡單的一個接口測試(用例編寫、開始執(zhí)行)的步驟?

 ?。?)開始編寫前置條件、入參、返回參數、預期結果等測試相關的信息

 ?。?)運用工具去執(zhí)行測試用例或者執(zhí)行自己寫的腳本

 ?。?)校驗返回結果是否正確


接口測試是什么?

  接口測試是功能測試不可或缺的一部分,拋開了前段的邏輯和限制對于服務器的功能進行了完整的測試,一個好的功能測試人員應該充分了解所測系統(tǒng)有多少個接口,接口的核心參數和響應,完成對接口代碼的走讀,接口有沒有白名單,防刷,內部接口和外部接口等。


接口測試的作用是什么?

  從接口測發(fā)起的測試彌補了界面測試的遺漏點,能將接口測試納入功能測試的一部分,測試的完整性得到了很大的提高,界面測試起碼遺漏了如下的信息:

  (1)服務器端接口參數校驗

 ?。?)接口是否存在安全漏洞或者邏輯漏洞,實時性,防刷

 ?。?)接口是否存在越權的可能


接口測試注意點?

  【第一步:看】

 ?。?)、看接口的請求參數構造是否合理

 ?。?)、看所傳參數有無敏感參數需要加密傳輸。比如說用戶userid、password等數據如果不使用https進行通信,最好使用加密的方式進行傳輸,這也是業(yè)界通用的標準,并且入庫也需是加密的

  (3)、看所測服務的代碼。第一看對于傳入參數的校驗部分,第二是看整體邏輯處理部分。舉個例子,大家在測試過程中經過會遇到如圖五所示,有多個必填或者選填項、輸入條件特別多、每個輸入條件都需要做校驗。有些測試人員會對此類問題用正交的方式一項一項測試,這類效率太慢。個人認為效率最高的方式為對于接口參數的校驗,以靜態(tài)測試為主,review代碼的過濾條件,頁面控件實際輸入測試為輔助。很多的輸入界面,其中判空處理是必須的。開發(fā)代碼中常用的一個判空函數是if(xxx.isempty())。首先界面類查找是否有控件對象未使用該函數,若未使用肯定存在bug;其次即使使用這個函數也是有bug,該函數并未完全滿足需求。這個函數漏掉了輸入空格的情況,正確的做法是if(xxx.trimme().isempty())。那么如果在全工程內,搜索isempty,對比發(fā)現bug,最后可以選擇一個輸入項進行測試,通過后所有輸入控間判空測試均告完畢。

 ?。?)、看接口的返回體是否返回一些不必要的敏感信息,返回格式是否合理

  【第二步:改】

 ?。?)請求體中參數的常規(guī)修改。常規(guī)修改就是通用的邊界值方法,如極大值、極小值、極長值、null、空。未對這些值做校驗的后果可大可小。小的方面僅僅是服務器throw一個統(tǒng)一的錯誤提示,如網絡錯誤等。中等一點的為前端頁面會返回如圖六形式的內部錯誤,這種錯誤會泄露一些敏感信息。嚴重的后果可能就是影響現有或者后續(xù)業(yè)務,使得業(yè)務往不可控的方向進行。

 ?。?)與業(yè)務強相關的參數修改。

  (3)請求消息體中的字段修改。有些人習慣在cookie中傳輸大量的信息,也是值得關注的測試點。


接口測試的主要關注點?

 ?。?)業(yè)務邏輯(業(yè)務邏輯覆蓋)

 ?。?)響應結構

  (3)數據格式

 ?。?)數據正確性(依據來源:查數據庫與服務器和接口返回值比較)


測試的原則?

 ?。?)基礎配置,如域名,環(huán)境配置等,單獨文件配置,方便不同環(huán)境測試,腳本維護

 ?。?)明確接口實現什么樣的功能,實際需要什么樣的功能。是否一致

 ?。?)接口測試數據太多,用數據驅動模式更有層次,且易維護

  (4)要眾多用例中選出冒煙測試用例及可用于性能測試的用例

 ?。?)先單接口測試,在多接口測試

  (6)測試完成后,需要清理臟數據


為什么選擇JMeter做為接口測試的技術方案?

?? (1) 基于配置實現接口測試的自動化,免代碼開發(fā)

?? (2)豐富的斷言能力支持,返回值校驗,數據庫比對校驗

?? (3) 比較好的支持流程控制

?? (4) 比較完善的結果監(jiān)聽

?? (5)和Jenkins易于集成,集成后支持接口性能趨勢的查看能力

?? (6)非標準協(xié)議或者對接方有特殊安全處理的情況可以使用JavaSample的方式處理


接口測試的流程?

  類似于功能測試,需求討論--評審需求—確定需求—產出接口定義—根據需求文檔及接口定義設計測試用例(測試用例主要從業(yè)務場景,功能以及異常測試幾個方面考慮)—評審用例—執(zhí)行測試


需求的頻繁變化,做接口測試的測試人員應該如何應對?

  個人覺得此在于團隊開發(fā)的流程,團隊之間的溝通和測試人員的警覺性。

  在開發(fā)階段,需求的變更是一件極為頻繁和正常的事情,對于此點團隊中的任何一個人都應該正確的心態(tài)來面對,團隊需要規(guī)范的開發(fā)流程,良好的溝通方式,測試人員更需要及時跟進軟件進度,和開發(fā)人員并進齊行,同時,測試與開發(fā)需要相對獨立的工作環(huán)境,總結而言為知己知彼,亦敵亦友。


接口測試的原理?

  通過測試程序模擬客戶端向服務器發(fā)送請求報文,服務器接收請求報文后對相應的報文做出處理然后再把應答報文發(fā)送給客戶端,客戶端接收應答報文這一過程(request→response)


接口測試的范圍?

  (1)、新增接口的測試;

 ?。?)、新增業(yè)務功能接口測試;

 ?。?)、整個服務器的接口測試,所需測試接口一次增多,在測試時間足夠的條件下,當然需要對所有接口進行測試用例的設計,如果測試較短的情況下,則應該首先根據用戶的典型操作對測試接口進行優(yōu)先級劃分,對調用平凡接口需要優(yōu)先進行測試。


?接口測試策略?

 ?。?)、接口設計檢查(整數型數據位數、浮點型數據精度、字符串數據范圍值)

 ?。?)、接口依賴關系檢查

  (3)、接口輸入/ 輸出驗證

    3.1 、條件判斷接口

       3.1.1、條件判斷的驗證:要對判斷條件進行驗證,則需要知道接口是根據哪些輸入項來進行判斷的

    ? ? ? ?3.1.2、異常數據的響應:對于密碼重置接口,用戶ID不存在、不合法,郵箱輸入格式錯誤、用戶郵箱信息不存在或未激活就是測試時需要考慮的異常場景,設計這類輸入值,并且檢查接口返回的響應碼,響應碼的正確才能保證客戶端根據異常情況來顯示相應的提示信息。

    3.2、數據查詢接口

      ?除了像條件判斷接口之外根據請求參數設計合法/不合法/正常/異常測試值之外,還需要結合數據庫來對查詢結果進行驗證。

      3.2.1、是否根據 正確的關聯數據表進行查詢

      3.2.2、驗證查詢結果是否從數據表中正確項中獲取,涉及到多表聯合查詢時,不同表中的相同項設計不同測試數據來進行驗證。

      3.2.3、修改查詢結果在數據表中對應項中的數據,使其為空值或客戶端相應項的范圍值的最大和最小值,查看接口輸出是否正確。

    3.3、邏輯運算接口

后端接口都測試什么?

  回答這個問題,我們可以從接口測試活動內容的角度下手,看一下面這張圖,基本反應了當前我們項目后端接口測試的主要內容:


后端接口測試一遍 ,前端也測試一遍,是不是重復測試了?


  回答這個問題,我們可以直接對比接口測試和app端測試活動的內容,如下圖為app測試時需要覆蓋或考慮內容:


接口測試持續(xù)集成:

對接口測試而言,持續(xù)集成自動化是核心內容,通過持自動化的手段我們才能做到低成本高收益。目前我們已經實現了接口自動化,主要應用于回歸階段,后續(xù)還需要加強自動化的程度,包括但不限于下面的內容:

  a) 流程方面:在回歸階段加強接口異常場景的覆蓋度,并逐步向系統(tǒng)測試,冒煙測試階段延伸,最終達到全流程自動化。

  b) 結果展示:更加豐富的結果展示、趨勢分析,質量統(tǒng)計和分析等

  c) 問題定位:報錯信息、日志更精準,方便問題復現與定位。

  d) 結果校驗:加強自動化校驗能力,如數據庫信息校驗。

  e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探,提高代碼覆蓋率。

  f) 性能需求:完善性能測試體系,通過自動化的手段監(jiān)控接口性能指標是否正常。


接口測試質量評估標準:

a) 業(yè)務功能覆蓋是否完整?

  b) 業(yè)務規(guī)則覆蓋是否完整

  c) 參數驗證是否達到要求(邊界、業(yè)務規(guī)則)

  d) 接口異常場景覆蓋是否完整

  e) 接口覆蓋率是否達到要求

  f) ?代碼覆蓋率是否達到要求

  g) 性能指標是否滿足要求

  h) 安全指標是否滿足要求

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容