小程序測試體系

小程序相關介紹

在測試前,先簡單理解下小程序特性。html

  1. 小程序發佈審覈
    1. 發佈前需申請外網域名,並在微信web開發者工具裏找到項目,設置好服務器的域名。
    2. 開發完上傳代碼後,在微信公衆平臺—》登陸小程序管理後臺—》點擊開發管理—》點擊提交版本審覈便可。
    3. 審覈經過後會有相應提示,接着把審覈經過的小程序發佈線上;若未審覈經過可作相應修改繼續提審。
    4. 第一次提交小程序審覈時,需先上線後端,通常第一次審覈時間比較久(3d左右)。
       
  2. 小程序的限制
    1. 頁面層級跳轉不能超過10層。
    2. 用戶本地緩存不能超過10MB。
    3. 小程序代碼包不能超過3M,因此部分圖片資源需上傳CDN。
    4. 小程序發佈需提交微信審覈經過纔可發版。
    5. 提交審覈前,外網域名需申請(除微信域名以外)。
  3. 層級問題
    1. 小程序原生頁面存在10層限制問題,即超過10層時便沒法打開新頁面,而業務流程或者訪問造成閉環時,很容易陷入10層問題。
    2. 爲避免層級限制致使的沒法打開頁面和層級限制帶來的交互路徑限制,內部提出了【層級策略】以解決層級限制問題。
    3. 【層級策略】將頁面路徑存儲到storage,返回時則刷新拉取存儲的頁面路徑,目前只保存頁面路徑,不保存表單等數據。具體解決方案見文檔「層級策略.txt」。
  4. 服務通知
    1. 基於微信的通知渠道,爲開發者提供了能夠高效觸達用戶的模板消息能力,以便實現服務的閉環並提供更佳的體驗。
    2. 模板推送位置:服務通知。模板下發條件:用戶本人在微信體系內與頁面有交互行爲後觸發。模板跳轉能力:點擊查看詳情僅能跳轉下發模板的該賬號的各個頁面。
    3. 小程序給用戶推送服務通知,依賴用戶的formId。
    4. 更多服務通知詳情戳一戳https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html
  5. 基礎庫版本
    1. 小程序的能力須要微信客戶端來支撐,每個基礎庫都只能在對應的客戶端版本上運行,高版本的基礎庫對應的api不支持低版本,因此在使用這些新能力的時候須要作兼容。
    2. 因爲微信版本和基礎庫版本不是一一對應關係,且小程序api是基於各個基礎庫版本進行發佈的,因此在測試過程當中須要提早獲悉當前基礎庫版本號。
    3. 目前可在zeye後臺查看基於轉轉用戶使用的基礎庫、微信版本、手機型號覆蓋率等數據。
    4. 目前咱們主要經過日誌的方式自動獲取到版本號,可經過兩種途徑拿到:1.體驗版進入首頁時經過console查到;2.經過個人功能頁面拿到。
    5. 更多可查看此https://mp.weixin.qq.com/debug/wxadoc/dev/framework/client-lib.html
       
  6. 開發版、體驗版、線上版
    1. 小程序並不像服務端那樣區別線上和線下版本,而是有開發版、體驗版、線上版。
    2. 若是隻是開發後端邏輯功能,可在三個版本中任意一個進行測試;若是是開發前端功能則需在相應的開發版/測試版進行測試。
    3. 三者具體區別以下:
      • 權限層:前二者需申請開發者和體驗者權限纔可以使用,後者則面向全部用戶。
      • 性能層:開發版和體驗版自身帶有vConsole性能面板(迴歸需關閉此功能),而線上版則木有。
      • 代碼層:開發人員可同時在多個開發版上開發互不影響;體驗版當前只能有一份代碼處於審覈中,審覈經過後可發佈上線,也可直接從新提交審覈,覆蓋原審覈版本;線上版本則爲全部用戶使用的代碼版本,該版本代碼在新版本代碼發佈後被覆蓋更新。
    4. 包大小:開發版本不限制包大小;體驗者&正式版則限制包大小。
    5. 二維碼:體驗版保持不變,開發版30min後失效需從新生成。
       
  7. 緩存機制
    1. 爲了保證小程序的快速訪問和用戶體驗,微信會緩存小程序,包括小程序文件、受權數據、登陸數據等。
    2. 使用小程序常碰到緩存問題,例如切換環境(線上線下互切)、cookie、發版、登錄等,簡單粗暴的方法就是將小程序刪掉從新進入便可。更多緩存可查看https://mp.weixin.qq.com/debug/wxadoc/dev/api/data.html
    3. 小程序啓動機制主要爲「冷啓動」&「熱啓動」,以下。
       
      • 同一手機,不一樣小程序應用,至少在邏輯存儲上確定不是共享緩存,知足應用級別隔離。
      • 同一手機,同一個小程序,不一樣微信用戶掃碼使用,經測試,也不共享緩存,目前測試條件下,是用戶級別隔離。
      • 同一手機,同一個小程序,同一微信用戶兩次掃碼使用,經測試,是共享緩存。
      • 同一手機,同一個小程序,不一樣微信用戶切換使用(分別掃碼兩次),經測試,同一個用戶共享緩存,不一樣用戶間不共享緩存。
    4. 海報頁
      1. 可生成定製的海報頁,用於分享朋友圈。
      2. 任何版本生成的海報頁,掃碼都跳轉到正式版落地頁,可藉助【小程序碼測試工具】跳轉相應頁面。
      3. 二維碼數據和圖片爲動態生成過程,不像那種固定圖片的能夠預加載。
  8. 微信openId和UnionID區別
    1. 同一公司下多個公衆號之間須要用戶賬號互通,微信開放平臺提供了UnionID機制。
    2. 經過獲取用戶基本信息接口,開發者可經過OpenID來獲取用戶基本信息,而若是開發者擁有多個公衆號,可經過UnionID在多公衆號之間進行用戶賬號互通。
    3. 在不一樣的公衆帳號下OpenID是不同的,而他們的UnionID倒是同樣的。
    4. UnionId和uid是對應關係;OpenId和sourceId是對應關係。
       

