国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何減輕軟件開發的回測壓力,從而提高工程師的生產效率?

5RJg_mcuworld ? 來源:lq ? 2019-02-04 14:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如何減輕軟件開發的回測壓力,從而提高工程師的生產效率?MATEUSZ MACHALICA、ALEX SAMYLKIN 等人組成的 Facebook 研究團隊提出使用一個利用機器學習的新系統來創建一個為特定代碼更改選擇回歸測試的概率模型,從而更好地執行這種回歸測試。

為了高效地開發新產品特征和更新,Facebook研究團隊使用基于主干的開發模型來管理對代碼庫的改動。一旦一位工程師的代碼更改被接入主分支(主干),他們試圖讓它對從事該產品或服務的其他工程師快速可見。這種基于主干的開發模型比使用特征分支和特征融合更加有效,因為它使得每個人都能夠在代碼庫的最新版本上工作。

但是,在被接受到主干之前,對每項提出的更改進行徹底的回歸測試很重要(注:回歸測試是指修改了舊代碼后, 重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤的一種測試方法)。在從主干被部署到生產之前,每項代碼更改都需要經過徹底的回歸測試,進入主干異常代碼會使得評估新提出的代碼更改變得更困難得多,并且還會影響工程師的生產效率。

對此,該研究團隊開發了一種更好的方法來執行這項回歸測試:使用一個利用機器學習的新系統來創建一個為特定代碼更改選擇回歸測試的概率模型。這種方法需要僅僅運行一個小的測試集,以確保檢測到錯誤的更改。與典型的回歸測試選擇(RTS)工具不同,該系統通過從歷史代碼更改和測試結果的大型數據集中學習,來自動開發測試選擇策略。

這個預測性測試選擇系統已在 Facebook 上部署了一年多,在一段新的代碼加入到主干、被其它工程師看到之前,這個系統就可以捕捉超過 99.9% 的回歸異常,而且它運行的基于修改的代碼的測試數量也只需要以往的三分之一那么多。這也讓 Facebook 的基礎測試設施的效率得到翻倍的提升。

隨著代碼庫的不斷發展,該系統也幾乎不要求手動調試。而且經證明,它還能夠捕捉產生不一致和不確定性結果的片狀測試。

為什么使用創建依賴項是低效的

回歸測試的一種常用方法,就是使用從構建元數據中提取的信息來確定在特定代碼更改上運行哪些測試。通過分析代碼單元間的創建依賴項,可以確定傳遞依賴于在代碼更改中被修正的源的所有測試。例如,在下圖中,圓圈表示測試;正方形表示代碼的中間單元,如庫;菱形表示存儲庫中的單個源文件。箭頭連接起實體 A →B,當且僅當 B 直接依賴于 A 時,他們將其解釋為 A 影響 B。藍色的菱形表示在示例代碼更改中被修正的兩個文件,所有傳遞依賴于它們的實體也用藍色表示。在這個場景中,基于創建依賴項的測試選擇策略將執行測試 1,2,3 和 4,但不執行測試 5 和 6,因為后兩項測試不依賴于修正的文件。

這種方法有一個明顯的缺點:它以說「是的,本測試受到影響」告終的次數比實際所需要的要多。平均而言,對于移動代碼庫的每項更改,該方法都會導致執行多達四分之一的可用測試。如果傳遞依賴于修正文件的所有測試都真正受到影響,他們將別無選擇,而只能將每項測試都執行一遍。然而,在他們的單片代碼庫中,終端產品依賴于許多可重復使用的組件,這些組件使用一小組低級庫。在實踐中,許多傳遞性依賴實際上與回歸測試無關。例如,當某個低級庫發生更改時,在使用該庫的每個項目上重新運行所有測試將是低效的。

軟件開發研究領域也開發了其他的回歸測試選擇方法,例如基于靜態更改-影響分析的方法。然而,由于他們代碼庫的大小和使用的不同編程語言的數量,這些技術在他們的使用案例中是不現實的。

一種新方法:預測性測試選擇

基于創建依賴項的選擇測試涉及到判斷哪些測試可能受到更改的影響的問題。為了開發更好的方法,Facebook 的研究團隊考慮了一個不一樣的問題:指定的一項測試發現某個代碼修改中的回歸問題的可能性有多大?如果他們能估計到這個可能性,就可以做出明智的決定,來排除那些極不可能發現回歸的測試。這是對傳統測試選擇的重大背離,并且開辟了一種新的、更有效的選擇測試方法。

作為第一步,該研究團隊創建了一個預測模型,該模型針對新提出的代碼更改估計每項測試失敗的概率。他們通過使用包括歷史代碼更改上的測試結果在內的大型數據集,然后采用標準的機器學習技術來創建模型,而非手動定義模型。

