持續(xù)集成與測試自動化_第1頁
持續(xù)集成與測試自動化_第2頁
持續(xù)集成與測試自動化_第3頁
持續(xù)集成與測試自動化_第4頁
持續(xù)集成與測試自動化_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、持續(xù)集成與測試自動化51CMM.COM 原創(chuàng) 作者:黃良生一、背景我從畢業(yè)到現(xiàn)在 , 曾在大小不同的三個公司就職 : 有民營的、有外資的、也有上市公司。 但以前大多 都是做項目,從事軟件開發(fā)工作,絕大部分公司對測試都不重視,即使有也沒有成規(guī)模, 更談不上建立測 試體系??傊亻_發(fā)輕測試的管理思想在中國延續(xù)了幾十年、并且還要繼續(xù),看看他們給測試工程師開 的低工資和老師在課堂上講到測試時一筆帶過就知道測試被中國的老板所忽略。最近兩年 ,我從事 CRM 軟件產(chǎn)品的測試、項目管理工作。 由于公司對軟件的質(zhì)量要求特別高, 這必然引 起了大家對測試工作的重視,不但要求有強大的測試團隊,該團隊必須具備在業(yè)

2、務方面、測試技能方面的 專業(yè)水平, 而且在軟件開發(fā)過程方面經(jīng)常由于測試而作持續(xù)不斷地調(diào)整。幸運的是,隨著軟件開發(fā)技術和工具的提高,軟件工程和軟件過程實踐的推廣, 軟件測試日益得到重 視和專業(yè)化。 我從事測試工作期間,一直研究 CMM 、測試理論、自動化測試工具,并建立了一套完整的 測試體系。 在此并不介紹整個測試體系,而是介紹測試方面最值得探討的部分:持續(xù)集成與測試自動化。目的是與大 家共同進步。 當然已經(jīng)有很多關于持續(xù)集成和自動化測試方面的介紹,但我要介紹的不只是持續(xù)集成 ,也不只是自動化測試 ,而是測試如何的自動化 .二、測試自動化 自動化測試就是希望能夠通過自動化測試工具或其他手段,按照

3、測試工程師的預定計劃進行自動的測 試,目的是減輕手工測試的勞動量,從而達到提高軟件質(zhì)量的目的。自動化測試的目的在于發(fā)現(xiàn)老缺陷。 而手工測試的目的在于發(fā)現(xiàn)新缺陷。測試自動化涉及到測試流程、測試體系、自動化化編譯、持續(xù)集成、自動發(fā)布測試系統(tǒng)以及自動化測試等 方面整合。也就是說要讓測試能夠自動化,不僅是技術、工具的問題,更是一個公司和組織的文化問題。 首先公司從資金、管理上支持您,其次要有專門的測試團隊去建立適合自動化測試的測試流程、測試體系; 其次就是把原代碼從受控庫中取出、編譯、集成、發(fā)布可運行系統(tǒng)、進行自動化的單元測試和自動化的功 能測試的過程。(一)、自動化測試的好處1、對新版本執(zhí)行回歸測試

4、測試每個特征 對于產(chǎn)品型的軟件,每發(fā)布一個新的版本,其中大部分功能和界面都和上一個版本相似或完全相同,這部 分功能特別適合于自動化測試, 從而可以讓測試達到測試每個特征的目的。2、更多更頻繁的測試沉悶、耗時我們的產(chǎn)品向市場的發(fā)布周期是 3 個月,也就是我們的開發(fā)周期只有短短的 3 個月,而在測試期間是 每天/每 2天都要發(fā)布一個版本供測試人員測試,一個系統(tǒng)的功能點有幾千個上萬個,人工測試是非常的耗 時和繁瑣,這樣必然會使測試效率低下。3、替代手工測試的困難 300 個用戶有些非功能性方面的測試:壓力測試、并發(fā)測試、大數(shù)據(jù)量測試、 崩潰性測試,用人來測試是不 可能達到的。 在沒有引入自動化測試工

