現(xiàn)在有不少測(cè)試朋友做的項(xiàng)目中,可能也會(huì)涉及到支付相關(guān)的功能抗蠢。比如:做商城的举哟,做游戲的以及其他在線交易的網(wǎng)站、APP等迅矛。如果支付出了問題妨猩,或者用戶拿少的錢通過篡改請(qǐng)求數(shù)據(jù)購(gòu)買大金額的商品,如果是實(shí)物的話秽褒,發(fā)貨前還有可能被發(fā)現(xiàn)壶硅。如果是虛擬商品話費(fèi)、游戲幣等就有可能造成損失销斟。
所以庐椒,不管是實(shí)物也好,虛擬商品也好蚂踊,涉及到支付功能時(shí)约谈,大家在測(cè)試的過程中一定要重視,否則犁钟,會(huì)造成很大損失棱诱。之前可能大家也都看到過或者聽過一個(gè)bug損失4.6億美金的慘痛教訓(xùn)或者身邊也有發(fā)生過其他因?yàn)橹Ц豆δ艿腷ug導(dǎo)致直接損失的案例。
給大家舉個(gè)真實(shí)的案例:比如使用支付寶購(gòu)買虛擬商品涝动,往支付寶跳轉(zhuǎn)時(shí)迈勋,篡改了小的金額,結(jié)果購(gòu)買虛擬商品成功了醋粟。(原本10元的商品靡菇,0.01元就搞定了)。多么可怕的一個(gè)bug啊昔穴,當(dāng)然這個(gè)問題可能對(duì)于一個(gè)做過支付有過經(jīng)驗(yàn)的測(cè)試朋友來說镰官,可能會(huì)想:哎呀,這個(gè)問題都發(fā)現(xiàn)不了吗货,還做什么測(cè)試泳唠?是的,問題是很簡(jiǎn)單宙搬,對(duì)于一個(gè)剛?cè)肼殘?chǎng)的測(cè)試朋友或者沒有支付相關(guān)經(jīng)驗(yàn)的測(cè)試朋友來說笨腥,很有可能會(huì)忽略拓哺。
那么,問題來了脖母,對(duì)于支付模塊的相關(guān)測(cè)試士鸥,我們應(yīng)該如何進(jìn)行呢?比如谆级,針對(duì)游戲來說烤礁,使用第三方支付往游戲充值游戲幣功能,看起來是不是很簡(jiǎn)單肥照,大家主要思考下以下內(nèi)容:
1脚仔、支付都是與第三方支付(支付寶、微信舆绎、財(cái)付通鲤脏、QQ錢包、短信支付等)進(jìn)行對(duì)接吕朵,那么猎醇,是否了解了第三方接口有哪些?是否都能清楚我們的產(chǎn)品與第三方是如何交互的努溃?是否能畫出流程圖硫嘶?
2、異常場(chǎng)景有哪些茅坛?
3音半、有哪些風(fēng)險(xiǎn),如何規(guī)避贡蓖?
第三方支付的流程曹鸠,與商戶的對(duì)接方式基本相似,大同小異斥铺。(題外推薦:如下流程圖使用的chrome插件:Gliffy彻桃,個(gè)人感覺比較好用。)
支付流程:
退款流程:
查詢流程:
先看下流程圖晾蜘,是否對(duì)流程圖有些了解邻眷,不僅僅是做支付功能相關(guān)測(cè)試才去搞清楚其中的流程,做其他的測(cè)試一樣也要搞清楚流程剔交,只有搞清楚流程肆饶,才能更好的評(píng)估其中的風(fēng)險(xiǎn),才能有利于測(cè)試用例的設(shè)計(jì)岖常。當(dāng)然流程圖中只是提到了商戶與第三方是如何交互的驯镊,同樣商戶內(nèi)部處理的流程也要有所了解及數(shù)據(jù)怎么存儲(chǔ)的,涉及到哪些DB也要清楚。
流程清楚之后板惑,我們?cè)賮砜纯雌渲袝?huì)涉及到哪些接口橄镜?這個(gè)支付流程圖里面就涉及到了第三方支付接口:
· 下單接口:商戶提交下單請(qǐng)求到第三方支付接口,第三方支付收單成功后返回下單成功結(jié)果給到商戶系統(tǒng)冯乘。(下單接口的最終處理結(jié)果分為下單成功和下單失敗洽胶,若未收到明確結(jié)果可調(diào)用單筆訂單查詢接口查詢結(jié)果。)
·?支付接口:調(diào)用該接口時(shí)指定支付參數(shù)裆馒,完成買家賬戶向商戶賬戶的支付姊氓,采用頁(yè)面跳轉(zhuǎn)交互模式和后臺(tái)通知交互模式。(結(jié)果分為兩路返回:一路為前臺(tái)在return_url頁(yè)面跳轉(zhuǎn)顯示支付結(jié)果领追;一路為后臺(tái)在notify_url收到支付結(jié)果通知后進(jìn)行響應(yīng)他膳。)
·?退款接口:調(diào)用第三方支付的支付請(qǐng)求接口返回付款成功后响逢,在需要做退款處理時(shí)調(diào)用退款請(qǐng)求接口發(fā)起退款處理绒窑。(退款接口的最終處理結(jié)果分為退款成功和退款失敗,若未收到明確結(jié)果可調(diào)用退款查詢接口查詢結(jié)果舔亭。)
·?單筆訂單查詢接口:根據(jù)訂單號(hào)查詢單筆訂單信息和狀態(tài)些膨。
·?退款訂單查詢接口:調(diào)用第三方支付的退款接口返回后,在需要查詢退款請(qǐng)求狀態(tài)可調(diào)用退款訂單查詢接口查詢退款訂單的狀態(tài)和訂單信息钦铺。
那么針對(duì)第三方的接口订雾,我們大致也有所了解了,接下來針對(duì)測(cè)試過程中涉及到主要的測(cè)試點(diǎn)整理如下:
測(cè)試過程中需要注意的主要測(cè)試點(diǎn)及異常場(chǎng)景:
·?首先要保證接口都能正常調(diào)用矛洞;
·?生成一筆訂單洼哎,支付完成后,同步或異步重復(fù)回調(diào)沼本,只有一次有效噩峦;
·?生成一筆訂單,復(fù)制訂單號(hào)和金額抽兆,再次生成一筆訂單识补,用fiddler設(shè)置斷點(diǎn),用第一筆已完成的訂單號(hào)和訂單金額去替換現(xiàn)有的訂單號(hào)和金額辫红,無(wú)法完成支付凭涂;
·?生成一筆訂單,跳轉(zhuǎn)到第三方時(shí)修改金額贴妻,無(wú)法到賬切油,或者如果是游戲充值游戲幣的話,到賬為篡改后的金額對(duì)應(yīng)的游戲幣名惩;
·?異步通知屏蔽澎胡,同步有效,進(jìn)行支付,同步能夠正常到賬滤馍;
·?同步設(shè)置無(wú)效岛琼,異步有效,進(jìn)行支付巢株,異步能夠正常到賬槐瑞;
·?同步異步都設(shè)置無(wú)效,在第三方支付完成后阁苞,在重發(fā)機(jī)制時(shí)間范圍內(nèi)困檩,設(shè)置異步有效,到下次通知時(shí)間點(diǎn)時(shí)那槽,能夠正常通知到賬(補(bǔ)單機(jī)制的驗(yàn)證悼沿,如果商戶收到第三方支付成功的通知后,要告知第三方支付收到了成功的通知骚灸,如果第三方支付收到商戶應(yīng)答不是ok或超時(shí)糟趾,第三方支付就會(huì)認(rèn)為通知失敗,會(huì)在規(guī)定的時(shí)間內(nèi)持續(xù)調(diào)用notify_url甚牲,一般有時(shí)間或次數(shù)的限制)义郑;
·?針對(duì)支付訂單在數(shù)據(jù)庫(kù)中存儲(chǔ)是否完整和正確進(jìn)行校驗(yàn)(比如:第三方訂單號(hào)--方便與第三方對(duì)賬和問題排查、訂單金額丈钙、訂單狀態(tài)等)非驮;
·?如果是用戶購(gòu)買實(shí)物商品,用戶發(fā)起退貨雏赦,要保證退貨流程正常劫笙,資金能正常返還,要考慮下并發(fā)情況的驗(yàn)證以確保安全性星岗;
·?如果是用戶購(gòu)買虛擬商品填大,比如話費(fèi)、油卡之類的商品伍茄,只有在發(fā)貨失敗的時(shí)候才能發(fā)起退貨栋盹,注意驗(yàn)證;
遇到過的坑:
·?用戶購(gòu)買100元游戲幣時(shí)敷矫,前往第三方支付跳轉(zhuǎn)進(jìn)行金額的篡改由100元改成0.01元例获,結(jié)果就拿了0.01元充值了100元的游戲幣。對(duì)訂單金額沒有做校驗(yàn)導(dǎo)致這樣的后果曹仗,損失比較大榨汤。大家在測(cè)試的過程中一定要注意對(duì)服務(wù)端進(jìn)行校驗(yàn),支付時(shí)數(shù)據(jù)的篡改一定要有校驗(yàn)怎茫。
·?當(dāng)同步收壕、異步通知都存在的情況的,異步通知(第三方支付成功后臺(tái)通知)虫埂,沒有到賬圃验,導(dǎo)致部分用戶充值不到賬,引起客訴斧散。當(dāng)同步摊聋、異步并存的時(shí)候,一定要分別對(duì)同步和異步進(jìn)行檢驗(yàn)箍镜,確保都能正常到賬悲立。
我們所做的絕大多少的互聯(lián)網(wǎng)產(chǎn)品都會(huì)涉及到第三方支付,所以支付功能必然是重要的,作為測(cè)試互聯(lián)網(wǎng)產(chǎn)品的一員原献,我們必須要做好支付的安全性埂淮。
那么倔撞,如何規(guī)避支付風(fēng)險(xiǎn)?
為了進(jìn)一步的加強(qiáng)支付功能的安全痪蝇,也可以適當(dāng)?shù)脑黾右恍┍O(jiān)控機(jī)制躏啰,比如:訂單與第三方訂單進(jìn)行對(duì)比,可以使用跑批完成毫捣,當(dāng)我們完成支付的訂單從數(shù)據(jù)庫(kù)中查出來與通過第三方訂單查詢接口查詢出來的同一個(gè)訂單金額有異常時(shí),進(jìn)行報(bào)警通知能夠及時(shí)發(fā)現(xiàn)處理饶辙,甚至當(dāng)有異常情況進(jìn)行創(chuàng)建訂單的終止畸悬,從而把損失降到最低珊佣。
原文:http://www.51testing.com/html/10/n-3716310.html