什么是接口
在XX公司有兩個(gè)項(xiàng)目,《員工信息管理系統(tǒng)-信管》、《員工考勤管理系統(tǒng)-考管》,其中信管系統(tǒng)中保存中公司所有員工信息,包括:ID,姓名,年齡,入職時(shí)間,職位等信息。而考管系統(tǒng)正在開發(fā)中,考管系統(tǒng)要用到信管系統(tǒng)中的員工信息,那么怎么樣才能拿到信息呢?
將信管系統(tǒng)中的數(shù)據(jù)庫(kù)拷貝到考管中一份。
a) 不好維護(hù),員工有變動(dòng)不能第一時(shí)間通知考管系統(tǒng)
b) 需要了解數(shù)據(jù)結(jié)構(gòu),不然不能對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行操作。
考管系統(tǒng)直接連接信管的數(shù)據(jù)庫(kù)
a) 需要了解數(shù)據(jù)結(jié)構(gòu),不然不能對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行操作。
在信管系統(tǒng)中寫一個(gè)接口,接收信管發(fā)送過(guò)來(lái)的請(qǐng)求,處理后返回相關(guān)信息。
a) 不需要維護(hù)新的數(shù)據(jù)庫(kù),不需要了解數(shù)據(jù)結(jié)構(gòu),只需要了解這個(gè)接口的參數(shù)即可。
??前兩種就不介紹了,第三種方法,添加了一個(gè)接口,降低開發(fā)成本,和運(yùn)維成本,完
成考管系統(tǒng)對(duì)員工信息的需求。
那么接口是什么:
接口就是內(nèi)部模塊對(duì)模塊,外部系統(tǒng)對(duì)其他服務(wù)提供的一種可調(diào)用或者連接的能力的標(biāo)準(zhǔn)。就好比信管系統(tǒng)對(duì)考管系統(tǒng)提供的接口服務(wù),他是系統(tǒng)向外接提供的一種用于數(shù)據(jù)傳輸?shù)囊粋€(gè)服務(wù),只要滿足接口定義協(xié)議,就能調(diào)用接口,實(shí)現(xiàn)數(shù)據(jù)傳輸功能。
接口的分類:
外部接口: 一個(gè)程序?qū)o另一個(gè)程序的服務(wù)。
內(nèi)部接口: 一個(gè)程序中一個(gè)接口需要另一個(gè)接口提供的數(shù)據(jù)。
http協(xié)議請(qǐng)求方法介紹:
常見(jiàn)的接口分類http:get,post,delete,put 等等。但是呢,我我做的接口測(cè)試 還真的就用過(guò)一個(gè)請(qǐng)求方法,就是 POST 方式提交的JSON數(shù)據(jù)。
系統(tǒng)對(duì)外的接口:
比如你要從別的網(wǎng)站或服務(wù)器上獲取資源或信息,別人肯定不會(huì)把數(shù)據(jù)庫(kù)共享給你,他只能給你提供一個(gè)他們寫好的方法來(lái)獲取數(shù)據(jù),你引用他提供的接口就能使用他寫好的方法,從而達(dá)到數(shù)據(jù)共享的目的。
程序內(nèi)部的接口:
方法與方法之間,模塊與模塊之間的交互,程序內(nèi)部拋出的接口,比如bbs系統(tǒng),有登錄模塊、發(fā)帖模塊等等,那你要發(fā)帖就必須先登錄,那么這兩個(gè)模塊就得有交互,它就會(huì)拋出一個(gè)接口,供內(nèi)部系統(tǒng)進(jìn)行調(diào)用。
接口分類:
web service 接口
webService接口是走soap協(xié)議通過(guò)http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的,我們?cè)跍y(cè)試的時(shí)候都用通過(guò)工具才能進(jìn)行調(diào)用,測(cè)試。
http api接口
http api接口是走h(yuǎn)ttp協(xié)議,通過(guò)路徑來(lái)區(qū)分調(diào)用的方法,請(qǐng)求報(bào)文都是key-value形式的,返回報(bào)文一般都是json串,有g(shù)et和post等方法,這也是最常用的兩種請(qǐng)求方式。
GET和POST的區(qū)別
- Get是不安全的,因?yàn)樵趥鬏斶^(guò)程,數(shù)據(jù)被放在請(qǐng)求的URL中;Post的所有操作對(duì)用戶來(lái)說(shuō)都是不
可見(jiàn)的。 - Get傳送的數(shù)據(jù)量較小,這主要是因?yàn)槭躑RL長(zhǎng)度限制;Post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不
受限制。 - Get執(zhí)行效率卻比Post方法好。Get是form提交的默認(rèn)方法。
JSON是什么?
JSON是一種通用的數(shù)據(jù)類型。JSON的本質(zhì)是字符串,可以轉(zhuǎn)換為Python中的字典類型key-value的形式。
接口API與SDK介紹
API是接口的一種,在程序交互中具有重要的作用。
而SDK與API有著密不可分的關(guān)系。
總的來(lái)說(shuō),兩者沒(méi)有值得比較的區(qū)別,因?yàn)槭蔷哂嘘P(guān)聯(lián)性的兩種東西。
API的概念
定義
API(Application Programming Interface)是一些預(yù)先定義的函數(shù),或指軟件系統(tǒng)不同組成部分銜接的約定。
也可以理解為是兩個(gè)應(yīng)用程序之間通信的機(jī)制,或者使用一組規(guī)則和協(xié)議的組件或計(jì)算機(jī)硬件。
目的
提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問(wèn)一組例程的能力,而又無(wú)需訪問(wèn)源代碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
使用的地方
API被編寫并使用在以下幾個(gè)地方:
基于web的應(yīng)用程序
電腦操作系統(tǒng)
數(shù)據(jù)庫(kù)系統(tǒng)
計(jì)算機(jī)硬件
軟件庫(kù)
上面是很廣義的API的概念,包含了硬件和軟件,但我們常說(shuō)的API其實(shí)是很狹義的Web Service或者說(shuō) Web API。
人和程序交互的叫做UI(user interface),所有人輸入的包括鼠標(biāo)鍵盤觸摸屏聲音輸入都算。
程序和程序交互叫做API,所有非人對(duì)非人交互都通過(guò)API進(jìn)行傳遞數(shù)據(jù),觸發(fā)功能。
SDK的概念
SDK即“軟體開發(fā)工具包”,軟件工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。指由第三方服務(wù)商提供的實(shí)現(xiàn)軟件產(chǎn)品某項(xiàng)功能的工具包。
通常SDK是由專業(yè)性質(zhì)的公司提供專業(yè)服務(wù)的集合,比如提供安卓開發(fā)工具、或者基于硬件開發(fā)的服務(wù)等。也有針對(duì)某項(xiàng)軟件功能的SDK,如推送技術(shù)、圖像識(shí)別技術(shù)、移動(dòng)支付技術(shù)、語(yǔ)音識(shí)別分析技術(shù)等,在互聯(lián)網(wǎng)開放的大趨勢(shì)下,一些功能性的SDK已經(jīng)被當(dāng)作一個(gè)產(chǎn)品來(lái)運(yùn)營(yíng)。
開發(fā)者不需要再對(duì)產(chǎn)品的每個(gè)功能進(jìn)行開發(fā),選擇合適穩(wěn)定的SDK服務(wù)并花費(fèi)很少的經(jīng)歷就可以在產(chǎn)品中集成某項(xiàng)功能。
SDK和API的區(qū)別
實(shí)際上SDK包含了API的定義,API定義一種能力,一種接口的規(guī)范,而SDK可以包含這種能力、包含這種規(guī)范。但是SDK又不完完全全只包含API以及API的實(shí)現(xiàn),它是一個(gè)軟件工具包,它還有很多其他輔助性的功能。
SDK 包含了使用 API 的必需資料,所以人們也常把僅使用 API 來(lái)編寫 Windows 應(yīng)用程序的開發(fā)方式叫做“SDK編程”。
通俗語(yǔ)言解釋
API: 前端調(diào)用后端數(shù)據(jù)的一個(gè)通道,就是我們俗說(shuō)的接口,通過(guò)這個(gè)通道,可以訪問(wèn)到后端的數(shù)據(jù),但是又無(wú)需調(diào)用源代碼。
SDK: 工程師為輔助開發(fā)某類軟件的相關(guān)文檔、范例和工具的集合,使用SDK可以提高開發(fā)效率,更簡(jiǎn)單的接入某個(gè)功能。
舉例說(shuō)明: 一個(gè)產(chǎn)品想實(shí)現(xiàn)某個(gè)功能,可以找到相關(guān)的SDK,工程師直接接入SDK,就不用再重新開發(fā)了。
為什么做接口測(cè)試
接口測(cè)試介紹
接口測(cè)試是測(cè)試系統(tǒng)組件間 接口 的一種測(cè)試。
主要用于 檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
為什么做接口測(cè)試
接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試。接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
由于如今的系統(tǒng)復(fù)雜度不斷上升,傳統(tǒng)的測(cè)試方法成本急劇增加且測(cè)試效率大幅下降,所以就要做接口測(cè)試。同時(shí),接口測(cè)試相對(duì)容易實(shí)現(xiàn)自動(dòng)化持續(xù)集成,且相對(duì)UI自動(dòng)化也比較穩(wěn)定,可以減少人工回歸測(cè)試人力成本與時(shí)間,縮短測(cè)試周期,支持后端快速發(fā)版需求。接口持續(xù)集成是為什么能低成本高收益的根源。
現(xiàn)在很多系統(tǒng)前后端架構(gòu)是分離的,從安全層面來(lái)說(shuō),只依賴前端進(jìn)行限制已經(jīng)完全不能滿足系統(tǒng)的安全要求(繞過(guò)前面實(shí)在太容易), 需要后端同樣進(jìn)行控制,在這種情況下就需要從接口層面進(jìn)行驗(yàn)證。前后端傳輸、日志打印等信息是否加密傳輸也是需要驗(yàn)證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。
接口測(cè)試怎么做
后端接口測(cè)試測(cè)什么?
從下面這張圖可以看出后端接口測(cè)試主要測(cè)了些什么:
怎么做接口測(cè)試
一般情況下,由于我們項(xiàng)目前后調(diào)用主要是基于http協(xié)議的接口,所以測(cè)試接口時(shí)主要是通過(guò)工具或代碼模擬http請(qǐng)求的發(fā)送和接收。所以我們下面整理了一下使用Jmeter工具進(jìn)行http接口測(cè)試。
開發(fā)接口測(cè)試案例的整體方案
第一步: 分析出測(cè)試需求,并拿到開發(fā)提供的接口說(shuō)明文檔。
第二步: 從接口說(shuō)明文檔中整理出接口測(cè)試案例,里面要包括詳細(xì)的入?yún)⒑统鰠?shù)據(jù)以及明確的格式和檢查點(diǎn)。
第三步: 和開發(fā)一起對(duì)接口測(cè)試案例進(jìn)行評(píng)審。
第四步: 結(jié)合開發(fā)庫(kù),準(zhǔn)備接口測(cè)試案例中的入?yún)⒑统鰠?shù)據(jù),并整理成csv格式的文件。
第五步: 結(jié)合接口測(cè)試案例文檔和csv格式的數(shù)據(jù)文檔,做接口測(cè)試案例的自動(dòng)化案例開發(fā)。
接口測(cè)試流程
接口自動(dòng)化適用場(chǎng)景
測(cè)試前置、開發(fā)自測(cè):
??一個(gè)新的自動(dòng)化接口測(cè)試案例開發(fā)完成后,直接發(fā)給接口對(duì)應(yīng)的開發(fā),安排在開發(fā)本地環(huán)境執(zhí)行,一旦開發(fā)確認(rèn)完成接口開發(fā),就開始執(zhí)行接口測(cè)試案例,基本上可以實(shí)時(shí)拿到測(cè)試結(jié)果,方便開發(fā)快速做出判斷。(開發(fā)本地運(yùn)行的方式就是打開JMeter工具,導(dǎo)入JMX文件,開始執(zhí)行可。)
回歸測(cè)試:
開發(fā)本地測(cè)試通過(guò)后,或整個(gè)需求手工測(cè)試通過(guò)后,把自動(dòng)化的接口測(cè)試案例做分類整理,挑選出需要納入到回歸測(cè)試中的案例,在持續(xù)集成環(huán)境重新準(zhǔn)備測(cè)試數(shù)據(jù),并把案例納入到持續(xù)集成的job中來(lái),這些用于回歸的接口測(cè)試案例需要配置到持續(xù)集成平臺(tái)自動(dòng)運(yùn)行。
接口測(cè)試工具介紹
這里呢 就是簡(jiǎn)單給你個(gè)列表,后續(xù)呢我會(huì)寫jmeter 和 postman 的使用方法。
接口測(cè)試用例
基本信息(簡(jiǎn)要)
列名 描述
接口名稱 這個(gè)接口的名稱
狀態(tài) 這個(gè)接口的狀態(tài),已完成、未完成
接口路徑 接口訪問(wèn)的網(wǎng)址
請(qǐng)求參數(shù)
Headers:
??請(qǐng)求頭需要攜帶的值
Body:
??請(qǐng)求體的參數(shù),這個(gè)是接口的關(guān)鍵之一
??傳遞哪些參數(shù),什么數(shù)據(jù)類型,一般只有 number 和 string 類型。
返回?cái)?shù)據(jù)
??這里聲明了這個(gè)接口調(diào)用成功返回什么結(jié)果,失敗返回什么結(jié)果。
設(shè)計(jì)用例
接口測(cè)試報(bào)告
另外寫一篇:https://blog.csdn.net/weixin_43664254/article/details/89951142