總復(fù)習(xí)筆記
面試題講解
項(xiàng)目準(zhǔn)備:測(cè)試計(jì)劃蛋哭、測(cè)試用例县习、缺陷報(bào)告、測(cè)試報(bào)告
書寫、審核A簡(jiǎn)歷
編寫躁愿、審核B簡(jiǎn)歷叛本,自我介紹等
模擬面試
復(fù)盤
冪等性:
冪等性:就是用戶對(duì)于同一操作發(fā)起的一次請(qǐng)求或者多次請(qǐng)求的結(jié)果是一致的,不會(huì)因?yàn)槎啻吸c(diǎn)擊而產(chǎn)生了副作用彤钟。舉個(gè)最簡(jiǎn)單的例子来候,那就是支付,用戶購(gòu)買商品后支付逸雹,支付扣款成功营搅,但是返回結(jié)果的時(shí)候網(wǎng)絡(luò)異常,此時(shí)錢已經(jīng)扣了梆砸,用戶再次點(diǎn)擊按鈕转质,此時(shí)會(huì)進(jìn)行第二次扣款,返回結(jié)果成功辫樱,用戶查詢余額發(fā)現(xiàn)多扣錢了,流水記錄也變成了兩條俊庇。在以前的單應(yīng)用系統(tǒng)中狮暑,我們只需要把數(shù)據(jù)操作放入事務(wù)中即可,發(fā)生錯(cuò)誤立即回滾辉饱,但是再響應(yīng)客戶端的時(shí)候也有可能出現(xiàn)網(wǎng)絡(luò)中斷或者異常等等搬男。
在增刪改查4個(gè)操作中,尤為注意就是增加或者修改彭沼,查詢對(duì)于結(jié)果是不會(huì)有改變的缔逛,刪除只會(huì)進(jìn)行一次,用戶多次點(diǎn)擊產(chǎn)生的結(jié)果一樣姓惑,修改在大多場(chǎng)景下結(jié)果一樣褐奴,增加在重復(fù)提交的場(chǎng)景下會(huì)出現(xiàn)。
那么如何設(shè)計(jì)接口才能做到冪等呢于毙?
方法一:?jiǎn)未沃Ц墩?qǐng)求敦冬,也就是直接支付了,不需要額外的數(shù)據(jù)庫(kù)操作了唯沮,這個(gè)時(shí)候發(fā)起異步請(qǐng)求創(chuàng)建一個(gè)唯一的ticketId脖旱,就是門票,這張門票只能使用一次就作廢介蛉,具體步驟如下:
1萌庆、異步請(qǐng)求獲取門票
2、調(diào)用支付币旧,傳入門票
3践险、根據(jù)門票ID查詢此次操作是否存在,如果存在則表示該操作已經(jīng)執(zhí)行過,直接返回結(jié)果捏境;如果不存在于游,支付扣款,保存結(jié)果
4垫言、返回結(jié)果到客戶端
如果步驟4通信失敗贰剥,用戶再次發(fā)起請(qǐng)求,那么最終結(jié)果還是一樣的.
方法二:分布式環(huán)境下各個(gè)服務(wù)相互調(diào)用
這邊就要舉例我們的系統(tǒng)了筷频,我們支付的時(shí)候先要扣款蚌成,然后更新訂單庇茫,這個(gè)地方就涉及到了訂單服務(wù)以及支付服務(wù)了蜓谋。用戶調(diào)用支付,扣款成功后养匈,更新對(duì)應(yīng)訂單狀態(tài)坯癣,然后再保存流水瓶盛。而在這個(gè)地方就沒必要使用門票ticketId了,因?yàn)闀?huì)比較閑的麻煩(支付狀態(tài):未支付示罗,已支付)
步驟:
1惩猫、查詢訂單支付狀態(tài)
2、如果已經(jīng)支付蚜点,直接返回結(jié)果
3轧房、如果未支付,則支付扣款并且保存流水
4绍绘、返回支付結(jié)果
如果步驟4通信失敗奶镶,用戶再次發(fā)起請(qǐng)求,那么最終結(jié)果還是一樣的
對(duì)于做過支付的朋友陪拘,冪等也可以稱之為沖正厂镇,保證客戶端與服務(wù)端的交易一致性,避免多次扣款左刽。
搶購(gòu)頁(yè)面測(cè)試
從功能測(cè)試進(jìn)階自動(dòng)化測(cè)試剪撬,熬夜7天整理出這一份超全學(xué)習(xí)指南:
如何提高腳本的穩(wěn)定性
python菜鳥教程
登錄測(cè)試用例
注冊(cè)測(cè)試用例
分布式壓測(cè)