1分鐘了解轉(zhuǎn)轉(zhuǎn)小程序測(cè)試體系

發(fā)表于 討論求助 2023-05-10 14:56:27

2017年1月9號(hào)微信小程序正式上線,小程序無(wú)須安裝就能使用,依托微信強(qiáng)大的生態(tài)環(huán)境,能做到很多H5所不能做的事情。目前轉(zhuǎn)轉(zhuǎn)已有小程序11個(gè),但對(duì)于小程序如何做測(cè)試,依然沒(méi)有一個(gè)相應(yīng)完整的操作文檔。這里將從四個(gè)方面簡(jiǎn)單介紹如何對(duì)小程序進(jìn)行測(cè)試。

小程序相關(guān)介紹

小程序發(fā)布審核

  1. 發(fā)布前需申請(qǐng)外網(wǎng)域名,并在微信web開(kāi)發(fā)者工具里找到項(xiàng)目,設(shè)置好服務(wù)器的域名。

  2. 開(kāi)發(fā)完上傳代碼后,在微信公眾平臺(tái)—》登錄小程序管理后臺(tái)—》點(diǎn)擊開(kāi)發(fā)管理—》點(diǎn)擊提交版本審核即可。

  3. 審核通過(guò)后會(huì)有相應(yīng)提示,接著把審核通過(guò)的小程序發(fā)布線上;若未審核通過(guò)可做相應(yīng)修改繼續(xù)提審。

  4. 第一次提交小程序?qū)徍藭r(shí),需先上線后端,一般第一次審核時(shí)間比較久(3d左右)。

小程序的限制

  1. 頁(yè)面層級(jí)跳轉(zhuǎn)不能超過(guò)10層。

  2. 用戶本地緩存不能超過(guò)10MB。

  3. 小程序代碼包不能超過(guò)3M,所以部分圖片資源需上傳CDN。

  4. 小程序發(fā)布需提交微信審核通過(guò)才可發(fā)版。

  5. 提交審核前,外網(wǎng)域名需申請(qǐng)(除微信域名之外)。

層級(jí)問(wèn)題

  1. 小程序原生頁(yè)面存在10層限制問(wèn)題,即超過(guò)10層時(shí)便無(wú)法打開(kāi)新頁(yè)面,而業(yè)務(wù)流程或者訪問(wèn)形成閉環(huán)時(shí),很容易陷入10層問(wèn)題。

  2. 為避免層級(jí)限制導(dǎo)致的無(wú)法打開(kāi)頁(yè)面和層級(jí)限制帶來(lái)的交互路徑限制,內(nèi)部提出了【層級(jí)策略】以解決層級(jí)限制問(wèn)題。

  3. 【層級(jí)策略】將頁(yè)面路徑存儲(chǔ)到storage,返回時(shí)則刷新拉取存儲(chǔ)的頁(yè)面路徑,目前只保存頁(yè)面路徑,不保存表單等數(shù)據(jù)。

服務(wù)通知

  1. 基于微信的通知渠道,為開(kāi)發(fā)者提供了可以高效觸達(dá)用戶的模板消息能力,以便實(shí)現(xiàn)服務(wù)的閉環(huán)并提供更佳的體驗(yàn)。

  2. 模板推送位置:服務(wù)通知。

    模板下發(fā)條件:用戶本人在微信體系內(nèi)與頁(yè)面有交互行為后觸發(fā)。

    模板跳轉(zhuǎn)能力:點(diǎn)擊查看詳情僅能跳轉(zhuǎn)下發(fā)模板的該帳號(hào)的各個(gè)頁(yè)面。

  3. 小程序給用戶推送服務(wù)通知,依賴用戶的formId。

  4. 更多服務(wù)通知詳情戳一戳https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html