小程序測試工做

  1. 前期準備
    • 微信版本號需在6.3.27及以上,低於提示升級。
    • qa需申請對應小程序體驗者權限&開發者權限。
    • 小程序開發版、體驗版、正式版。
    • 小程序AppID,項目地址&名字。
    • 明確小程序本次測試入口&版本。
    • 微信公衆號平臺發佈的【小程序開發助手】, 可方便快捷的預覽和體驗線上版本,體驗版本以及開發版本。
  2. 測試點
    • 受權:目前已實現靜默受權,即用戶首次訪問小程序,主動獲取微信受權,經過獲取openid,生成轉轉uid,並存儲暱稱、頭像等信息。後續用戶若殺掉小程序從新進入,無需從新受權。
    • 功能:與端內正常測試功能無異;
    • 緩存:功能需求後,此時就須要關注緩存狀況:
    • 微信給每一個小程序提供了10MB的本地緩存。
    • 頁面切換時,可能會將上一個頁面的數據帶到下一個頁面展現,例如【主程序-紅包需求】點擊「未使用」先顯示正確文案—》點擊「已使用」或「已過時」—》點擊「未使用」,文案卻展現「已使用」和「未使用」的文案。此時能夠給開發人員提bug,經過代碼解決頁面緩存問題;
    • 對於帳號切換、版本發佈等帶來的緩存,目前解決方法是簡單粗暴的將小程序刪掉,從新進入生效。
    • 還可從代碼層面解決緩存問題:1.清除當前存儲到storage裏的內容,如cookie信息,主要調用wx.clearStorageSync();2.從基礎庫1.9.90開始,小程序支持自動更新上線代碼,接口爲wx.getUpdateManager()。
    • 性能
    • 分享功能測試
    • 分享到好友列表&生成海報頁分享到朋友圈;
    • 用線上/測試/開發版分享給好友,落地頁就是相應的線上/測試/開發版;
    • 朋友圈識別跳轉都是線上版;因此在測試過程當中若涉及到掃碼跳轉,就需藉助【小程序碼測試工具】。
    • 服務通知:
    • 以模板ID的形式推送服務通知;
    • 微信公衆號:需關注公衆號&無須收集formId;小程序服務通知:收集formId;
    • formId有效期7d,若是用戶沒有可用的formId,則沒法給用戶推送相應消息;
    • 經過點擊操做單個/批量收集formId,主要存儲在wtable,觸發行爲如支付、提交表單等;詳情戳一戳它https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html
    • 批量收集formId:POST請求,如zzwxpush/addFormIds
    • 單個收集formId:GET請求,如zzwxpush/addFormId?formId
       
    • 每一個小程序收集的formId,只能用於對應的小程序,也只能用於對應的uid。例如閒置社108批量收集formId,卻存儲在小程序103,結果致使閒置社批量formId失敗,並且小程序存儲不少無效可用的formId,主要緣由是因爲前端傳入參數source=103致使。
      • 常出現問題:formId無效(命中小程序自身策略)、無可用formId(需收集)。
    • 層級:
    • M頁、toast、彈窗等不受限於層級問題;
    • 小程序原生頁面超過10層後不能再打開新頁面,正常業務流程或閉環容易形成10層問題,例如我的中心--》商品列表頁--》我的中心……
    • 解決方法【層級策略】:將頁面連接存儲到storage,返回時則刷新拉取存儲的頁面連接。目前只保存頁面路徑,不保存頁面數據。
    • 兼容:
    • 微信版本:小程序的接口徹底依賴於微信,所以部分基礎庫較高的接口可能在低版本的微信上不生效,需作兼容,如:頁面內分享是基於1.2.0的基礎庫開發,所以要求對應微信版本在6.5.8及以上;
    • 不一樣機型:如某頁面在華爲機型展現沒問題,但到小米機型卻展現有問題;
    • 手機系統:Android和ios兩個版本兼容性可能不一樣;如我的主頁中【安卓和ios】評價樣式有問題。
       
    • 埋點:
    • 埋點測試大體和端內測試流程同樣,關注actiontype&pagetype等參數;
    • 小程序統計常需區分用戶來源渠道,所以還需關注【backup】中的channel,pagechannel,type等參數。
    • appid:主要存儲小程序source參數值。
    • scene:場景值,詳情https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/scene.html
    • channel:只對小程序入口頁生效,會伴隨整個生命週期,直到退出小程序。若是沒有明確的參數值,則默認爲none。
    • pagechannel:針對頁面url參數,只帶到落地頁,不會帶到後續頁面。若是沒有明確的參數值,則默認爲none。
    • type:目前用在詳情頁,主要用於區分此商品是我的mine/圈子group/他人normal。
    • 根據pm需求還能夠增長相應渠道參數。
    • 內嵌M頁:
    • 1.6.4版本開始陸續支持小程序內嵌M頁。
    • M頁不受限於小程序的層級頁面,如【遊戲M頁】點擊首頁—》遊戲頻道爲1層頁面,而不是2層頁面。
       
    • 測試M頁需作相應的適配,以在小程序可以正常使用,如登錄等。若M頁嵌入native頁面,則還須要額外作native頁面交互的適配。如【遊戲—個人拼團】沒作適配,則提示此錯誤。
       
    • M測重點關注頁面跳轉功能,展現等問題。
  3. 測試坑點 小程序測試過程當中常常碰到的坑,重點需關注:
    • 層級頁面跳轉
    • 兼容性
    • 緩存

