最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

軟件測(cè)試 | 持續(xù)集成的前提條件

2023-05-14 17:33 作者:愛(ài)測(cè)軟件測(cè)試  | 我要投稿

持續(xù)集成不會(huì)獨(dú)立地幫你修復(fù)構(gòu)建過(guò)程。事實(shí)上,如果你在項(xiàng)目中期才做這件事的話,可能會(huì)非常痛苦。為了使持續(xù)集成能夠更有效,開(kāi)始之前,你應(yīng)該先做好下面這些事情。

1.頻繁提交

對(duì)于持續(xù)集成來(lái)說(shuō),我們最重要的工作就是頻繁提交代碼到版本控制庫(kù)。每天至少應(yīng)該提交幾次代碼。

定期地將代碼提交到代碼主干上會(huì)給我們帶來(lái)很多其他好處。比如,它使每次的修改都比較小,所以很少會(huì)使構(gòu)建失敗。當(dāng)你做了錯(cuò)事或者走錯(cuò)了路線時(shí),可以輕松地回滾到已知的正確版本上。它使你的重構(gòu)更有規(guī)則,使每次重構(gòu)都是小步修改,從而保證可預(yù)期的行為。它有助于保證那些涉及多個(gè)文件的修改盡量不會(huì)影響其他人的工作。它讓開(kāi)發(fā)人員更敢于創(chuàng)新,用于嘗試新的想法,而且一旦行不通,可以輕松地回滾到最近提交的一個(gè)版本上。它還會(huì)讓你不時(shí)地停下來(lái)休息一下,伸展一下身體,有助于防止腕關(guān)節(jié)疼痛或肢體重復(fù)性勞損(RSI)。如果發(fā)生了嚴(yán)重的問(wèn)題(比如誤刪了文件等),你也不會(huì)丟掉太多的工作成果。

前面我們特意提到過(guò)“要提交到主干”。很多項(xiàng)目使用版本控制中的分會(huì)技術(shù)來(lái)進(jìn)行大型團(tuán)隊(duì)的管理。然而,當(dāng)使用分支時(shí),其實(shí)不可能真正地做到持續(xù)集成。因?yàn)槿绻阍诜种瞎ぷ?,那么你的代碼就沒(méi)有和其他開(kāi)發(fā)人員的代碼進(jìn)行即時(shí)集成。那么使用長(zhǎng)生命周期分支的團(tuán)隊(duì)恰恰面臨著我們?cè)诒菊麻_(kāi)始時(shí)描述的問(wèn)題。除了一些很有限的情況外,我們不推薦使用分支。

2.創(chuàng)建全面的自動(dòng)化測(cè)試套件

如果沒(méi)有一系列全面的自動(dòng)化測(cè)試,那么構(gòu)成成功只意味著應(yīng)用程序能夠編譯并組裝在一起。雖然對(duì)于某些團(tuán)隊(duì)來(lái)說(shuō),這已經(jīng)是非常大的一個(gè)進(jìn)步了,但是,假如能夠有一定程序的自動(dòng)化測(cè)試,會(huì)讓你更有信息說(shuō):“我們的應(yīng)用是可以工作的?!?/p>

單元測(cè)試用于單獨(dú)測(cè)試應(yīng)用程序中某些小單元的行為(比如一個(gè)方法、一個(gè)函數(shù),或一小組方法或函數(shù)之間的交互)。它們通常不需要啟動(dòng)整個(gè)應(yīng)用就可以執(zhí)行,而且也不需要連接數(shù)據(jù)庫(kù)(如果應(yīng)用程序需要數(shù)據(jù)庫(kù)的話)、文件系統(tǒng)或網(wǎng)絡(luò)。它們也不需要將應(yīng)用程序部署到類生產(chǎn)環(huán)境中運(yùn)行。單元測(cè)試應(yīng)該運(yùn)行的非??欤词箤?duì)于一個(gè)大型應(yīng)用來(lái)說(shuō),整個(gè)單元測(cè)試套件也應(yīng)該在十分鐘之內(nèi)完成。

組件測(cè)試用于測(cè)試應(yīng)用程序中幾個(gè)組件的行為。與單元測(cè)試一樣,它通常不必啟動(dòng)整個(gè)應(yīng)用程序,但有可能需要連接數(shù)據(jù)庫(kù)、訪問(wèn)文件系統(tǒng)或其他外部系統(tǒng)或接口(這些可以使用“樁”,即stub技術(shù))。組件測(cè)試的運(yùn)行時(shí)間通常較長(zhǎng)。