5、具之前,為了測試并發(fā),研發(fā)中 心的一、兩百號人在研發(fā)經(jīng)理的口令: 1、2、 3!, 大家同時按下同一個按鈕?;叵肫疬@中情景也蠻 有意思的。4、具有一致性和可重復性 由于每次自動化測試運行的腳本是相同的 , 所以每次執(zhí)行的測試具有一致性 , 人是很難做到的 . 由于 自動化測試的一致性,很容易發(fā)現(xiàn)被測軟件的任何改變。5、更好的利用資源周未 /晚上 理想的自動化測試能夠按計劃完全自動的運行 , 在開發(fā)人員和測試人員不可能實行三班倒的情況下 , 自動化測試可以勝任這個任務 , 完全可以在周末和晚上執(zhí)行測試 . 這樣充分的利用了公司的資源 ,也避免了 開發(fā)和測試之間的等待 .6、解決測試與開發(fā)之間的矛

6、盾 通常在開發(fā)的末期 ,進入集成測試階段 , 由于每發(fā)布一個版本的初期 ,測試系統(tǒng)的錯誤比較少 ,這時開發(fā) 人員有等待測試人員測試出錯誤的時間 . 事實上在疊代周期很短的開發(fā)模式中,存在更多的矛盾, 但自動 化測試可以解決其中的主要矛盾。7、增加軟件信任度總之, 自動化測試的好處和收益是很明顯的, 但也只有順利事實了自動化測試才能從中獲得它的益處。(二 )、 自動化測試 誤區(qū)、限制自動化化測試好處很多,但也有很多的局限,也正因為很多老板對自 動化測試的期望太高,所以有很多執(zhí)行自動化測試失敗的例子。1、期望自動化測試能取代手工測試 不能期望自動化測試來取代手工測試, 測試主要還是要靠人工的。2、

7、期望自動測試發(fā)現(xiàn)大量新缺陷 同樣不能期望自動化測試去發(fā)現(xiàn)更多新的缺陷, 事實證明新缺陷越多,自動化測試失敗的幾率就越大。發(fā) 現(xiàn)更多的新缺陷應該是手工測試的主要目的。測試專家James Bach總結(jié)得85%的缺陷靠手工發(fā)現(xiàn),而自動化測試只能發(fā)現(xiàn) 15的缺陷。其實我認為自動化測試能夠很好的發(fā)現(xiàn)老缺陷。3、工具本身不具有想象力 工具畢竟是工具,出現(xiàn)一些需要思考、體驗、界面美觀方面的測試,自動化測試工具無能為力。4、技術問題、組織問題、腳本維護自動化測試的推行, 有很多阻力, 比如組織是否重視, 是否成立這樣的測試團隊, 是否有這樣的技術水平, 對于測試腳本的維護工作量也挺大的,是否值得維護等等問題都

8、必須考慮。(三 )、 不適合自動化測試情況 自動化測試不是適合所有的公司、所有的項目。1、定制型項目(一次性的) 為客戶定制的項目,維護期由客戶方承擔的,甚至采用的開發(fā)語言、運行環(huán)境也是客戶特別要求的,即公 司在這方面的測試積累就少,這樣的項目不適合作自動化化測試。2、項目周期很短的項目 項目周期很短,測試周期很短,就不值得花精力去投資自動化測試,好不容易建立起的測試腳本,不能得 到重復的利用是不現(xiàn)實的。3、業(yè)務規(guī)則復雜的對象 業(yè)務規(guī)則復雜的對象,有很多的邏輯關系、運算關系,工具就很難測試。4、美觀、聲音、易用性測試 人的感觀方面的:界面的美觀、聲音的體驗、易用性的測試,也只有人來測試5、測試

9、很少運行:一個月只運行一次 測試很少運行,對自動化測試就是一種浪費。自動化測試就是讓它不厭其煩的、反反復復的運行才有效率。6、軟件不穩(wěn)定 軟件不穩(wěn)定,則會由于這些不穩(wěn)定因素導致自動化測試失敗。只有當軟件達到相對的穩(wěn)定,沒有界面性嚴 重錯誤和中斷錯誤才能開始自動化測試。7、涉及物理交互 工具很難完成與物理設備的交互,比如刷卡的測試等。(四)、什么樣的情況適合自動化測試自動化測試之所以能在很多大公司實施起來,就是有它適合自動化測 試的特點和高的投資回報率。1、產(chǎn)品型項目 產(chǎn)品型的項目,每個項目只改進少量的功能,但每個項目必須反反復復的測試那些沒有改動過的功能。這 部分測試完全可以讓自動化測試來承擔

