1捐迫、HTTP與HTTPS區(qū)別
http是超文本傳輸協(xié)議,明文 傳輸籽腕;https是http+ssl構(gòu)建的加密傳輸協(xié)議嗡呼;http默認(rèn)80端口,https默認(rèn)443端口
2皇耗、常見(jiàn)的Post提交數(shù)據(jù)的方式有哪些南窗?
主要有四種方式:四種方式取決于Content-Type請(qǐng)求頭:
Content-Type:application/x-www-form-urlencoded 特點(diǎn):數(shù)據(jù)報(bào)文是鍵值對(duì),相當(dāng)于通過(guò)表單方式去提交數(shù)據(jù),數(shù)據(jù)的格式:a=1&b=2&c=3
Content-Type:multipart/form-data 特點(diǎn):報(bào)文包含文件上傳
Content-Type:application/json(text/plain, text/xml...) 特點(diǎn):報(bào)文都是字符串類(lèi)型
Content-Type:binary 特點(diǎn):報(bào)文類(lèi)型是以二進(jìn)制的方式上傳文件
3万伤、常見(jiàn)請(qǐng)求頭以及它們的作用窒悔?
Accept:客戶端接收的數(shù)據(jù)格式
X-Requested-With:異步請(qǐng)求, ajax異步請(qǐng)求敌买,無(wú)刷新
User-Agent:發(fā)送請(qǐng)求的客戶端的類(lèi)型
Content-Type:請(qǐng)求的內(nèi)容的報(bào)文格式
Cookie:Cookie信息
4简珠、get和post的區(qū)別?
get和post都可以向服務(wù)器提交數(shù)據(jù)虹钮,且都會(huì)從服務(wù)器獲取數(shù)據(jù)
區(qū)別:
(1)傳遞參數(shù)的方式不同:get通過(guò)地址欄傳參聋庵,post通過(guò)表單報(bào)文傳參。post比get安全
(2)傳參的長(zhǎng)度不同:get的參數(shù)有長(zhǎng)度限制芙粱,Post沒(méi)有
(3)一般情況下祭玉,get是獲取數(shù)據(jù),比如查詢(xún)春畔;post是提交數(shù)據(jù)攘宙,比如增、刪拐迁、改
(4)get只發(fā)送一個(gè)tcp數(shù)據(jù)報(bào)文(包含請(qǐng)求頭和data)蹭劈,post發(fā)送兩個(gè)報(bào)文(a.請(qǐng)求頭,返回100 b.data线召,返回200)
5铺韧、你們公司是如何做接口測(cè)試的?(包括接口測(cè)試流程缓淹、方案以及用例設(shè)計(jì))
(1)獲取接口文檔哈打,熟悉單接口以及鏈路接口(接口業(yè)務(wù)流程)的業(yè)務(wù),包括接口地址讯壶、鑒權(quán)方式料仗、入?yún)ⅰ⒊鰠⒎谩㈠e(cuò)誤碼等立轧;
(2)編寫(xiě)接口測(cè)試用例并評(píng)審
正例(1-2個(gè)):?jiǎn)谓涌诜祷爻晒?chǎng)景;鏈路接口邏輯實(shí)現(xiàn)(功能業(yè)務(wù)流程)
反例:
鑒權(quán)異常:空躏吊,錯(cuò)誤氛改,過(guò)期...
參數(shù)異常:空,類(lèi)型異常比伏,長(zhǎng)度異常...
錯(cuò)誤碼異常:
其他異常:接口黑名單胜卤,接口調(diào)用次數(shù)限制,分頁(yè)(少于0赁项,0葛躏,中間頁(yè)澈段,最大頁(yè),超過(guò)最大嶚等)
(3)使用接口測(cè)試工具或代碼的方式執(zhí)行接口測(cè)試
重要考慮以下情況:
接口關(guān)聯(lián)舰攒,接口參數(shù)加密均蜜,是否動(dòng)態(tài)參數(shù),接口參數(shù)是否簽名芒率,是否需要帶請(qǐng)求頭
(4)實(shí)現(xiàn)持續(xù)集成并輸出接口測(cè)試報(bào)告囤耳,有bug提bug
6、沒(méi)有接口文檔偶芍,如何做接口測(cè)試充择?
方式一:通過(guò)Fiddler、Charles抓包工具抓取接口數(shù)據(jù)后整理成接口文檔匪蟀,如果有不清楚的字段椎麦,再找開(kāi)發(fā)驗(yàn)證,然后再進(jìn)行接口測(cè)試
方式二:通過(guò)JMeter的代理錄制功能材彪,把接口請(qǐng)求錄制下來(lái)形成接口文檔观挎,然后再逐一進(jìn)行接口測(cè)試
7、Cookie段化、Session嘁捷、token有什么相同點(diǎn)和不同點(diǎn)
相同點(diǎn):都是用于鑒權(quán)并且都是服務(wù)器生成的
不同點(diǎn):
cookie保存在客戶端的瀏覽器上,是不安全的显熏,可以去分析存放在本地的cookie進(jìn)行cookie欺騙
session保存在服務(wù)器的內(nèi)存雄嚣,默認(rèn)保存30分鐘,比cookie安全喘蟆;缺點(diǎn)是當(dāng)?shù)卿浀挠脩粼蕉嗷荷秸加梅?wù)器資源。session一般會(huì)生成一個(gè)sessionid(名稱(chēng)自定義)蕴轨,sessionid可以通過(guò)cookie傳輸港谊;
token通常存儲(chǔ)在服務(wù)器的數(shù)據(jù)庫(kù)中,通過(guò)一個(gè)接口或通過(guò)登錄獲取橙弱,后續(xù)所有接口都必須傳token才能請(qǐng)求成功歧寺。token也可以通過(guò)cookie傳輸
8、接口測(cè)試中膘螟,依賴(lài)登錄狀態(tài)的接口如何測(cè)試成福?
依賴(lài)登錄的接口本質(zhì)上是每次發(fā)送請(qǐng)求的時(shí)候需求帶上cookie和session才能發(fā)送成功碾局。在請(qǐng)求時(shí)需要添加cookie和sessionid荆残。如果是用Postman測(cè)試,Postman會(huì)自動(dòng)去管理净当;如果是通過(guò)JMeter内斯,需要增加Cookie管理器組件蕴潦。如果通過(guò)代碼來(lái)實(shí)現(xiàn)接口測(cè)試,需要生成session對(duì)象俘闯,然后通過(guò)session對(duì)象來(lái)發(fā)送請(qǐng)求潭苞。
9、接口請(qǐng)求常見(jiàn)返回狀態(tài)碼
1XX 信息提示
2XX 成功
3XX 重定向(發(fā)送一個(gè)請(qǐng)求時(shí)真朗,這個(gè)請(qǐng)求多次請(qǐng)求了服務(wù)器的多個(gè)資源)
4XX 客戶端錯(cuò)
5XX 服務(wù)器錯(cuò)誤
10此疹、平常做接口測(cè)試的過(guò)程中發(fā)現(xiàn)過(guò)哪些bug?
常規(guī)bug:接口沒(méi)實(shí)現(xiàn)遮婶,沒(méi)有按接口文檔返回結(jié)果蝗碎,輸入異常值(空值、特殊字符旗扑、類(lèi)型異常等)蹦骑,接口報(bào)錯(cuò),沒(méi)有返回合理的錯(cuò)誤提示
如:購(gòu)買(mǎi)商品接口臀防,價(jià)格參數(shù)眠菇,測(cè)試時(shí)把價(jià)格改成-3,購(gòu)買(mǎi)成功袱衷;
如:修改商品信息接口捎废,接口文檔要求只有商家和超級(jí)管理員有權(quán)限修改,傳入普通用戶ID致燥,修改成功缕坎;
11、接口測(cè)試中怎么校驗(yàn)結(jié)果是否正確篡悟?
狀態(tài)碼校驗(yàn)谜叹,狀態(tài)碼200;
業(yè)務(wù)校驗(yàn):
(1)接口文檔中的錯(cuò)誤碼搬葬,一般為0
(2)當(dāng)響應(yīng)報(bào)文比較短荷腊,比較固定的情況下,校驗(yàn)完全一致
(3)當(dāng)響應(yīng)報(bào)文比較長(zhǎng)急凰,比較多的情況下女仰,校驗(yàn)包含最核心的業(yè)務(wù)信息
(4)當(dāng)響應(yīng)報(bào)文為非常復(fù)雜的多層級(jí)的XML或JSON格式,通過(guò)xpath抡锈,JSONpath疾忍,正則表達(dá)式的匹配方式獲取到最關(guān)鍵字的業(yè)務(wù)節(jié)點(diǎn),再校驗(yàn)
(5)查詢(xún)數(shù)據(jù)庫(kù)校驗(yàn)或者是通過(guò)其他接口校驗(yàn)
12床三、分析bug是前端問(wèn)題還是后端問(wèn)題一罩?
抓包,查看請(qǐng)求報(bào)文撇簿,如果請(qǐng)求報(bào)文對(duì)比接口文檔有問(wèn)題聂渊,就是前端問(wèn)題差购;
如果請(qǐng)求報(bào)文沒(méi)有問(wèn)題,那不看返回報(bào)文汉嗽,返回?cái)?shù)據(jù)不對(duì)欲逃,就是后端問(wèn)題。如果返回?cái)?shù)據(jù)正確饼暑,就是前端問(wèn)題稳析。
13、依賴(lài)于第三方數(shù)據(jù)的接口如何測(cè)試弓叛?
可以通過(guò)Postman搭建Mock服務(wù)迈着,但是有訪問(wèn)次數(shù)限制,一天只能訪問(wèn)1000次邪码。也可以通過(guò)java的Servlet或Python的Flask等技術(shù)來(lái)實(shí)現(xiàn)接口Mock服務(wù)
14裕菠、對(duì)于加密接口,簽名接口如何測(cè)試闭专?
加密接口:
常見(jiàn)加密方式:
對(duì)稱(chēng)式加密方式(私鑰加密):常用Base64奴潘,不常用DES、AES
非對(duì)稱(chēng)加密試(雙鑰加密):RSA
由一個(gè)秘鑰密碼生成公鑰和私鑰影钉,公鑰加密画髓,私鑰解密;私鑰加密平委,公鑰解密奈虾;
只加密不解密:MD5、SHA1廉赔、SHA3...
自定義加密規(guī)則肉微,混合加密;
了解加密(簽名)規(guī)則 之后蜡塌,在請(qǐng)求接口前對(duì)參數(shù)做對(duì)應(yīng)的加密(簽名)之后再發(fā)送請(qǐng)求碉纳。單一加密方式postman和JMeter有些是支持的,postman使用javascript腳本實(shí)現(xiàn)馏艾,JMeter使用beanshell中的Java代碼實(shí)現(xiàn)
JMeter
分模塊測(cè)試:測(cè)試片段
用戶自定義變量
多組數(shù)據(jù)測(cè)試:csv文件讀取數(shù)據(jù)+循環(huán)控制器
結(jié)果判定:
響應(yīng)斷言
JSON斷言(最常用)
接口依賴(lài)處理:
JSON提取器劳曹,將前一個(gè)接口數(shù)據(jù)作為變量
命令執(zhí)行,生成測(cè)試報(bào)告
jmeter -n -t [jmx fille] -l [results file] -e -o [Path to web report folder]
-n 不啟動(dòng)UI界面
-t 指定Jmx文件
-l 指定測(cè)試數(shù)據(jù)
-e -o 指定測(cè)試報(bào)告位置
JMeter怎么做接口測(cè)試琅摩,如何測(cè)試接口的關(guān)聯(lián)
流程:根據(jù)開(kāi)發(fā)提供的接口文檔來(lái)編寫(xiě)測(cè)試用例铁孵,根據(jù)用例使用jmeter來(lái)進(jìn)行測(cè)試,需要添加線程組房资、http請(qǐng)求蜕劝,在Http請(qǐng)求中設(shè)置好地址、參數(shù)以及要添加的請(qǐng)求頭信息志膀,之后添加查看結(jié)果樹(shù)查看響應(yīng)結(jié)果熙宇,對(duì)比預(yù)期結(jié)果是否一致鳖擒,同時(shí)檢查數(shù)據(jù)庫(kù)來(lái)檢測(cè)測(cè)試是否通過(guò)溉浙。
涉及到批量測(cè)試會(huì)csv配置元件來(lái)進(jìn)行批量測(cè)試
接口關(guān)聯(lián)使用Jmeter的后置處理器烫止,主要是json提取器、正則表達(dá)式提取器戳稽,比如token馆蠕,會(huì)把token賦值給一個(gè)變量,在下一個(gè)接口時(shí)調(diào)用這個(gè)變量就可以了
1惊奇、性能測(cè)試流程
(1)需求調(diào)研:做需求調(diào)研和分析互躬,產(chǎn)出性能測(cè)試需求表、性能測(cè)試計(jì)劃表
(2)測(cè)試準(zhǔn)備:構(gòu)建測(cè)試模型颂郎,設(shè)計(jì)測(cè)試方案吼渡,壓測(cè)環(huán)境、數(shù)據(jù)準(zhǔn)備乓序、腳本開(kāi)發(fā)寺酪,產(chǎn)出測(cè)試用例、測(cè)試方案
(3)測(cè)試執(zhí)行:記錄執(zhí)行過(guò)程和結(jié)果替劈,對(duì)結(jié)果做分析寄雀,產(chǎn)出性能測(cè)試日志
(4)測(cè)試報(bào)告:發(fā)現(xiàn)的性能瓶頸,性能測(cè)試結(jié)論(是否達(dá)標(biāo))
(5)測(cè)試總結(jié):總結(jié)和復(fù)盤(pán)
2陨献、性能測(cè)試一般關(guān)注哪些指標(biāo)
TPS:每秒事務(wù)數(shù)盒犹,越高性能越好
平均響應(yīng)時(shí)間:響應(yīng)時(shí)間越短性能越好
并發(fā)數(shù)
錯(cuò)誤率
3、服務(wù)器監(jiān)測(cè)看哪些指標(biāo)
CPU使用率:最關(guān)鍵的指標(biāo)眨业,一般不超過(guò)80%的閾值急膀,超過(guò)80%認(rèn)為cpu快到瓶頸
內(nèi)存使用率:內(nèi)存不夠會(huì)導(dǎo)致程序崩潰、死機(jī)等現(xiàn)象龄捡,一般不超過(guò)80%
網(wǎng)絡(luò)脖阵,上行流量與下行流量,通過(guò)監(jiān)控服務(wù)器網(wǎng)上行下行流量有沒(méi)有達(dá)到上限墅茉。
磁盤(pán):包括磁盤(pán)的讀與寫(xiě)命黔。重要指標(biāo)為磁盤(pán)繁忙度,超過(guò)90%代表磁盤(pán)快不行了
4就斤、JMeter如何找出接口最大并發(fā)數(shù)
設(shè)計(jì)階梯場(chǎng)景悍募,使用JMeter中的階梯線程組,每隔一段時(shí)間增加固定量的并發(fā)用戶數(shù)洋机,然后通過(guò)監(jiān)聽(tīng)器或者監(jiān)控平臺(tái)查看運(yùn)行結(jié)果坠宴,并分析結(jié)果判斷是否達(dá)到性能瓶頸,從而斷定是否達(dá)到了最大并發(fā)用戶數(shù)的區(qū)間绷旗,然后再取這個(gè)區(qū)間來(lái)縮小固定步長(zhǎng)喜鼓,從而獲得最大并發(fā)用戶數(shù)
5副砍、內(nèi)存溢出與內(nèi)存泄露
內(nèi)存溢出就是所運(yùn)行的軟件所占用的內(nèi)存遠(yuǎn)遠(yuǎn)超出了主機(jī)內(nèi)安裝的內(nèi)存所承受的大小
內(nèi)存泄露指程序在申請(qǐng)內(nèi)存之后無(wú)法釋放。如果一直內(nèi)泄露就會(huì)造成內(nèi)存溢出
單獨(dú)負(fù)責(zé)項(xiàng)目需要注意哪些事項(xiàng)
(1)評(píng)估項(xiàng)目的測(cè)試范圍和測(cè)試周期
(2)做好測(cè)試策略和計(jì)劃安排庄岖,盡量保證每個(gè)環(huán)節(jié)按時(shí)完成
(3)如果自己解決不了的問(wèn)題豁翎,要及時(shí)向外拋出,暴露風(fēng)險(xiǎn)隅忿,尋求幫助
(4)盡量采用一些技術(shù)手段心剥,提升測(cè)試效率
(5)對(duì)用例設(shè)置好優(yōu)先級(jí),按優(yōu)先級(jí)執(zhí)行
(6)及時(shí)對(duì)bug進(jìn)行跟蹤背桐,推動(dòng)開(kāi)發(fā)及時(shí)修復(fù)bug
(7)把控好上線標(biāo)準(zhǔn)优烧,測(cè)試報(bào)告中標(biāo)明上線風(fēng)險(xiǎn)