天天看點

「測試」cookie 時效無限延長方案

1、痛點(*)

自動化測試有2種形式,接口自動化和UI自動化。而UI自動化經常會被登入節點堵塞,例如驗證碼、圖形、滑塊等,盡管有些方式可以識别圖形和定位滑塊位置,但成功率都不高,無法真正意義上實作自動化執行;而http接口的自動化測試前置如果依賴cookie,也無法實作自動化執行。

a、怎麼樣才能繞過登入,實作從前端到後端的自動化執行

b、面對複雜的登入驗證無法直接自動擷取到cookie,需要人工操作登入,而cookie又有時效,不能長久使用

本方案将有效解決以上問題,在面對複雜的登入驗證及有cookie時效的模式下,可以将短暫時效的cookie改為長久有效,真正意義上實作UI自動化和依賴cookie鑒權的接口自動化。

2、什麼是cookie

cookie稱之為會話跟蹤技術,是一個很小的文本檔案,是浏覽器儲存在使用者的機器上的。Cookie是純文字,沒有可執行代碼。儲存一些伺服器需要的資訊,每次請求站點,會發送相應的cookie,這些cookie可以用來辨識使用者身份資訊等作用

3、過期時間檢視方式

打開浏覽器,并轉到您希望檢視 cookie 的網站。

按 F12 鍵打開浏覽器的開發者工具。

在開發者工具的“調試工具”頁籤中,單擊“存儲”按鈕。

在左側的“網站資料”清單中,單擊“Cookies”。

在右側的“值”清單中,檢視每個 cookie 的“Expires”或“Max-Age”字段。這些字段顯示 cookie 的過期時間。

4、cookie機制

用戶端發送一個請求到伺服器 --》 伺服器發送一個HttpResponse響應到用戶端,其中包含Set-Cookie的頭部 --》 用戶端儲存cookie,之後向伺服器發送請求時,HttpRequest請求中會包含一個Cookie的頭部 --》伺服器傳回響應資料

「測試」cookie 時效無限延長方案

時效限制:每個cookie都有時效,預設的有效期是,會話級别:就是當浏覽器關閉,那麼cookie立即銷毀,但是我們也可以在存儲的時候手動設定cookie的過期時間

5、cookie時效無限延長方案(*)

5-1、前提

a. 登入節點有驗證機制,例如短信驗證碼、圖形識别、滑塊等校驗;

b. cookie有時效,超過時效則需要重新登入;

c. 同一個賬号不會在多個平台退出或登入

5-2、實作原理

此方案是通過一個微服務提供接口,供自動化調用,通過傳遞賬号,傳回永久cookie,将此步嵌入到自動化流程中,替代登入并擷取cookie的節點,并将cookie的時效永久延長,并不會時效,以保證後續自動化流程永久循環正常執行。

5-3、核心流程步驟

步驟1:先手工登入,從header中擷取cookie,将此cookie和時效值儲存在微服務平台(一個賬号隻需一次手工登入,後續永久不需要操作登入)。

步驟2:微服務平台将此賬号、cookie、時效值、關聯的業務接口進行持久化存儲,并跟進時效值計算出輪詢時長,并觸發輪詢任務執行,任務中将攜帶此cookie去調用業務接口,保持長會話,并hold程序等待,在輪詢時長到達時,繼續執行任務執行,再次hold程序等待,持續循環,以保證次cookie的會話永久保持住。

步驟3:自動化任務執行前會調用微服務接口,通過賬号擷取到永久cookie,攜帶此cookie執行後續自動化任務。

「測試」cookie 時效無限延長方案

6、落地案例

目前通過下方方案,已實作了cookie一次配置,長久使用的目的。

「測試」cookie 時效無限延長方案

實踐效果對比

之前:ui自動化和http接口自動化執行時經常出現cookie過期,需要手工重新登入,并在自動化平台上更新cookie,比較繁瑣,且影響淩晨自動執行成功率

現在:使用上面方案後,隻需手工在cookie微服務平台上配置一次cookie,以後不再需要更新cookie

「測試」cookie 時效無限延長方案

文章來源:劉清潔_京東科技_https://zhuanlan.zhihu.com/p/617611962