有讚的深度需求功能測試

轉自:https://tech.youzan.com/you-zan-de-shen-du-xu-qiu-gong-neng-ce-shi/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io前端

 

序:在《有贊.測試團隊介紹(一)》曾經提到過,咱們在測試需求項目時,會把需求逐級拆解,直到最小粒度。而後,各業務線的測試小夥伴把任務領走進行細化,同時,肯定一位主測分來主導複雜項目的測試工做。 
       在面試過程當中,不少小夥伴也會說,咱們會根據需求所描述的功能,進行測試。那做爲一位應聘者,如何才能把本身以前工做的能力展現給你的面試官呢。 
       隨着有贊SOA服務化的深刻推動,系統拓撲結構愈來愈複雜。咱們也在不斷提高測試小夥伴的測試能力及問題思考的能力。 
       咱們的平常測試,通常須要考慮需求功能測試、性能測試、異常測試、安全測試。面試

1、熟悉技術方案

       有贊如今沒有純粹的測試工程師,不管是經過閱讀技術方案文檔、或是跟開發 Face to Face 溝通技術方案。從中,測試同窗須要瞭解一下信息:小程序

  • 當前需求,涉及哪些應用的改動,或者個人業務須要改動哪些應用;
  • 瞭解每一個應用在全站系統拓撲結構的節點位置;
  • 個人應用,調用其餘應用接口,是強依賴仍是弱依賴;
  • 個人應用,所提供的服務,是強依賴仍是弱依賴;
  • 有些功能實現,是否有設計模式,仍是硬編碼;
  • 新老系統的兼容性、App新老版本兼容、不一樣手機版本的兼容性;
  • 技術方案中的Db變動方案、數據遷移方案、及T+1覈對方案;
  • 是否使用緩存,及緩存數據如何保持一致的;
  • 異常狀況下的健壯性,技術方案中是如何實現的;

2、測試方案設計

       在充分理解需求及技術方案後,從橫向角度,我通常把功能測試三個部分。後端

2.1 人機交互

       最基本的人與設備間交互。例如小程序設置、在微信上打開有贊商品下單。微信小程序

2.1.1 前端測試部分

       人機交互測試,有很大工做在頁面測試。頁面測試用例要寫得儘量詳盡,不然,測試時,可能會有遺漏,特別是須要開發自測的用例場景。咱們結合有贊前端框架及業務,編寫《功能測試.頁面測試.基本篇》。設計模式

       在實際工做,還須要有實際策略。如今微信小程序將註冊開放給了開發者,在有贊也能夠直接註冊小程序。其中能夠設置類目,這是類目怎麼測。
       按照微信的要求,不一樣類目要求提交的證書各不相同。有些類目,能夠選擇證書類型(如圖),有些類目是固定證書,證書也有單個和多個的要求。設計測試方案時,咱們深刻的開發肯定,類目信息是前端硬編碼,仍是存在有贊後端,或者是從微信端直接讀取。緩存

  • 如果硬編碼,須要逐個測試小程序200+類目的證書是否正確。
  • 如果存在有贊後臺,前端經過設計模式實現,咱們只須要驗證設計模式無誤,在check後端配置數據正確便可。
  • 如果實時讀取微信,前端經過設計模式實現,咱們只須要驗證設計模式無誤。
  • 對於讀取有贊後臺,風險是微信修改了類目證件要求,兩方數據如何保持一致。
  • 對於實時讀取微信,若微信訪問失敗,系統提示文案如何肯定;也要問下本身,微信的全部類目,我都要支持嗎,個人資質是否容許。

2.1.2 後臺測試部分

       以你們比較熟悉的交易下單扣庫存爲例。咱們買了某件商品,系統後臺就須要扣減商品庫存或者鎖定庫存。
       正常交易,咱們買幾件商品,從對應的庫存中,扣掉幾件就能夠了。早期,由於是兩個系統,兩個事務,測試須要考慮如何保證事務的一致性。咱們須要考慮:安全

  • 正常正向交易場景,是否可以正常扣減正確。
  • 正常正向交易場景,商品扣減失敗,交易建立失敗,商品須要回補。
  • 當商品扣減成功後,由於交易異常,回補前,商家編輯了庫存,如何回補。
  • 交易調用庫存中心扣減超時了,這時前端會提醒用戶系統異常,請重試;對於超時,庫存中心並沒有感知,它有可能已經把庫存給扣減成功了。那麼,方案中交易是如何告知庫存中心,這時通常採用異步消息。
  • 下單過程當中,出現請重試,交易系統是新建一個交易單仍是複用交易單。
  • 若是複用交易單,對於庫存回補,異步回補庫存消息到達可能會在本次扣減成功後到達,系統如何確保不會錯誤回補。
  • 交易做爲消息的推送者,若是消息推送失敗,是否會重試;即要求消息不能丟失,又要確保回補不會由於消息生產者重試,致使屢次回補。

       因此,有贊測試小夥伴,須要對需求、系統實現方案很是瞭解,掌握系統拓撲結構,掌握本身Owner的業務及其周邊業務。前端框架

