這幾年的移動(dòng)端測(cè)試,不單純?cè)谧鲆苿?dòng)app的測(cè)試承耿,也導(dǎo)致了更多測(cè)試觀念比較籠統(tǒng)冠骄。對(duì)移動(dòng)端測(cè)試技術(shù)不夠?qū)>?/p>
真正開(kāi)始移動(dòng)端分層的想法也是在最近幾個(gè)月,因此本章只是留下最近一些所知所得加袋。用來(lái)以后回顧與擴(kuò)展使用凛辣。
分層的概念看了一些文章,大部分都是放在整體系統(tǒng)層面進(jìn)行分層锁荔。類似服務(wù)端-接口-客戶端之類的。然后再對(duì)后端做具體的分層蝙砌。但是到app這邊阳堕,就寫一個(gè)app。
以目前小組的水平對(duì)移動(dòng)端分層主要分為:
對(duì)接接口择克,既然服務(wù)端要做接口測(cè)試恬总,那我們的也要來(lái)個(gè)對(duì)接接口的測(cè)試吧,主要是驗(yàn)證接口使用的美不美麗肚邢,這個(gè)也后面細(xì)說(shuō)壹堰。
接著是UI功能測(cè)試拭卿,現(xiàn)在大多數(shù)同學(xué)都在這一層。雖然都說(shuō)小白沒(méi)有技術(shù)含量贱纠。但是還是有一點(diǎn)料的峻厚。
接著是組件測(cè)試,目前的app是由很多組件配置谆焊、拼接起來(lái)的惠桃。目前這個(gè)層面主要還是使用功能進(jìn)行覆蓋。這個(gè)部分主要講一些配置辖试、資源辜王、組件依賴的測(cè)試技巧。
然后是sdk測(cè)試罐孝,這個(gè)部分主要是我們組的測(cè)試開(kāi)發(fā)再做呐馆。主要說(shuō)明我們?nèi)绾螠y(cè)試底層提供給別人的sdk測(cè)試。我僅知一點(diǎn)皮毛莲兢。正在學(xué)習(xí)中就被項(xiàng)目變更掐斷了汹来。希望回來(lái)的時(shí)候還能跟上移動(dòng)互聯(lián)網(wǎng)的節(jié)奏。寫的時(shí)候估計(jì)要找外援怒见。
第三方依賴測(cè)試俗慈,這個(gè)其實(shí)現(xiàn)在基本沒(méi)做。是最近開(kāi)發(fā)優(yōu)化了一個(gè)第三方依賴庫(kù)折騰了所有QA一圈后遣耍,讓我想起來(lái)這個(gè)測(cè)試的必要性闺阱。
在這樣 的分層體系下,還是半黑盒舵变。如果大家想要看一些更加深入的分層理念酣溃,目前我們?cè)谶@塊還是有所局限〖拖叮可以關(guān)注下騰訊測(cè)試的公眾號(hào)TMQ赊豌。
第一部分:對(duì)接接口
很多人可能比較了解服務(wù)端的接口測(cè)試,所以會(huì)有疑問(wèn)绵咱,接口設(shè)計(jì)的美不美麗需要評(píng)判碘饼。為什么要去評(píng)判接口使用的美不美麗。
正確合理的使用服務(wù)端提供的接口不僅可以為服務(wù)端減少許多不必要的壓力悲伶,也可以側(cè)面看出系統(tǒng)設(shè)計(jì)的是否合理艾恼,更有甚者,有時(shí)前后端開(kāi)發(fā)溝通之間出現(xiàn)問(wèn)題麸锉,可能還會(huì)出現(xiàn)接口錯(cuò)誤使用導(dǎo)致功能問(wèn)題钠绍。下面舉一個(gè)簡(jiǎn)單的栗子:
假設(shè)服務(wù)端給客戶端提供了一個(gè)抽取紅包的接口』ǔ粒客戶端在對(duì)接接口時(shí)的處理邏輯是柳爽,用戶每次點(diǎn)擊紅包媳握。都連續(xù)發(fā)送五次抽取請(qǐng)求(一般開(kāi)發(fā)不會(huì)這么干,這里只是夸張)那么不僅給服務(wù)端接口造成了壓力磷脯,還浪費(fèi)流量蛾找。
如何評(píng)判接口使用的是否美麗呢。筆者總結(jié)了以下幾個(gè)點(diǎn):
1争拐、設(shè)計(jì)層面
? ? ? ? 設(shè)計(jì)層面主要是通過(guò)了解客戶端具體如何對(duì)接接口輸出出整個(gè)功能實(shí)現(xiàn)的骨架腋粥。這部分可以通過(guò)后端開(kāi)發(fā)提供的wiki〖懿埽或者開(kāi)發(fā)實(shí)現(xiàn)的app抓包來(lái)獲取隘冲。
如果是通過(guò)wiki來(lái)輸出實(shí)現(xiàn)骨架,后續(xù)也要注意驗(yàn)證前端開(kāi)發(fā)確實(shí)是按照這個(gè)骨架去設(shè)計(jì)的绑雄,這部分在功能層面會(huì)介紹展辞。
如何通過(guò)具體接口對(duì)接輸出業(yè)務(wù)骨架呢。這里還是舉個(gè)栗子万牺。
某個(gè)群文件功能罗珍,開(kāi)發(fā)提供了接口如下:
【獲取文件目錄接口】【刪除文件接口】【增加文件接口】【修改文件接口】
有經(jīng)驗(yàn)的測(cè)試只需要看到這幾個(gè)接口名稱接口yy出一套功能。抽象出這個(gè)功能模塊主要包含功能獲取文件列表脚粟、刪除文件覆旱、增加文件、修改文件信息核无。
那么在使用app抓包的過(guò)程中扣唱。則將這些功能具象化。
(1)用戶點(diǎn)擊入口按鈕--觸發(fā)請(qǐng)求【獲取文件目錄接口】
(2)用戶點(diǎn)擊右上角增加文件按鈕后選擇文件--觸發(fā)請(qǐng)求【獲取文件目錄接口】
(3)用選中文件并選擇刪除按鈕--觸發(fā)請(qǐng)求【刪除文件接口】
(4)用戶選中文件并選擇重命名按鈕--觸發(fā)請(qǐng)求【修改文件接口】
結(jié)合每個(gè)接口的請(qǐng)求后团南,則有了更深的噪沙,每次請(qǐng)求之前客戶端做什么數(shù)據(jù)準(zhǔn)備,請(qǐng)求后客戶端做什么展示準(zhǔn)備的了解吐根。
通過(guò)以上的方法了解到開(kāi)發(fā)的設(shè)計(jì)后去評(píng)估這套設(shè)計(jì)是否合理正歼。當(dāng)然,我們更加推薦在開(kāi)發(fā)設(shè)計(jì)接口時(shí)就去了解設(shè)計(jì)并提出建議來(lái)減少返工拷橘。
2局义、性能層面
? ? ? ? 性能層面指接口是否得到合理的利用,例如一開(kāi)始舉的那個(gè)栗子就是存在流量的冗余損耗冗疮。且短時(shí)間多次請(qǐng)求萄唇,對(duì)服務(wù)端也會(huì)有壓力。
3赌厅、功能層面(正確使用)
? ? ? ? 功能層面主要是指開(kāi)發(fā)是否按照約定的那樣合理使用接口穷绵,舉一個(gè)項(xiàng)目中的栗子:
某個(gè)群文件功能轿塔,后端開(kāi)發(fā)a提供了接口如下:【獲取文件目錄接口】特愿,并說(shuō)明了接口支持分頁(yè)加載仲墨。例如
url:xxxx/file/groupid?offset =n &limit= m 。其中offset表示開(kāi)始條數(shù)揍障。limit表示每次取的個(gè)數(shù)目养。建議每次取50條
正確的獲取方法為:
xxxx/file/groupid?offset =0 &limit= 50? 第一頁(yè)
xxxx/file/groupid?offset =51 &limit= 50 第二頁(yè)?
那么移動(dòng)開(kāi)發(fā)b在對(duì)接的使用覺(jué)得麻煩。那我一次取1000條好了毒嫡。于是就癌蚁。。兜畸。
xxxx/file/groupid?offset =0 &limit= 1000
好了努释。后端根本不支持1000條一次性取。xxxx/file/groupid?offset =0 &limit= 1000 的現(xiàn)象為只給返回200條咬摇。
那么在這個(gè)場(chǎng)景下就很容易漏測(cè)伐蒂,因?yàn)槲覀兊臏y(cè)試場(chǎng)景比較少涉及文件超過(guò)200條的請(qǐng)求。
另外還有萬(wàn)一開(kāi)發(fā)這樣請(qǐng)求了呢肛鹏?
xxxx/file/groupid?offset =0 &limit= 50? 第一頁(yè)
xxxx/file/groupid?offset =52 &limit= 50 第二頁(yè)? 這樣中間遺漏掉一條也是不容易被發(fā)現(xiàn)的逸邦。
本部分結(jié)束,以上都是血和淚的教訓(xùn)在扰,后面又想起來(lái)別的案例再做補(bǔ)充缕减。