10、, 同時可以把新加入的功能的測試也慢慢地加入到自動化測試當 中。2、增量式開發(fā)、持續(xù)集成項目 由于這種開發(fā)模式是頻繁的發(fā)布新版本進行測試,也就需要自動化測試來頻繁的測試,以便把人從中解脫 出來測試新的功能。3、能夠自動編譯、自動發(fā)布的系統(tǒng) 要能夠完全實現(xiàn)自動化測試,必須能夠具有自動化編譯,自動化發(fā)布系統(tǒng)進行測試的功能。 當然,不能達 到這個要求也可以在手工干預下進行自動化測試。4、回歸測試 回歸測試試自動化測試的強項,它能夠很好的確保你是否引入了新的缺陷,老的缺陷是否修改過來了。在 某種程度上可以把自動化測試工具叫做回歸測試工具。5、多次重復、機械性動作 自動化測試最喜歡測試:多次重復、機械性

11、動作,這樣的測試對它來說從不會失敗。比如要向系統(tǒng)輸入大 量的相似數(shù)據(jù)來測試壓力和報表。6、需要頻繁運行測試在一個項目中需要頻繁的運行測試,測試周期按天算,就能最大限度的利用測試腳本,提高工作效率。7、將煩瑣的任務轉(zhuǎn)化為自動化測試三、持續(xù)集成及其自動化編譯"持續(xù)集成(Continuous Integration )"的概念來自于XP (極限編程)的一個實踐,我們的開發(fā)模式是建立在 CMM 的基礎之上 ,引入了某些 XP 的概念,所以我們的思想是取各方面的精華來適合自己。持續(xù)集成是指能夠自動的集成已經(jīng)提交(Check-in)的代碼,直至發(fā)布到測試服務器供測試的整個過程。1、實現(xiàn)

12、自動化日構建需要做以下幾部分的工作:2、將所有的源代碼保存在單一的開發(fā)服務器,讓所有人都能從這里獲取最新的源代碼(需要用配置管理工 具存放源代碼 : 如 VSS/CVS/ClearCase)。3、使創(chuàng)建過程完全自動化,讓任何人都可以只輸入一條命令就完成系統(tǒng)的創(chuàng)建。4、使測試完全自動化,讓任何人都可以只輸入一條命令就運行一套完整的系統(tǒng)測試。5、確保所有人都可以得到最新、最好的可執(zhí)行文件。6、自動化編譯: 為了能夠提供自動化測試,所以所有的代碼必須能夠?qū)崿F(xiàn)自動化編譯。其實很多在做持續(xù)集成的公司都實現(xiàn)了改功能:如java程序可以采用在 Ant + Junit的基礎之上添加自己的功能既可以實現(xiàn)持續(xù)集成

13、我們把這個工具叫:日構建但很多公司并沒有實現(xiàn)對 JSP的自動編譯,對于采用jsp編寫的web頁面,它是編譯執(zhí)行語言,由于第一 次執(zhí)行要先編譯, 即第一次的速度稍慢, 如果要采用自動化測試工具 winrunner 進行功能測試時, 則會失敗。 因為自動化測試工具最基本的要求是:進入條件和出口條件必須在錄制與回放時完全相同。2、持續(xù)集成最的好處:完全可以取代人工的發(fā)布, 在 J2EE 中有個角色叫 deployer., 它的主要工作就是經(jīng)常發(fā)布新的系統(tǒng)供開發(fā)、 測試,一般每發(fā)布一次至少要一個小時,如遇到一些問題一個上午就耗費掉了,但使用“日構建”后就可以完全實現(xiàn)自動化,時間幾乎只等于編譯時間。它完

14、全避免了開發(fā)者們的 "除蟲會議 "-以前開發(fā)者們經(jīng)常需要開這樣的會,別人的領域、影響了別人的代碼,而被影響的人還不知道發(fā)生了什么,于是因為某個人在工作的時候踩進了bug 就出現(xiàn)了。這樣的bug絕大多數(shù)都可以在引入的同一天就被發(fā)現(xiàn)。由于一天之中發(fā)生變動的部分并不多,所以可以很 快找到出錯的位置。持續(xù)集成可以把發(fā)現(xiàn)的錯誤根據(jù)源代碼的作者,以郵件和日志的方式分發(fā)給作者,第二天一上班的第一件 事就是先修改錯誤。持續(xù)集成可以減少集成階段 "捉蟲"消耗的時間、 頻繁發(fā)布新版本的時間, 從而最終提高生產(chǎn)力和軟件質(zhì)量。3、理想的持續(xù)集成的實現(xiàn)方法:A)、同一個軟件產(chǎn)品要