驗(yàn)收測(cè)試的目的是驗(yàn)證應(yīng)用程序是否滿足業(yè)務(wù)需求所定義的驗(yàn)收條件,包括應(yīng)用程序提供的功能,以及其他特定需求,比如容量、有效性、安全性等。驗(yàn)收測(cè)試最好采用整個(gè)應(yīng)用程序運(yùn)行于類生產(chǎn)環(huán)境的運(yùn)作方式。當(dāng)然,驗(yàn)收測(cè)試的運(yùn)行時(shí)間比較長(zhǎng)。一個(gè)驗(yàn)收測(cè)試套件連續(xù)運(yùn)行一整天是很平常的事。

3.保持較短的構(gòu)建和測(cè)試過(guò)程

如果代碼構(gòu)建和單元測(cè)試的執(zhí)行需要花很長(zhǎng)時(shí)間的話,你會(huì)遇到一些麻煩,如下所示。

大家在提交代碼之前不愿意在本地環(huán)境進(jìn)行全量構(gòu)建和運(yùn)行測(cè)試,導(dǎo)致構(gòu)建失敗的幾率越來(lái)越大。

持續(xù)集成過(guò)程需要花太長(zhǎng)時(shí)間,從而導(dǎo)致再次運(yùn)行構(gòu)建時(shí),該構(gòu)建會(huì)包含很多次提交,所以很難確定到底是哪次提交破壞了本次構(gòu)建。

大家提交的頻率會(huì)變少,因?yàn)槊窟\(yùn)行一次構(gòu)建和測(cè)試,都要坐那兒等上一陣子。

理想情況下,提交前的預(yù)編譯和測(cè)試過(guò)程,以及持續(xù)集成服務(wù)器上的編譯和測(cè)試過(guò)程應(yīng)該都能在幾分鐘內(nèi)結(jié)束。我們認(rèn)為,十分鐘是一個(gè)極限了,最好是在五分鐘以內(nèi),九十秒內(nèi)完成是最理想的。十分鐘對(duì)于那些慣于操作小項(xiàng)目的人來(lái)說(shuō),應(yīng)該算是比較長(zhǎng)的時(shí)間了,但對(duì)于那些經(jīng)理過(guò)需要花數(shù)小時(shí)的編譯的老前輩來(lái)說(shuō),卻是非常短的時(shí)間。這段時(shí)間長(zhǎng)度應(yīng)該恰好能泡杯茶,快速聊幾句,看一眼郵件,或伸展一下身體。

接下來(lái)的這個(gè)要求看上去恰好和上一個(gè)(即需要有全面的自動(dòng)化測(cè)試集)相矛盾。但是,有很多技術(shù)可以幫助你減少構(gòu)建時(shí)間。首先要考慮的事情是讓測(cè)試執(zhí)行得更快。XUnit類型的工具,比如JUnit和NUnit,可以提供每個(gè)測(cè)試運(yùn)行時(shí)長(zhǎng)的報(bào)告。找出那些運(yùn)行較慢的測(cè)試,看看是否可以把他們優(yōu)化一下,或者在確保同樣覆蓋率和信心的前提下縮短測(cè)試時(shí)間。這件事情應(yīng)該經(jīng)常做。

然而,有時(shí)候需要將測(cè)試分為幾個(gè)階段,那么如何規(guī)劃階段呢?首先將其分成兩個(gè)階段。第一個(gè)階段用于編譯軟件,運(yùn)行所有類級(jí)別的單元測(cè)試,并創(chuàng)建用于部署的二進(jìn)制。這個(gè)階段叫做“提交階段”。

第二階段應(yīng)該利用第一階段所生成的二進(jìn)制文件進(jìn)行驗(yàn)收測(cè)試、集成測(cè)試。加入你有性能測(cè)試的話,也要一并運(yùn)行。利用現(xiàn)代持續(xù)集成工具,很容易創(chuàng)建這種分階段的構(gòu)建流程,它們能夠同時(shí)運(yùn)行多個(gè)任務(wù),并將運(yùn)行結(jié)果收集在一起,以便于很容易看到運(yùn)行狀態(tài)和結(jié)果。

提交階段的這套測(cè)試應(yīng)該在提交之前運(yùn)行,而且在每次提交之后,在持續(xù)集成服務(wù)器上也要再運(yùn)行一次。一旦提交測(cè)試套件通過(guò)了,就要馬上運(yùn)行驗(yàn)收測(cè)試的第二個(gè)階段,但這個(gè)階段可能會(huì)花更多時(shí)間。如果該階段用時(shí)超過(guò)半小時(shí),就要考慮使用高性能的多進(jìn)程機(jī)器或者建立構(gòu)建網(wǎng)格來(lái)并行執(zhí)行這些測(cè)試?,F(xiàn)代的持續(xù)集成服務(wù)器都能讓這件事變得很簡(jiǎn)單。另外,有時(shí)候把一個(gè)簡(jiǎn)單的冒煙測(cè)試套件加入到提交階段,也是非常有用的。這個(gè)冒煙測(cè)試套件應(yīng)該執(zhí)行一些簡(jiǎn)單的驗(yàn)收和集成測(cè)試,用于確保最常見(jiàn)的功能沒(méi)有被破壞。加入這些基本功能被破壞了,就能得到很快的反饋。

