天天看點

京東零售營銷H5測試綜述

作者:閃念基因

本文從營銷頻道H5業務展開,講述了H5測試的通用測試技巧與實作方案,對測試工作和經驗進行總結提煉。通過本文可以了解京東内常用研發架構的測試方法和實踐效果。

【本文目錄】

  • 了解H5業務
  • 常用測試手段
  • 針對京東現有H5常用架構和實作方案的測試
  • 痛點和不足

背景

H5頁面是營銷域最常見的一種營運形式,業務通過H5來提供服務,可以滿足使用者對于便捷、高效和低成本的需求。H5頁面是業務直面使用者的端點,其品質保證工作顯得尤為重要。各業務的功能實作具有通用性,相應也有共性的測試方法,本文進行總結和分享。

1 了解H5業務

多角度認識H5業務,了解功能的實作鍊路,明确各個節點是由哪一方如何實作,一方面可以打開設計用例的思路;另一方面在遇到問題時,可以快速定位,精确回報。

【1.1 前端展示】

1.1.1 兩種開發技術

提及前端,需要首先介紹兩種開發技術“原生開發”、“H5開發”:

原生應用開發:是在 Android、iOS 等移動平台上利用官方提供的開發語言、開發類庫、開發工具進行 App 開發。是以原生架構的 App 在應用性能上和互動體驗上應該是最好的,比如APP中的“直播”、“登入”以及提醒元件等是純原生開發的子產品。

H5開發:是指利用 Web 技術(HTML5、JavaScript、CSS)進行的 App 開發。H5 開發的好處是可以跨平台,編寫的代碼可以同時在 Android、iOS、Windows 上進行運作。目前APP内的主要活動比如“百億補貼”、“便宜包郵”以及“秒殺”等均為H5開發實作。

兩種開發實作的特點對比如下:

H5 原生
開發成本 低:一套代碼,跨平台使用 高:同樣的邏輯、界面要寫兩套
開發周期 短:量級低,直接添加功能釋出 長:更新疊代緩慢,上架時需要等待官方稽核通過
調用底層功能 複雜:不能直接調用,需要橋接等其他操作 簡單:更加貼近底層,對于調取底層功能也是很容易
性能體驗 有局限性:H5 移動應用不能直接通路裝置硬體和離線存儲 更優:直接運作在裝置作業系統上,通常性能更優,響應更快
部署更新 快:隻需更新伺服器上的代碼,使用者無需下載下傳即可享受最新功能 慢:需要通過應用商店進行釋出和更新,更新可能需要使用者下載下傳新版本
營銷 較為靈活:可以通過網站和社交媒體等管道更容易地推廣 限制較多:通過應用商店進行推廣和分發,但需要遵守商店的政策和指南

1.1.2 容器角度分層

以春晚頁面為例,從容器的角度,一個H5頁面從頂層到底層的層級展示如下圖:

京東零售營銷H5測試綜述

其中通天塔H5 fragment容器重寫了JDHybrid的CommonMFragment,X5WebView容器重寫了x5webview,支援自行決定使用系統還是x5。圖中涉及4方,分别是通天塔團隊、JDHybrid團隊、JSSDK和H5具體業務方。其中通天塔團隊、JDHybrid團隊是原生開發的架構,屬于容器側,JSSDK和H5具體業務方屬于H5開發,各自作用可概述如下:

•JDHybrid:提供環境裝置資訊、導航欄、頁面路由、頁面事件、通用JS功能、性能優化

•通天塔:提供自定義的導航欄的邏輯,包括UI和JS橋;其他複用webview容器的能力

•JSSDK:統一API,調用用戶端協定;同時提供性能異常上報、常用函數等

•H5前端:接入JSSDK,展示頁面内容,實作前端互動等業務邏輯

1.1.3 具體功能實作

具體功能的實作,往往涉及多個功能提供方,大體可分兩類:

•能力由JDHybrid提供的

H5通過JSSDK調JDHybrid封裝的方法, JDHybrid調自身邏輯

例如:擷取裝置資訊中的uuid

JDHybrid提供了擷取裝置基礎資訊的JS橋,按照約定的規則入參,可以即可獲得uuid等資訊。但原生底層API,但不再對外暴露,而是由JSSDK統一維護,京東電器的H5代碼隻需要調用JSSDK即可