基礎(chǔ)庫(kù)版本

  1. 小程序的能力需要微信客戶端來(lái)支撐,每一個(gè)基礎(chǔ)庫(kù)都只能在對(duì)應(yīng)的客戶端版本上運(yùn)行,高版本的基礎(chǔ)庫(kù)對(duì)應(yīng)的api不支持低版本,所以在使用這些新能力的時(shí)候需要做兼容。

  2. 由于微信版本和基礎(chǔ)庫(kù)版本不是一一對(duì)應(yīng)關(guān)系,且小程序api是基于各個(gè)基礎(chǔ)庫(kù)版本進(jìn)行發(fā)布的,所以在測(cè)試過(guò)程中需要提前獲悉當(dāng)前基礎(chǔ)庫(kù)版本號(hào)。

  3. 目前可在zeye后臺(tái)查看基于轉(zhuǎn)轉(zhuǎn)用戶使用的基礎(chǔ)庫(kù)、微信版本、手機(jī)型號(hào)覆蓋率等數(shù)據(jù)。

  4. 目前我們主要通過(guò)日志的方式自動(dòng)獲取到版本號(hào),可通過(guò)兩種途徑拿到:1.體驗(yàn)版進(jìn)入首頁(yè)時(shí)通過(guò)console查到;2.通過(guò)我的功能頁(yè)面拿到。

  5. 更多

    https://mp.weixin.qq.com/debug/wxadoc/dev/framework/client-lib.html

開(kāi)發(fā)版、體驗(yàn)版、線上版

  1. 小程序并不像服務(wù)端那樣區(qū)別線上和線下版本,而是有開(kāi)發(fā)版、體驗(yàn)版、線上版。

  2. 如果只是開(kāi)發(fā)后端邏輯功能,可在三個(gè)版本中任意一個(gè)進(jìn)行測(cè)試;如果是開(kāi)發(fā)前端功能則需在相應(yīng)的開(kāi)發(fā)版/測(cè)試版進(jìn)行測(cè)試。

  3. 三者具體區(qū)別如下:

    (1)?權(quán)限層:前兩者需申請(qǐng)開(kāi)發(fā)者和體驗(yàn)者權(quán)限才可使用,后者則面向所有用戶。

    (2)?性能層:開(kāi)發(fā)版和體驗(yàn)版自身帶有vConsole性能面板(回歸需關(guān)閉此功能),而線上版則木有。

    (3) 代碼層:開(kāi)發(fā)人員可同時(shí)在多個(gè)開(kāi)發(fā)版上開(kāi)發(fā)互不影響;體驗(yàn)版當(dāng)前只能有一份代碼處于審核中,審核通過(guò)后可發(fā)布上線,也可直接重新提交審核,覆蓋原審核版本;線上版本則為所有用戶使用的代碼版本,該版本代碼在新版本代碼發(fā)布后被覆蓋更新。

    (4)?包大?。洪_(kāi)發(fā)版本不限制包大?。惑w驗(yàn)者&正式版則限制包大小。

    (5)?二維碼:體驗(yàn)版保持不變,開(kāi)發(fā)版30min后失效需重新生成。

緩存機(jī)制

  1. 為了保證小程序的快速訪問(wèn)和用戶體驗(yàn),微信會(huì)緩存小程序,包括小程序文件、授權(quán)數(shù)據(jù)、登錄數(shù)據(jù)等。

  2. 使用小程序常碰到緩存問(wèn)題,例如切換環(huán)境(線上線下互切)、cookie、發(fā)版、登陸等,簡(jiǎn)單粗暴的方法就是將小程序刪掉重新進(jìn)入即可。更多緩存可查看https://mp.weixin.qq.com/debug/wxadoc/dev/api/data.html

  3. 小程序啟動(dòng)機(jī)制主要為“冷啟動(dòng)”&“熱啟動(dòng)”,如下。

  4. 同一手機(jī),不同小程序應(yīng)用,至少在邏輯存儲(chǔ)上肯定不是共享緩存,滿足應(yīng)用級(jí)別隔離。

  5. 同一手機(jī),同一個(gè)小程序,不同微信用戶掃碼使用,經(jīng)測(cè)試,也不共享緩存,目前測(cè)試條件下,是用戶級(jí)別隔離。

  6. 同一手機(jī),同一個(gè)小程序,同一微信用戶兩次掃碼使用,經(jīng)測(cè)試,是共享緩存。

  7. 同一手機(jī),同一個(gè)小程序,不同微信用戶切換使用(分別掃碼兩次),經(jīng)測(cè)試,同一個(gè)用戶共享緩存,不同用戶間不共享緩存。

