日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

放棄 Jest 后,運行時間減少 90%!

來源: 責編: 時間:2024-03-28 09:28:16 189觀看
導讀這是一個關于 Jest 在 JS 服務端的經驗分享,注意,不是 UI 測試。如果你對 Jest 感到滿意,請不要切換!這不是為了說服任何人。Jest 是個眾所周知的、功能完備的測試框架,曾經在選擇時并沒有經過深思熟慮。然而,經過數百次測

這是一個關于 Jest 在 JS 服務端的經驗分享,注意,不是 UI 測試。如果你對 Jest 感到滿意,請不要切換!這不是為了說服任何人。UEn28資訊網——每日最新資訊28at.com

Jest 是個眾所周知的、功能完備的測試框架,曾經在選擇時并沒有經過深思熟慮。然而,經過數百次測試后,情況開始變得很糟糕。內存泄漏開始浮出水面,臨時的標志位數量增多,經常訪問 Jest 的 issues 標簽頁已經成為家常便飯。UEn28資訊網——每日最新資訊28at.com

問題

以下是作者曾在 Jest 中遇到的一些問題,通過這些標志可以幫助排插問題或提高部分的性能,如果你在使用 Jest,可以做為一個參考。UEn28資訊網——每日最新資訊28at.com

  • jest —logHeapUsage:監視堆使內存用情況,以發現突然增長的內存泄漏。
  • jest —maxWorkers=50%:一些基準測試顯示,該配置可使測試運行速度提高 20%,也有些人說這會變得更糟。
  • jest —runInBand: 這在當前進程中串行運行所有測試,而不是創建一個子進程的工作池。有人說這對于調試很有用,但奇怪的是,一些人報告說它實際上可以提高性能。
  • jest —changedSince:該標志可以顯著減少 PR 工作流程所需的時間。
  • jest-slow-test-reporter:這個報告器可以發現你項目中最慢的測試。
  • --expose-gc:暴露 Node.js 的垃圾收集器。某些情況下,使用 --expose-gc 標志運行 Node 似乎能更好地處理內存泄漏。

不夠好

這些策略中的一些在這段時間內顯著減少了運行時間。然而,學習和實施它們的過程是以交付時間為代價的,而這實際上更為關鍵。UEn28資訊網——每日最新資訊28at.com

測試是如此緩慢,以至于我只在我們當前正在開發的模塊上運行它們,然后只在PR中更改的模塊上運行它們,最后,所有的測試只有在合并到主分支時才會運行。不幸的是,這種方法導致了識別錯誤的延遲。UEn28資訊網——每日最新資訊28at.com

測試如此耗時,以至于我發現自己在為某些功能猶豫是否編寫測試,擔心它們會導致額外的構建過程時間。在這一點上,我意識到是時候轉變了UEn28資訊網——每日最新資訊28at.com

切換到 Mocha

我十年前用過 Mocha,感覺非常棒。所以,我以為回到 Mocha 會很順利。在過去的幾年里,我看到人們一直在拋棄從 Jest 到 Mocha 的想法,而我總是覺得很有趣。我記得有很多指南和人們在談論從 Mocha 遷移到 Jest。像我一樣,大多數人會認為更新的工具會有更好或者至少類似的性能。UEn28資訊網——每日最新資訊28at.com

遷移比預期的要容易得多。幾個替換案例,少于一個小時的重構一些代碼。比較困難的部分是模擬引擎,這在 Mocha 中沒有包含。UEn28資訊網——每日最新資訊28at.com

我本來可以使用 Sinon.js 來做到這一點,但我真的很喜歡有一天不依賴任何測試庫的想法。我甚至考慮過只使用新的 Node.js 內置測試運行器,但對我來說它還不夠完善。所以,我決定只使用內置的 MockTracker。UEn28資訊網——每日最新資訊28at.com

嘗試后讓人驚訝。使用 Jest 運行需要3秒的單個測試,在 Mocha 中只需要不到 200ms。這應該不足為奇——我運行的測試不應該花費那么長時間,但我已經習慣了那種緩慢。最終,我們的測試運行時間從超過 12 分鐘縮短到不到 40 秒。UEn28資訊網——每日最新資訊28at.com

Mocha 的速度幫助我們發現了隱藏的錯誤,這些錯誤偶爾會導致測試失敗,因為它們只在非常特殊的條件下發生——這些條件在 Jest 中由于其較慢UEn28資訊網——每日最新資訊28at.com

結論

我仍然在我維護的一些較小的代碼庫中使用 Jest,并且除非它們成為問題,否則我不會瘋狂地遷移它們。然而,對于未來的項目,我肯定會選擇 Mocha 或 Node.js 測試運行器。UEn28資訊網——每日最新資訊28at.com

問題在于,即使有一種方法可以優化 Jest 并在合理的時間內運行數千個測試,但僅僅切換測試框架就能顯著提高性能,這是有問題的。你同意嗎?你有類似的經歷嗎?我很樂意聽聽。UEn28資訊網——每日最新資訊28at.com

作者 | Patrickrbc翻譯、整理 | 五月君原文 https://patrickrbc.com/2024/03/16/jest-slow-testsUEn28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-79988-0.html放棄 Jest 后,運行時間減少 90%!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 球盒模型:一切回溯窮舉,皆從此法出

下一篇: SpringCloud項目開發中實用技巧總結

標簽:
  • 熱門焦點
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經過去,最明顯的肯定就是大內存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 0糖0卡0脂 旭日森林仙草烏龍茶優惠:15瓶到手29元

    旭日森林無糖仙草烏龍茶510ml*15瓶平時要賣為79.9元,今日下單領取50元優惠券,到手價為29.9元。產品規格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學習反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • 一年經驗在二線城市面試后端的經驗分享

    忠告這篇文章只適合2年內工作經驗、甚至沒有工作經驗的朋友閱讀。如果你是2年以上工作經驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內容來自 「升職加薪」星球星友 的投稿,坐
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 自動化在DevOps中的力量:簡化軟件開發和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團隊可以實現以下目標:消除手動和重復性任務。簡化流程。在整個軟件開發生命周期中實現更
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標系統提供非預期的輸入并監視異常結果來發現軟件漏洞的方法。可以用來發現應用程序、操作系統和網絡協議等中的漏洞或
  • 8月見!小米MIX Fold 3獲得3C認證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國際消費電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現在已經可以購買了,這款筆記本電腦被譽為世界上最薄的 14 英寸游戲筆
Top 主站蜘蛛池模板: 贞丰县| 陕西省| 望奎县| 济源市| 白河县| 山阴县| 怀远县| 文安县| 玉林市| 科技| 高要市| 河北区| 咸丰县| 阿合奇县| 准格尔旗| 梧州市| 理塘县| 东城区| 三台县| 确山县| 阳朔县| 织金县| 德昌县| 固镇县| 新河县| 军事| 永昌县| 建水县| 长阳| 云南省| 麻江县| 东港市| 白城市| 尼勒克县| 招远市| 永和县| 临泽县| 大丰市| 庄浪县| 吉木萨尔县| 兰西县|