女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何減輕軟件開發(fā)的回測(cè)壓力,從而提高工程師的生產(chǎn)效率?

5RJg_mcuworld ? 來(lái)源:lq ? 2019-02-04 14:02 ? 次閱讀

如何減輕軟件開發(fā)的回測(cè)壓力,從而提高工程師的生產(chǎn)效率?MATEUSZ MACHALICA、ALEX SAMYLKIN 等人組成的 Facebook 研究團(tuán)隊(duì)提出使用一個(gè)利用機(jī)器學(xué)習(xí)的新系統(tǒng)來(lái)創(chuàng)建一個(gè)為特定代碼更改選擇回歸測(cè)試的概率模型,從而更好地執(zhí)行這種回歸測(cè)試。

為了高效地開發(fā)新產(chǎn)品特征和更新,F(xiàn)acebook研究團(tuán)隊(duì)使用基于主干的開發(fā)模型來(lái)管理對(duì)代碼庫(kù)的改動(dòng)。一旦一位工程師的代碼更改被接入主分支(主干),他們?cè)噲D讓它對(duì)從事該產(chǎn)品或服務(wù)的其他工程師快速可見。這種基于主干的開發(fā)模型比使用特征分支和特征融合更加有效,因?yàn)樗沟妹總€(gè)人都能夠在代碼庫(kù)的最新版本上工作。

但是,在被接受到主干之前,對(duì)每項(xiàng)提出的更改進(jìn)行徹底的回歸測(cè)試很重要(注:回歸測(cè)試是指修改了舊代碼后, 重新進(jìn)行測(cè)試以確認(rèn)修改沒(méi)有引入新的錯(cuò)誤或?qū)е缕渌a產(chǎn)生錯(cuò)誤的一種測(cè)試方法)。在從主干被部署到生產(chǎn)之前,每項(xiàng)代碼更改都需要經(jīng)過(guò)徹底的回歸測(cè)試,進(jìn)入主干異常代碼會(huì)使得評(píng)估新提出的代碼更改變得更困難得多,并且還會(huì)影響工程師的生產(chǎn)效率。

對(duì)此,該研究團(tuán)隊(duì)開發(fā)了一種更好的方法來(lái)執(zhí)行這項(xiàng)回歸測(cè)試:使用一個(gè)利用機(jī)器學(xué)習(xí)的新系統(tǒng)來(lái)創(chuàng)建一個(gè)為特定代碼更改選擇回歸測(cè)試的概率模型。這種方法需要僅僅運(yùn)行一個(gè)小的測(cè)試集,以確保檢測(cè)到錯(cuò)誤的更改。與典型的回歸測(cè)試選擇(RTS)工具不同,該系統(tǒng)通過(guò)從歷史代碼更改和測(cè)試結(jié)果的大型數(shù)據(jù)集中學(xué)習(xí),來(lái)自動(dòng)開發(fā)測(cè)試選擇策略。

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

隨著代碼庫(kù)的不斷發(fā)展,該系統(tǒng)也幾乎不要求手動(dòng)調(diào)試。而且經(jīng)證明,它還能夠捕捉產(chǎn)生不一致和不確定性結(jié)果的片狀測(cè)試。

為什么使用創(chuàng)建依賴項(xiàng)是低效的

回歸測(cè)試的一種常用方法,就是使用從構(gòu)建元數(shù)據(jù)中提取的信息來(lái)確定在特定代碼更改上運(yùn)行哪些測(cè)試。通過(guò)分析代碼單元間的創(chuàng)建依賴項(xiàng),可以確定傳遞依賴于在代碼更改中被修正的源的所有測(cè)試。例如,在下圖中,圓圈表示測(cè)試;正方形表示代碼的中間單元,如庫(kù);菱形表示存儲(chǔ)庫(kù)中的單個(gè)源文件。箭頭連接起實(shí)體 A →B,當(dāng)且僅當(dāng) B 直接依賴于 A 時(shí),他們將其解釋為 A 影響 B。藍(lán)色的菱形表示在示例代碼更改中被修正的兩個(gè)文件,所有傳遞依賴于它們的實(shí)體也用藍(lán)色表示。在這個(gè)場(chǎng)景中,基于創(chuàng)建依賴項(xiàng)的測(cè)試選擇策略將執(zhí)行測(cè)試 1,2,3 和 4,但不執(zhí)行測(cè)試 5 和 6,因?yàn)楹髢身?xiàng)測(cè)試不依賴于修正的文件。