•能力由其他團隊(通天塔或其他元件)提供的

H5調JS代碼,經過webview核心 ,核心調用 JDHybrid封裝的統一方法, JDHybrid調通天塔(或其他插件)

例如:打開位址清單,位址清單是位址元件提供的能力,JDHybrid提供了路由方法可以通過測試demo簡單判斷是否具體業務問題。

【1.2 内容資料】

能為多個業務提供同一類功能的應用,被抽象為各個“上遊”。營銷内容從配置到呈現給使用者,需要多重業務邏輯處理,除本業務服務端進行精細化業務處理,還需要與各個上遊進行互動。一個業務整體的功能實作,與各常見上遊之間調用的鍊路如下圖所示:

京東零售營銷H5測試綜述

1.2.1 資料來源

商品資訊、優惠券、紅包和利益點,是一個H5頁面常見的元素,其底層來源各不相同:

頁面元素 底層來源 舉例
商品資訊 投放商品組
京東零售營銷H5測試綜述
優惠券資訊 券中台
京東零售營銷H5測試綜述
紅包資訊 紅包中台
京東零售營銷H5測試綜述
利益點 業務CMS
京東零售營銷H5測試綜述

1.2.2 資料政策

通常,業務方不會與底層資料直接互動,而是通過多個上遊,實作資料的千人千面效果,例如:

•算法:根據業務配置政策,将商品組資訊整合之後提供給具體業務

•UMC:基于使用者資料,針對不同人群,制定發放不同權益類型的規則

•互動工坊:按照活動次元,設定任務和獎品的組合規則

關于内容資料的驗證,測試關鍵在于所配即所得,不同的使用者畫像獲得的資料要符合業務預期。

2 常用測試手段

【2.1 測服務端】

2.1.1 檢視日志

•平台:泰山-日志管理

•适用場景:涉及上下遊邏輯,且不能在前端直接觀察

•關注點:

通過關鍵字,篩選各個應用的資訊,驗證服務端對上遊的入參、上遊對服務端的傳回是否符合預期

2.1.2 特殊場景

•平台:deeptest-mock管理

•适用場景:對于一些異常場景或者邊界值,營銷活動或素材無法精準滿足場景要求,

•關注點:

可在平台上錄入上遊接口資訊,通過mock上遊傳回,驗證業務服務端的處理邏輯

2.1.3 JMQ驗證

•平台:泰山-JMQ

•适用場景:應用服務之間通過MQ來通信的場景

•關注點:開啟消費軌迹,驗證發送給其他應用服務的MQ資訊時機是否準确,内容是否正确

2.1.4 緩存查詢

•平台:泰山-JIMDB

•适用場景:需求改動到緩存邏輯,尤其針對長期互動類

•關注點:緩存的寫入時間是否及時、有效期是否合理、緩存内容正确性

2.1.5 直接調用

•平台:deeptest-用例管理

•适用場景:

前置操作較長(如需要先展示再領取)、條件苛刻(如需要多重身份打标)、門檻值較高需要批量操作等

•關注點:接口傳回同入參預期,邊界邏輯正确處理

【2.2 測前端】

2.2.1 功能測試

功能 驗證點
使用者行為

點選

單次點選:點選事件是否被響應、多層頁面是否會出現點選穿透多次點選:頁面在等待資料傳回過程中,後續點選行為是否會出現業務邏輯錯誤

滑動

滑動速度:不同速度滑動,業務功能需保持一緻,快速滑動資料加載不能太慢 滑動互動:是否支援左右橫滑、滑動時是否響應點選操作

重新整理

主動重新整理:如下拉重新整理、點選按鈕重新整理,關注頁面加載行為與接口請求被動重新整理:業務特殊邏輯,關注觸發重新整理時機與互動

系統互動

傳回:一級頁面傳回、二級頁面傳回,關注傳回層級和曆史浏覽記錄 輸入:特殊内容、格式、輸入面闆喚起與隐藏 退前背景:頁面行為如倒計時、動畫效果、接口請求等是否被中斷

多媒體相關

圖檔

圖檔展示放大、還原、切換等操作支援

音頻和視訊

不同域名下的資源加載情況 互動體驗:播放、停止、退出

頁面請求 通過檢視、修改HTTP、HTTPS、Websocket的請求、響應,驗證前端入參、各種資料展示邏輯是否符合預期 接口請求 接口傳回過程中動畫效果 請求時機、接口降級、接口異常前端兜底

