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

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

大型企業通常如何進行單元測試?

來源: 責編: 時間:2024-03-29 09:23:18 267觀看
導讀你平時是怎么做單元測試的?面試官心理預期面試官詢問單元測試并非僅僅想了解這一概念,背后可能考察面試者以下三個方面:對軟件工程生命周期的熟悉程度,以及對測試階段各種方法(包括單元測試、集成測試、冒煙測試等)和其重要

你平時是怎么做單元測試的?

面試官心理預期

面試官詢問單元測試并非僅僅想了解這一概念,背后可能考察面試者以下三個方面:C0D28資訊網——每日最新資訊28at.com

  1. 對軟件工程生命周期的熟悉程度,以及對測試階段各種方法(包括單元測試、集成測試、冒煙測試等)和其重要性的理解。
  2. 面試者是否展現出足夠的責任心,明白優秀的測試工作對自身代碼負責的重要性。
  3. 優秀的單元測試用例也體現了開發者在設計和編碼方面的基本素質。

基于以上三點,我們需要思考什么樣的單元測試才能被視為有效?C0D28資訊網——每日最新資訊28at.com

高手回答

整個軟件工程的生命周期大致分為以下階段:C0D28資訊網——每日最新資訊28at.com

  • 需求分析階段:包括需求調研、設計和評審
  • 設計階段:主要集中在架構設計
  • 開發階段:正式開始編碼工作
  • 測試階段:完成編碼后,包括:

自測:單元測試 -> 集成測試C0D28資訊網——每日最新資訊28at.com

提測:QA介入集成測試,進行多輪測試C0D28資訊網——每日最新資訊28at.com

  • 發布階段:QA完成測試后,可以進行上線,其中包括:
  • 預發布:部署到線上環境,QA進行回歸測試,逐步增加流量,觀察是否存在異常C0D28資訊網——每日最新資訊28at.com

  • 正式上線:若預發布無問題,則代碼正式上線,根據灰度或A/B測試策略控制新功能流量比例,經過穩定運行一段時間無異常后,逐步放開全部流量。C0D28資訊網——每日最新資訊28at.com

我們再深入分析每個階段發現缺陷的成本,主要指從發現到解決問題所需的人力時間成本:C0D28資訊網——每日最新資訊28at.com

  • 需求分析階段:如果設計評審發現不合理,可以選擇不執行,僅需花費幾個小時進行會議討論。
  • 設計階段:架構設計也需要評審,同樣只需要幾個小時會議時間。
  • 開發階段:如果前兩個階段沒有問題,小型功能修復通常需要幾小時,大型功能可能需要幾天甚至更長時間,可能導致開發出無效功能,需要重新設計和開發,帶來重復勞動的局面。
  • 測試階段:無論是自測還是提測的集成測試,修復一個缺陷意味著重新部署代碼,對于大型項目,啟動時間可能是分鐘級。不論是自測還是提測,修復多個缺陷會阻塞測試進度,多次部署累計的時間成本非常高。而單元測試一個案例通常只需要毫秒或秒級,做好單元測試可以顯著提高效率。許多公司非常重視單元測試的覆蓋率和有效性,甚至將單元測試納入持續集成/持續交付流程,僅當所有單測通過才能部署。同時,QA團隊也極為關注阻塞測試進度的情況。
  • 發布階段:通常經過QA嚴格測試后才進入發布階段,雖然不會出現明顯的缺陷,但也不能排除存在問題。某些缺陷可能在實際用戶請求或高流量時才會顯現,這些越過測試和預發布環境的問題可能會在線上直接暴露。灰度和A/B測試的部分目的是將線上問題造成的影響最小化。這也解釋了即使在各大互聯網公司,仍可能發生事故。這種情況不僅涉及時間成本,嚴重的缺陷可能帶來直接的經濟損失和用戶流失,一旦程序員出現問題,將成為談資。因此,許多公司非常重視缺陷漏測率,即測試階段未發現的問題。

上述內容提到了單元測試的關鍵要點,以下是編寫優質單元測試的方法總結:C0D28資訊網——每日最新資訊28at.com

