AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

放棄 Jest 后,運(yùn)行時(shí)間減少 90%!

來(lái)源: 責(zé)編: 時(shí)間:2024-03-28 09:28:16 205觀看
導(dǎo)讀這是一個(gè)關(guān)于 Jest 在 JS 服務(wù)端的經(jīng)驗(yàn)分享,注意,不是 UI 測(cè)試。如果你對(duì) Jest 感到滿意,請(qǐng)不要切換!這不是為了說(shuō)服任何人。Jest 是個(gè)眾所周知的、功能完備的測(cè)試框架,曾經(jīng)在選擇時(shí)并沒(méi)有經(jīng)過(guò)深思熟慮。然而,經(jīng)過(guò)數(shù)百次測(cè)

這是一個(gè)關(guān)于 Jest 在 JS 服務(wù)端的經(jīng)驗(yàn)分享,注意,不是 UI 測(cè)試。如果你對(duì) Jest 感到滿意,請(qǐng)不要切換!這不是為了說(shuō)服任何人。shp28資訊網(wǎng)——每日最新資訊28at.com

Jest 是個(gè)眾所周知的、功能完備的測(cè)試框架,曾經(jīng)在選擇時(shí)并沒(méi)有經(jīng)過(guò)深思熟慮。然而,經(jīng)過(guò)數(shù)百次測(cè)試后,情況開(kāi)始變得很糟糕。內(nèi)存泄漏開(kāi)始浮出水面,臨時(shí)的標(biāo)志位數(shù)量增多,經(jīng)常訪問(wèn) Jest 的 issues 標(biāo)簽頁(yè)已經(jīng)成為家常便飯。shp28資訊網(wǎng)——每日最新資訊28at.com

問(wèn)題

以下是作者曾在 Jest 中遇到的一些問(wèn)題,通過(guò)這些標(biāo)志可以幫助排插問(wèn)題或提高部分的性能,如果你在使用 Jest,可以做為一個(gè)參考。shp28資訊網(wǎng)——每日最新資訊28at.com

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

不夠好

這些策略中的一些在這段時(shí)間內(nèi)顯著減少了運(yùn)行時(shí)間。然而,學(xué)習(xí)和實(shí)施它們的過(guò)程是以交付時(shí)間為代價(jià)的,而這實(shí)際上更為關(guān)鍵。shp28資訊網(wǎng)——每日最新資訊28at.com

測(cè)試是如此緩慢,以至于我只在我們當(dāng)前正在開(kāi)發(fā)的模塊上運(yùn)行它們,然后只在PR中更改的模塊上運(yùn)行它們,最后,所有的測(cè)試只有在合并到主分支時(shí)才會(huì)運(yùn)行。不幸的是,這種方法導(dǎo)致了識(shí)別錯(cuò)誤的延遲。shp28資訊網(wǎng)——每日最新資訊28at.com

測(cè)試如此耗時(shí),以至于我發(fā)現(xiàn)自己在為某些功能猶豫是否編寫(xiě)測(cè)試,擔(dān)心它們會(huì)導(dǎo)致額外的構(gòu)建過(guò)程時(shí)間。在這一點(diǎn)上,我意識(shí)到是時(shí)候轉(zhuǎn)變了shp28資訊網(wǎng)——每日最新資訊28at.com

切換到 Mocha

我十年前用過(guò) Mocha,感覺(jué)非常棒。所以,我以為回到 Mocha 會(huì)很順利。在過(guò)去的幾年里,我看到人們一直在拋棄從 Jest 到 Mocha 的想法,而我總是覺(jué)得很有趣。我記得有很多指南和人們?cè)谡務(wù)搹?Mocha 遷移到 Jest。像我一樣,大多數(shù)人會(huì)認(rèn)為更新的工具會(huì)有更好或者至少類(lèi)似的性能。shp28資訊網(wǎng)——每日最新資訊28at.com

遷移比預(yù)期的要容易得多。幾個(gè)替換案例,少于一個(gè)小時(shí)的重構(gòu)一些代碼。比較困難的部分是模擬引擎,這在 Mocha 中沒(méi)有包含。shp28資訊網(wǎng)——每日最新資訊28at.com

我本來(lái)可以使用 Sinon.js 來(lái)做到這一點(diǎn),但我真的很喜歡有一天不依賴(lài)任何測(cè)試庫(kù)的想法。我甚至考慮過(guò)只使用新的 Node.js 內(nèi)置測(cè)試運(yùn)行器,但對(duì)我來(lái)說(shuō)它還不夠完善。所以,我決定只使用內(nèi)置的 MockTracker。shp28資訊網(wǎng)——每日最新資訊28at.com

嘗試后讓人驚訝。使用 Jest 運(yùn)行需要3秒的單個(gè)測(cè)試,在 Mocha 中只需要不到 200ms。這應(yīng)該不足為奇——我運(yùn)行的測(cè)試不應(yīng)該花費(fèi)那么長(zhǎng)時(shí)間,但我已經(jīng)習(xí)慣了那種緩慢。最終,我們的測(cè)試運(yùn)行時(shí)間從超過(guò) 12 分鐘縮短到不到 40 秒。shp28資訊網(wǎng)——每日最新資訊28at.com