資源請求

請求是否重複 翻頁、分頁場景下請求資料正确性

登入

未登入使用者路徑

登入态打通 不同使用者身份判定 特殊賬号的昵稱、頭像顯示 使用微信或其他站外資訊登入

彈框

彈框觸發時機

彈框内容的正确性 彈框的素材、動效 彈框關閉的觸發條件

網絡環境 不同網絡環境:WiFi、3G/4G/5G 網絡環境切換,使用者是否有感覺 弱網條件下使用者體驗 無網兜底邏輯
兜底測試 針對關鍵字段,驗證“不下發”、下發為空、異常值等驗證,用于規避由于異常下發導緻的“開天窗”、掉樓等使用者可感覺的問題

2.2.2 相容測試

覆寫原則:

•Android、iOS不同系統

•兼顧不同螢幕分辨率

•如涉及到站外投放,需考慮到容器版本微信版本相容,不同原生浏覽器

•系統核心、X5核心

平台:

目前已有一些自動化手段,如Airtest、活動自動化測試等以插件形式內建在賽博雲測平台

2.2.3 埋點測試

關注點:埋點事件名稱、上報時機、關鍵字段是否與埋點方案一緻

平台:track

2.2.4 與原生架構結合

功能 驗證點
APP版本 需要關注元件/架構支援的最低版本,進行版本控制,邊界測試 ·需要區分原生用戶端,iOS、Android、鴻蒙進行功能驗證
容錯手段 APP改動需要重新釋出,已經發版則無法使用,是以要注意驗證功能開關的邏輯、配置 ·完善降級方式,如根據URL參數降級某些功能
核心相容 系統核心:此處可簡單了解為浏覽器核心,也稱渲染引擎或者排版引擎,主要對網頁的文法進行解釋,并且進行渲染網頁,将網頁的代碼轉換為看得到的頁面,目前主流廠商多使用Chromium。·X5核心:最初是由騰訊基于開源Webkit深度優化而來。基于X5核心,騰訊提供的TBS服務,整合騰訊底層浏覽技術和騰訊平台資源及能力,提供整體浏覽服務解決方案。是以京東APP内,會在APP安裝好之後,下載下傳X5核心,供H5使用

注意:

1.X5核心需要為京東APP開啟存儲權限,才會下載下傳

2.X5核心下載下傳好之後,需重新開機APP才可以使用

3.快速定位問題方法:使用手機自帶浏覽器,通路H5頁面,如果和APP内表現不一緻,可縮小問題範圍

【2.3 線上追蹤】

需求上線之後,還需要在真實使用者場景下,對需求的功能、性能和體驗進行監控、分析和驗證。目前公司已有的追蹤平台和手段陳列如下:

平台 關注點
使用者之聲 真實使用者回報,側重使用者體驗
行雲-接口監控 監控接口的業務邏輯處理,側重業務服務的連通性、可用性
泰山-雷達大屏 可以全局視角觀察系統服務健康狀态,側重全鍊路服務性能
UIπ-啄木鳥 檢測H5活動頁各類問題,側重前端展示
燭龍 可提供多元度的使用者行為資訊,對排查使用者問題有助益

3 針對京東現有H5常用架構和實作方案的測試

【3.1 釋出】

3.1.1 ihub

大前端共建平台,基于iPaaS标準建設,面向開發者提供包含h5、iOS、安卓等端的跨端樓層開發管理能力。賦能開發者跨業務線、跨系統(符合iPaaS标準)的開發内容複用、檢索及二次開發等功能

驗證點:

•位置:樓層位于首屏,非首屏等,驗證是否有異常,比如資料加載,樓層渲染等

•數量:一個頁面中是否使用了多個共模組化闆,是否有沖突

•共存:共模組化闆與通天塔的自有模闆共存時是否有異常

•關聯:共模組化闆關聯錨點導航

目前已經沉澱出針對大促會場的自動化測試方法

3.1.2 通天塔可視化平台

是活動/頻道頁面可視化搭建平台,支援一次搭建輸出H5、原生、PC等多端頁面,供産研、采銷營運、商家等使用者免費使用

驗證點:可視化配置、服務端儲存與下發、前端展示正常,關注新增功能點對老功能的相容

【3.2 性能優化】