常見問題定位&解決

測試微信側消息時,因爲線上訪問和線下訪問的帳號是不通的,因此須要把線上數據寫到線下,好比線上uid=1 線下uid=2,須要把線上uid=1 的信息,同步到線下uid=2的記錄中,才能訪問成功。前端

  • 線下測公衆號消息報「未關注公衆號」ios

    • 緣由:因爲微信公衆號對於咱們而言只有線上,並沒有所謂線下一套的說法,從而致使在線下測公衆號消息的時候會打出「未關注公衆號」日誌,從而測不通。
    • 解決:將線上相應用戶的unionid和openid複製黏貼到線下用戶中,步驟以下。
    • 線上uid查詢線上user庫user_auth表獲取用戶source=26的unionid和openid;
       
    • 在線下uid的user庫user_auth表添加上述source=26的記錄。
       
    • 同時線下push庫wechat_user_map表添加相應的unionid和openid,此時測試公衆號就能通了。
       
    • 若出現openid hint/unionid hint等錯誤,則說明同步的openid/unionid有問題,須要從新線上確認同步到線下。
       
  • 報錯「用戶未受權」web

    • 緣由:在線下測試時,因爲操做不規範,常常會出現「用戶未受權」的狀況。以下錯誤展現,查詢dbwww58com_user庫 user_auth表,發現不存在對應小程序端的uid,即日誌source=103,但庫source=108 ,兩個source對不上。
       
       
    • 解決:將user_auth同步線上source=103便可。
  • formid錯誤彙總小程序

    • 測微信服務通知時,常常出現formid如下錯誤提示。
    • formid過時(有效期7d)&收集格式錯誤致使(格式爲時間戳/字母+數字組成的32位)。
       
       
    • 當前用戶沒有formid致使。
       
    • formid已使用致使,主要是同一時間可能多個用戶收集formid,從而造成的formid可能同樣。
       
       
    • 相應form錯誤碼說明以下:
       
    • 明確每一個小程序收集的formId,只能用於對應的小程序,也只能用於對應的uid。
       
    • 目前發服務通知時,爲防止用戶下發失敗,會重複調用formId接口3次,若3次下發都失敗,則以公衆號的形式下發服務通知(目前下發成功率達到98%)。
  • 消息模板跳轉連接錯誤後端

    • 出現這種錯誤,首先須要確認url是否解析成小程序可跳轉的連接;若已解析,則是小程序這個頁面還沒上線致使微信檢索不到此連接致使。
       
    • page路徑配置錯誤,重配便可。
       

工具篇

爲了方便小程序測試,已開發了入口構造工具&小程序碼測試工具。api

  • 入口構造工具緩存

    • 用於m頁,以及小程序url頁面入口跳轉,若測渠道埋點,可額外添加參數值channel;
    • 填入url參數格式:pages/webview/webview?url=https:xxxxx
       
  • 小程序碼測試工具服務器

    • 開發過程當中,涉及到掃描小程序碼會跳轉到線上版小程序,致使測試過程沒法檢測掃碼跳轉是否正確。如【首頁改版V2-商品詳情頁小浮層】若直接識別小程序,則落地頁爲線上版小程序而不是相應的開發/測試版本,致使沒調用到「商品詳情頁浮層」接口productDetailLayer
       
    • 此工具主要是方便經過掃碼跳轉相應的版本,檢查未上線時參數是否正確。 -【查看二維碼】掃碼查看相應的連接參數;
    • 【打開二維碼】掃碼跳轉相應的版本頁面;
    • 【測渠道埋點】掃碼分享獲取到相應的渠道參數;
相關文章
相關標籤/搜索