15、有集中的同一臺開發(fā)服務器,即所有人的最新的、各自編譯通過的源代碼都在配置 管理工具如 VSS 中。B) 、有一臺運行主創(chuàng)建的機器,有計劃的運行日構建,日構建中有一個創(chuàng)建進程,該創(chuàng)建進程是在一個隨 時保持運行的Java類中進行的,如果沒有創(chuàng)建任務,創(chuàng)建進程就一直循環(huán)等待。C)、守護進程將全部代碼(包括原程序和配置文件,數(shù)據(jù)庫腳本等)提取到創(chuàng)建機器的一個目錄中。提 取完成之后,守護進程就會在這個目錄里調(diào)用 Ant 腳本。D)、 Ant 會接管整個創(chuàng)建過程,對所有源代碼做一次完整的創(chuàng)建。 Ant 腳本會負責整個編譯過程,并把得 到的class文件放進六個jar包里,發(fā)布到EJB服務器上。創(chuàng)建結(jié)束之后

16、,創(chuàng)建守護進程會給所有向最新一次創(chuàng)建歸還了代碼的開發(fā)者發(fā)一個e-mail,匯報創(chuàng)建的情況。E) 、當Ant完成了編譯和發(fā)布的工作之后,創(chuàng)建守護進程就會在EJB服務器上開始運行新的jar,同時開 始運行BVT測試套件:即利用 Junit進行單元測試。 單元測試完成后,日構建會把單元測試報告發(fā)給有錯誤的開發(fā)人員。F)、為了利用自動化工具(WINRUNNER )進行功能測試,必須對 JSP編譯,利用jspc命令進行包裝一層,就可以自動的對所有的jsp文件進行編譯,但由于編譯jsp的時間非常長(越比編譯 java代碼時間長),所以一般利用單獨的編譯服務器進行編譯。 發(fā)布編譯好的 jsp 文件進行自動化

17、測試的成功率高(因為第一 次運行 jsp 文件非常慢,而自動化測試最忌諱運行時和錄制時等待得時間不一樣)。而功能性自動化測試也需要按計劃有順序的執(zhí)行,這需要 TestDirector 測試管理系統(tǒng)來調(diào)度 Winrunner 進行測試。 讓所有的重復的繁瑣的事情都完全自動化,并且要經(jīng)常進行集成,讓重復的測試自動化。四、測試套件實現(xiàn)測試流程 .當具備持續(xù)集成和測試自動化的能力后,需要一套測試體系來支持和維護您的測試流程,確保測試過程是 符合流程、標準,而且是持續(xù)改進的。(一)、為什么需要一個流程?很多公司投入了大量的測試經(jīng)費,然而還是沒有收到預期的收益。這可能 是因為:缺乏足夠的測試計劃、缺乏測試

18、的優(yōu)先次序、工作的重復、沒有利用工具來配合人工測試、沒有 利用測試自動化工具、測試自動化運用不夠或者運用的不恰當?shù)鹊取K孕枰袦y試套件的實施流程。(二)、 為什么需要工具?工具能夠加快測試的進度,可以把控制和管理引入整個測試過程,比如MI 公司的 TestDirector 就是一個很好使用的測試管理系統(tǒng),而且是 web 版的。測試管理系統(tǒng)有很多的作用: 測試管理和報告:測試管理系統(tǒng)能夠保證系統(tǒng)開發(fā)和測試流程你不的問題盡快得到解決。審核跟蹤的憑據(jù): TestDirector 存貯了所有的測試結(jié)果,全部修改被寫進一個審核跟蹤器里,如:時間、日 期、修改人、錯誤授權,能夠很清晰的看到把錯誤當皮球踢