使用者能夠正常通路頁面,頁面的内容才能産生價值,最大程度減少頁面的加載時間,進而降低跳失率,就顯得尤為重要。目前公司内部已有一些較為成熟的性能優化工具,會涉及到工具接入和效果的測試驗證工作。

3.2.1 頁面加載過程

京東零售營銷H5測試綜述

一個H5頁面的加載過程可簡單歸納為以上幾個步驟,性能優化手段,主要是從提前請求時機、減少資源請求等方面入手。

3.2.2 現有優化手段

驗證原則:接入生效、接入後對業務邏輯無影響。

3.2.2.1 JDHybrid離線包

原理:

把首屏的一些靜态資源(如img、js、css、html等)打包提前加載到本地磁盤,當加載頁面時直接從本地磁盤(或記憶體)擷取資源加載

驗證方法:

1)日志:借助JDHybrid團隊提供的測試工具(Xconsole、xdog等),确認對應資源使用離線資源

2)抓包:H5在使用該資源時,不發起網絡請求

3)hybrid快速驗證工具:

京東零售營銷H5測試綜述

使用業務:

通天塔會場、跨晚、春晚等

3.2.2.2 通天塔-資料直出

原理:前端直接從HTML中擷取展示資料, 無需發起首屏接口請求。

驗證方法:抓包觀察,接入的樓層不發起網絡請求

使用業務:部分通天塔會場、領券中心等

3.2.2.3 通天塔-SSR

原理:服務端渲染網頁内容,并且将渲染後的HTML發送給浏覽器,浏覽器直接顯示。資料直出和SSR差別在于直接加載一整個html,還是先頁面、 後樓層順序的加載頁面片。

驗證方法:禁用JS,頁面仍可加載

使用業務:百億補貼、便宜包郵等

3.2.3 優化效果驗證

3.2.3.1 同業比對性能測試工具

錄制使用者操作流程,通過自動化拆幀的方式,從使用者視角對場景進行耗時采集和分析。控制變量的情況下可與競品進行性能對比與分析

3.2.3.2 燭龍

通過侵入式埋點方式,實作了對APP應用的全方位監控,實時采集使用者的性能異常資料,快速精準定位問題,發現性能瓶頸,減少使用者流失,提升使用者體驗

【3.3 風控】

H5常用的風控手段,集中在反爬和使用者身份兩大方向,驗證的關注點在于“接入的正确性”和“政策的有效性”。

3.3.1 價格反爬接口三件套

•神盾處置

驗證點:

登入加黑白名單,請求接口,可觸發處置,網關傳回605

在處置頁放棄驗證,可傳回上一頁,不能循環進入處置頁面

在處置頁成功驗證,處置頁面消失,H5頁面重新加載

•神盾接口加強

驗證點:

入參的h5st正常,驗簽面闆傳回結果200,soa接口正常下發資料,前台頁面正常展示

mock入參中異常,驗簽面闆傳回非200,soa接口在網關側攔截(下發403或者mock資料),前台頁面走業務兜底邏輯

•裝置指紋

驗證點:body中傳參正确即可

3.3.2 RCS風控

驗證點:根據不同畫像人群的配置政策,驗證對應pin觸發業務處理邏輯是否符合預期

4 痛點和不足

1. 元件測試

元件的代碼改動偏底層,測試過程相對黑盒,劃定測試範圍時,往往隻能是重複性回歸,因為更加底層的邏輯測不到,如場景無法創造等。如何提高可測性、增加測試精準性,是需要進一步解決的問題。

2. 相容測試

目前裝置機型較多,落實到相容測試,其實是單一行為的重複,靠人工執行耗時長,且覆寫範圍有限。但目前缺乏可靠的自動化工具,可以替代相容驗證,同時降低腳本的維護成本。

3. 測試素材

涉及到權益相關的需求,依賴真實素材,可能會阻礙測試進度。通過mock的方式前提是有一方作保證,或内容已驗證,風險較大。

4. 兜底測試

大型互動中,調用接口較多,且互動複雜,但對健壯性要求較高,兜底工作量較大。目前的兜底自動化工具,還需要豐富支援的場景。

作者:技術品質 丁嘉瑩

來源-微信公衆号:京東零售技術

出處:https://mp.weixin.qq.com/s/AlwRQriRqVfGmWC8sgRq7w

繼續閱讀