?海報(bào)頁(yè)

  1. 可生成定制的海報(bào)頁(yè),用于分享朋友圈。

  2. 任何版本生成的海報(bào)頁(yè),掃碼都跳轉(zhuǎn)到正式版落地頁(yè),可借助【小程序碼測(cè)試工具】跳轉(zhuǎn)相應(yīng)頁(yè)面。

  3. 二維碼數(shù)據(jù)和圖片為動(dòng)態(tài)生成過(guò)程,不像那種固定圖片的可以預(yù)加載。

??微信openIdUnionID區(qū)別

  1. 同一主體下多個(gè)公眾號(hào)之間需要用戶帳號(hào)互通,微信開(kāi)放平臺(tái)提供了UnionID機(jī)制。

  2. 通過(guò)獲取用戶基本信息接口,開(kāi)發(fā)者可通過(guò)OpenID來(lái)獲取用戶基本信息,而如果開(kāi)發(fā)者擁有多個(gè)公眾號(hào),可通過(guò)UnionID在多公眾號(hào)之間進(jìn)行用戶帳號(hào)互通。

  3. 在不同的公眾賬號(hào)下OpenID是不一樣的,而他們的UnionID卻是一樣的。

小程序測(cè)試工作

前期準(zhǔn)備

  1. 微信版本號(hào)需在6.3.27及以上,低于提示升級(jí)。

  2. qa需申請(qǐng)對(duì)應(yīng)小程序體驗(yàn)者權(quán)限&開(kāi)發(fā)者權(quán)限。

  3. 小程序開(kāi)發(fā)版、體驗(yàn)版、正式版。

  4. 小程序AppID,項(xiàng)目地址&名字。

  5. 明確小程序本次測(cè)試入口&版本。

  6. 微信公眾號(hào)平臺(tái)發(fā)布的【小程序開(kāi)發(fā)助手】, 可方便快捷的預(yù)覽和體驗(yàn)線上版本,體驗(yàn)版本以及開(kāi)發(fā)版本。

