日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

减少联调、高效集成,试试这个工具

發(fā)布時間:2023/12/4 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 减少联调、高效集成,试试这个工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家好,我是Z哥。

最近在工作中學習到一個我覺得很有價值的小工具,在這里與大家分享一下。

這個小工具需要自己稍作開發(fā),并不存在什么第三方的現(xiàn)成工具供你使用,因為這個工具的核心關鍵是「數據」,而「數據」這個東西對于不同的項目天然是不同的。

可能有的小伙伴已經猜到了,我今天要聊的就是一個mock工具(暫且叫這個名字吧,它的能力其實不僅僅只是mock數據)。

多團隊協(xié)作中,很多功能的實現(xiàn)需要依賴于其它的子系統(tǒng)。這不但影響開發(fā)進度,還會導致測試工作開展不太順利。這個問題在涉及多團隊協(xié)作的分布式系統(tǒng)中尤其突出。

如果每個子系統(tǒng)都能夠內置一個mock工具(模塊),通過數據的自動生成,導入和導出,可以靈活地在不同環(huán)境上快速地讓系統(tǒng)run起來,哪怕自己還沒有真正地完成內部的業(yè)務邏輯代碼編寫。

可能你會覺得說,現(xiàn)在很多工具都支持根據定義的API自動生成mock數據啊,postman、apifox、yapi等等,為啥還要自己搞呢。

最大的價值在于以下幾點:

  • 這種方式支持在不同環(huán)境提供一份相同的數據(如唯一id等等),便于對相關的上下游系統(tǒng)屏蔽掉環(huán)境不同的影響。而使用上面提到的工具很難實現(xiàn)這點。

  • 導入和導出功能可以作為在沒有打通上下游系統(tǒng)之前的手動關聯(lián)上下游系統(tǒng)的一種方式。

  • 自動生成的數據可以針對多個API進行共享使用,以模擬“上下文”的感覺,讓mock這件事變得更加貼近真實,而不是很假,不管輸入的參數是什么,都只能固定返回某個數據。

  • 基于上面第3點,我們可以再通過某種語法,串聯(lián)起多個API的調用,快速驗證mock出來的數據是否符合預期。并且這個串聯(lián)調用的case可以保存下來,在真實的業(yè)務邏輯實現(xiàn)后再運行一下,快速驗證自己的真實實現(xiàn)是不是存在什么bug。相當于同時編寫了一個針對該項目定制的自動化測試工具。

  • 基于上面第4點,可以不斷地豐富case,以提高case所覆蓋的場景。這不但豐富了數據樣本,也提高了使用該工具進行自動化測試的效果。

  • 總體來看,這樣一個工具我們在實現(xiàn)的時候需要具備以下這些能力。

    • 自動生成mock數據

    • 清除數據

    • 導入數據

    • 導出數據

    • mock開關

    • mock數據的條件匹配

    • mock外部依賴數據

    下面我們一個個展開說說。

    /01??自動生成mock數據/

    自動生成mock數據是這個工具的最核心功能。但在這之前還有一件更加重要的事情要做,就是:需要提前確定對外提供的 API 契約,如此才能得到相應的輸入和輸出參數。然后我們再考慮如何生成mock數據的事情。

    當然,生成的數據必須要符合契約定義中的標準。比如,

    • 字段的格式。int32還是int64?字符串的格式等等。

    • 入參和出參的相關性,比如輸入參數中傳入的單據號,應該與輸出參數中的單據號保持一致,以體現(xiàn)輸入和輸出之間的相關性。

    • ……

    其次,生成的mock數據,需要盡可能地覆蓋更多的場景。

    另外,生成的mock數據中如果存在一些依賴于外部系統(tǒng)的唯一ID,允許傳入一個ID生成器的hook,確保生成的Mock數據中的唯一ID在指定范圍內。

    然后,生成的mock數據需要持久化到硬盤上,以提供長期使用。

    最后,可以指定生成某個API相關的mock數據,而非全部數據。

    /02??清除數據/

    可以通過清除數據,重置mock數據回到初始狀態(tài),以清理不符合當前API標準的垃圾數據。實現(xiàn)這個功能主要有兩個點:

  • 清除數據時需要考慮數據間的關聯(lián)關系,比如清除單據類數據時,也應當清除與該單據相關的明細數據。

  • 可以指定清除某個指定API的mock數據,而非全部數據。

  • /03? 導入數據/

    通過配合導入mock數據功能,快速復制出一個完全相同的mock環(huán)境。實現(xiàn)這點也有兩個點:

  • 可以導出指定API的mock數據,而非全部數據。?

  • 導出的數據建議為csv或者excel格式,便于二次編輯。

  • /04? 導出數據/

    通過配合導出mock數據功能,快速復制出一個完全相同的mock環(huán)境。

    導入數據時,需要進行數據合法性驗證。如果數據不合法,需要進行處理,有兩種情況:

    • 缺失的數據,如果可以自動填充缺省值,則自動修正。

    • 非法數據或者無法自動填充的缺失數據,進行相應的提示。

    /05??mock開關/

    通過控制開關,靈活切換使用真實業(yè)務存儲中的數據還是使用Mock存儲中的數據。

    /06??mock數據的條件匹配/

    可以對mock數據的返回內容進行「條件匹配」配置,以滿足兩種能力:

    1. 限定返回的數據范圍。

    2. 實現(xiàn)返回的出參一定與入參存在相關性。

    /07? mock外部依賴數據/

    可以將以上能力運用在所依賴的外部數據上,以提供系統(tǒng)「無依賴獨立運行」的能力。

    具備這個能力后,你所負責系統(tǒng)的測試工作可以不用等待所依賴的外部系統(tǒng)全部都準備就緒后才能開展,可以獨立進行。

    好了,就這么多。可能有的小伙伴會覺得,要實現(xiàn)這么多能力,得多大工作量啊。

    我覺得這個問題不能這么考慮,我們還要考慮這個工具可以節(jié)省多少時間。節(jié)約的這個時間不僅僅是你自己做自測的時間,還有團隊中其他人的時間。而且這個工具可以長期反復使用,時間拉得越長,它所發(fā)揮的價值也越大。

    慣例總結一下。

    這篇呢,Z哥和你分享了一個我認為很有價值的工具,一個需要我們自行開發(fā)的mock工具,它可以提升整個團隊的長期效能。

    這個工具需要實現(xiàn)以下7個能力:

  • 自動生成mock數據

  • 清除數據

  • 導入數據

  • 導出數據

  • mock開關

  • mock數據的條件匹配

  • mock外部依賴數據

  • 我相信,一旦你提供了這個工具,在團隊中你將擁有很好的人緣和口碑~

    不知道你是如何看待類似的mock工具的?歡迎和大家一起聊聊你的看法~

    推薦閱讀:

    • 程序員必備,《新老系統(tǒng)切換寶典》

    • golang使用3周總結

    原創(chuàng)不易,如果你覺得這篇文章還不錯,就「點贊」或者「在看」一下吧,鼓勵我的創(chuàng)作 :)

    也可以分享我的公眾號名片給有需要的朋友們。

    如果你有關于軟件架構、分布式系統(tǒng)、產品、運營的困惑

    可以試試點擊「閱讀原文

    總結

    以上是生活随笔為你收集整理的减少联调、高效集成,试试这个工具的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。