摘要:什么是接口測試全稱接口是一個位于復雜系統(tǒng)之上能簡化任務,像中間人一樣不需要你了解詳細的所有細節(jié)。接口測試與性能測試之間存在接口性能測試,主要通過來進行壓測。
很多小伙伴可能會說接口真的有測試的必要嗎?
我只要把功能測試好了不就ok了嗎?
答案是肯定的,在中大型項目中,后端、前端多人協(xié)同開發(fā)過程中,接口測試是必要的。
API全稱(Application Progarmming Interface),接口是一個位于復雜系統(tǒng)之上能簡化任務,像中間人一樣不需要你了解詳細的所有細節(jié)。比如用戶登錄頁面,只需要調(diào)用登錄接口,就可以達到登錄系統(tǒng)的目的。
接口返回的數(shù)據(jù)類型都是json,json是一種通用的數(shù)據(jù)類型.
接口自動化測試:讓程序代替人為對接口項目進行自動化驗證測試的過程
接口測試是一種功能測試,也是一種自動化測試。
功能測試的角度上說只要管輸入數(shù)據(jù)后得到的輸出結(jié)果是怎么樣的,從執(zhí)行方式上來講接口必須要借助工具來實現(xiàn)。
接口測試與性能測試之間存在接口性能測試,主要通過jmeter來進行壓測。
功能測試必須要等到系統(tǒng)提供可測試的界面后才能進行
接口測試的介入可以更早地發(fā)現(xiàn)并解決bug,使得留到功能測試階段被修復的bug減少,從而縮短整個項目的上線時間
接口測試可以更簡單更全面地覆蓋到底層的代碼邏輯,從而可以發(fā)現(xiàn)一些隱藏的bug.
只針對UI層的功能進行測試,就很難發(fā)現(xiàn)后端系統(tǒng)對一些異常情況的處理能力.
接口測試常用工具:
常用瀏覽器
Postman
Jmeter
Fiddler
針對這一部分所需掌握的知識HTTP協(xié)議、會話技術(shù),屬于基本常識了,有不了解的同學可自行學習。
什么是JSON?
JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation),JSON是輕量級的文本數(shù)據(jù)交換格式(數(shù)據(jù)傳遞)–xml
JSON 獨立于語言:JSON 使用 Javascript語法來描述數(shù)據(jù)對象,JSON 解析器和 JSON 庫支持許多不同 的編程語言。 目前非常多的動態(tài)(PHP,JSP,.NET)編程語言都支持JSON。
語法規(guī)則:
JSON 語法是 JavaScript 對象表示語法的子集。
數(shù)據(jù)在名稱/值(鍵值對)對中 如 {“name” : “zs”}
數(shù)據(jù)由逗號分隔 如 {“name” : “zs” , ”age”:”18”}
大括號保存對象 如 {“name” : “zs” , ”age”:”18”}
中括號保存數(shù)組 如 {“score” : [100,80,90]
數(shù)據(jù)格式:
1.接口文檔必備要素
接口說明
調(diào)用url
請求參數(shù)
請求方式
請求參數(shù)、參數(shù)類型、請求參數(shù)說明
返回參數(shù)說明
2.接口請求報文拼接方式
URL拼接:
url拼接規(guī)則為:Url?param1=value1?m2=value2
問號前面是請求url,后面是請求參數(shù)和參數(shù)值,多個參數(shù)用&連接
如:
https://api.douban.com/v2/book/search?q=鄒偉偉
JSON串:
需要測試工具完成,如postman、jmeter等。其傳參方式符合json的組合規(guī)則。
3.接口類型
http api接口
http api 接口是走http協(xié)議,通過路徑來區(qū)分調(diào)用的方法,請求報文都是key-value形式,返回報文一般都是json串,請求方式有g(shù)et、post等方式,
這兩種為最常用的請求方式。
webservice接口
webservice 接口是走soap協(xié)議通過http傳輸,請求報文和返回報文都是xml格式,需要通過工具才能進行測試。
數(shù)據(jù)庫訪問接口
數(shù)據(jù)庫訪問接口是走jdbc方式連接數(shù)據(jù),對數(shù)據(jù)庫進行增刪改查操作,需要使用工具進行測試。
GET、POST區(qū)別:
get使用url或cookie傳參,post將數(shù)據(jù)存放在body中
get的url在長度上有限制,post數(shù)據(jù)可以很大
post比get更安全,因為數(shù)據(jù)在地址欄上不可見
一般get用于獲取數(shù)據(jù),post用于發(fā)送數(shù)據(jù)
HTTP狀態(tài)碼:
200 2開頭表示請求發(fā)送成功
300 3開頭表示重定向
400 4開頭表示客戶端發(fā)送請求有語法錯誤
401 訪問頁面未授權(quán)
403 無權(quán)訪問
404 無此頁面
500 5開頭表示服務器異常
500 服務器內(nèi)部異常
504 服務器端超時,未返回結(jié)果
1.第一個案例(發(fā)送一個get請求)
# coding=utf-8import requests# 請求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送get請求r = requests.post(url)# 請求的狀態(tài)碼 200代表成功status = r.status_codeprint(status)# 請求的內(nèi)容j = r.json()print(j)
輸出結(jié)果如下:
2.第二個案例(發(fā)送一個post請求)
# 請求的鏈接url = "http://suggest.taobao.com/sug"# post請求以字典格式傳入data = {"code": "utf-8", "q": "褲子", "callback": "cb 用例"}# 發(fā)送post請求r = requests.post(url, data)# 請求的狀態(tài)碼 200代表成功status = r.status_codeprint(status)# 請求的內(nèi)容print(r.content)
輸出結(jié)果如下:
(接口只返回了一個b,這里只需要明白遇到post接口怎么去請求就好了~)
3.第三個案例(進行接口狀態(tài)碼斷言)
# coding=utf-8import requests# 請求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送請求r = requests.post(url)# 請求的狀態(tài)碼 200代表成功status = r.status_code# 進行接口的狀態(tài)碼斷言,等于200則認為通過,不是200不通過if status == 200: print("用例測試通過")else: print("測試不通過")print(status)# 請求的內(nèi)容j = r.json()print(j)
輸出結(jié)果如下:
4.第四個案例(進行接口內(nèi)容斷言-正常情況)
# coding=utf-8import requests# 請求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送請求r = requests.post(url)# 請求的狀態(tài)碼 200代表成功status = r.status_code# 進行接口的狀態(tài)碼斷言,等于200則認為通過,不是200不通過if status == 200: print("用例測試通過")else: print("測試不通過")print(status)# 請求的內(nèi)容j = r.json()# 判斷接口返回內(nèi)容里面,有沒有 褲子女夏 內(nèi)容if "褲子女夏" in str(j): print("存在此數(shù)據(jù)")else: print("不存在此數(shù)據(jù)")print(j)
輸出結(jié)果如下:
5.第五個案例(進行接口內(nèi)容斷言-異常情況)
# coding=utf-8import requests# 請求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送請求r = requests.post(url)# 請求的狀態(tài)碼 200代表成功status = r.status_code# 進行接口的狀態(tài)碼斷言,等于200則認為通過,不是200不通過if status == 200: print("狀態(tài)碼校驗過")else: print("狀態(tài)碼校驗不通過")print(status)# 請求的內(nèi)容j = r.json()# 判斷接口返回內(nèi)容里面,有沒有 褲子女夏 內(nèi)容# 褲子女夏 增加了一個1if "褲子女夏1" in str(j): print("存在此數(shù)據(jù)")else: print("不存在此數(shù)據(jù)")print(j)
輸出結(jié)果如下:
6.第六個案例(接口的小封裝-接口和邏輯代碼分開控制-~)
增加config.py主要存放接口
# coding=utf-8# baseurl 一般接口都是分測試接口和正式接口的,只需要修改ip即可baseurl = "http://suggest.taobao.com"# 假裝是登錄接口 baseurl=于樓上url_login = baseurl + "/sug?code=utf-8&q=褲子&callback=cb 用例"# 假裝是注冊接口url_register = baseurl + "/sug?code=utf-8&q=褲子&callback=cb 用例"# 假裝是首頁接口url_home = baseurl + "/sug?code=utf-8&q=褲子&callback=cb 用例"
# coding=utf-8import requests# 引入config配置接口的文件import config# 發(fā)送請求 使用config.來調(diào)用想要的接口 調(diào)用首頁接口r = requests.get(config.url_home)# 請求的狀態(tài)碼 200代表成功status = r.status_code# 進行接口的狀態(tài)碼斷言,等于200則認為通過,不是200不通過if status == 200: print("狀態(tài)碼校驗過")else: print("狀態(tài)碼校驗不通過")print(status)# 請求的內(nèi)容j = r.json()# 判斷接口返回內(nèi)容里面,有沒有 褲子女夏 內(nèi)容# 褲子女夏 增加了一個1if "褲子女夏1" in str(j): print("存在此數(shù)據(jù)")else: print("不存在此數(shù)據(jù)")print(j)
輸出結(jié)果如下:
用心的同學已經(jīng)發(fā)現(xiàn)了,這樣的話每次接口變了鏈接等,只需要修改config文件即可 不用去邏輯代碼里面去找了。
通過性驗證
要保證這個接口功能是正確的,按照接口文檔上的參數(shù),正常傳入,查看是否可以返回正確的結(jié)果
參數(shù)組合
如:現(xiàn)有一個操作商品的接口,有個字段type。type傳1的時候代表修改商品,商品id、商品名稱、價格有一個是必傳的,這樣就要測參數(shù)組合,type傳1的時候,只傳商品名稱能不能修改成功;id、名稱、價格都傳的時候能不能修改成功
接口安全:
繞過驗證
如購買了一個商品,價格是300元,提交訂單時候,把這個商品的價格改成3元,后端有沒有做驗證,更狠點,我把錢改成-3,是不是我的余額還要增加?
繞過身份授權(quán)
如修改商品信息接口,必須得是賣家才能修改,那我傳一個普通用戶,能不能修改成功,傳一個其他的賣家能不能修改成功
參數(shù)是否加密
如登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的信息。
加密規(guī)則是否容易破解
密碼安全規(guī)則
對密碼的復雜程度校驗
異常驗證
不按照接口文檔上的要求輸入?yún)?shù),來驗證接口對異常情況的校驗
如必填的參數(shù)不填,輸入整數(shù)類型的,傳入字符串類型,長度是10的,傳11
必傳非必傳、參數(shù)類型、入?yún)㈤L度。
最后: 可以關(guān)注公眾號:傷心的辣條 ! 進去有許多資料共享!資料都是面試時面試官必問的知識點,也包括了很多測試行業(yè)常見知識,其中包括了有基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。
如果我的博客對你有幫助、如果你喜歡我的博客內(nèi)容,請 “點贊” “評論” “收藏” 一鍵三連哦!
轉(zhuǎn)行面試,跳槽面試,軟件測試人員都必須知道的這幾種面試技巧!
面試經(jīng):一線城市搬磚!又面軟件測試崗,5000就知足了…
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/119657.html
摘要:前言這里筑夢師是一名正在努力學習的開發(fā)工程師目前致力于全棧方向的學習希望可以和大家一起交流技術(shù)共同進步用簡書記錄下自己的學習歷程個人學習方法分享本文目錄更新說明目錄學習方法學習態(tài)度全棧開發(fā)學習路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學習的iOS開發(fā)工程師,目前致力于全棧方向的學習,希望可以和大家一起交流技術(shù),共同進步,用簡書記錄下自己的學習歷程...
摘要:前言這里筑夢師是一名正在努力學習的開發(fā)工程師目前致力于全棧方向的學習希望可以和大家一起交流技術(shù)共同進步用簡書記錄下自己的學習歷程個人學習方法分享本文目錄更新說明目錄學習方法學習態(tài)度全棧開發(fā)學習路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學習的iOS開發(fā)工程師,目前致力于全棧方向的學習,希望可以和大家一起交流技術(shù),共同進步,用簡書記錄下自己的學習歷程...
摘要:接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點。隨著案例和執(zhí)行結(jié)果的不斷積累,接口測試覆蓋會更加充分,統(tǒng)計結(jié)果會更加精確。 原文出自【聽云技術(shù)博客】:http://blog.tingyun.com/web/a... 今年遇到了幾個問題,與接口的功能和性能相關(guān),恰巧最近公司也在組織以冒煙測試為主題的活動,于是乎突發(fā)奇想,尋思著能否將接口測試與冒煙測試結(jié)合起來,發(fā)掘一...
閱讀 1089·2021-10-19 11:42
閱讀 3061·2021-09-10 10:51
閱讀 760·2021-09-09 09:33
閱讀 1837·2021-09-01 10:43
閱讀 2834·2019-08-30 12:43
閱讀 3574·2019-08-30 11:24
閱讀 2278·2019-08-30 10:56
閱讀 2832·2019-08-29 11:00