這種方法有一個(gè)明顯的缺點(diǎn):它以說(shuō)「是的,本測(cè)試受到影響」告終的次數(shù)比實(shí)際所需要的要多。平均而言,對(duì)于移動(dòng)代碼庫(kù)的每項(xiàng)更改,該方法都會(huì)導(dǎo)致執(zhí)行多達(dá)四分之一的可用測(cè)試。如果傳遞依賴于修正文件的所有測(cè)試都真正受到影響,他們將別無(wú)選擇,而只能將每項(xiàng)測(cè)試都執(zhí)行一遍。然而,在他們的單片代碼庫(kù)中,終端產(chǎn)品依賴于許多可重復(fù)使用的組件,這些組件使用一小組低級(jí)庫(kù)。在實(shí)踐中,許多傳遞性依賴實(shí)際上與回歸測(cè)試無(wú)關(guān)。例如,當(dāng)某個(gè)低級(jí)庫(kù)發(fā)生更改時(shí),在使用該庫(kù)的每個(gè)項(xiàng)目上重新運(yùn)行所有測(cè)試將是低效的。

軟件開發(fā)研究領(lǐng)域也開發(fā)了其他的回歸測(cè)試選擇方法,例如基于靜態(tài)更改-影響分析的方法。然而,由于他們代碼庫(kù)的大小和使用的不同編程語(yǔ)言的數(shù)量,這些技術(shù)在他們的使用案例中是不現(xiàn)實(shí)的。

一種新方法:預(yù)測(cè)性測(cè)試選擇

基于創(chuàng)建依賴項(xiàng)的選擇測(cè)試涉及到判斷哪些測(cè)試可能受到更改的影響的問(wèn)題。為了開發(fā)更好的方法,F(xiàn)acebook 的研究團(tuán)隊(duì)考慮了一個(gè)不一樣的問(wèn)題:指定的一項(xiàng)測(cè)試發(fā)現(xiàn)某個(gè)代碼修改中的回歸問(wèn)題的可能性有多大?如果他們能估計(jì)到這個(gè)可能性,就可以做出明智的決定,來(lái)排除那些極不可能發(fā)現(xiàn)回歸的測(cè)試。這是對(duì)傳統(tǒng)測(cè)試選擇的重大背離,并且開辟了一種新的、更有效的選擇測(cè)試方法。

作為第一步,該研究團(tuán)隊(duì)創(chuàng)建了一個(gè)預(yù)測(cè)模型,該模型針對(duì)新提出的代碼更改估計(jì)每項(xiàng)測(cè)試失敗的概率。他們通過(guò)使用包括歷史代碼更改上的測(cè)試結(jié)果在內(nèi)的大型數(shù)據(jù)集,然后采用標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)技術(shù)來(lái)創(chuàng)建模型,而非手動(dòng)定義模型。

每個(gè)新的代碼更改總會(huì)與之前的情況略有不同,因此模型不能簡(jiǎn)單地將新的更改與歷史更改進(jìn)行比較,來(lái)確定哪些測(cè)試值得運(yùn)行。然而,新更改的抽象可以類似于前一個(gè)或多個(gè)代碼更改的對(duì)應(yīng)的抽象。

在訓(xùn)練期間,研究團(tuán)隊(duì)的系統(tǒng)學(xué)習(xí)基于源自先前代碼更改和測(cè)試的特征的模型。然后,當(dāng)該系統(tǒng)正在分析新的代碼更改時(shí),他們將學(xué)習(xí)到的模型應(yīng)用于基于特征的代碼更改的抽象。對(duì)于任何特定的測(cè)試,該模型接著能夠預(yù)測(cè)檢測(cè)到回歸的可能性。

為此,該系統(tǒng)使用了標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)算法的變體——梯度提升決策樹模型。研究團(tuán)隊(duì)雖然可以使用其他機(jī)器學(xué)習(xí)算法,但其之所以選擇這種方法,有幾個(gè)原因:決策樹是可解釋的、易于訓(xùn)練的,并且已經(jīng)是 Facebook 機(jī)器學(xué)習(xí)算法基礎(chǔ)結(jié)構(gòu)的一部分。

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

評(píng)估和校準(zhǔn)模型