19、不負責人的整個過程。 提高測試覆蓋率:通過自動化測試工具的數(shù)據(jù)驅(qū)動來測試功能,可以提高測試覆蓋率。(四)、測試套件 -測試體系的主要目標 (5W3H) 測試體系的建立是為了確保軟件測試的全部活動按計劃、按標準的進行,是測試人員的行動綱領和職責指 導。也就是有這樣的一個體系、流程來指導他們的工作,培養(yǎng)了他們的主人翁責任感。讓測試工作開展得 有條不紊。主要的內(nèi)容有:測試流程,測試方針、測試規(guī)程、文檔模版、質(zhì)量標準、測試工具、測試技術和方法等內(nèi) 容。測試體系的主要目標(5W3H):目的是告訴與測試活動相關的人員在什么樣的時間,什么樣的地點,由誰來 做,做什么樣的事情,為什么做,如何做,怎么樣才算完成

20、,缺陷任何分析和預防等。可以簡稱:5W3H.1、為什么要測試系統(tǒng) (Why) ? 測試新功能:每發(fā)布一個新的版本,首先要去測試它的新功能。創(chuàng)建回歸測試的測試套件驗證缺陷修改: 在這個測試周期中要驗證上個測試周期的缺陷修改情況。驗證系統(tǒng)性能檢測新硬件2、如何測試系統(tǒng) (How) ? 系統(tǒng)測試:檢查系統(tǒng)總體功能壓力測試: 在反復相同的操作下、 或其他壓力條件下, 比如: 低內(nèi)存空間 /低磁盤空間等, 檢測軟件的反應 安裝測試:檢驗系統(tǒng)安裝得是否正確,而且與已安裝的軟件不發(fā)生沖突。安全測試:測試系統(tǒng)存取權限和授權的級別 邊界測試:利用數(shù)據(jù)邊界和系統(tǒng)邊界檢驗程序3、什么時候進行測試( When)? 在

21、開發(fā)流程的哪個階段開始測試 ? 在需求規(guī)格說明書一出來,或項目管理計劃一出來,測試人員就開始有事做:寫測試計劃、編寫測試用例、 執(zhí)行測試、測試報告和缺陷分析。很多老板以為要編碼結(jié)束后才開始測試工作,所以不肯有專職的測試人 員,怕他們在項目前期沒有事做。前提條件和附屬條件是什么 ? 多長時間需要進行一次測試 ?交貨的時間表是什么 ? 什么時候停止測試 ? 什么時候停止測試是很有學問的,很多公司多半是在沒有時間、沒有資金是,老板或 項目經(jīng)理說了停止就停止。事實上根據(jù)bug預測、bug發(fā)現(xiàn)率與錯誤修正率的時間曲線來決定的。只有當這個曲線達到水平線后方才可以停止。4、誰來實施測試 (Who) ?硬件:

22、具備什么樣的服務器、客戶端及其網(wǎng)絡環(huán)境。軟件:安裝什么樣的軟件環(huán)境最適合作這些測試。 體系架構:測試的類別有很多,不同的人進行不同的測試,比如開發(fā)人員做單元測試,測試人員作功能測 試、集成測試、非功能性測試,而讓市場、需求人員、客戶去做驗收測試 數(shù)據(jù):需要什么樣的測試數(shù)據(jù)來實施這一次的測試,這些測試數(shù)據(jù)的設計。人力資源:按測試計劃的要求安排相關的人力資源。5、在哪里進行測試 (Where) ?在開發(fā)服務器上測試?開發(fā)人員可能會叫你在測試服務器上測試,事實上這樣對測試效率和測試人員的情緒影響是很大的,因為 開發(fā)服務器是一個極不穩(wěn)定的環(huán)境。而且也沒明顯的測試階段。建立一個測試實驗室 ? 對于有很多項目的公司,建立一個測試實驗室是很必要的,主要用來做環(huán)境的兼容性測試,壓力、性能測 試,驗收測試等等。為了減輕測試者本地機器的負荷,使之在進行測試的同時可以做其他測試, 遠程定時執(zhí)行測試的機制。6、測試什么 (What) ?自動測試中應用程序的主要特點是什么 ?按重要性將這些特點排序?自動測試各部分的相對重要性 ? 總體質(zhì)量目標是什么 ( 可用性,功能,可靠性,性能等等 )?7、怎么樣才算完成 (How)?要定義測試的完成條件和完成標準 , 以便達到這些條件和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論