測(cè)試點(diǎn)

  1. 授權(quán)目前已實(shí)現(xiàn)靜默授權(quán),即用戶首次訪問(wèn)小程序,主動(dòng)獲取微信授權(quán),通過(guò)獲取openid,生成轉(zhuǎn)轉(zhuǎn)uid,并存儲(chǔ)昵稱、頭像等信息。后續(xù)用戶若殺掉小程序重新進(jìn)入,無(wú)需重新授權(quán)。

  2. 功能與端內(nèi)正常測(cè)試功能無(wú)異;

  3. 緩存功能需求后,此時(shí)就需要關(guān)注緩存情況:

    (1)微信給每個(gè)小程序提供了10MB的本地緩存。

    (2)頁(yè)面切換時(shí),可能會(huì)將上一個(gè)頁(yè)面的數(shù)據(jù)帶到下一個(gè)頁(yè)面展示,例如【主程序-紅包需求】點(diǎn)擊“未使用”先顯示正確文案—》點(diǎn)擊“已使用”或“已過(guò)期”—》點(diǎn)擊“未使用”,文案卻展示“已使用”和“未使用”的文案。此時(shí)可以給開(kāi)發(fā)人員提bug,通過(guò)代碼解決頁(yè)面緩存問(wèn)題;

    (3)對(duì)于賬號(hào)切換、版本發(fā)布等帶來(lái)的緩存,目前解決方法是簡(jiǎn)單粗暴的將小程序刪掉,重新進(jìn)入生效;

    (4)還可從代碼層面解決緩存問(wèn)題:清除當(dāng)前存儲(chǔ)到storage里的內(nèi)容,如cookie信息,主要調(diào)用wx.clearStorageSync();從基礎(chǔ)庫(kù)1.9.90開(kāi)始,小程序支持自動(dòng)更新上線代碼,接口為wx.getUpdateManager()。

  4. 分享功能測(cè)試

    (1)分享到好友列表&生成海報(bào)頁(yè)分享到朋友圈;

    (2)用線上/測(cè)試/開(kāi)發(fā)版分享給好友,落地頁(yè)就是相應(yīng)的線上/測(cè)試/開(kāi)發(fā)版

    (3)朋友圈識(shí)別跳轉(zhuǎn)都是線上版;所以在測(cè)試過(guò)程中若涉及到掃碼跳轉(zhuǎn),就需借助【小程序碼測(cè)試工具】。

  5. 服務(wù)通知:

    (1)以模板ID的形式推送服務(wù)通知;

    (2)微信公眾號(hào):需關(guān)注公眾號(hào)&無(wú)須收集formId;小程序服務(wù)通知:收集formId;

    (3)formId有效期7d,如果用戶沒(méi)有可用的formId,則無(wú)法給用戶推送相應(yīng)消息;

    (4)通過(guò)點(diǎn)擊操作單個(gè)/批量收集formId,主要存儲(chǔ)在wtable,觸發(fā)行為如支付、提交表單等

    https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html

    (5)批量收集formId:如zzwxpush/addFormIds

    (6)單個(gè)收集formId:如zzwxpush/addFormId?formId

    (7)每個(gè)小程序收集的formId,只能用于對(duì)應(yīng)的小程序,也只能用于對(duì)應(yīng)的uid。例如閑置社108批量收集formId,卻存儲(chǔ)在小程序103,結(jié)果導(dǎo)致閑置社批量formId失敗,而且小程序存儲(chǔ)很多無(wú)效可用的formId,主要原因是由于前端傳入?yún)?shù)source=103導(dǎo)致。

    常出現(xiàn)問(wèn)題:formId無(wú)效(命中小程序自身策略)、無(wú)可用formId(需收集)。

  6. 層級(jí):

    (1)M頁(yè)、toast、彈窗等不受限于層級(jí)問(wèn)題;

    (2)小程序原生頁(yè)面超過(guò)10層后不能再打開(kāi)新頁(yè)面,正常業(yè)務(wù)流程或閉環(huán)容易造成10層問(wèn)題,例如個(gè)人中心--》商品列表頁(yè)--》個(gè)人中心……

    (3)解決方法【層級(jí)策略】:將頁(yè)面鏈接存儲(chǔ)到storage,返回時(shí)則刷新拉取存儲(chǔ)的頁(yè)面鏈接。目前只保存頁(yè)面路徑,不保存頁(yè)面數(shù)據(jù)。

  7. 兼容

    (1)微信版本:小程序的接口完全依賴于微信,因此部分基礎(chǔ)庫(kù)較高的接口可能在低版本的微信上不生效,需做兼容,如:頁(yè)面內(nèi)分享是基于1.2.0的基礎(chǔ)庫(kù)開(kāi)發(fā),因此要求對(duì)應(yīng)微信版本在6.5.8及以上;

    (2)不同機(jī)型:如某頁(yè)面在華為機(jī)型展示沒(méi)問(wèn)題,但到小米機(jī)型卻展示有問(wèn)題;

    (3)手機(jī)系統(tǒng):Android和ios兩個(gè)版本兼容性可能不同;如個(gè)人主頁(yè)中【安卓和ios】評(píng)價(jià)樣式有問(wèn)題。

  8. 埋點(diǎn):

    (1)埋點(diǎn)測(cè)試大致和端內(nèi)測(cè)試流程一樣,關(guān)注actiontype&pagetype等參數(shù);

    (2)小程序統(tǒng)計(jì)常需區(qū)分用戶來(lái)源渠道,因此還需關(guān)注【backup】中的channel,pagechannel,type等參數(shù)。

    (3)appid:主要存儲(chǔ)小程序source參數(shù)值。

    (4)scene:場(chǎng)景值

    https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-

    service/scene.html

    (5)channel:只對(duì)小程序入口頁(yè)生效,會(huì)伴隨整個(gè)生命周期,直到退出小程序。如果沒(méi)有明確的參數(shù)值,則默認(rèn)為none。

    (6)pagechannel:針對(duì)頁(yè)面url參數(shù),只帶到落地頁(yè),不會(huì)帶到后續(xù)頁(yè)面。如果沒(méi)有明確的參數(shù)值,則默認(rèn)為none。

    (7)type:目前用在詳情頁(yè),主要用于區(qū)分此商品是個(gè)人mine/圈子group/他人normal。

    (8)根據(jù)pm需求還可以增加相應(yīng)渠道參數(shù)。