如何編寫單元測試

  1. 單元測試代碼與正式代碼同等重要,需要清晰層次分明,命名符合實際場景,并且要有適當的注釋。可借鑒《代碼整潔之道》中的技巧,關鍵是要確保測試用例易于理解。
  2. 不要盲目地追求覆蓋率,而是要盡可能覆蓋所有可能的場景。
  3. 單元測試要保持可用性,納入持續集成/持續交付流程。如果所有測試用例不能通過,就不允許部署。
  4. 確保每次運行測試用例都是確定性的,不依賴外部變化和不確定因素,包括但不限于:
  • 隨機事件:例如隨機數,最好使用模擬(Mock)進行控制;
  • IO操作:無論是磁盤IO還是網絡IO(如數據庫、外部接口),都需要隔離,最好也進行模擬。
  1. 必須包含斷言,否則單元測試就失去了意義。不能只是簡單地打印結果,人工觀察,在運行所有測試用例時很少會花時間檢查每一個輸出。
  2. 驗證邊界情況和異常情況,這兩點經常被忽視。邊界條件可能包括:
  • 傳入錯誤參數的反應;
  • 依賴返回不正確結果的情況。

異常情況包括:C0D28資訊網——每日最新資訊28at.com

  • 外部異常:依賴(內部或外部接口、數據庫環境等)拋出異常將如何處理;
  • 內部異常:代碼本身拋出RuntimeException的后果。
  1. 正式業務代碼應該遵循單一職責原則,高內聚低耦合可使單元測試更簡單,測試粒度更細致,覆蓋率更高。每個方法或類應只負責一項任務,這樣測試用例只需關注當前方法的有效性,而不需要考慮方法之間的調用。每個測試用例也應只關注一件事情。

另一個優秀的策略是采用測試驅動開發(TDD)方法,即先列出所有可能的測試用例,然后再開始實現邏輯代碼。這種方式可以快速創建出完備的單元測試集合。值得注意的是,在國內很少有公司采用TDD開發模式。C0D28資訊網——每日最新資訊28at.com

領域驅動設計(DDD)強調明確的邊界劃分,事件風暴和防腐層的設計為測試驅動開發(TDD)和單元測試提供了良好的基礎。領域驅動設計(DDD)中倡導清晰的邊界劃分,通過事件風暴和防腐層設計,為TDD和單元測試提供了有力支持。C0D28資訊網——每日最新資訊28at.com

前文提到使用Mock對象來隔離I/O操作和隨機事件,當然,Mock也可以應用于各種依賴關系,比如Spring Bean之間的依賴、工具類、各種內部接口的依賴等。Mock的作用是模擬所依賴的資源,我們可以假定依賴操作是成功或失敗的,這樣測試只需關注自身代碼對依賴產生的響應結果即可。C0D28資訊網——每日最新資訊28at.com

Java的單元測試

Java工程也可以集成Spock框架進行單元測試,Spock使用Groovy語言編寫測試用例。由于Groovy是一種動態語言,非常靈活,非常適合編寫簡潔的單元測試代碼。同時,Spock不僅局限于模擬(Mock),還提供各種高效的功能(這些是傳統JUnit和Mockito無法實現的):C0D28資訊網——每日最新資訊28at.com

  1. Spy:可以對部分資源進行模擬,方便地對同一類內相互調用的方法進行模擬和驗證。
  2. Mock:對依賴資源進行模擬,同時驗證依賴資源被調用的次數。例如,測試Redis寫功能時,可以模擬Redis客戶端,驗證傳入方法的參數是否符合預期,以及驗證Redis寫入方法被調用的次數。
  3. Stub:對依賴資源進行模擬返回一個結果,不關心調用次數或參數是否匹配預期。
  4. 可以直接忽略待驗證方法的成員封裝級別,可以直接測試私有聲明的方法和變量。
  5. 基于數據驅動的測試:借助where關鍵詞和數據表格的方式,在一個測試案例中驗證要測試的參數和期望返回值的所有可能情況。
  6. 可以方便地驗證拋出的異常。
  7. 與Spring集成方便:可以進行Spring框架的集成測試,包括對Spring MVC、Spring Boot的HTTP接口層進行單元測試,無需啟動Web容器。

