成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

什么是接口測試?接口測試基礎(chǔ)、案例及Json格式詳解

WalkerXu / 717人閱讀

摘要:什么是接口測試全稱接口是一個(gè)位于復(fù)雜系統(tǒng)之上能簡化任務(wù),像中間人一樣不需要你了解詳細(xì)的所有細(xì)節(jié)。接口測試與性能測試之間存在接口性能測試,主要通過來進(jìn)行壓測。

很多小伙伴可能會(huì)說接口真的有測試的必要嗎?

我只要把功能測試好了不就ok了嗎?

答案是肯定的,在中大型項(xiàng)目中,后端、前端多人協(xié)同開發(fā)過程中,接口測試是必要的。

什么是接口(API)測試?

API全稱(Application Progarmming Interface),接口是一個(gè)位于復(fù)雜系統(tǒng)之上能簡化任務(wù),像中間人一樣不需要你了解詳細(xì)的所有細(xì)節(jié)。比如用戶登錄頁面,只需要調(diào)用登錄接口,就可以達(dá)到登錄系統(tǒng)的目的。

接口返回的數(shù)據(jù)類型都是json,json是一種通用的數(shù)據(jù)類型.

什么是接口自動(dòng)化?

接口自動(dòng)化測試:讓程序代替人為對(duì)接口項(xiàng)目進(jìn)行自動(dòng)化驗(yàn)證測試的過程

接口測試是一種功能測試,也是一種自動(dòng)化測試。

功能測試的角度上說只要管輸入數(shù)據(jù)后得到的輸出結(jié)果是怎么樣的,從執(zhí)行方式上來講接口必須要借助工具來實(shí)現(xiàn)。

接口測試與性能測試之間存在接口性能測試,主要通過jmeter來進(jìn)行壓測。

接口測試的意義

  • 更早地發(fā)現(xiàn)問題,越早發(fā)現(xiàn)bug,修復(fù)成本越低

功能測試必須要等到系統(tǒng)提供可測試的界面后才能進(jìn)行

  • 縮短產(chǎn)品研發(fā)周期

接口測試的介入可以更早地發(fā)現(xiàn)并解決bug,使得留到功能測試階段被修復(fù)的bug減少,從而縮短整個(gè)項(xiàng)目的上線時(shí)間

  • 發(fā)現(xiàn)更底層的問題

接口測試可以更簡單更全面地覆蓋到底層的代碼邏輯,從而可以發(fā)現(xiàn)一些隱藏的bug.

只針對(duì)UI層的功能進(jìn)行測試,就很難發(fā)現(xiàn)后端系統(tǒng)對(duì)一些異常情況的處理能力.

  • 前端隨便變,接口測好了,后端不用變
  • 檢查系統(tǒng)的安全性、穩(wěn)定性

接口測試常用工具:

  1. 常用瀏覽器

  2. Postman

  3. Jmeter

  4. Fiddler

接口的請(qǐng)求和相應(yīng)原理

針對(duì)這一部分所需掌握的知識(shí)HTTP協(xié)議、會(huì)話技術(shù),屬于基本常識(shí)了,有不了解的同學(xué)可自行學(xué)習(xí)。

JSON語法及數(shù)據(jù)格式

什么是JSON?

JSON 指的是 JavaScript 對(duì)象表示法(JavaScript Object Notation),JSON是輕量級(jí)的文本數(shù)據(jù)交換格式(數(shù)據(jù)傳遞)–xml

JSON 獨(dú)立于語言:JSON 使用 Javascript語法來描述數(shù)據(jù)對(duì)象,JSON 解析器和 JSON 庫支持許多不同 的編程語言。 目前非常多的動(dòng)態(tài)(PHP,JSP,.NET)編程語言都支持JSON。

語法規(guī)則:

JSON 語法是 JavaScript 對(duì)象表示語法的子集。

  1. 數(shù)據(jù)在名稱/值(鍵值對(duì))對(duì)中 如 {“name” : “zs”}

  2. 數(shù)據(jù)由逗號(hào)分隔 如 {“name” : “zs” , ”age”:”18”}

  3. 大括號(hào)保存對(duì)象 如 {“name” : “zs” , ”age”:”18”}

  4. 中括號(hào)保存數(shù)組 如 {“score” : [100,80,90]

數(shù)據(jù)格式:

接口測試流程

1.接口文檔必備要素

接口說明

調(diào)用url

請(qǐng)求參數(shù)

請(qǐng)求方式

請(qǐng)求參數(shù)、參數(shù)類型、請(qǐng)求參數(shù)說明

返回參數(shù)說明

2.接口請(qǐng)求報(bào)文拼接方式

URL拼接:

url拼接規(guī)則為:Url?param1=value1?m2=value2

問號(hào)前面是請(qǐng)求url,后面是請(qǐng)求參數(shù)和參數(shù)值,多個(gè)參數(shù)用&連接

如:
https://api.douban.com/v2/book/search?q=鄒偉偉

JSON串:

需要測試工具完成,如postman、jmeter等。其傳參方式符合json的組合規(guī)則。

3.接口類型

http api接口

http api 接口是走h(yuǎn)ttp協(xié)議,通過路徑來區(qū)分調(diào)用的方法,請(qǐng)求報(bào)文都是key-value形式,返回報(bào)文一般都是json串,請(qǐng)求方式有g(shù)et、post等方式,

這兩種為最常用的請(qǐng)求方式。

webservice接口

webservice 接口是走soap協(xié)議通過http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式,需要通過工具才能進(jìn)行測試。

數(shù)據(jù)庫訪問接口

數(shù)據(jù)庫訪問接口是走jdbc方式連接數(shù)據(jù),對(duì)數(shù)據(jù)庫進(jìn)行增刪改查操作,需要使用工具進(jìn)行測試。

GET、POST區(qū)別:

get使用url或cookie傳參,post將數(shù)據(jù)存放在body中

get的url在長度上有限制,post數(shù)據(jù)可以很大

post比get更安全,因?yàn)閿?shù)據(jù)在地址欄上不可見