內(nèi)嵌M頁(yè):

  1. 1.6.4版本開(kāi)始陸續(xù)支持小程序內(nèi)嵌M頁(yè)。

  2. M頁(yè)不受限于小程序的層級(jí)頁(yè)面,如【游戲M頁(yè)】點(diǎn)擊首頁(yè)—》游戲頻道為1層頁(yè)面,而不是2層頁(yè)面。

  3. 測(cè)試M頁(yè)需做相應(yīng)的適配,以在小程序能夠正常使用,如登陸等。若M頁(yè)嵌入native頁(yè)面,則還需要額外做native頁(yè)面交互的適配。如【游戲—我的拼團(tuán)】沒(méi)做適配,則提示此錯(cuò)誤。

M測(cè)重點(diǎn)關(guān)注頁(yè)面跳轉(zhuǎn)功能,展示等問(wèn)題。

測(cè)試坑點(diǎn)

小程序測(cè)試過(guò)程中經(jīng)常碰到的坑,重點(diǎn)需關(guān)注:

  1. 層級(jí)頁(yè)面跳轉(zhuǎn)

  2. 兼容性

  3. 緩存

常見(jiàn)問(wèn)題定位&解決

測(cè)試微信側(cè)消息時(shí),由于線上訪問(wèn)和線下訪問(wèn)的賬號(hào)是不通的,所以需要把線上數(shù)據(jù)寫(xiě)到線下,比如線上uid=1?線下uid=2,需要把線上uid=1?的信息,同步到線下uid=2的記錄中,才能訪問(wèn)成功。

線下測(cè)公眾號(hào)消息報(bào)“未關(guān)注公眾號(hào)”

  1. 原因:由于微信公眾號(hào)對(duì)于我們而言只有線上,并無(wú)所謂線下一套的說(shuō)法,從而導(dǎo)致在線下測(cè)公眾號(hào)消息的時(shí)候會(huì)打出“未關(guān)注公眾號(hào)”日志,從而測(cè)不通。

  2. 解決:將線上相應(yīng)用戶的unionid和openid復(fù)制黏貼到線下用戶中,步驟如下。

    (1)線上uid查詢線上user庫(kù)user_auth表獲取用戶source=26的unionid和openid;

    (2)在線下uid的user庫(kù)user_auth表添加上述source=26的記錄。

    (3)同時(shí)線下push庫(kù)wechat_user_map表添加相應(yīng)的unionid和openid,此時(shí)測(cè)試公眾號(hào)就能通了。

    (4)若出現(xiàn)openid hint/unionid hint等錯(cuò)誤,則說(shuō)明同步的openid/unionid有問(wèn)題,需要重新線上確認(rèn)同步到線下。