4.管理開(kāi)發(fā)工作區(qū)

對(duì)于保證開(kāi)發(fā)人員的開(kāi)發(fā)效率與明晰思路來(lái)說(shuō),開(kāi)發(fā)環(huán)境的管理是特別重要的。當(dāng)開(kāi)發(fā)人員剛開(kāi)始新任務(wù)時(shí),應(yīng)該總是從一個(gè)已知正確的狀態(tài)開(kāi)始。他們應(yīng)該能夠運(yùn)行構(gòu)建、執(zhí)行自動(dòng)化測(cè)試,以及在其可控的環(huán)境上部署其開(kāi)發(fā)的應(yīng)用程序,通常是在他們自己的開(kāi)發(fā)機(jī)上。只有在特殊的情況下,才應(yīng)使用共享環(huán)境開(kāi)發(fā)。在本地開(kāi)發(fā)環(huán)境上運(yùn)行應(yīng)用程序時(shí),應(yīng)確保所使用的自動(dòng)化過(guò)程與持續(xù)集成環(huán)境中的一致,與測(cè)試環(huán)境中也是一樣的,且生產(chǎn)環(huán)境中也是一樣的。

達(dá)到這一目標(biāo)的第一個(gè)先決條件就是細(xì)心的配置管理,不僅僅是管理代碼,還包括測(cè)試數(shù)據(jù),數(shù)據(jù)庫(kù)的腳本、構(gòu)建腳本和部署腳本,這些全部都要放在版本控制庫(kù)中,且當(dāng)編碼開(kāi)始時(shí),應(yīng)該以它們“最新的正確版本”作為起點(diǎn)?!白钚碌恼_版本”是指那個(gè)在持續(xù)集成服務(wù)器上最近一次通過(guò)所有自動(dòng)化測(cè)試的那個(gè)版本。

其次是對(duì)第三方依賴的配置管理,即那些開(kāi)發(fā)中所用的庫(kù)文件和組件。應(yīng)確保庫(kù)文件或組件的版本都是正確的,即它們的版本與你開(kāi)發(fā)的源代碼的版本是相互匹配的。有些開(kāi)源工具可以幫助管理第三方依賴,最為常見(jiàn)的有Manven和lvy。然而,使用這些工具時(shí),你需要格外小心地確保配置這些工具,這樣才能保證不必每次都將某些第三方依賴的最新版本重新下載到本地倉(cāng)庫(kù)中。

對(duì)于大部分項(xiàng)目來(lái)說(shuō),其所依賴的第三方庫(kù)文件的版本不會(huì)經(jīng)常發(fā)生改變,所以最簡(jiǎn)單的方法就是將這些庫(kù)文件隨你的代碼一起提交到版本控制庫(kù)中。

最后就是確保自動(dòng)化測(cè)試(包括冒煙測(cè)試)都能夠在開(kāi)發(fā)機(jī)上運(yùn)行。對(duì)于一個(gè)大型系統(tǒng),我們可能需要在開(kāi)發(fā)機(jī)上配置中間件,運(yùn)行內(nèi)存數(shù)據(jù)庫(kù)或單用戶數(shù)據(jù)庫(kù)。這的確要花一定的功夫,但能夠讓開(kāi)發(fā)人員于每次提交在自己的開(kāi)發(fā)機(jī)上將應(yīng)用程序運(yùn)行起來(lái),并在其上跑一遍冒煙測(cè)試,這可以大大改善應(yīng)用程序的質(zhì)量。事實(shí)上,一個(gè)好的應(yīng)用程序架構(gòu)的標(biāo)志就是不需要費(fèi)太大力氣就可以讓應(yīng)用運(yùn)行在開(kāi)發(fā)機(jī)上。


軟件測(cè)試 | 持續(xù)集成的前提條件的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
三门峡市| 常州市| 岳阳县| 松溪县| 岚皋县| 宁都县| 合川市| 天镇县| 灵川县| 耿马| 奉化市| 宁化县| 阆中市| 中西区| 乌兰浩特市| 内江市| 宜良县| 嘉义市| 革吉县| 金昌市| 汉中市| 湟中县| 黎平县| 石棉县| 自治县| 曲靖市| 磐石市| 百色市| 沂源县| 随州市| 分宜县| 逊克县| 游戏| 建水县| 清丰县| 嵊州市| 湟源县| 沈阳市| 淮北市| 佛坪县| 象山县|