【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?探索無界,BUG無限
?
一、修改系統(tǒng)時間
當(dāng)功能模塊中存在倒計時、計時器、時間,與時間有關(guān)系時,嘗試修改系統(tǒng)時間,測試系統(tǒng)時間是否參與計算,修改系統(tǒng)時間是否會影響到倒計時、計時、時間等與時間有關(guān)系的模塊
例:1小時后秒殺商品,修改系統(tǒng)時間到1小時后,測試是否可以下單
?
二、斷網(wǎng)、斷網(wǎng)重連、服務(wù)器斷開
1、斷網(wǎng),操作功能流程,是否報錯、閃退、卡死、異常顯示問題
2、斷網(wǎng)重連,app內(nèi),測試功能是否可正常使
3、斷網(wǎng),進(jìn)入app,重連網(wǎng),測試部分接口是否未重新調(diào)用,導(dǎo)致功能數(shù)據(jù)缺失
4、服務(wù)器斷開功能使用檢測
?
三、弱網(wǎng)
模擬網(wǎng)絡(luò)弱網(wǎng)場景(4g網(wǎng)絡(luò)、地鐵、機(jī)場、地下室、室外等)
弱網(wǎng)狀態(tài),重復(fù)提交操作,會導(dǎo)致接口調(diào)用錯亂、業(yè)務(wù)重復(fù)調(diào)用、業(yè)務(wù)出錯等BUG
弱網(wǎng)狀態(tài),測試響應(yīng)超時導(dǎo)致的接口報錯等
弱網(wǎng)狀態(tài),測試延遲導(dǎo)致的頁面交互錯亂等
弱網(wǎng)狀態(tài),測試接口超時,導(dǎo)致的前后端異常問題(狀態(tài)變更錯誤、數(shù)據(jù)加減錯誤)
1、弱網(wǎng)下客戶端要傳參數(shù)給服務(wù)器。
例如:請求參數(shù)是index = 0 ,拿到服務(wù)器響應(yīng),我們就index++。 若服務(wù)器500,我們下次請求,必須還
是index = 0,所以我們要做 --index,用減去1返回值發(fā)請求。如果不幸寫成index--,很不幸,bug就來了,
因為此時index = 1。
2、網(wǎng)絡(luò)異常,測試客戶端重試策略,只有在弱網(wǎng)下才能看到效果。
例如:客戶端經(jīng)常做一種處理,請求對象發(fā)送返回失敗,客戶端會重試,請求必須是異步進(jìn)行的,此時可
能會出現(xiàn)重試失敗,仍然一直在發(fā)請求,重試策略有問題,如果是服務(wù)器爆了,你一直重試發(fā)請求,app
絕對被爆…………
3、開源網(wǎng)絡(luò)框架,也許經(jīng)不住弱網(wǎng)
例如:現(xiàn)在Android的http開源框架天多了,公司多數(shù)都會用這些二次封裝的框架,類似于okHttp、volley,
用的比較多一些,免不得在弱網(wǎng)環(huán)境下,拋異常。就因為請求是在工作線程進(jìn)行的,所以……,并發(fā)不是所
有人都能玩的轉(zhuǎn)的,很容易出現(xiàn)bug。
4、弱網(wǎng)環(huán)境下,網(wǎng)絡(luò)連接失敗,拋異常
例如:弱網(wǎng)遲遲沒有返回響應(yīng),此時網(wǎng)絡(luò)連接拋異常,可能會沒處理,響應(yīng)實(shí)例對象沒有拿到,是個null,
又沒處理,又要拋異?!?br /> 5、弱網(wǎng)環(huán)境下,ui可能出現(xiàn)問題
例如:網(wǎng)絡(luò)請求還在異步進(jìn)行中,一般UI我們都會有進(jìn)度條告知用戶,沒有拿到響應(yīng)后,我們要更新ui,提
示用戶網(wǎng)絡(luò)連接失敗等等文案,此時可能會出現(xiàn)問題,View沒有同步成功,或者忘記gone掉進(jìn)度條……
6、網(wǎng)絡(luò)請求失敗策略之用戶主動再次發(fā)出請求
例如:弱網(wǎng)下,請求失敗(拋出異常),提示用戶重試再次發(fā)出請求,用戶點(diǎn)擊重試再次發(fā)出請求,此時
處理可能會出現(xiàn)問題
?
四、推送
1、已登錄賬號,刪除app重裝,進(jìn)入登錄頁面,register_id未清空會收到推送
2、已登錄賬號,登錄信息失效,踢出到登錄頁面,register_id未清空,會收到推送
3、已登錄賬號,賬號再其它地方登錄,踢出到登錄頁面,register_id未清空,會受到推送
?
五、修改請求參數(shù)、修改響應(yīng)內(nèi)容
1、用戶購買會員的金額可以通過修改請求里的金額,進(jìn)行購買---原因:后端的代碼沒有將拿到的用戶的金額和實(shí)際的金額進(jìn)行對比,再去發(fā)出下一步的支付流程。
余額1元,購買2元商品,修改請求金額為2元,測試是否可購買成功
余額1元,購買2元商品,修改請求金額為0.1元,測試是否可購買成功
2、實(shí)名認(rèn)證請求:https://m.kaola.com/member/activity/valid/nameAuth.html,只需將請求里Response里code修改為:unknown200,以及將success的值修改為true,然后將這個請求發(fā)出去之后,我們的刷子用戶就可以成功繞過這個圍墻了,去購買參加我們試用會員了,從而可以享受我們的7天會員96折價格
?
六、并發(fā)
1、余額1元,并發(fā)提現(xiàn)1元100次,測試成功提現(xiàn)多次
2、創(chuàng)建訂單A,對訂單A進(jìn)行并發(fā)100次付款,測試付款成功多次
3、抽獎系統(tǒng),每人可抽一次,并發(fā)抽取100次,測試可抽取多次
4、1個紅包、2個紅包時,同用戶并發(fā)提現(xiàn)100次,不同用戶并發(fā)提現(xiàn)100次
?
七、越權(quán)
1、登錄權(quán)限越權(quán)
token失效、賬號被踢出,使用創(chuàng)建訂單、充值、付款功能,對token檢驗進(jìn)行測試
2、業(yè)務(wù)邏輯越權(quán)
? <1>業(yè)務(wù)狀態(tài)越權(quán)
?新建的訂單、已付款的訂單、已發(fā)貨的訂單、已收貨的訂單、已完成的訂單、已評價的訂單,進(jìn)行付款操作測試
? <2>業(yè)務(wù)終結(jié)越權(quán)
已實(shí)名認(rèn)證成功,再次實(shí)名認(rèn)證、再次實(shí)名認(rèn)證其它身份證
? <3>業(yè)務(wù)上下層越權(quán)
?已實(shí)名認(rèn)證,進(jìn)入提現(xiàn)業(yè)務(wù),庫里改狀態(tài)為未未實(shí)名認(rèn)證,提現(xiàn)檢測
?<4>業(yè)務(wù)資源占用越權(quán)
A身份證被A用戶占用,B用戶綁A身份證檢測
3、垂直越權(quán)未授權(quán)功能
主管有修改權(quán)限,客服有查看權(quán)限,主管賬號更換為客服賬號,進(jìn)行修改操作測試
4、水平越權(quán)其它用戶、團(tuán)隊資源
通過修改URL鏈接上的參數(shù)來進(jìn)行一些非對應(yīng)賬號信息的查看和操作。
例1:修改URL上的訂單號為別人的,查看、修改、刪除、評價、操作別人的訂單進(jìn)行測試
例2:修改URL上的訂單參數(shù)為不存在的,查看、修改、刪除、評價、操作別人的訂單進(jìn)行測試
例3:主管有修改權(quán)限,A團(tuán)隊主管修改B團(tuán)隊成員信息
5、非歸屬關(guān)系越權(quán)
例:轉(zhuǎn)移會員給已鎖定的BD,轉(zhuǎn)移成功,應(yīng)不可轉(zhuǎn)移
?
八、重復(fù)提交
重復(fù)提交業(yè)務(wù)會處理多次,業(yè)務(wù)邏輯會錯亂
例1:新建訂單、每次簽到、領(lǐng)取獎勵,重復(fù)提交多次,導(dǎo)致業(yè)務(wù)創(chuàng)建多次檢測
例2:實(shí)名認(rèn)證成功,業(yè)務(wù)結(jié)束,再次實(shí)名認(rèn)證,業(yè)務(wù)處理檢測
?
九、假設(shè)法
1、假設(shè)列表字段為0、空、null值、超長、超大,測試異常、報錯、溢出問題
2、假設(shè)因為BUG導(dǎo)致綁定了別人的卡,提現(xiàn)測試
3、假設(shè)列表數(shù)據(jù)10w條,大量數(shù)據(jù)測試
4、假設(shè)接口返回跳轉(zhuǎn)鏈接字段空,點(diǎn)擊跳轉(zhuǎn),APP閃退,需異常處理
接口應(yīng)該返回:
{"code":0,"msg":"成功","data":{"status":true,"url":"http:\/\/activity-h5.st1.test.lanxinka.com\/interview-report?target=watch_c&id=JyNHWjwVbm"}}
但是返回:{"code":0,"msg":"成功","data":{"status":true,"url":""}}
5、假設(shè)頁面1接口還未返回數(shù)據(jù)時,進(jìn)入頁面2,頁面2需用到接口字段,會報錯
例:頁面1是商品列表,點(diǎn)商品進(jìn)入商品詳情頁面,進(jìn)入商品傷情頁面需傳商品id
解決:頁面1還未加載完成時,無法拿到商品id,前端判斷,無法進(jìn)入商品詳情
6、假設(shè)頁面接口字段還未返回時,觸發(fā)頁面功能,導(dǎo)致出錯
例:接口返回手機(jī)號字段,顯示到頁面上,點(diǎn)撥打電話,可撥打電話
解決:前端還未拿到手機(jī)號字段時,不顯示撥打電話按鈕或點(diǎn)撥打電話,彈出提示
?
十、內(nèi)存溢出、內(nèi)存泄露
1、內(nèi)存泄露,長時間操作功能或模塊,感覺越來越卡、越來越慢,測試內(nèi)存泄露問題
2、內(nèi)存溢出,長時間操作功能或模塊,感覺越來越卡、越來越慢,直至報錯、閃退等問題,測試內(nèi)存溢出問題
3、操作功能,觀察內(nèi)存使用情況,測試后端代碼是否存在內(nèi)存泄露問題
?
十一、超時、失敗、接口異常報錯
超時
1、接口響應(yīng)超時,測試超時后的處理
因網(wǎng)絡(luò)慢、服務(wù)器壓力大、數(shù)據(jù)量大,導(dǎo)致處理時間過長超時,調(diào)用支付中心,業(yè)務(wù)方失敗,支付中心處理成功,錢已發(fā)出去
例1:發(fā)傭金2000條,點(diǎn)審核通過,處理結(jié)果為發(fā)送失敗(應(yīng)該是超時了),但支付中心處理成功,實(shí)際金額已發(fā)到用戶賬戶
2、前端請求超時,測試超時后的處理
3、第三方系統(tǒng)維護(hù)中,測試維護(hù)中處理
4、服務(wù)器斷開,測試功能使用的異常處理
失敗
1、失敗結(jié)果處理
充值失敗,沖入和沖出賬戶回退檢測
接口異常報錯
1、接口報錯500,前端處理檢測
2、接口返回格式錯誤,前端處理檢測
3、接口未獲取到數(shù)據(jù),前端處理檢測
?
十二、SQL、代碼注入
1、表單類注入
登錄時SQL是這樣: select * from user where username='chengzi'? and password=md5('123456');
我們現(xiàn)在需要構(gòu)建一個比如:在用戶名輸入框中輸入: ’ or 1=1#,密碼隨便輸入,這時候的合成后的SQL查詢語句為:
select * from user where username='' or 1=1 #'? and password=md5('123456');
等價于
select * from user where username='' or 1=1;
就可以登錄成功了
2、url傳參注入
首先應(yīng)測試是否存在注入漏洞,簡單的:’ 或 and 1=1 and 1=2之類的SQL語句。
如果沒有檢測,直接運(yùn)行SQL語句,說明有機(jī)會注入。
舉例:
從參數(shù)注入,簡單的測試方法是:
① http://www.xxx.com/index.php?id=2
② http://www.xxx.com/index.php?id=2' and 1=1
③ http://www.xxx.com/index.php?id=2' and 1=2
可以注入的表現(xiàn):
① 正常顯示(這是必然的,不然程序就有錯)
② 正常顯示,內(nèi)容基本與①相同
③ 提示BOF或EOF(程序沒做任何判斷時)、或提示找不到記錄(判斷了rs.eof時)、或顯示內(nèi)容為空(程序加了on error resume next)說明未進(jìn)行特殊字符過濾處理,存在SQL注入漏洞
3、代碼注入
提交死循環(huán)代碼,測試是否進(jìn)行過濾處理
<script>
?for(i=0;i<1;i--)
?{
?alert("msg")
?}
?</script>
?
十三、安全測試—短信轟炸
危害:
1、批量給用戶發(fā)100w條短信,造成用戶騷擾和公司短信費(fèi)用損失
2、批量給非正常手機(jī)號碼發(fā)短信
語預(yù)防方案:
1、對手機(jī)號做驗證,正確的手機(jī)號才可發(fā)短信成功
2、同一個手機(jī)號不能連續(xù)獲取短信驗證碼,如設(shè)置1分鐘僅允許使用1次
3、同一手機(jī)號,一天設(shè)置最大發(fā)送驗證碼次數(shù),如同一手機(jī)號一天最多發(fā)十條
4、設(shè)置每日總成功短信上限
5、當(dāng)同一個手機(jī)號碼或者ip重復(fù)連續(xù)不斷發(fā)起請求時,將手機(jī)號碼或者ip拉黑處理
?
十四、多觸點(diǎn)控
1、測試頁面交互錯亂問題
?
十五、接口status字段
1、接口各種status,功能頁面顯示檢測
2、接口各種status,操作功能提示信息檢測
?
十六、數(shù)據(jù)初始化修復(fù)
1、因表結(jié)構(gòu)發(fā)生變化原因,老數(shù)據(jù)需做初始化修復(fù)
2、因表版本功能變更原因,老數(shù)據(jù)需做初始化修復(fù)
3、因操作失誤原因,老數(shù)據(jù)需做初始化修復(fù)
4、因BUG原因,老數(shù)據(jù)需做初始化修復(fù)
?
十七、接口字段(一般不能刪減)或字段值,修改、刪減
1、新版本原字段檢測
2、新版本原字段值檢測
?
十八、未來狀態(tài)/不存在的關(guān)聯(lián)傳參
1、如果status有1:招聘 ?2:非招聘?
考慮0和3測試,程序如何處理的?是否會=<1統(tǒng)一處理成招聘,>=2統(tǒng)一處理成非招聘,如果這樣處理了,下個版本如果加了status 3:急招,新版本后端先上線,app審核階段,0會顯示招聘,3會顯示非招聘,這樣是錯誤的,所以當(dāng)時就應(yīng)該非1和2,統(tǒng)一處理為不存在的狀態(tài)
2、支付不存在的訂單號檢測
?
十九、優(yōu)選資源少校驗
因為優(yōu)先校驗資源少的,校驗不通過,避免校驗資源大的,造成服務(wù)器資源浪費(fèi)消耗
例如:手機(jī)號和驗證碼登錄,優(yōu)先校驗驗證碼是否正確,再校驗用戶登錄信息是否正確,如果驗證碼不正確,避免用戶信息查詢校驗
?
二十、外部事件
斷網(wǎng)、斷網(wǎng)重連、關(guān)閉定位權(quán)限、關(guān)閉通知、關(guān)閉相機(jī)相冊權(quán)限、關(guān)閉電話權(quán)限
電話、短信、視頻、重啟手機(jī)
安卓(返回鍵、清緩存、清數(shù)據(jù)、轉(zhuǎn)移應(yīng)用)
IOS(鎖屏、HOME)
?
持續(xù)更新——————————————————————————————
總結(jié)
以上是生活随笔為你收集整理的【探索测试篇】探索无界,BUG无限,让程序猿头疼的测试技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【视频】视频基本参数介绍
- 下一篇: jmeter模拟压测真实复杂用户场景,阶