一般get用于獲取數(shù)據(jù),post用于發(fā)送數(shù)據(jù)

HTTP狀態(tài)碼:

200 2開頭表示請(qǐng)求發(fā)送成功

300 3開頭表示重定向

400 4開頭表示客戶端發(fā)送請(qǐng)求有語法錯(cuò)誤

401 訪問頁面未授權(quán)

403 無權(quán)訪問

404 無此頁面

500 5開頭表示服務(wù)器異常

500 服務(wù)器內(nèi)部異常

504 服務(wù)器端超時(shí),未返回結(jié)果

1.第一個(gè)案例(發(fā)送一個(gè)get請(qǐng)求)

# coding=utf-8import requests# 請(qǐng)求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送get請(qǐng)求r = requests.post(url)# 請(qǐng)求的狀態(tài)碼 200代表成功status = r.status_codeprint(status)# 請(qǐng)求的內(nèi)容j = r.json()print(j)

輸出結(jié)果如下:

2.第二個(gè)案例(發(fā)送一個(gè)post請(qǐng)求)

# 請(qǐng)求的鏈接url = "http://suggest.taobao.com/sug"# post請(qǐng)求以字典格式傳入data = {"code": "utf-8", "q": "褲子", "callback": "cb 用例"}# 發(fā)送post請(qǐng)求r = requests.post(url, data)# 請(qǐng)求的狀態(tài)碼 200代表成功status = r.status_codeprint(status)# 請(qǐng)求的內(nèi)容print(r.content)

輸出結(jié)果如下:

(接口只返回了一個(gè)b,這里只需要明白遇到post接口怎么去請(qǐng)求就好了~)

3.第三個(gè)案例(進(jìn)行接口狀態(tài)碼斷言)

# coding=utf-8import requests# 請(qǐng)求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送請(qǐng)求r = requests.post(url)# 請(qǐng)求的狀態(tài)碼 200代表成功status = r.status_code# 進(jìn)行接口的狀態(tài)碼斷言,等于200則認(rèn)為通過,不是200不通過if status == 200:    print("用例測試通過")else:    print("測試不通過")print(status)# 請(qǐng)求的內(nèi)容j = r.json()print(j)

輸出結(jié)果如下:

4.第四個(gè)案例(進(jìn)行接口內(nèi)容斷言-正常情況)

# coding=utf-8import requests# 請(qǐng)求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送請(qǐng)求r = requests.post(url)# 請(qǐng)求的狀態(tài)碼 200代表成功status = r.status_code# 進(jìn)行接口的狀態(tài)碼斷言,等于200則認(rèn)為通過,不是200不通過if status == 200:    print("用例測試通過")else:    print("測試不通過")print(status)# 請(qǐng)求的內(nèi)容j = r.json()# 判斷接口返回內(nèi)容里面,有沒有 褲子女夏 內(nèi)容if "褲子女夏" in str(j):    print("存在此數(shù)據(jù)")else:    print("不存在此數(shù)據(jù)")print(j)

輸出結(jié)果如下:

5.第五個(gè)案例(進(jìn)行接口內(nèi)容斷言-異常情況)

# coding=utf-8import requests# 請(qǐng)求的鏈接url = "http://suggest.taobao.com/sug?code=utf-8&q=褲子&callback=cb 用例"# 發(fā)送請(qǐng)求r = requests.post(url)# 請(qǐng)求的狀態(tài)碼 200代表成功status = r.status_code# 進(jìn)行接口的狀態(tài)碼斷言,等于200則認(rèn)為通過,不是200不通過if status == 200:    print("狀態(tài)碼校驗(yàn)過")else:    print("狀態(tài)碼校驗(yàn)不通過")print(status)# 請(qǐng)求的內(nèi)容j = r.json()# 判斷接口返回內(nèi)容里面,有沒有 褲子女夏 內(nèi)容# 褲子女夏  增加了一個(gè)1if "褲子女夏1" in str(j):    print("存在此數(shù)據(jù)")else:    print("不存在此數(shù)據(jù)")print(j)

輸出結(jié)果如下:

6.第六個(gè)案例(接口的小封裝-接口和邏輯代碼分開控制-~)