Mocha 的速度幫助我們發(fā)現(xiàn)了隱藏的錯(cuò)誤,這些錯(cuò)誤偶爾會(huì)導(dǎo)致測(cè)試失敗,因?yàn)樗鼈冎辉诜浅L厥獾臈l件下發(fā)生——這些條件在 Jest 中由于其較慢shp28資訊網(wǎng)——每日最新資訊28at.com

結(jié)論

我仍然在我維護(hù)的一些較小的代碼庫(kù)中使用 Jest,并且除非它們成為問(wèn)題,否則我不會(huì)瘋狂地遷移它們。然而,對(duì)于未來(lái)的項(xiàng)目,我肯定會(huì)選擇 Mocha 或 Node.js 測(cè)試運(yùn)行器。shp28資訊網(wǎng)——每日最新資訊28at.com

問(wèn)題在于,即使有一種方法可以優(yōu)化 Jest 并在合理的時(shí)間內(nèi)運(yùn)行數(shù)千個(gè)測(cè)試,但僅僅切換測(cè)試框架就能顯著提高性能,這是有問(wèn)題的。你同意嗎?你有類(lèi)似的經(jīng)歷嗎?我很樂(lè)意聽(tīng)聽(tīng)。shp28資訊網(wǎng)——每日最新資訊28at.com

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

本文鏈接:http://www.tebozhan.com/showinfo-26-79988-0.html放棄 Jest 后,運(yùn)行時(shí)間減少 90%!

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

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

下一篇: SpringCloud項(xiàng)目開(kāi)發(fā)中實(shí)用技巧總結(jié)

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 盧偉冰長(zhǎng)文解析K60至尊版 對(duì)Redmi有著里程碑式的意義

    在今天的Redmi后性能時(shí)代戰(zhàn)略發(fā)布會(huì)結(jié)束之后,Redmi總經(jīng)理盧偉冰又帶來(lái)了一篇長(zhǎng)文,詳解了為什么 Redmi 要開(kāi)啟后性能時(shí)代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 天貓精靈Sound Pro體驗(yàn):智能音箱沒(méi)有音質(zhì)?來(lái)聽(tīng)聽(tīng)我的

    這幾年除了手機(jī)作為智能生活終端最主要的核心之外,第二個(gè)可以成為中心點(diǎn)的產(chǎn)品是什么?——是智能音箱。 手機(jī)在執(zhí)行命令的時(shí)候有兩種操作方式,手和智能語(yǔ)音助手,而智能音箱只
  • 6月iOS設(shè)備好評(píng)榜:第一蟬聯(lián)榜首近一年

    作為安兔兔各種榜單里變化最小的那個(gè),2023年6月的iOS好評(píng)榜和上個(gè)月相比沒(méi)有任何排名上的變化,僅僅是部分設(shè)備好評(píng)率的下降,長(zhǎng)年累月的用戶評(píng)價(jià)和逐漸退出市場(chǎng)的老款機(jī)器讓這
  • Raft算法:保障分布式系統(tǒng)共識(shí)的穩(wěn)健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可復(fù)制、可冗余、可容錯(cuò)”)的首字母縮寫(xiě)。Raft算法是一種用于在分布式系統(tǒng)
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數(shù)量是否小于或等于一個(gè)數(shù)字。例如,一個(gè)擁有三個(gè)或更多子項(xiàng)的grid。你可能會(huì)想,為什么需要這樣做呢?在某些情況下,一個(gè)組件或一個(gè)布局可能會(huì)
  • 2天漲粉255萬(wàn),又一賽道在抖音爆火

    來(lái)源:運(yùn)營(yíng)研究社作者 | 張知白編輯 | 楊佩汶設(shè)計(jì) | 晏談夢(mèng)潔這個(gè)暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個(gè)月超過(guò) 12 億;有的「博主」火了&m
  • “又被陳思誠(chéng)騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國(guó)產(chǎn)懸疑電影,成了陳思誠(chéng)的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠(chéng)再度風(fēng)頭無(wú)兩。你可以說(shuō)陳思誠(chéng)的
  • 國(guó)行版三星Galaxy Z Fold5/Z Flip5發(fā)布 售價(jià)7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國(guó)發(fā)布會(huì),正式在國(guó)內(nèi)推出了新一代折疊屏智能手機(jī)三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 北京:科技教育體驗(yàn)基地開(kāi)始登記

      北京“科技館之城”科技教育體驗(yàn)基地登記和認(rèn)證工作日前啟動(dòng)。首批北京科技教育體驗(yàn)基地?cái)M于2023年全國(guó)科普日期間掛牌,后續(xù)還將開(kāi)展常態(tài)化登記。  北京科技教育體驗(yàn)基
Top