所以編寫優秀的單元測試代碼是卓越程序員的基本修養。因為針對有用戶訪問和無用戶訪問的項目,相同的代碼甚至在極端用戶流量下可能帶來截然不同的效果。在面對極端用戶流量時,每次修改一行代碼上線都如履薄冰。懷著敬畏之心對待每一次上線和線上操作,至關重要。C0D28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-80343-0.html大型企業通常如何進行單元測試?

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

上一篇: 系統頁面緩存也會影響數據庫的運行性能,你相信嗎?

下一篇: Python進階:多進程編程攻略

標簽:
  • 熱門焦點
  • K60 Pro官方停產 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經透露了,Redmi K60 Pro已經停產且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產之后
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產生的排名變動,剛剛開始的蘋果WWDC2023,推出的產品也依舊是新款Mac Pro、新款Mac Stu
  • 六大權益!華為8月服務日開啟:手機免費貼膜、維修免人工費

    8月5日消息,一年一度的華為開發者大會2023(Together)日前在松山湖拉開帷幕,與此同時,華為8月服務日也式開啟,到店可享六大專屬權益。華為用戶可在華為商城Ap
  • 量化指標是與非:挽救被量化指標扼殺的技術團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術總監劉新翠在WOT2023大會上的主題分享,更多精彩內容及現場PPT,請關注51CTO技術棧公眾號,發消息【WOT2023PPT】即可直接領取
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內容創建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • 首發天璣9200+ iQOO Neo8系列發布首銷售價2299元起

    2023年5月23日晚,iQOO Neo8系列正式發布。其中,Neo系列首款Pro之作——iQOO Neo8 Pro強悍登場,限時售價3099元起;價位段最強性能手機iQOO Neo8同期上市
  • 利用職權私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據外媒援引知情人士表示,過去一年時間內,Facebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內部系統以不當方式重置用戶帳號,其
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日韩亚洲高清| 久久国产欧美| 在线观看日韩国产| 亚洲成人在线| av成人免费观看| 亚洲女与黑人做爰| 久久国产日韩| 欧美国产免费| 欧美日韩精品伦理作品在线免费观看| 欧美午夜一区二区| 国内精品久久久久久 | 久久这里有精品视频| 欧美成人资源| 国产精品你懂的| 在线观看不卡av| 一区二区精品在线观看| 欧美主播一区二区三区美女 久久精品人 | 激情久久影院| 一本色道久久综合亚洲二区三区| 亚洲欧美在线播放| 欧美成人午夜| 国产欧美日韩综合| 亚洲人成毛片在线播放女女| 亚洲伊人久久综合| 麻豆乱码国产一区二区三区| 欧美日韩一二三四五区| 国产一区二区三区在线观看精品| 亚洲毛片在线观看.| 欧美一级淫片播放口| 欧美精品二区三区四区免费看视频| 国产伦精品一区二区三| 亚洲精品老司机| 久久精品论坛| 国产精品99一区二区| 亚洲第一天堂av| 欧美一区二区日韩一区二区| 欧美另类视频| 影音先锋一区| 香蕉乱码成人久久天堂爱免费 | 国产一区二区三区自拍| 日韩系列欧美系列| 久久亚洲欧美| 国产精品一区二区欧美| 日韩亚洲一区二区| 麻豆精品视频| 国产日韩精品在线| 亚洲视频精选| 欧美精品在线免费播放| 一区三区视频| 久久aⅴ国产紧身牛仔裤| 欧美色网一区二区| 91久久精品美女| 久久色在线播放| 国产美女精品人人做人人爽| 99精品黄色片免费大全| 美女主播精品视频一二三四| 国产亚洲在线| 欧美亚洲色图校园春色| 欧美性猛交视频| 日韩午夜电影av| 欧美成人午夜激情| 一区二区亚洲| 欧美在线观看网址综合| 国产精品欧美一区喷水| 一区二区三区精密机械公司| 欧美h视频在线| 在线精品在线| 久久婷婷国产麻豆91天堂| 国产偷国产偷亚洲高清97cao | 99精品国产在热久久婷婷| 欧美高清视频一二三区| 亚洲国产高清在线观看视频| 久久人人爽人人爽爽久久| 国产在线欧美日韩| 欧美一区二区三区另类| 国产欧美va欧美不卡在线| 亚洲欧美第一页| 国产精品视频最多的网站| 亚洲一区在线观看免费观看电影高清| 欧美日韩精品一区二区在线播放 | 国产精品永久免费在线| 亚洲欧美日韩区| 国产精品久久久久久久久免费| 一区二区三区.www| 欧美日韩免费在线视频| 夜夜夜精品看看| 欧美午夜寂寞影院| 亚洲一级高清| 国产精品免费视频观看| 午夜视频在线观看一区二区三区| 国产精品永久免费在线| 香蕉乱码成人久久天堂爱免费 | 一区二区三区免费观看| 欧美日本国产一区| 一区二区三区成人| 国产精品久久久久9999高清 | 欧美日韩一区二区在线播放| 一本色道久久综合精品竹菊 | 激情另类综合| 免费在线视频一区| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美激情一区二区| 一级日韩一区在线观看| 国产精品多人| 欧美在线视频在线播放完整版免费观看 | 翔田千里一区二区| 国产自产精品| 模特精品裸拍一区| 日韩午夜av| 国产精品久久婷婷六月丁香| 欧美一区二区三区在线| 国产一区三区三区| 美女图片一区二区| 亚洲免费观看高清完整版在线观看熊 | 日韩网站在线观看| 国产精品精品视频| 欧美中在线观看| 在线精品亚洲一区二区| 欧美日本国产视频| 午夜精品久久久久影视| 极品尤物av久久免费看| 欧美精品免费视频| 亚洲欧美成人一区二区在线电影| 黄色国产精品一区二区三区| 欧美激情小视频| 亚洲免费在线视频| 在线观看欧美黄色| 欧美视频精品在线| 久久久xxx| 99国产精品久久久久久久成人热| 国产精品―色哟哟| 蜜桃av一区二区| 亚洲夜间福利| 尤物九九久久国产精品的分类| 欧美日韩1区2区3区| 欧美一级视频精品观看| 亚洲精品日韩精品| 国产欧美视频一区二区| 欧美第十八页| 欧美在线黄色| 99这里有精品| 国语对白精品一区二区| 欧美日韩在线不卡一区| 久久久久久91香蕉国产| 一区二区三区精品| 亚洲第一中文字幕在线观看| 国产精品国产亚洲精品看不卡15| 玖玖玖国产精品| 亚洲欧美日韩精品久久久| 亚洲福利在线看| 国产精品一区二区在线观看网站 | 美日韩免费视频| 欧美一区二区三区免费视频| 亚洲精品日韩欧美| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲欧美激情视频| 亚洲国产网站| 国产视频一区在线| 欧美日韩无遮挡| 麻豆精品精品国产自在97香蕉| 亚洲欧美另类中文字幕| 亚洲国产欧美久久| 国产欧美视频一区二区| 欧美色视频日本高清在线观看| 老鸭窝毛片一区二区三区| 亚洲欧美日韩一区在线观看| 亚洲精选久久| 影音先锋在线一区| 国产亚洲欧美在线| 国产精品www994| 欧美精品自拍| 久热精品视频| 久久大香伊蕉在人线观看热2| 制服丝袜激情欧洲亚洲| 最近中文字幕日韩精品| 激情综合亚洲| 国产亚洲精品成人av久久ww| 欧美视频一区二区三区在线观看 | 欧美日一区二区在线观看 | 国产亚洲第一区| 国产精品嫩草99av在线| 欧美日韩在线视频一区| 欧美国产日韩一区| 久久综合亚州| 久久久久久久激情视频| 欧美亚洲一区| 午夜精品影院| 午夜精彩视频在线观看不卡 | 久久精品免费电影| 性做久久久久久久久| 亚洲一区3d动漫同人无遮挡| 99国产精品视频免费观看一公开 | 狠狠色狠色综合曰曰| 国产一区二区成人| 国产伦精品一区二区三区高清版| 欧美新色视频| 国产精品成人v| 国产精品久久91| 国产精品久久久久高潮| 国产精品www.| 国产麻豆综合| 国产综合色产| 精品99视频| 亚洲电影在线|