每個新的代碼更改總會與之前的情況略有不同,因此模型不能簡單地將新的更改與歷史更改進行比較,來確定哪些測試值得運行。然而,新更改的抽象可以類似于前一個或多個代碼更改的對應的抽象。

在訓練期間,研究團隊的系統學習基于源自先前代碼更改和測試的特征的模型。然后,當該系統正在分析新的代碼更改時,他們將學習到的模型應用于基于特征的代碼更改的抽象。對于任何特定的測試,該模型接著能夠預測檢測到回歸的可能性。

為此,該系統使用了標準機器學習算法的變體——梯度提升決策樹模型。研究團隊雖然可以使用其他機器學習算法,但其之所以選擇這種方法,有幾個原因:決策樹是可解釋的、易于訓練的,并且已經是 Facebook 機器學習算法基礎結構的一部分。

他們可以使用這個模型分析特定的代碼更改,來找到所有傳遞依賴于修改文件的可能受影響的測試,然后估計測試檢測到由更改引入的回歸的概率。基于這些估計,系統選擇對于特定更改最有可能失敗的測試。下圖顯示了將選擇哪些測試(用藍色表示),來更改影響前一示例中的兩個文件,而在前一示例中,用 0 到 1 之間的數字來表示每個被考慮在內的測試的概率。

評估和校準模型

對于每項代碼更改,系統選擇的測試數量影響它在檢測回歸時的可靠性。使用最近代碼更改的選擇作為驗證集,研究團隊可以評估其在新更改上的準確性。下面的圖表顯示了每次更改所選擇的最大測試數量與這一選擇的準確性之間的關系。在生產中,他們要求其模型能夠正確預測超過 95% 的測試結果,并且能為超過 99.9% 的有問題的更改捕獲至少一個失敗的測試。他們發現,這種準確度的高標準所帶來的測試信號的損失可以忽略不計,并且消除了大量不必要的測試執行。

由于代碼庫結構的不斷演變,測試選擇策略必須適應繼續滿足這些嚴格的正確性要求。然而,他們的系統讓其變得簡單,因為他們可以使用最近提交的代碼更改的測試結果來定期地重新訓練模型。

處理測試片狀

為了確保他們的測試選擇很好地適用于現實世界的測試,系統需要處理測試片狀問題:當被測試的代碼沒有真正被更改時,測試結果從通過變為失敗。正如他們在論文中所做的更詳細的解釋,如果他們訓練一個模型而不去識別片狀測試失敗,該模型可能無法學習去一致地預測測試結果。在下面的示例中,兩個測試選擇策略捕獲所有失敗的測試執行的共同部分。如果系統不能區分哪些測試失敗是片狀的以及哪些不是,那么它將無法知道哪個策略是最好的。策略 A 具有明顯更好的準確性,因為它捕獲了所有無法發現實際回歸的測試。然而,策略 B 選擇了大量由于片狀性而非代碼的實際問題而失敗的測試。

為了減輕片狀性對所學到的測試選擇模型的影響,研究團隊在收集訓練數據時積極地重新嘗試失敗的測試。這種方法讓他們將連續失敗的測試(指示真實回歸)與那些呈現片狀、非重現性失敗的測試區分開來。

檢測和固定回歸:30000 英尺的視角

這個系統是研究團隊創建智能工具以使代碼開發過程更加可靠和高效的更廣泛努力的一部分。他們的基于搜索的自動化軟件測試系統 Sapienz 和自動化缺陷修復工具 Getafix,也可以幫助他們自動檢測和修復回歸——也就是說,這些工作僅要求工程師們投入很少的注意力甚至不投入注意力。

預測性測試選擇(這篇博客文章中描述的系統)通過選擇由工程師定義的正確的測試集,來高效地檢測回歸。Sapienz 生成新的測試序列,來發掘讓移動應用程序崩潰的條件,Getafix 則為他們使用測試和驗證工具所發現的問題推薦補丁,然后由編寫更改的工程師檢驗并選擇接受或拒絕這些補丁。總而言之,這些系統讓工程師能夠為使用 Facebook 產品的數十億人,更快、更有效地創建和部署新特征。

未來規劃

預測性測試選擇是 Facebook 的數個項目中的一個,它旨在應用統計學方法和機器學習來提高回歸測試的有效性。隨著研究團隊進一步提高系統的效率和準確性,他們也將應用相關的方法來識別測試范圍中的潛在差距。

機器學習正在變革生活的方方面面。他們相信軟件工程在這方面也一樣。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件開發
    +關注

    關注

    0

    文章

    707

    瀏覽量

    30096
  • 機器學習
    +關注

    關注

    66

    文章

    8554

    瀏覽量

    136980
  • 決策樹
    +關注

    關注

    3

    文章

    96

    瀏覽量

    14083

