劉智萍
摘要:針對當(dāng)前手工測試無法滿足軟件測試的問題,通過軟件工程生命周期來分析測試自動化。首先對軟件工程的生命周期進(jìn)行分析;其次對軟件測試自動化的定義進(jìn)行了總結(jié)性描述,并分析了測試自動化的生命周期;最后對手機(jī)通信系統(tǒng)的測試自動化進(jìn)行了分析。研究結(jié)論:對于軟件工程師和測試人員有著積極的作用。
關(guān)鍵詞:軟件工程;測試自動化;生命周期
中圖分類號:TB文獻(xiàn)標(biāo)識碼:A文章編號:16723198(2014)14019402
隨著IT行業(yè)的迅猛發(fā)展,軟件所開發(fā)的功能越來越多,其軟件測試所需的花費(fèi)也隨之增加。當(dāng)發(fā)現(xiàn)軟件故障越晚,其花費(fèi)的成本將更大。因此,越早發(fā)現(xiàn)軟件在設(shè)計(jì)中的故障,將會減少軟件的開發(fā)壓力并節(jié)省開發(fā)的時(shí)間。隨著技術(shù)的提高,測試自動化技術(shù)受到IT業(yè)內(nèi)的好評,在一定程度上節(jié)省了人力和財(cái)力的投入,但是測試自動化和軟件的生命周期沒有有效地進(jìn)行結(jié)合,使得測試做了許多的無用功。
1軟件工程生命周期
1.1階段劃分
軟件的生命周期主要由軟件定義、軟件開發(fā)和軟件維護(hù)三部分組成。對于軟件的各個不同階段,盡可能地將軟件的開發(fā)設(shè)計(jì)工作劃分為具體的任務(wù),并且使任務(wù)之間的關(guān)聯(lián)性降低,盡可能地相互獨(dú)立,從而可以有效地降低軟件開發(fā)的復(fù)雜性,利于軟件開發(fā)工作的組織管理,簡化其工作流程。
1.2軟件定義時(shí)期
對軟件進(jìn)行定義的主要目的是明確軟件開發(fā)工作的總目標(biāo)和該軟件工程的可行性,分析軟件系統(tǒng)需要實(shí)現(xiàn)的具體功能及采取何種手段實(shí)現(xiàn)該功能,并對整個系統(tǒng)所需要的成本和資源進(jìn)行初步的估算,設(shè)計(jì)出工程的進(jìn)度表。該階段的工作主要由系統(tǒng)分析員完成,其主要工作有:
(1)問題描述和可行性分析。
進(jìn)行此階段分析時(shí),主要由軟件系統(tǒng)的需求方和軟件開發(fā)方相互協(xié)商,明確軟件系統(tǒng)的目標(biāo)及可行性。
問題描述主要是明確需要解決什么問題,對問題進(jìn)行準(zhǔn)確的定位,將問題的困難程度、性質(zhì)、規(guī)模及目標(biāo)等內(nèi)容以書面的形式進(jìn)行描述,并上報(bào)給上級主管部門。對軟件需求方的使用者進(jìn)行走訪,對問題的理解進(jìn)行扼要的描述,并將寫好的報(bào)告反饋給用戶,查看問題的描述是否準(zhǔn)確,統(tǒng)一雙方的意見,直至達(dá)到最終的協(xié)議。
對于可行性的分析,當(dāng)前對于該定義并沒有給出明確的定義,其主要目的是描述該系統(tǒng)是否值得去做,是否有合適的技術(shù)能夠解決此問題。在該階段的可行性相對比較簡短,只是從總體上進(jìn)行分析,并不涉及具體的問題。
(2)分析需求。
明確軟件系統(tǒng)可行之后,就需要對軟件的功能進(jìn)行詳細(xì)的分析,即:為了達(dá)到使用者的要求,軟件系統(tǒng)必須能夠做什么和具備哪些具體的功能。另外,用戶當(dāng)進(jìn)行軟件操作時(shí),必須有個清晰的認(rèn)識,利用該軟件系統(tǒng)要達(dá)到哪個具體的目標(biāo)。開發(fā)人員和使用者必須進(jìn)行詳細(xì)的、準(zhǔn)確的溝通,利用數(shù)據(jù)模型、數(shù)據(jù)字典、數(shù)據(jù)流圖及算法設(shè)計(jì)出整個軟件系統(tǒng)的邏輯模型。在該階段,必須讓用戶參加,并給出具體的意見。
1.3軟件開發(fā)時(shí)期
對于軟件的開發(fā),主要由計(jì)劃、設(shè)計(jì)、編碼和測試四部分組成,計(jì)劃和設(shè)計(jì)是系統(tǒng)設(shè)計(jì),編碼和測試是系統(tǒng)實(shí)現(xiàn)。
軟件的開發(fā)由計(jì)劃開始,完善的計(jì)劃可以為軟件的開發(fā)節(jié)省大量的時(shí)間和精力;設(shè)計(jì)是在計(jì)劃的基礎(chǔ)上,進(jìn)一步的完善,給出問題的每一個步驟,是對整個系統(tǒng)功能的完整描述;系統(tǒng)設(shè)計(jì)完成后,開始進(jìn)行編碼操作,即對問題的具體實(shí)現(xiàn),在編碼中,要符合編寫規(guī)范的要求,保證程序的易讀易維護(hù);沒有一個軟件是一次編寫成功的,需要反復(fù)的測試才行,當(dāng)前的測試從小到大,分別是單元測試、集成測試和驗(yàn)收測試,每次測試都要進(jìn)行詳細(xì)的記錄,為以后軟件的維護(hù)打好基礎(chǔ)。
1.4軟件維護(hù)時(shí)期
如果說前面的步驟是軟件的實(shí)現(xiàn)過程,那么軟件的維護(hù)時(shí)期就是軟件的使用過程,軟件的維護(hù)時(shí)期最長,由于軟件隨著使用環(huán)境的不斷變化,軟件的功能逐漸不能滿足用戶的需求和無法正常使用,為了延長軟件的使用壽命,必須對軟件進(jìn)行維護(hù)處理。對于軟件的維護(hù)活動主要分為4類,分別是:改正性維護(hù)、完善性維護(hù)、適應(yīng)性維護(hù)和預(yù)防性維護(hù)。根據(jù)維護(hù)的情況不同,每個維護(hù)都要有詳細(xì)的報(bào)告,通過報(bào)告來進(jìn)行制定維護(hù)計(jì)劃、修改軟件設(shè)計(jì)、代碼修改和測試等一系列的過程。
2測試自動化
開發(fā)人員設(shè)計(jì)好程序之后,無法直接投入使用,需要對代碼進(jìn)行測試,而軟件測試是一個非常煩瑣的過程。據(jù)統(tǒng)計(jì),軟件工程人員無法及時(shí)交付軟件的主要原因是在規(guī)定的時(shí)間內(nèi)沒有對軟件進(jìn)行完整的測試和修訂。21世紀(jì),時(shí)間就是金錢,時(shí)間就是企業(yè)的生命,軟件投入市場越早,就越有可能提前掌握先機(jī),從而獲得更高的利潤。
傳統(tǒng)的軟件測試方法無疑已經(jīng)無法適應(yīng)當(dāng)前IT行業(yè)的發(fā)展,自動化測試軟件可以使測試流水化,使得在較短的時(shí)間內(nèi)充分對軟件進(jìn)行測試,現(xiàn)在,越來越多的軟件企業(yè)選擇測試自動化。
2.1測試自動化的定義
當(dāng)前,對于測試自動化的定義比較多,但總結(jié)起來為:能夠通過自動化的測試工具,針對軟件測試,在預(yù)設(shè)條件下運(yùn)行系統(tǒng)或應(yīng)用程序,評估運(yùn)行結(jié)果,預(yù)先條件應(yīng)包括正常條件和異常條件。從而達(dá)到減輕手工測試的勞動量,節(jié)省測試時(shí)間的目的。
測試自動化在很多情況下都具有非常大的使用價(jià)值,例如在進(jìn)行腳本測試時(shí),可以產(chǎn)生許多重復(fù)調(diào)用的代碼,在進(jìn)行壓力測試時(shí),可重用很多次該腳本。如果利用手工測試方式進(jìn)行壓力測試,那么可能要花費(fèi)相當(dāng)長的時(shí)間,而且有時(shí)有些軟件的缺陷還不能及時(shí)地發(fā)現(xiàn),測試自動化保證了軟件的穩(wěn)定性和準(zhǔn)確性。
2.2測試自動化的生命周期
進(jìn)行自動化測試的工具也是一種軟件,有其自身的生命周期,主要分為需求分析、計(jì)劃、設(shè)計(jì)、實(shí)現(xiàn)、集成、維護(hù)和終結(jié)等過程。
對于需求分析階段,主要是對測試的用例進(jìn)行詳細(xì)的分析,明確測試用例的可行性,考察用例是否可以重復(fù)利用,對測試有何價(jià)值;在計(jì)劃階段,設(shè)計(jì)測試的進(jìn)度和生成相關(guān)的文檔;設(shè)計(jì)主要是描述自動化測試的模塊,而描述是對這些模塊的實(shí)現(xiàn);對寫好的軟件模塊進(jìn)行集成,生成相應(yīng)的具有特定功能的測試包;最后對軟件的測試自動化工具進(jìn)行維護(hù),隨著時(shí)間的推移,結(jié)束自動化測試生命周期。
3測試自動化軟件的實(shí)現(xiàn)
3.1需求分析階段
在該階段,測試工程師和手機(jī)終端使用者要一起參加需求分析的討論,分析測試的環(huán)境和過程,測試不同的環(huán)境下手機(jī)的使用情況。
在進(jìn)行手機(jī)通信測試的需求分析里,假定使用300個測試用例,分析其自動化測試的流程,形成書面的需求規(guī)格說明文檔,并進(jìn)行專門的評審,對測試用例進(jìn)行審查。
3.2計(jì)劃階段
主要完成計(jì)劃進(jìn)度表的建立。例如整個手機(jī)終端測試需要五周時(shí)間完成,計(jì)劃和設(shè)計(jì)需要半周,開發(fā)和執(zhí)行需要三周,測試需要一周半。在規(guī)劃測試計(jì)劃時(shí),在對每一次進(jìn)行操作進(jìn)行相關(guān)文檔的說明,其中文檔的完成工作也需要在計(jì)劃時(shí)間以內(nèi),建立和維護(hù)一個測試環(huán)境文檔是非常重要的。
3.3設(shè)計(jì)階段
對于手機(jī)通信系統(tǒng)來說,軟件的升級不會帶著新的錯誤,即功能是不變的,由于測試的腳本具有共用性,模塊化的設(shè)計(jì)是非常有必要的。在設(shè)計(jì)的過程中,要注重命名規(guī)則,以免發(fā)生混淆,使得模塊發(fā)生混亂。
3.4實(shí)現(xiàn)和集成階段
實(shí)現(xiàn)主要是在設(shè)計(jì)的基礎(chǔ)上,進(jìn)行編碼,最終完成軟件,每次代碼更改運(yùn)行要記錄初始狀態(tài)和運(yùn)行后狀態(tài),及時(shí)進(jìn)行備份。對軟件進(jìn)行集成分塊測試,將生成的測試包提交給組裝集成測試人員,對其進(jìn)行評審和驗(yàn)證,詳細(xì)記錄其結(jié)果。
3.5維護(hù)和終結(jié)階段
軟件自動化測試生成后,要根據(jù)使用環(huán)境和用戶的不同進(jìn)行維護(hù)處理,并不斷對其進(jìn)行改進(jìn),這個過程可以通過問題跟蹤工具來完成。隨著新技術(shù)的來臨,軟件會越來越不適應(yīng)企業(yè)的要求,就要對其進(jìn)行終結(jié),重新研發(fā)新的測試軟件。
4結(jié)語
軟件測試在軟件研發(fā)中所占的比重越來越大,人們對于測試的關(guān)注度也日益提高。本文利用軟件工程生命周期來分析測試自動化,由于篇幅所限,對于軟件測試自動化工具的具體實(shí)現(xiàn)并沒有給出,希望讀者在此基礎(chǔ)上進(jìn)一步的研究。
參考文獻(xiàn)
[1]魏偉.笑傲測試,軟件測試流程方法與實(shí)施[M].北京:清華大學(xué)出版社,2006:110111.
[2]陸其明.腳本驅(qū)動的應(yīng)用軟件開發(fā)方法與實(shí)踐[M].北京:清華大學(xué)出版社,2006:253255.
[3]Danlel Galin.軟件質(zhì)量保證[M].北京:機(jī)械工業(yè)出版社,2004:162169.
[4]Roger Pressman.軟件工程:實(shí)踐者的研究方法[M].第三版.北京:機(jī)械工業(yè)出版,1995:279280.