報(bào)錯(cuò)“用戶未授權(quán)”

  1. 原因:在線下測(cè)試時(shí),由于操作不規(guī)范,經(jīng)常會(huì)出現(xiàn)“用戶未授權(quán)”的情況。如下錯(cuò)誤展示,查詢dbwww58com_user庫(kù)?user_auth表,發(fā)現(xiàn)不存在對(duì)應(yīng)小程序端的uid,即日志source=103,但庫(kù)source=108 ,兩個(gè)source對(duì)不上


  2. 解決:將user_auth同步線上source=103即可。

formid錯(cuò)誤匯總

測(cè)微信服務(wù)通知時(shí),經(jīng)常出現(xiàn)formid以下錯(cuò)誤提示。

  1. formid過(guò)期(有效期7d)&收集格式錯(cuò)誤導(dǎo)致(格式為時(shí)間戳/字母+數(shù)字組成的32位)。

  2. 當(dāng)前用戶沒(méi)有formid導(dǎo)致。

  3. formid已使用導(dǎo)致,主要是同一時(shí)間可能多個(gè)用戶收集formid,從而形成的formid可能一樣。

  4. 相應(yīng)form錯(cuò)誤碼說(shuō)明如下:

  5. 明確每個(gè)小程序收集的formId,只能用于對(duì)應(yīng)的小程序,也只能用于對(duì)應(yīng)的uid。

  6. 目前發(fā)服務(wù)通知時(shí),為防止用戶下發(fā)失敗,會(huì)重復(fù)調(diào)用formId接口多次,嘗試給用戶下發(fā)通知;若達(dá)到嘗試次數(shù)上限依舊失敗,則下發(fā)不成功。

消息模板跳轉(zhuǎn)鏈接錯(cuò)誤

  1. 出現(xiàn)這種錯(cuò)誤,首先需要確認(rèn)url是否解析成小程序可跳轉(zhuǎn)的鏈接;若已解析,則是小程序這個(gè)頁(yè)面還沒(méi)上線導(dǎo)致微信檢索不到此鏈接導(dǎo)致。

  2. page路徑配置錯(cuò)誤,重配即可。

工具篇

為了方便小程序測(cè)試,已開(kāi)發(fā)了入口構(gòu)造工具&小程序碼測(cè)試工具。

入口構(gòu)造工具

  1. 用于m頁(yè),以及小程序url頁(yè)面入口跳轉(zhuǎn),若測(cè)渠道埋點(diǎn),可額外添加參數(shù)值channel;

  2. 填入url參數(shù)格式:

    pages/webview/webview?url=https:xxxx

小程序碼測(cè)試工具

  1. 開(kāi)發(fā)過(guò)程中,涉及到掃描小程序碼會(huì)跳轉(zhuǎn)到線上版小程序,導(dǎo)致測(cè)試過(guò)程無(wú)法檢測(cè)掃碼跳轉(zhuǎn)是否正確。如【首頁(yè)改版V2-商品詳情頁(yè)小浮層】若直接識(shí)別小程序,則落地頁(yè)為線上版小程序而不是相應(yīng)的開(kāi)發(fā)/測(cè)試版本,導(dǎo)致沒(méi)調(diào)用到“商品詳情頁(yè)浮層”接口productDetailLayer

  2. 此工具主要是方便通過(guò)掃碼跳轉(zhuǎn)相應(yīng)的版本,檢查未上線時(shí)參數(shù)是否正確。

  3. 【查看二維碼】掃碼查看相應(yīng)的鏈接參數(shù);

  4. 【打開(kāi)二維碼】掃碼跳轉(zhuǎn)相應(yīng)的版本頁(yè)面;

  5. 【測(cè)渠道埋點(diǎn)】掃碼分享獲取到相應(yīng)的渠道參數(shù);

發(fā)表
26906人 簽到看排名