2.2 任務

       不論是在傳統行業仍是互聯網行業,老是會存在任務或者是腳本。有輪詢從存儲介質獲取數據處理,也有接受消息中心處理的任務。 
       舉個業務場景,在有贊系統購買會員卡。商家會建立一個會員卡商品,用戶購買該商品,而後系統把會員卡發放到買家的帳戶裏。交易下單與發放會員卡,經過消息中心將業務鏈接在一塊兒,會員中心繫統監聽交易支付成功消息,而後放卡。
       咱們考慮哪些內容:微信

  • 正常正向業務,我買了某張會員卡商品,我是否是獲得這張會員卡。
  • 會員中心接收到消息中心推送的消息後,是先存儲,再處理,直接消費掉消息,或者是直接處理,處理成功再消費消息。
  • 對於先存儲,再處理,至關於須要在啓動一個任務,消費落地在本地的數據。
  • 對於直接處理,處理失敗,須要拋會一個異常或者false;讓消息中心從新推送。
  • 存在從新推送,那麼,執行任務是否符合冪等。
  • 該Topic消息失敗重試,是否會有降級策略;例如ABC三個消息,A處理失敗,A就不能當即重發,等待5秒,把時間片流程BC;沒失敗一次時間片+5秒。
  • 消息重試N次,會被拋棄,一旦拋棄,是否可能出現資損;就該場景,我買了會員卡,是必須發到用戶手裏。因此須要有T+1覈對。
  • T+1覈對,有業務方或者數據中心,交易日次日,將會員卡商品的交易明細與會員卡中心髮卡明細作覈對,對差別數據進行補全或作其餘方面的處理。
  • 會員中心做爲事件處理方,若是須要多系統協做,須要作到冪等及事務一致性,或者實現斷點續傳能力;

       咱們採用儘量完備的測試質量規範,儘量的提升系統的穩定性與可靠性。

2.3 系統回調

       系統回調,也是系統弱依賴的一種表現形式。A系統須要B系統,可是B系統又不能馬上給出成功與否的答覆,就會採用回調來實現。例如第三方支付、保險公司出單、購買理財產品交易。        這種場景,依賴方發送Request,執行方會回覆說請求已收到。待執行方處理完成後,回覆給說執行成功或者失敗。就比如我在微信上跟某A說,你幫我辦件事,他說好的;某A處理完成後,微信上跟我說,我處理完了,處理結果是這樣的。

  • 咱們須要跟執行方肯定雙方系統冪等驗證的條件。
  • 若是涉及跨防火牆通信,須要考慮驗證信息傳輸的正確性及合法性。
  • 對於回調後,若是存在複雜的業務處理,是否是先存儲回調結果,再處理。
  • 對於某些特殊業務,還須要有T+1覈對,保證雙方系統的一致性。
  • 須要關注對方系統的性能,是否可以支撐相關業務的能力。
  • 同時,考慮其餘特殊場景。舉個例子,交易下單支付後,請求第三方支付,可能支付成功了,可是一直沒有回調,這時交易超時關閉訂單,這時回調了,這時系統如何處理。

2.4 系統對象生命週期

       咱們在作測試方案設計,處理前面的三點,還會從對象生命週期考慮設計方案。

  • 咱們須要知道,每一個系統對象存在多少個狀態,好比交易訂單(如上圖)。
  • 每一個狀態間是否能夠正向扭轉,逆向扭轉,扭轉條件是什麼。
  • 例如,待支付狀態,若是買單下單,不支付走了;這個單子不能一直是待支付,因此係統須要可以發現長期未支付,直接關閉;同時須要支持,買家關閉等。
  • 關閉訂單時,系統能直接把單子關閉嗎?它有沒有可能已支付,只是支付回調尚未回來。
  • 若是由於系統設計,支付未回調以前,被關閉了;回調回來後,系統該怎麼作,確保不會出現買家錢付了,單子被關閉了。
  • 對象不一樣狀態的相關方有哪些,每一個相關方都有哪些權限或者系統提示文檔如何等。

       本次分享僅寫了咱們平常工做中在需求功能測試方面的一部分,不一樣的需求所須要考慮的點各不相同,本文只是不多一部分,留意待續。同時,您在閱讀過程當中,如認爲有待交流溝通。歡迎聯繫本人郵箱lvguoyong@youzan.com。

關於有贊及加入有贊

關於有贊 https://www.youzan.com/intro/about 加入咱們 https://job.youzan.com/

同時,您也能夠直接把簡歷投遞到 job@youzan.com   lvguoyong@youzan.com

知識共享許可協議 
如無特殊說明,本文版權歸 本文做者及有贊技術團隊 全部,採用 署名-非商業性使用 4.0 國際許可協議 進行許可。
轉載請註明:來自有贊技術團隊博客 http://tech.youzan.com/you-zan-de-shen-du-xu-qiu-gong-neng-ce-shi/

歡迎關注有贊技術團隊微信公衆帳號瞭解更多,保持聯繫

相關文章
相關標籤/搜索