對(duì)于每項(xiàng)代碼更改,系統(tǒng)選擇的測(cè)試數(shù)量影響它在檢測(cè)回歸時(shí)的可靠性。使用最近代碼更改的選擇作為驗(yàn)證集,研究團(tuán)隊(duì)可以評(píng)估其在新更改上的準(zhǔn)確性。下面的圖表顯示了每次更改所選擇的最大測(cè)試數(shù)量與這一選擇的準(zhǔn)確性之間的關(guān)系。在生產(chǎn)中,他們要求其模型能夠正確預(yù)測(cè)超過(guò) 95% 的測(cè)試結(jié)果,并且能為超過(guò) 99.9% 的有問(wèn)題的更改捕獲至少一個(gè)失敗的測(cè)試。他們發(fā)現(xiàn),這種準(zhǔn)確度的高標(biāo)準(zhǔn)所帶來(lái)的測(cè)試信號(hào)的損失可以忽略不計(jì),并且消除了大量不必要的測(cè)試執(zhí)行。

由于代碼庫(kù)結(jié)構(gòu)的不斷演變,測(cè)試選擇策略必須適應(yīng)繼續(xù)滿足這些嚴(yán)格的正確性要求。然而,他們的系統(tǒng)讓其變得簡(jiǎn)單,因?yàn)樗麄兛梢允褂米罱峤坏拇a更改的測(cè)試結(jié)果來(lái)定期地重新訓(xùn)練模型。

處理測(cè)試片狀

為了確保他們的測(cè)試選擇很好地適用于現(xiàn)實(shí)世界的測(cè)試,系統(tǒng)需要處理測(cè)試片狀問(wèn)題:當(dāng)被測(cè)試的代碼沒(méi)有真正被更改時(shí),測(cè)試結(jié)果從通過(guò)變?yōu)槭 U缢麄冊(cè)谡撐闹兴龅母敿?xì)的解釋,如果他們訓(xùn)練一個(gè)模型而不去識(shí)別片狀測(cè)試失敗,該模型可能無(wú)法學(xué)習(xí)去一致地預(yù)測(cè)測(cè)試結(jié)果。在下面的示例中,兩個(gè)測(cè)試選擇策略捕獲所有失敗的測(cè)試執(zhí)行的共同部分。如果系統(tǒng)不能區(qū)分哪些測(cè)試失敗是片狀的以及哪些不是,那么它將無(wú)法知道哪個(gè)策略是最好的。策略 A 具有明顯更好的準(zhǔn)確性,因?yàn)樗东@了所有無(wú)法發(fā)現(xiàn)實(shí)際回歸的測(cè)試。然而,策略 B 選擇了大量由于片狀性而非代碼的實(shí)際問(wèn)題而失敗的測(cè)試。

為了減輕片狀性對(duì)所學(xué)到的測(cè)試選擇模型的影響,研究團(tuán)隊(duì)在收集訓(xùn)練數(shù)據(jù)時(shí)積極地重新嘗試失敗的測(cè)試。這種方法讓他們將連續(xù)失敗的測(cè)試(指示真實(shí)回歸)與那些呈現(xiàn)片狀、非重現(xiàn)性失敗的測(cè)試區(qū)分開來(lái)。

檢測(cè)和固定回歸:30000 英尺的視角

這個(gè)系統(tǒng)是研究團(tuán)隊(duì)創(chuàng)建智能工具以使代碼開發(fā)過(guò)程更加可靠和高效的更廣泛努力的一部分。他們的基于搜索的自動(dòng)化軟件測(cè)試系統(tǒng) Sapienz 和自動(dòng)化缺陷修復(fù)工具 Getafix,也可以幫助他們自動(dòng)檢測(cè)和修復(fù)回歸——也就是說(shuō),這些工作僅要求工程師們投入很少的注意力甚至不投入注意力。

預(yù)測(cè)性測(cè)試選擇(這篇博客文章中描述的系統(tǒng))通過(guò)選擇由工程師定義的正確的測(cè)試集,來(lái)高效地檢測(cè)回歸。Sapienz 生成新的測(cè)試序列,來(lái)發(fā)掘讓移動(dòng)應(yīng)用程序崩潰的條件,Getafix 則為他們使用測(cè)試和驗(yàn)證工具所發(fā)現(xiàn)的問(wèn)題推薦補(bǔ)丁,然后由編寫更改的工程師檢驗(yàn)并選擇接受或拒絕這些補(bǔ)丁。總而言之,這些系統(tǒng)讓工程師能夠?yàn)槭褂?Facebook 產(chǎn)品的數(shù)十億人,更快、更有效地創(chuàng)建和部署新特征。

未來(lái)規(guī)劃

