618前端競品分析研究(互動篇)

2021-10-08 14:21:34 字數 2632 閱讀 8916

在互動中經常需要維護大量的狀態,對這些狀態進行測試驗證成本較高,尤其是當有功能變動需要回歸測試的時候。為了降低開發測試的成本,在這方面使用強化學習模擬使用者行為,在兩個方面提效:

什麼是強化學習呢?

強化學習是機器學習的乙個領域,它強調如何基於環境行動,獲取最大化的預期利益。強化學習非常適用於近幾年比較流行的電商互動機制:做任務/做遊戲 -> 得到不同的獎勵值 -> 最終目標大獎,在這型別的互動遊戲中,獎勵是可預期的,使用者的目標是使得自己的獎勵最大化。這個過程可以抽象為馬爾科夫決策模型:玩家(agent)通過不同的互動行為(action),改變遊戲(environment)的狀態(state),反饋給玩家不同的獎勵 (reward);這個過程不斷迴圈迭代, 玩家的最終目標是獎勵最大化。

接下來,我們使用比較簡單的q-learning,來實現類似的智慧型化測試目的。

對於不同狀態下,q-learning的q(s,a)表示在某乙個時刻的s狀態下,採取動作a可以得到的收益期望,演算法的主要思想是將state和ation構建一張q-table來儲存q值,根據q值來選取能夠獲得最大收益的動作。q值的公式計算如下:

其中,s表示state,a表示action,α為學習率,γ為衰減率,r表示action能帶來的收益。

這個公式表示當前狀態的q值由「記憶中」的利益(max q[s』,a])和當前利益(r)結合形成。衰減率γ越高,「記憶中」的利益影響越大;學習率α越大,當前利益影響越大。q-learning的目標是通過不斷訓練,最後得到乙個能拿到最多獎勵的最優動作序列。

在賽車遊戲中,玩家的互動行為包含購買車廂、合成車廂、做任務獲得金幣(為了方便理解,此處簡化為乙個任務);玩家從初始化狀態開始,通過重複「action -> 更新state」的過程,以下的偽**簡單的說明我們怎麼得到乙個盡量完美的q**:

// action: [ 購買車廂,合成車廂,做任務獲得金幣 ]

// state: 包含等級、擁有車廂等級、剩餘金幣表示

初始化 q = {}

while q未收斂:

初始化遊戲狀態state

while 賽車沒有達到50級:

使用策略π,獲得動作a = π(s)

使用動作a,獲得新的遊戲狀態state

更新q,q[s,a] ← (1-α)*q[s,a] + α*(r(s,a) + γ* max q[s',a])

更新狀態state

由上面q-learning的訓練過程,我們可以得到一系列的中間態介面作為mock資料,可以很快的回溯到特定狀態進行測試,這一點在回歸測試的時候十分有用。但是僅僅只是自動mock資料對效率提公升還是有限,在618互動中,友商的互動團隊結合puppeteer對整個流程進行自動化測試。puppeteer是chrome團隊推出的乙個工具引擎,提供了一系列的api控制chrome,可以自動提交表單、鍵盤輸入、攔截修改請求、儲存ui快照等。

結合puppeteer的一系列操作邏輯,部分是可以沉澱成為乙個通用的測試環境的,比如:

在互動中,彈窗一直是視覺表現的乙個重要組成部分,對ui有比較強的定製需求。

友商的思路是將所有的邏輯盡可能的沉澱。對於電商場景來說,彈窗的業務邏輯是可窮舉、可固化的,而互動場景之下,ui定製化需求很高,所以將ui層抽離,僅對可復用的邏輯進行固化,以dsl + runtime的機制動態下發。

結合這一套邏輯層模型,表達層/ui層也可以相應的結構化。根據專案 > 場景 > 圖層的維度,靜態配置和動態繫結相結合,搭配對應的配置平台就可以實現動態下發。

對於智慧型化測試,80%的流程其實成本是相對較低的,從測試用例的生成到puppeteer自動化測試,都是可以參考學習的,影象對比的部分需要較多訓練,對於固化的功能可以進行探索,如果是新的模式價效比較低。

對於彈窗規模化,部門內部的做法是將彈窗沉澱成乙個通用的元件,只包含通用的相容邏輯,包括顯示/隱藏、彈窗出現底層禁止滾動、多彈窗層級問題等。對於ui和其他業務邏輯,復用性較低,所以每次都是重寫。這種做法盡可能地保持了元件的通用性,在會場線比較適用,因為會場線的彈窗一般不包含業務邏輯(如**、pk等),但是對於互動線來說,復用的內容相較於彈窗的「重量」來說顯得有些微不足道。 友商的沉澱思路前提在於上游介面的邏輯需要可復用,上游邏輯如果無法固定下來,前端的互動邏輯也較難固化。總體來說,友商在互動方面的沉澱思路大部分是從開發提效出發,主要供給內部使用;京東內部已有類似的互動提效方案終極目標是盈利,如京喜的社交魔方平台和最近正在成型的滿天星平台,所以沉澱方式都是以成套的h5。

[1] 生產力再提速,618互動專案進化之路

[2] 機器學習相關教程 - 莫煩

[3] puppeteer docs

Linphone 架構分析研究

整個軟體分為兩層,上層為使用者介面前端 user inte ce frontends 下層為linphone 核心引擎 linphone core engine 功能模組說明 1 mediastreamer22 ortp2 ortp 是乙個rtp 庫。為基於rtp 協議的 流傳輸提供支援。通過med...

初識競品分析

競品分析,字面意思,既對競爭產品的分析。為什麼要進行競品分析?知己知彼 他山之石可以攻玉 等等,不多列舉。做競品分析最多的也最有益的人當然是產品經理,競品分析應該貫徹在整個產品的階段,主要從下面兩個方向來分析。產品規劃決策階段 產品已經有了基本的定位,要去解決什麼問題或者為使用者提供什麼服務的基礎上...

1 4競品分析

1 定義 競品分析就是系統的對競爭對手的優勢和劣勢進行分析評價 是長時間定期持續積累不斷挖掘的過程。目的 a 幫助自身產品實現市場定位。b 為自身產品設計提供功能 可用性 關鍵技術等方面的參考。c 提高自身產品的差異化程度。2 為什麼要做競品分析 a 為企業制定行業產品戰略規劃 產品各條子產品線性布...