原文標題:如何減輕軟件開發的回測壓力?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    北京--知名IT企業--誠聘軟件開發工程師

    本帖最后由 hongshanqixia 于 2012-5-25 14:25 編輯 我公司為知名IT企業,現需要幾名軟件開發工程師。一經錄用,待遇從優。軟件研發工程師工作職責:1、
    發表于 05-25 14:23

    stm32軟件開發工程師招聘

    stm32軟件開發工程師招聘職位要求1. 精通C語言。2. 具有STM32系列單片機相關C代碼編寫經驗,熟悉STM32系列單片機架構和設計,能夠獨立編寫軟件,具有良好的代碼編寫習慣;3.熟悉
    發表于 05-27 12:55

    【成都】【招聘】誠聘FPGA工程師、 windows設備驅動開發工程師、嵌入式軟件開發工程師、硬件工程師

    PCB和PCBA生產所需的相關資料; 7.有高速布線工作經驗優先。web高級工程師(1人)崗位職責:1.負責Web相關項目的開發工作2.能獨自規劃軟件項目解決規劃方案,制定技術規范書3
    發表于 05-31 15:30

    誠聘嵌入式軟件開發工程師

    獵頭職位:嵌入式軟件開發工程師【珠海】崗位職責: 1、使用C語言編寫單片機應用程序;2、制定項目開發方案和研發計劃,編寫軟件設計文檔。任職要求: 1、本科及以上學歷,2-3年指紋鎖
    發表于 12-08 10:41

    嵌入式軟件開發工程師 — IT圈的高富帥!

    %,但是卻創造了全公司超過70%的效益。 嵌入式軟件開發,入行起薪高,特別是北上廣深,一般工作經驗在1-2年的嵌入式工程師薪水,普遍在10K以上。而隨著工作年限的增加,薪資水平也會有較明顯的提高。工作
    發表于 03-21 17:47

    誠聘結構設計工程師、電子工程師軟件開發工程師

    ,本公司將提供有競爭力的薪酬、廣闊的發展空間,為各加盟的員工才華施展提供良好的舞臺。現誠聘業內結構設計工程師、電子工程師軟件開發工程師。聯系方式:***(朱先生) 微信:LEKES0
    發表于 11-20 21:59

    招募單片機軟件開發工程師一枚

    職位名稱:單片機軟件開發工程師(嵌入式軟件開發工程師) 職位描述:1、單片機軟件開發任職要求:1、本科以上學歷,電子
    發表于 05-10 14:51

    嵌入式軟件開發工程師與FPGA開發工程師 精選資料分享

    我是一名初入職場的萌新,工作不久從嵌入式軟件工程師轉到了FPGA工程師,這篇文章簡單講講兩者的區別。嵌入式軟件工程師無非分為兩大類,在Windows平臺下做嵌入式軟件開發和在Linux
    發表于 08-18 06:37

    嵌入式軟件開發工程師與FPGA開發工程師的區別是什么?

    嵌入式軟件開發工程師與FPGA開發工程師的區別是什么?
    發表于 11-22 06:11

    藍牙軟件開發工程師是干什么的?

    藍牙軟件開發工程師的日常工作內容是什么啊?
    發表于 11-27 13:16

    軟件開發工程師模擬試題1

    軟件開發工程師模擬試題1需要的看看。
    發表于 03-22 17:59 ?0次下載

    一位軟件開發工程師的經驗分享

    軟件已經成為IT生活中不可或缺的一部分,而軟件開發工程師(即程序員)就是建起軟件大廈的功臣。
    的頭像 發表于 06-15 16:39 ?3191次閱讀

    一名優秀的軟件開發工程師應該具備那些素質?

    軟件開發工程師是當今社會的熱門職業,各大IT企業和非IT企業,都有不同程度的軟件工程師的需求。特別是在信息化速度加快的今天,軟件開發工程師
    的頭像 發表于 08-20 09:42 ?1.4w次閱讀

    嵌入式軟件開發工程師與FPGA開發工程師

    我是一名初入職場的萌新,工作不久從嵌入式軟件工程師轉到了FPGA工程師,這篇文章簡單講講兩者的區別。嵌入式軟件工程師無非分為兩大類,在Windows平臺下做嵌入式軟件開發和在Linux
    發表于 10-20 13:21 ?26次下載
    嵌入式<b class='flag-5'>軟件開發</b><b class='flag-5'>工程師</b>與FPGA<b class='flag-5'>開發</b><b class='flag-5'>工程師</b>

    上位機軟件開發工程師

    崗位職責: 1、負責上位機軟件程序設計和開發; 2、參與產線的需求分析和設計,滿足客戶需求; 3、根據技術協議配合電氣工程師,提出上位機解決方案; 4、與電氣工程師共同研發程序,完成通
    發表于 06-05 10:59 ?1921次閱讀