預(yù)測(cè)性測(cè)試選擇是 Facebook 的數(shù)個(gè)項(xiàng)目中的一個(gè),它旨在應(yīng)用統(tǒng)計(jì)學(xué)方法和機(jī)器學(xué)習(xí)來(lái)提高回歸測(cè)試的有效性。隨著研究團(tuán)隊(duì)進(jìn)一步提高系統(tǒng)的效率和準(zhǔn)確性,他們也將應(yīng)用相關(guān)的方法來(lái)識(shí)別測(cè)試范圍中的潛在差距。

機(jī)器學(xué)習(xí)正在變革生活的方方面面。他們相信軟件工程在這方面也一樣。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    637

    瀏覽量

    28137
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8490

    瀏覽量

    134069
  • 決策樹
    +關(guān)注

    關(guān)注

    3

    文章

    96

    瀏覽量

    13767

原文標(biāo)題:如何減輕軟件開發(fā)的回測(cè)壓力?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    北京--知名IT企業(yè)--誠(chéng)聘軟件開發(fā)工程師

    本帖最后由 hongshanqixia 于 2012-5-25 14:25 編輯 我公司為知名IT企業(yè),現(xiàn)需要幾名軟件開發(fā)工程師。一經(jīng)錄用,待遇從優(yōu)。軟件研發(fā)工程師工作職責(zé):1、
    發(fā)表于 05-25 14:23

    stm32軟件開發(fā)工程師招聘

    stm32軟件開發(fā)工程師招聘職位要求1. 精通C語(yǔ)言。2. 具有STM32系列單片機(jī)相關(guān)C代碼編寫經(jīng)驗(yàn),熟悉STM32系列單片機(jī)架構(gòu)和設(shè)計(jì),能夠獨(dú)立編寫軟件,具有良好的代碼編寫習(xí)慣;3.熟悉
    發(fā)表于 05-27 12:55

    【成都】【招聘】誠(chéng)聘FPGA工程師、 windows設(shè)備驅(qū)動(dòng)開發(fā)工程師、嵌入式軟件開發(fā)工程師、硬件工程師

    PCB和PCBA生產(chǎn)所需的相關(guān)資料; 7.有高速布線工作經(jīng)驗(yàn)優(yōu)先。web高級(jí)工程師(1人)崗位職責(zé):1.負(fù)責(zé)Web相關(guān)項(xiàng)目的開發(fā)工作2.能獨(dú)自規(guī)劃軟件項(xiàng)目解決規(guī)劃方案,制定技術(shù)規(guī)范書3
    發(fā)表于 05-31 15:30

    誠(chéng)聘嵌入式軟件開發(fā)工程師

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

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

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

    誠(chéng)聘結(jié)構(gòu)設(shè)計(jì)工程師、電子工程師軟件開發(fā)工程師

    ,本公司將提供有競(jìng)爭(zhēng)力的薪酬、廣闊的發(fā)展空間,為各加盟的員工才華施展提供良好的舞臺(tái)。現(xiàn)誠(chéng)聘業(yè)內(nèi)結(jié)構(gòu)設(shè)計(jì)工程師、電子工程師軟件開發(fā)工程師。聯(lián)系方式:***(朱先生) 微信:LEKES0
    發(fā)表于 11-20 21:59

    招募單片機(jī)軟件開發(fā)工程師一枚

    職位名稱:?jiǎn)纹瑱C(jī)軟件開發(fā)工程師(嵌入式軟件開發(fā)工程師) 職位描述:1、單片機(jī)軟件開發(fā)任職要求:1、本科以上學(xué)歷,電子
    發(fā)表于 05-10 14:51

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

    我是一名初入職場(chǎng)的萌新,工作不久從嵌入式軟件工程師轉(zhuǎn)到了FPGA工程師,這篇文章簡(jiǎn)單講講兩者的區(qū)別。嵌入式軟件工程師無(wú)非分為兩大類,在Windows平臺(tái)下做嵌入式軟件開發(fā)和在Linux
    發(fā)表于 08-18 06:37

    嵌入式軟件開發(fā)工程師與FPGA開發(fā)工程師的區(qū)別是什么?

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

    藍(lán)牙軟件開發(fā)工程師是干什么的?

    藍(lán)牙軟件開發(fā)工程師的日常工作內(nèi)容是什么啊?
    發(fā)表于 11-27 13:16

    軟件開發(fā)工程師模擬試題1

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

    一位軟件開發(fā)工程師的經(jīng)驗(yàn)分享

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

    一名優(yōu)秀的軟件開發(fā)工程師應(yīng)該具備那些素質(zhì)?

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

    嵌入式軟件開發(fā)工程師與FPGA開發(fā)工程師

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

    上位機(jī)軟件開發(fā)工程師

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