增加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 用例"

增加testapi.py

# coding=utf-8import requests# 引入config配置接口的文件import config# 發(fā)送請(qǐng)求 使用config.來調(diào)用想要的接口 調(diào)用首頁接口r = requests.get(config.url_home)# 請(qǐng)求的狀態(tài)碼 200代表成功status = r.status_code# 進(jìn)行接口的狀態(tài)碼斷言,等于200則認(rèn)為通過,不是200不通過if status == 200:    print("狀態(tài)碼校驗(yàn)過")else:    print("狀態(tài)碼校驗(yàn)不通過")print(status)# 請(qǐng)求的內(nèi)容j = r.json()# 判斷接口返回內(nèi)容里面,有沒有 褲子女夏 內(nèi)容# 褲子女夏  增加了一個(gè)1if "褲子女夏1" in str(j):    print("存在此數(shù)據(jù)")else:    print("不存在此數(shù)據(jù)")print(j)

輸出結(jié)果如下:


用心的同學(xué)已經(jīng)發(fā)現(xiàn)了,這樣的話每次接口變了鏈接等,只需要修改config文件即可 不用去邏輯代碼里面去找了。

通用接口用例設(shè)計(jì)

通過性驗(yàn)證

要保證這個(gè)接口功能是正確的,按照接口文檔上的參數(shù),正常傳入,查看是否可以返回正確的結(jié)果

參數(shù)組合

如:現(xiàn)有一個(gè)操作商品的接口,有個(gè)字段type。type傳1的時(shí)候代表修改商品,商品id、商品名稱、價(jià)格有一個(gè)是必傳的,這樣就要測參數(shù)組合,type傳1的時(shí)候,只傳商品名稱能不能修改成功;id、名稱、價(jià)格都傳的時(shí)候能不能修改成功

接口安全:

繞過驗(yàn)證

如購買了一個(gè)商品,價(jià)格是300元,提交訂單時(shí)候,把這個(gè)商品的價(jià)格改成3元,后端有沒有做驗(yàn)證,更狠點(diǎn),我把錢改成-3,是不是我的余額還要增加?

繞過身份授權(quán)

如修改商品信息接口,必須得是賣家才能修改,那我傳一個(gè)普通用戶,能不能修改成功,傳一個(gè)其他的賣家能不能修改成功

參數(shù)是否加密

如登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請(qǐng)求,就能獲取到你的信息。

加密規(guī)則是否容易破解

密碼安全規(guī)則

對(duì)密碼的復(fù)雜程度校驗(yàn)

異常驗(yàn)證

不按照接口文檔上的要求輸入?yún)?shù),來驗(yàn)證接口對(duì)異常情況的校驗(yàn)

如必填的參數(shù)不填,輸入整數(shù)類型的,傳入字符串類型,長度是10的,傳11

必傳非必傳、參數(shù)類型、入?yún)㈤L度。

最后: 可以關(guān)注公眾號(hào):傷心的辣條 ! 進(jìn)去有許多資料共享!資料都是面試時(shí)面試官必問的知識(shí)點(diǎn),也包括了很多測試行業(yè)常見知識(shí),其中包括了有基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進(jìn)階-Python編程、Web自動(dòng)化測試、APP自動(dòng)化測試、接口自動(dòng)化測試、測試高級(jí)持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。

如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng) “點(diǎn)贊” “評(píng)論” “收藏” 一鍵三連哦!


好文推薦

轉(zhuǎn)行面試,跳槽面試,軟件測試人員都必須知道的這幾種面試技巧!

面試經(jīng):一線城市搬磚!又面軟件測試崗,5000就知足了…

面試官:工作三年,還來面初級(jí)測試?恐怕你的軟件測試工程師的頭銜要加雙引號(hào)…

什么樣的人適合從事軟件測試工作?

那個(gè)準(zhǔn)點(diǎn)下班的人,比我先升職了…

測試崗反復(fù)跳槽,跳著跳著就跳沒了…

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119657.html

相關(guān)文章

  • 全棧開發(fā)自學(xué)路線

    摘要:前言這里筑夢師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個(gè)人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識(shí)拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...

    galaxy_robot 評(píng)論0 收藏0
  • 全棧開發(fā)自學(xué)路線

    摘要:前言這里筑夢師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個(gè)人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識(shí)拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...

    Scorpion 評(píng)論0 收藏0
  • 工行數(shù)據(jù)中心高級(jí)經(jīng)理 李雁南:接口冒煙測試方法

    摘要:接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。隨著案例和執(zhí)行結(jié)果的不斷積累,接口測試覆蓋會(huì)更加充分,統(tǒng)計(jì)結(jié)果會(huì)更加精確。 原文出自【聽云技術(shù)博客】:http://blog.tingyun.com/web/a... 今年遇到了幾個(gè)問題,與接口的功能和性能相關(guān),恰巧最近公司也在組織以冒煙測試為主題的活動(dòng),于是乎突發(fā)奇想,尋思著能否將接口測試與冒煙測試結(jié)合起來,發(fā)掘一...

    sunny5541 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<