一、小程序簡(jiǎn)介
小程序(Mini Program),是一種不需要下載安裝即可使用的應(yīng)用,是內(nèi)嵌在微信APP里面的一款新形態(tài)軟件。它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想,用戶掃一掃或者搜一搜即可打開應(yīng)用。也體現(xiàn)了“用完即走”的理念,用戶不用關(guān)心是否安裝太多應(yīng)用的問題。應(yīng)用將無(wú)處不在,隨時(shí)可用,但又無(wú)需安裝卸載。
1.小程序版本類型
3種版本類型:開發(fā)版(測(cè)試環(huán)境),體驗(yàn)版(預(yù)發(fā)布環(huán)境),
正式版(正式環(huán)境)。
項(xiàng)目中,我們一般會(huì)準(zhǔn)備3套環(huán)境。開發(fā)版訪問測(cè)試環(huán)境,體驗(yàn)版訪問預(yù)發(fā)布環(huán)境,正式版訪問生產(chǎn)環(huán)境。
開發(fā)版和體驗(yàn)版無(wú)需審核,需要給微信號(hào)配置權(quán)限,通過掃小程序的二維碼才能訪問。正式版需要通過微信審核流程。
微信小程序開發(fā)者工具使用之前就要掃碼。開發(fā)版和體驗(yàn)版的區(qū)別,在于開發(fā)版小程序的二維碼有效期比較短。
- 小程序的架構(gòu)
1)微信小程序的框架包含兩部分,View視圖層、AppSerive邏輯層,
View視圖層用力啊渲染頁(yè)面結(jié)構(gòu),
App Serive邏輯層用來(lái)邏輯處理、數(shù)據(jù)請(qǐng)求、接口調(diào)用,它們?cè)趦蓚€(gè)線程里運(yùn)行。
2)View視圖層使用WebView渲染,AppSerive邏輯層使用JSCore運(yùn)行。
3)View視圖層和AppSerive邏輯層通過系統(tǒng)層的JSBrigdage進(jìn)行通信,AppSerive邏輯層把數(shù)據(jù)變化通知到WebView渲染,觸發(fā)WebView渲染頁(yè)面更新,WebView渲染把觸發(fā)的事件通知到AppSerive邏輯層進(jìn)行業(yè)務(wù)處理。
3.微信通知服務(wù)邏輯
微信內(nèi)支持服務(wù)通知跳轉(zhuǎn)到小程序。沒有留意小程序的微信用戶,甚至都不太注意服務(wù)通知這個(gè)名詞。其實(shí)服務(wù)通知已經(jīng)被大量的社交電商小程序所使用,儼然成為新的營(yíng)銷入口。
微信服務(wù)通知,需要小程序傳一個(gè) form id 的參數(shù)給微信,再根據(jù)服務(wù)通知模版來(lái)向微信用戶發(fā)送微信服務(wù)通知的。然而 form id 不是小程序自行生成的,而是該微信用戶在該小程序內(nèi)操作時(shí),微信產(chǎn)生并返回給小程序的。也就是說,如果用戶在小程序頁(yè)面上操作的時(shí)候,小程序前端頁(yè)面沒有把微信提供的 form id 收集下來(lái),并返回給小程序后端,小程序后端是無(wú)法發(fā)送微信服務(wù)通知給用戶的。不同的微信用戶在小程序內(nèi)的操作頻率不同,form id 的數(shù)量也就不同。所以,那些把服務(wù)通知方式作為營(yíng)銷入口的小程序們,可真是費(fèi)了一番腦筋。
二.小程序測(cè)試點(diǎn)
- 權(quán)限測(cè)試
未授權(quán)微信登錄小程序:
1)未授權(quán)時(shí),使用一些業(yè)務(wù)功能的時(shí)候,都會(huì)彈出提醒‘先授權(quán)再操作對(duì)應(yīng)功能’;
2)在提交數(shù)據(jù)到后臺(tái)的時(shí)候,會(huì)提示補(bǔ)充相關(guān)身份信息才能提交。
已授權(quán)微信登錄小程序:
1)授權(quán)微信訪問小程序,意味著自己的微信賬號(hào)可被小程序管理方獲??;
2)自動(dòng)以微信的身份行使業(yè)務(wù)操作權(quán)限,比如咨詢、支付、數(shù)據(jù)查詢等 。
所能查看的數(shù)據(jù)和操作的權(quán)限都應(yīng)該是同步一致的,同一微信號(hào)在不同手機(jī)端登錄授權(quán)查看數(shù)據(jù)權(quán)限。
2.功能測(cè)試
1.按功能模塊測(cè)試
模塊設(shè)計(jì)好的各個(gè)大類功能模塊劃分,然后在逐級(jí)細(xì)分,覆蓋到每個(gè)功能盡可能全面的測(cè)試點(diǎn)。
2.按業(yè)務(wù)流程測(cè)試
1)小程序的業(yè)務(wù),比如:播放、支付(支付時(shí)注意支付狀態(tài):?jiǎn)未问跈?quán)?免密?);
2)把各個(gè)功能點(diǎn)串聯(lián)起來(lái)形成完整的業(yè)務(wù)流程來(lái)檢查;
3)同一業(yè)務(wù)員,有不同的路徑來(lái)實(shí)現(xiàn),每個(gè)路徑都需要覆蓋檢查。
3.按數(shù)據(jù)流向測(cè)試
1)根據(jù)數(shù)據(jù)從某一端操作輸入和輸出流向,設(shè)計(jì)基于數(shù)據(jù)流的測(cè)試用例,輸出的數(shù)據(jù)也可能成為另外一端的輸入;
2)檢查輸入的數(shù)據(jù)是否按照代碼邏輯執(zhí)行正確的輸出;
3)是否數(shù)據(jù)發(fā)生異常,無(wú)法輸入、有輸入?yún)s無(wú)任何輸出、輸出不正確、多余的輸出其他信息等;
4.同一功能不同入口有效性檢查測(cè)試
1)小程序在首頁(yè)、列表頁(yè)、詳細(xì)頁(yè)、其他的業(yè)務(wù)功能相關(guān)頁(yè)面,都有可能存在同一個(gè)功能的入口;
2)每一個(gè)入口路徑都需要覆蓋檢查;
5.交互性檢查測(cè)試
1)一般而言,產(chǎn)生數(shù)據(jù)和功能交互變化的情況主要有這幾個(gè)分類:前臺(tái)與前臺(tái)之間、前臺(tái)與后臺(tái)之間、后臺(tái)與后臺(tái)之間;
2)前臺(tái)從F1頁(yè)面提交的數(shù)據(jù),可能需要在前臺(tái)F2頁(yè)面查看到,也會(huì)在對(duì)應(yīng)后臺(tái)的B頁(yè)面查到記錄;
3)后臺(tái)B1頁(yè)面修改或者添加的數(shù)據(jù),對(duì)應(yīng)到前臺(tái)的F頁(yè)面產(chǎn)生交互變化,后臺(tái)本身的不同頁(yè)面間也可能存在同一個(gè)數(shù)據(jù)的輸出值;
6、支付測(cè)試
1)支付時(shí)的支付狀態(tài):?jiǎn)未问跈?quán)、免密;
2)解除免密授權(quán)是否能進(jìn)行支付;
3)支付時(shí)有金額、無(wú)金額、支付順序等情況是如何處理的;
4)對(duì)于未支付的訂單是如何處理的;
5)小程序沒有授權(quán)支付,小程序是如何處理的;
7、UI測(cè)試
小程序的頁(yè)面測(cè)試和app的界面測(cè)試一樣,關(guān)注頁(yè)面展示元素,如菜單、對(duì)話框、窗口和其他可視控件的布局、風(fēng)格,文字是否正確。
頁(yè)面是否美觀,頁(yè)面交互操作是否友好。操作是否設(shè)計(jì)頻繁、是否易操作。
但注意一點(diǎn),微信小程序頁(yè)面層級(jí)跳轉(zhuǎn)默認(rèn)不能超過10次,達(dá)到10次就不能跳轉(zhuǎn)了。一般在進(jìn)行需求設(shè)計(jì)時(shí),頁(yè)面跳轉(zhuǎn)盡量在10次以內(nèi)。有超過跳轉(zhuǎn)10次的應(yīng)用場(chǎng)景,針對(duì)性開發(fā)。
8、易用性測(cè)試
1.導(dǎo)航
1)定位到頁(yè)面某個(gè)模塊所在位置;
2)回到頂部或者底部;
3)導(dǎo)航條的收展;
4)導(dǎo)航標(biāo)簽的文字是否容易理解;
5)頁(yè)面最多跳轉(zhuǎn)超過限定次數(shù)后是否失敗(小程序原生頁(yè)面存在10層限制問題,超過10層便無(wú)法打開新頁(yè)面,而業(yè)務(wù)流程或者訪問形成閉環(huán)時(shí)很容易陷入10層問題)。
2.功能入口
1)重復(fù)且常用業(yè)務(wù)的功能入口;
2)是否在比較顯眼的位置;
3)業(yè)務(wù)操作是否便于大多數(shù)用戶使用和查看。
3.上下層進(jìn)入與返回
1)首頁(yè)與列表頁(yè)之間;
2)列表頁(yè)與詳細(xì)頁(yè)之間;
3)首頁(yè)與詳細(xì)頁(yè)之間;
4)不同層級(jí)之間的進(jìn)入和返回實(shí)現(xiàn)是否有相應(yīng)按鍵易操作;
4.字體、圖片、動(dòng)態(tài)交互效果
1)字體:標(biāo)簽、標(biāo)題、內(nèi)容、動(dòng)態(tài)播放字體;
2)圖片:背景圖、輪播圖、觸屏產(chǎn)生的交互圖;
3)操作是否過于繁瑣。
9、網(wǎng)絡(luò)測(cè)試
1.網(wǎng)絡(luò)切換測(cè)試
1)WIFI切至2G/3G/4G/5G;
2)WIFI切至無(wú)網(wǎng);
3)2G/3G/4G/5G切至WIFI;
4)2G/3G/4G/5G切至無(wú)網(wǎng);
5)無(wú)網(wǎng)切至2G/3G/4G/5G;
6)無(wú)網(wǎng)切至WIFI;
2.驗(yàn)證各種網(wǎng)絡(luò)情況下是否正常
關(guān)于網(wǎng)速的選擇:
3G:300k-2Mbps左右
2.5G(GPRS)一般在100kbps
2G(GSM)一般在5-9kbps
如果不習(xí)慣自定義設(shè)置帶寬等,可直接測(cè)試網(wǎng)速逐漸提升。設(shè)置好以后,就可以啟動(dòng)你的小程序進(jìn)行各種網(wǎng)絡(luò)測(cè)試了。
10、兼容性測(cè)試
手機(jī)系統(tǒng):在 IOS上,小程序的邏輯代碼運(yùn)行于JavaScriptCore 中,在Android上,這個(gè)任務(wù)則是交給 X5 內(nèi)核來(lái)完成。所以有條件的話,不僅要覆蓋Android和 IOS,包括主流的Android和 IOS品牌也要覆蓋,比如華為,小米,iPhone11,iPhoneXR等等。覆蓋到最新的試用版和當(dāng)前流行的主要版本。
微信版本:與微信版本的兼容性問題主要體現(xiàn)在小程序API庫(kù)的版本上。因?yàn)槲⑿判〕绦騍DK的API版本一直都在更新,導(dǎo)致SDK的API有可能有向下的兼容性問題。例如在最新版本小程序SDK上開發(fā)的程序不能在低版本的SDK上像預(yù)期的那樣運(yùn)行。所以測(cè)試微信版本的兼容性之前要先確定小程序使用的庫(kù)版本在哪些微信版本號(hào)上支持。
屏幕大?。何⑿判〕绦蚨x了一個(gè)新的尺寸單位rpx(responsive pixel)。它可以適配不同的屏幕大小,但是需要注意一個(gè)特殊的尺寸1rpx,因?yàn)檫@個(gè)尺寸經(jīng)常在iphone7p上出現(xiàn)問題。所以,只需要關(guān)注一下即可。
11、版本配置測(cè)試
針對(duì)不同的模板,在前端程序代碼中修改相應(yīng)的配置參數(shù),做到版本與版本之間的切換。
12、接口測(cè)試
目前大部分都是微服務(wù)的架構(gòu),小程序調(diào)用的是后臺(tái)的接口,所以這里的接口測(cè)試和平時(shí)的接口測(cè)試是一樣的,但我們需要了解微信小程序提供的接口是什么類型。
1)有接口文檔的,參照接口文檔進(jìn)行接口測(cè)試。
2)沒有接口文檔的,使用Charles或Fiddler抓包(同App抓包)。
13、性能測(cè)試
1)頁(yè)面的白屏?xí)r間;
2)首屏?xí)r間;
3)資源占用;
4)頁(yè)面渲染時(shí)間
14、緩存測(cè)試
用戶本地緩存(小程序文件、授權(quán)數(shù)據(jù)、登錄數(shù)據(jù)等)不能超過10MB,緩存的作用是提高程序的流暢性、減少網(wǎng)絡(luò)請(qǐng)求、節(jié)省服務(wù)器資源,其緩存測(cè)試點(diǎn):清除緩存時(shí)是否強(qiáng)制退出、后臺(tái)清理以及關(guān)機(jī)等情況,每次提交或退出時(shí),是否清除了本次表單的緩存。
15、小程序埋點(diǎn)測(cè)試
小程序埋點(diǎn)測(cè)試與其他端流程基本一致:產(chǎn)品提出埋點(diǎn)需求,開發(fā)人員在平臺(tái)配置埋點(diǎn)事件,然后進(jìn)行代碼埋點(diǎn),測(cè)試人員再測(cè)試埋點(diǎn)。
注意:小程序測(cè)試過程中經(jīng)常遇到的坑:層級(jí)頁(yè)面跳轉(zhuǎn)、兼容性、緩存。
三、小程序常見問題
1.小程序的架構(gòu)是怎么樣的?
小程序的架構(gòu):包含View視圖層、AppService邏輯層。
View層用來(lái)渲染頁(yè)面結(jié)構(gòu),AppService層用來(lái)邏輯處理、數(shù)據(jù)請(qǐng)求、接口調(diào)用,它們?cè)趦蓚€(gè)線程里運(yùn)行。
視圖層使用WebView渲染,邏輯層使用JSCore運(yùn)行。視圖層和邏輯層通過系統(tǒng)層的JSBridage進(jìn)行通信。
2.小程序測(cè)試和APP測(cè)試的異同點(diǎn)有哪些?
小程序測(cè)試和APP測(cè)試在功能測(cè)試上邏輯一樣,主要是理解項(xiàng)目的需求設(shè)計(jì)等,查看功能模塊、業(yè)務(wù)流程、同一功能不同入口時(shí)有效性檢查、頁(yè)面交互性檢查、輸入輸出等邏輯進(jìn)行測(cè)試。不同點(diǎn)包括以下幾個(gè)方面:
開發(fā)方面:小程序開發(fā)周期一般在兩周左右,需要在公眾平臺(tái)上進(jìn)行審核,審核周期一般較短;APP的開發(fā)周期在一個(gè)月左右,APP需要應(yīng)用商店進(jìn)行審核,審核周期較長(zhǎng)。
1)權(quán)限上的區(qū)別:微信小程序需要驗(yàn)證是否有微信授權(quán),未授權(quán)/授權(quán)登錄程序,同一微信號(hào)不同手機(jī)登錄查看數(shù)據(jù)顯示情況;APP測(cè)試則需要考慮是否可以訪問手機(jī)通訊錄、相冊(cè)、相機(jī)等權(quán)限。
2)性能方面:小程序頁(yè)面可能只會(huì)關(guān)注響應(yīng)時(shí)間,而APP則還需要關(guān)心流量、電量、CPU、GPU、Memory等。
3)兼容方面:小程序是基于瀏覽器的,所以更傾向于瀏覽器和電腦硬件,而瀏覽器的兼容則是一般是選擇不同的瀏覽器內(nèi)核進(jìn)行測(cè)試(IE、chrome、Firefox)。APP的測(cè)試則必須依賴客戶端,不僅要看分辨率,屏幕尺寸,還要看設(shè)備系統(tǒng)。
4)從測(cè)試場(chǎng)景來(lái)看:APP是客戶端的,則必須測(cè)試安裝、更新、卸載。除了常規(guī)的安裝、更新、卸載還要考慮到異常場(chǎng)景。包括安裝時(shí)的中斷、弱網(wǎng)、安裝后刪除安裝文件,小程序是基于瀏覽器的,所以不必考慮這些。
5)從系統(tǒng)架構(gòu)來(lái)看:小程序測(cè)試只要更新了服務(wù)器端,客戶端就會(huì)同步會(huì)更新。但是APP端是不能夠保證完全一致的,除非用戶更新客戶端。如果是APP下修改了服務(wù)端,意味著客戶端用戶所使用的核心版本都需要進(jìn)行回歸測(cè)試一遍。
6)緩存方面:緩存的作用是提高程序的流暢度、減少網(wǎng)絡(luò)請(qǐng)求,節(jié)省服務(wù)器資源,有時(shí)候用戶會(huì)進(jìn)行清理緩存的情況。APP和小程序都會(huì)存在緩存,但小程序最大只有10M的本地緩存,測(cè)試時(shí)需要考慮清除緩存時(shí)強(qiáng)制退出、后臺(tái)清理、關(guān)機(jī)等情況。
7)運(yùn)行流暢度:原生App運(yùn)行在操作系統(tǒng)中,所有的原生組件可以直接調(diào)用GPU進(jìn)行渲染;小程序運(yùn)行在微信的進(jìn)程中,只能通過WebView進(jìn)行渲染。用HTML+CSS+JS開發(fā),配合微信的解析器最張渲染出來(lái)的原生組件的效果,比H5體驗(yàn)上更好。
8)占用空間方面:App 會(huì)一直存在手機(jī)中占用空間,太多的 App 可能會(huì)導(dǎo)致內(nèi)存不足;小程序因?yàn)椴恍枰惭b,占用內(nèi)存空間忽略不計(jì);
3.非公用部分
不同版本直接的切換,需要保證彼此的功能模塊和數(shù)據(jù)獨(dú)立性不受干擾,也就是不同版本的管理后臺(tái)添加的數(shù)據(jù)只應(yīng)該調(diào)用到各個(gè)對(duì)應(yīng)模板的前臺(tái)小程序中,不同的版本小程序從前臺(tái)提交的數(shù)據(jù)也只會(huì)提交到各自管理后臺(tái)。
4.公用部分
切換不同的版本,都會(huì)顯示相同的功能模塊和公共數(shù)據(jù)信息。
5.小程序測(cè)試技術(shù)
1)小程序的特點(diǎn)
1.類似WEB.非HTML5
2.即用即走,隨手可得
3.擁有離線能力
4.基于微信跨平臺(tái)
5.媲美原生操作體驗(yàn)
四、H5的認(rèn)識(shí)
H5優(yōu)勢(shì):
1.H5可以跨平臺(tái),開發(fā)成本相對(duì)較低;
2.H5可隨時(shí)上線就更新版本,適合快速迭代;
3.H5可以輕量的觸達(dá)用戶,提供更快捷的服務(wù);
4.在微信入口或者瀏覽器上,用戶只需點(diǎn)開鏈接就可以獲取我們所提供的服務(wù)。
H5劣勢(shì):
1.H5->的轉(zhuǎn)化強(qiáng)依賴于瀏覽器;
2.H5目前基本無(wú)法將數(shù)據(jù)存儲(chǔ)在本地,依賴實(shí)時(shí)性數(shù)據(jù),網(wǎng)絡(luò)狀態(tài)不好的時(shí)候卡到哭。
3.性能相對(duì)較低,影響用戶體驗(yàn)。
H5功能驗(yàn)證
1.通過H5網(wǎng)頁(yè)(非手機(jī)的返回功能)的返回功能可以返回,不會(huì)出現(xiàn)無(wú)法返回的情況。
返回邏輯:
對(duì)于頁(yè)面中的返回,以及瀏覽器自帶的返回的測(cè)試。頁(yè)面中的返回要考慮業(yè)務(wù)邏輯,返回到相應(yīng)層次,需要從用戶角度返回的轉(zhuǎn)跳邏輯,不能出現(xiàn)死循環(huán)。并要注意返回后是否需要刷新頁(yè)面請(qǐng)求通過H5頁(yè)面(非手機(jī)自帶返回鍵)的返回功能鍵返回,可以返回到正確的頁(yè)面(上一級(jí)/退出H5)點(diǎn)擊返回與back鍵,回退頁(yè)面是否是期望頁(yè)面。
橫屏豎屏相互切換,能自適應(yīng),并且布局不會(huì)亂掉;或頁(yè)面只支持橫或豎屏限制。
在手機(jī)上從list點(diǎn)擊進(jìn)入detail頁(yè)面,要在原窗口打開,這樣可以通過頁(yè)頭的返回按鈕返回,而不需要通過手機(jī)的返回鍵返回,這樣交互上更友好。
關(guān)注頁(yè)面請(qǐng)求,是否會(huì)有多余的請(qǐng)求,或者請(qǐng)求后有多余的數(shù)據(jù)返回,盡量精簡(jiǎn),否則會(huì)浪費(fèi)流量。
5.圖片適配測(cè)試,根據(jù)不同屏幕和分辨率做適配,以及適配后的清晰度,高端機(jī)取雙倍尺寸的圖--app兼容測(cè)試。