時間:2022-05-10 03:20:40
序論:在您撰寫軟件測試論文時,參考他人的優(yōu)秀作品可以開闊視野,小編為您整理的1篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導(dǎo)您走向新的創(chuàng)作高度。
摘要:嵌入式計(jì)算機(jī)是計(jì)算機(jī)行業(yè)中一種比較先進(jìn)的計(jì)算機(jī)技術(shù)。隨著科學(xué)技術(shù)的不斷發(fā)展,嵌入式計(jì)算機(jī)的使用范圍也越來越廣,在嵌入式計(jì)算機(jī)使用的過程中,能夠有效地保證對需要的功能的實(shí)現(xiàn)。但是,由于嵌入式計(jì)算機(jī)軟件的結(jié)構(gòu)相對于其他類型的計(jì)算機(jī)來說比較復(fù)雜,這就要求我們要能夠按照使用需要,及時對嵌入式計(jì)算機(jī)軟件技術(shù)進(jìn)行測試。文章根據(jù)現(xiàn)階段嵌入式計(jì)算機(jī)與嵌入式計(jì)算機(jī)軟件的概念,針對開發(fā)使用的技術(shù)進(jìn)行分析,找出如何使用相關(guān)的技術(shù)對嵌入式計(jì)算機(jī)的軟件進(jìn)行測試。
關(guān)鍵詞:嵌入式;計(jì)算機(jī)軟件;測試;關(guān)鍵技術(shù)
前言
隨著我國的工業(yè)不斷地進(jìn)步,科學(xué)技術(shù)的不斷發(fā)展,嵌入式計(jì)算機(jī)技術(shù)也得到了很大程度的提升。我們身邊普通的計(jì)算機(jī)并不是嵌入式計(jì)算機(jī),嵌入式計(jì)算機(jī)指的是專門針對某一個項(xiàng)目或者是某一個行業(yè)進(jìn)行開發(fā)的專業(yè)計(jì)算機(jī)。嵌入式計(jì)算機(jī)不僅僅能夠?qū)崿F(xiàn)對需求開發(fā)的功能,有效地提升工作的效率。嵌入式軟件是嵌入式計(jì)算機(jī)中安裝的軟件,一般情況下,嵌入式軟件都需要根據(jù)不同的工作需要,完成相應(yīng)的功能,這就要求嵌入式軟件要具備一定的穩(wěn)定性,對嵌入式計(jì)算機(jī)軟件進(jìn)行測試,能夠很好地保證嵌入式軟件的正常工作。
1什么是嵌入式計(jì)算機(jī)
嵌入式計(jì)算機(jī)指的是針對某一種技術(shù),或者是某一種網(wǎng)絡(luò)、某一種功能等專門開發(fā)的計(jì)算機(jī)系統(tǒng),利用計(jì)算機(jī)技術(shù),加入嵌入式系統(tǒng),能夠?qū)崿F(xiàn)對計(jì)算機(jī)硬件和軟件功能的增多,能夠更加適合實(shí)際運(yùn)用的需要。嵌入式計(jì)算機(jī)針對某一種功能的需要進(jìn)行開發(fā),對開發(fā)的成本、功能的可靠性以及計(jì)算機(jī)的大小等因素,都有十分嚴(yán)格的要求。通過對計(jì)算機(jī)處理器、硬件、系統(tǒng)、應(yīng)用等進(jìn)行嵌入式技術(shù)的操作,能夠更加有效地保證計(jì)算機(jī)技術(shù)的實(shí)現(xiàn)。嵌入式計(jì)算機(jī)大多被應(yīng)用在工業(yè)生產(chǎn)中,能夠提升工作效率,保證工作的質(zhì)量[1]。
2什么是嵌入式計(jì)算機(jī)軟件
嵌入式計(jì)算機(jī)軟件指的是在嵌入式計(jì)算機(jī)中使用的軟件,能夠進(jìn)行獨(dú)立功能的操作,嵌入式計(jì)算機(jī)軟件包括嵌入式微處理器、傳感器、控制器、定時器、儲存器等等。在嵌入式計(jì)算機(jī)中使用的電子芯片或是電子器件,將嵌入式計(jì)算機(jī)軟件安裝到嵌入式計(jì)算機(jī)中,能夠有效地實(shí)現(xiàn)常規(guī)計(jì)算機(jī)不具備的功能,比如:實(shí)時監(jiān)控功能、對設(shè)備的管理功能、數(shù)據(jù)處理功能、進(jìn)行移動計(jì)算等等,真正地實(shí)現(xiàn)了現(xiàn)代化自動化的電子處理,是實(shí)現(xiàn)現(xiàn)階段自動化與智能化的社會生產(chǎn)力的重要途徑,嵌入式計(jì)算機(jī)軟件就是自動化的核心部分[2]。我們可以將嵌入式計(jì)算機(jī)軟件分為:簡單嵌入式系統(tǒng)和復(fù)雜嵌入式系統(tǒng)兩種。簡單的嵌入式系統(tǒng)只能夠完成一項(xiàng)功能,比較典型的簡單嵌入式系統(tǒng)就是單片機(jī)。單片機(jī)通過ROM技術(shù)就能夠?qū)崿F(xiàn)對系統(tǒng)的使用,能夠達(dá)到對程序控制的目的。復(fù)雜嵌入式系統(tǒng)的功能與普通的計(jì)算機(jī)系統(tǒng)功能并沒有什么過大的區(qū)別,只不過在復(fù)雜的嵌入式系統(tǒng)中,安裝了一些微型的嵌入式操作系統(tǒng),以及嵌入式應(yīng)用軟件在計(jì)算機(jī)中,能夠使計(jì)算機(jī)的功能得到相應(yīng)的完善,這就是嵌入式計(jì)算機(jī)軟件的作用[3]。
3什么是嵌入式計(jì)算機(jī)軟件的測試
嵌入式計(jì)算機(jī)軟件相比普通的計(jì)算機(jī)軟件來說,更具有專業(yè)性,嵌入式計(jì)算機(jī)軟件只能夠在某一個制定的平臺或者系統(tǒng)中運(yùn)行。但是嵌入式計(jì)算機(jī)軟件的開發(fā)環(huán)境與運(yùn)行的環(huán)境還存在很大的差異,不能夠使用同一網(wǎng)絡(luò)環(huán)境。嵌入式計(jì)算機(jī)軟件需要使用交叉開發(fā)的形式,在進(jìn)行開發(fā)的計(jì)算機(jī)中,安裝并運(yùn)行開發(fā)工具,開始對軟件進(jìn)行編譯,再將編譯完成的軟件通過下載的方式,將軟件發(fā)送到目標(biāo)計(jì)算機(jī)中,當(dāng)開發(fā)計(jì)算機(jī)與目標(biāo)計(jì)算機(jī)都有了嵌入式軟件,就能夠建立通訊連接,并且能夠?qū)浖逻_(dá)命令、下載數(shù)據(jù)等等。兩臺計(jì)算機(jī)的操作系統(tǒng)不同,計(jì)算機(jī)的處理器也有著一定的差異,這樣的方式會增加嵌入式軟件開發(fā)過程的步驟,增加了開發(fā)步驟的復(fù)雜性[4]。我們將對嵌入式軟件進(jìn)行開發(fā)的計(jì)算機(jī)稱為宿主機(jī),對軟件進(jìn)行接收并運(yùn)行的稱為目標(biāo)機(jī)。宿主機(jī)對使用開發(fā)工具,利用宿主機(jī)的操作系統(tǒng)對計(jì)算機(jī)軟件進(jìn)行開發(fā),通過通信連接將計(jì)算機(jī)軟件發(fā)送到目標(biāo)集中,盡管這一系列的操作看似很簡單,但是卻需要強(qiáng)大的系統(tǒng)和硬件的支持。在這種形式下進(jìn)行運(yùn)行的嵌入式計(jì)算機(jī)軟件開發(fā)的活動,一般情況下,宿主機(jī)都是我們平時工作生活中使用的通用計(jì)算機(jī),也可以是開發(fā)微機(jī)或者是軟件工作站等等。目標(biāo)機(jī)與宿主機(jī)不同,目標(biāo)機(jī)能夠承載宿主機(jī)開發(fā)的嵌入式計(jì)算機(jī)軟件的運(yùn)行,將嵌入式計(jì)算機(jī)軟件安裝在目標(biāo)機(jī)中,就能夠?qū)崿F(xiàn)嵌入式軟件的功能[5]。
4對嵌入式軟件測試關(guān)鍵技術(shù)進(jìn)行研究
4.1對宿主機(jī)進(jìn)行測試的技術(shù)研究
宿主機(jī)指的是對嵌入式軟件進(jìn)行開發(fā)的計(jì)算機(jī),對宿主機(jī)進(jìn)行測試的方式有兩種,即靜態(tài)測試與動態(tài)測試兩種,這兩種方式使用的是代碼邏輯的方式對宿主機(jī)進(jìn)行測試。4.1.1靜態(tài)測試技術(shù)很多計(jì)算機(jī)軟件開發(fā)的專家,在對計(jì)算機(jī)軟件進(jìn)行檢測的時候,通常使用的都是人工檢查的方式,由設(shè)計(jì)人員組成一個小組,小組的成員之間互相交流對軟件開發(fā)使用了哪些程序、使用的是什么算法進(jìn)行的計(jì)算,并交代設(shè)計(jì)數(shù)據(jù)與軟件的模塊之間有什么樣的關(guān)系等。這樣的方式雖然能夠在一定程度上找出軟件中是否存在相關(guān)的問題。但是,由于現(xiàn)階段嵌入式計(jì)算機(jī)軟件的結(jié)構(gòu)越來越復(fù)雜,設(shè)計(jì)的步驟越來越繁瑣,軟件設(shè)計(jì)的規(guī)模也在逐漸擴(kuò)大,這就要求在一款軟件的設(shè)計(jì)過程中,可能會有很多的軟件設(shè)計(jì)師、工程師等一起參與到軟件的開發(fā)工作當(dāng)中,每個工作人員的分工也大有不同,再使用從前的方式對軟件進(jìn)行檢查,就會加重檢查工作的負(fù)擔(dān)[6]。這就要求我們,要根據(jù)現(xiàn)階段的計(jì)算機(jī)軟件開發(fā)的實(shí)際情況,找出最合適現(xiàn)階段軟件開發(fā)的檢測技術(shù),對原始的計(jì)算機(jī)軟件的檢測工作進(jìn)行優(yōu)化升級,能夠使計(jì)算機(jī)軟件的檢查工作更加簡便。在檢查的過程中,加入適當(dāng)?shù)臋z測技術(shù),先對整個嵌入式計(jì)算機(jī)軟件的開發(fā)軟件系統(tǒng)框圖進(jìn)行整理,并且對其設(shè)置自動連接的相關(guān)量,軟件的源代碼編程能夠通過自動化技術(shù)進(jìn)行查找。這樣的方式能夠使軟件審查工作的工作效率有很大的提升,能夠使驗(yàn)證工作的結(jié)果更加準(zhǔn)確有效。我們可以通過靜態(tài)測試的方式,得到軟件中相關(guān)信息[7]。(1)軟件的源代碼程序繪制過程的邏輯圖,以及對軟件進(jìn)行控制的工作流程。(2)軟件系統(tǒng)完整的邏輯框圖,系統(tǒng)內(nèi)部關(guān)系調(diào)節(jié)的網(wǎng)絡(luò)圖。(3)軟件程序運(yùn)行的路徑分析圖。(4)軟件生成的不同部分的顯示圖。(5)軟件不同部分顯示圖的位置信息,操作的頻率等信息。這些信息都能夠在靜態(tài)測試中得到實(shí)現(xiàn),首先要使用靜態(tài)測試的系統(tǒng)對軟件的操作邏輯和控制系統(tǒng)進(jìn)行分析,能夠有效地將軟件分析的更加精確,在進(jìn)行軟件測試的過程中,能夠使測試的結(jié)果更加準(zhǔn)確,并且能夠?qū)y試結(jié)果更加精準(zhǔn)的表現(xiàn)出來,檢測出軟件系統(tǒng)中是否存在相關(guān)的問題,并以此對軟件的系統(tǒng)進(jìn)行改善。4.1.2動態(tài)測試技術(shù)對宿主機(jī)的動態(tài)測試主要指的是對軟件的代碼進(jìn)行測試,能夠有效地檢測出代碼的執(zhí)行能力,并且分析軟件代碼的覆蓋率,能夠有效地檢測出軟件的功能。能夠有效地了解到軟件的性能,還能夠通過分析更加了解軟件中代碼的執(zhí)行情況,這樣的檢測方式能夠促進(jìn)對軟件系統(tǒng)的改進(jìn),推進(jìn)了軟件系統(tǒng)的發(fā)展,可以根據(jù)檢測的結(jié)果,對軟件的功能進(jìn)行優(yōu)化和完善[8]。動態(tài)測試技術(shù)還能夠?qū)浖O(shè)置的完成程度進(jìn)行測試,能夠?qū)ζ渲幸呀?jīng)開發(fā)完畢的數(shù)據(jù)進(jìn)行檢測,檢查其中是否存在缺少的數(shù)據(jù),這樣的方式能夠?yàn)檐浖拈_發(fā)工作提供重要的依據(jù)。動態(tài)測試技術(shù)能夠?qū)④浖械拿總€函數(shù)的情況,以及對內(nèi)存的分配情況等進(jìn)行檢測,能夠?qū)④浖懈鞣N元素的分配情況進(jìn)行顯示,并且能夠同時對相對應(yīng)的數(shù)據(jù)、代碼、函數(shù)等進(jìn)行顯示。
4.2對仿真機(jī)進(jìn)行測試的技術(shù)研究
仿真機(jī)作為宿主機(jī)與目標(biāo)機(jī)之間重要的環(huán)節(jié)之一,通過仿真機(jī)的使用,能夠有效地完善計(jì)算機(jī)軟件測試的功能以及軟件自身的性能,比對宿主機(jī)的測試更加直觀、更加真實(shí),并且能夠?qū)浖兄饕募夹g(shù)進(jìn)行仿真測試,使測試的結(jié)果更具有說服力。其測試的結(jié)果既能夠作用于宿主機(jī),還能夠作用于目標(biāo)機(jī)。4.2.1仿真機(jī)測試數(shù)據(jù)獲取技術(shù)現(xiàn)階段,針對仿真機(jī)的數(shù)據(jù)監(jiān)測,一直都是技術(shù)上很難實(shí)現(xiàn)的問題之一,很多對嵌入式軟件的檢測都需要在測試的過程中先提供軟件設(shè)計(jì)的源代碼,這樣的方式需要使用的數(shù)據(jù)量比較大,這就要求我們要針對這類數(shù)據(jù)的準(zhǔn)確性進(jìn)行技術(shù)的提升,才能夠保證檢測數(shù)據(jù)的精準(zhǔn)性。仿真機(jī)監(jiān)測技術(shù)能夠從一定程度上保證數(shù)據(jù)信息的完整性,在對數(shù)據(jù)進(jìn)行完全的緩存后,再使用測試工具進(jìn)行修改,能夠從很大程度上保證數(shù)據(jù)的正常輸入,在測試結(jié)束之后,還能夠?qū)σ呀?jīng)進(jìn)行緩存的數(shù)據(jù)進(jìn)行讀取,并將數(shù)據(jù)整理保存到計(jì)算機(jī)中。但是,需要注意的是,使用這種方式進(jìn)行測試,還要保證數(shù)據(jù)緩存的大小不會超過測試的容量,測試才能夠順利的運(yùn)行[9]。4.2.2仿真機(jī)仿真測試技術(shù)對嵌入式計(jì)算機(jī)軟件進(jìn)行仿真測試,能夠在測試的過程中,對數(shù)據(jù)進(jìn)行集中地管理和處理。仿真測試需要一定的技術(shù)支持,能夠?qū)?shù)據(jù)進(jìn)行仿真模擬,在模擬的過程中,能夠看到技術(shù)的使用過程,再按照每款軟件不同的性質(zhì),分類仿真,使測試的結(jié)果更加真實(shí)可靠。還要保證在對數(shù)據(jù)的檢測過程中,傳輸信號是能夠穩(wěn)定運(yùn)行的,才能夠保證仿真測試的數(shù)據(jù)是實(shí)時的。
4.3對目標(biāo)機(jī)進(jìn)行測試的技術(shù)
目標(biāo)機(jī)相對于其他部分來說,在測試的過程中,更需要注意目標(biāo)機(jī)的綜合能力,還要能夠測試軟件自身的交互能力,并且測試軟件是否安全可靠,目標(biāo)機(jī)測試的結(jié)果能夠更加真實(shí)地體現(xiàn)計(jì)算機(jī)軟件的性能[10]。4.3.1故障注入技術(shù)嵌入式計(jì)算機(jī)軟件在計(jì)算機(jī)中運(yùn)行的狀態(tài),可以通過人為的方式進(jìn)行設(shè)置。但是,這就要求目標(biāo)機(jī)的部件能夠具備一定的功能,能夠按照設(shè)置的時間、設(shè)置的運(yùn)行方式等進(jìn)行運(yùn)作。故障注入技術(shù)指的是在目標(biāo)機(jī)中,通過對某一部分的測試,能夠更加有效地檢驗(yàn)?zāi)繕?biāo)機(jī)中的性能,比如:魯棒性測試、邊界測試等等。使軟件在運(yùn)行時的狀態(tài)能夠表現(xiàn)的更加明顯。4.3.2內(nèi)存分析技術(shù)嵌入式計(jì)算機(jī)的系統(tǒng),一般情況下內(nèi)存都會比較小。使用內(nèi)存分析技術(shù),能夠有效地保證在分析的過程中,找出計(jì)算機(jī)內(nèi)存存在的問題。在問題的分析過程中,能夠防止內(nèi)存中的某些內(nèi)存會產(chǎn)生分配錯誤的問題,很多的計(jì)算機(jī)軟件故障都是因?yàn)閮?nèi)存分配的錯誤造成的。這就要求我們要通過內(nèi)存分析的技術(shù),來對內(nèi)存進(jìn)行判定。一般情況下,我們都會選擇硬件的方式進(jìn)行分析,但是硬件分析的方式需要耗費(fèi)的資金比較多,而且分析工具具有一定的環(huán)境限制,但是軟件分析會對計(jì)算機(jī)的代碼產(chǎn)生一定的影響,并且會影響內(nèi)存的運(yùn)行。這就要求我們在進(jìn)行內(nèi)存分析的過程中,要能夠按照不同的情況對測試的方式進(jìn)行選擇[11]。4.3.3程序性能分析技術(shù)在嵌入式計(jì)算機(jī)運(yùn)行的過程中,還有一個十分重要的因素就是程序的性能。一般情況下,嵌入式計(jì)算機(jī)對程序的性能都有一定的要求,能夠在已經(jīng)設(shè)置的時間內(nèi),對某一數(shù)據(jù)進(jìn)行中斷處理或者是生成處理,這就要求我們要在測試的過程中,要能夠根據(jù)實(shí)際情況決定先對那一部分的代碼進(jìn)行優(yōu)化,因?yàn)榍度胧接?jì)算機(jī)的優(yōu)化程序的時間是很寶貴的,要盡可能地避免對一些沒有必要的程序的優(yōu)化工作。使用程序性能分析技術(shù),能夠?qū)⒂?jì)算機(jī)內(nèi)的數(shù)據(jù)進(jìn)行整理,并按照消耗的時間,消耗的類型,消耗的歷時等進(jìn)行分析。按照這些數(shù)據(jù),能夠?qū)τ?jì)算機(jī)中的數(shù)據(jù)進(jìn)行判斷,決定先對哪一部分的程序進(jìn)行優(yōu)化,才能夠保證對數(shù)據(jù)檢測的工作效率,保證對程序的優(yōu)化是有效的。使用程序性能分析的工具,不僅僅能夠顯示計(jì)算機(jī)中每一部分的優(yōu)化需要多少時間,還能夠按照需要優(yōu)化的程度進(jìn)行排序,引導(dǎo)工作人員對系統(tǒng)程序進(jìn)行優(yōu)化分析[12]。在對程序進(jìn)行測試的過程中,可以先對計(jì)算機(jī)軟件中的代碼進(jìn)行分析,能夠找出已經(jīng)被使用的代碼,以及計(jì)算機(jī)接口的工作效率等等??梢栽跍y試的過程中使用插樁的方式進(jìn)行測試,分析完畢后在可執(zhí)行的代碼當(dāng)中適當(dāng)?shù)厝谌肭度胧杰浖?,并將二者進(jìn)行綜合測試,得到的結(jié)果就能夠明確地看出,其中的代碼哪些已經(jīng)執(zhí)行,哪些被遺漏,或者是哪些數(shù)據(jù)的信息覆蓋還不夠全面。需要注意的是,使用這類分析工具進(jìn)行分析,很可能會影響到計(jì)算機(jī)軟件代碼的運(yùn)行,導(dǎo)致軟件運(yùn)行出現(xiàn)故障問題。
5結(jié)束語
嵌入式計(jì)算機(jī)與我們的生活之間的關(guān)系十分緊密,能夠產(chǎn)生巨大的影響,我們身邊很多部分都使用了嵌入式計(jì)算機(jī)進(jìn)行功能的完成和實(shí)現(xiàn),比如:飛機(jī)的飛行控制器,或者是我們家中很多的家用電器,冰箱、洗衣機(jī)等等,都在一定程度上使用了嵌入式軟件技術(shù)。隨著科學(xué)技術(shù)的進(jìn)步越來越快,嵌入式技術(shù)也越來越繁瑣。這就要求我們要在不斷地使用中對嵌入式技術(shù)進(jìn)行完善,對嵌入式技術(shù)進(jìn)行優(yōu)化升級,能夠從一定程度上保證嵌入式技術(shù)的發(fā)展,對軟件進(jìn)行測試,能夠大大地提升嵌入式計(jì)算機(jī)軟件的穩(wěn)定性。
作者:王琨 單位:西安外事學(xué)院工學(xué)院
1軟件工程中的軟件測試
1.1軟件測試的含義
軟件測試根據(jù)用戶的使用目的,將成功開發(fā)的軟件進(jìn)行相應(yīng)的糾錯動作,從而披露該軟件的各種問題及缺失因素,促進(jìn)研發(fā)人員進(jìn)行相應(yīng)的改進(jìn),從而達(dá)到完善軟件的目的。
1.2軟件測試的關(guān)鍵性階段
主要有以下兩個關(guān)鍵性的檢測階段。第一階段是軟件開發(fā)過程中各主要單元模塊完成后進(jìn)行測試。這一階段測試可以將缺陷控制在最小單元模塊內(nèi),給研發(fā)人員最快的測試反饋,促使其完善單元模塊的功能,達(dá)到用戶的使用要求;第二階段測試是軟件系統(tǒng)全部完成后,進(jìn)行全方位的綜合測試,查找系統(tǒng)在使用過程中可能存在的問題。此時,需要根據(jù)系統(tǒng)要實(shí)現(xiàn)的功能進(jìn)行多種測試工具的應(yīng)用,以其找到系統(tǒng)不符合要求的功能或性能瑕疵。
1.3軟件工程中軟件測試的方法
對軟件工程進(jìn)行軟件測試時,不同軟件可以運(yùn)用不同的測試方法。現(xiàn)階段,主要以軟件測試在測試過程中是否需要將程序進(jìn)行完全運(yùn)行來判斷測試方法,不需要系統(tǒng)程序運(yùn)行就能完成測試的方法稱為靜態(tài)方法;需要系統(tǒng)時時傳送相應(yīng)數(shù)據(jù),并通過相應(yīng)程序檢測系統(tǒng)是否達(dá)到用戶的期望值,是否存在運(yùn)行邏輯上的問題和算法上的缺陷等的測試方法稱為動態(tài)方法。目前,靜態(tài)測試方法應(yīng)用較廣的有靜態(tài)排演法、軟件檢查法和軟件審查法。隨著軟件測試方法的不斷創(chuàng)新和完善,新興的測試方法如靜態(tài)自動分析、分析模型等方法不斷得到應(yīng)用;動態(tài)測試方法隨著精細(xì)化測試進(jìn)程的深入逐漸細(xì)分為單元測試方法、集成測試方法、系統(tǒng)測試方法。這些測試方法相較于靜態(tài)測試方法,具有范圍廣、測試成功率高、內(nèi)容覆蓋面大、應(yīng)用程度高等特點(diǎn)。如白盒測試、代碼覆蓋測試等。
2軟件測試在軟件工程中的作用分析
2.1軟件工程項(xiàng)目需要軟件測試進(jìn)行全方位的輔助管理
所謂軟件工程項(xiàng)目就是將用戶的要求進(jìn)行立項(xiàng)管理,通過建立項(xiàng)目組、研究用戶的使用目標(biāo)來確立項(xiàng)目目標(biāo),對目標(biāo)現(xiàn)狀進(jìn)行系統(tǒng)研究與分析、總體目標(biāo)細(xì)分階段性目標(biāo)以及規(guī)劃項(xiàng)目總體方案等,將軟件開發(fā)過程建立在項(xiàng)目管理過程中。在這一過程中,各階段性成果都需要軟件測試來校驗(yàn)其可行性,從而輔助軟件工程項(xiàng)目步入更完善的項(xiàng)目管理中。首先,軟件工程項(xiàng)目需要精細(xì)化項(xiàng)目管理和集中項(xiàng)目管理兩者協(xié)調(diào)統(tǒng)一。因此,需要設(shè)立軟件測試機(jī)構(gòu),能夠?qū)?xiàng)目細(xì)分的各階段、各模塊進(jìn)行軟件測試。其次,項(xiàng)目組人員組成和責(zé)任落實(shí)要依照規(guī)章制度實(shí)施。要體現(xiàn)軟件測試的重要性和實(shí)際意義,測試機(jī)構(gòu)負(fù)責(zé)人為項(xiàng)目組組長的最佳人選。其組員為各項(xiàng)目負(fù)責(zé)人和其他測試人員組成。軟件測試結(jié)果必須立即反饋到軟件研發(fā)人員、程序員及系統(tǒng)分析人員等相關(guān)人員手中,以期促進(jìn)其團(tuán)結(jié)協(xié)作,將軟件各部分呈現(xiàn)出的問題解決。最終滿足用戶的使用要求,實(shí)現(xiàn)軟件設(shè)計(jì)的目標(biāo)??梢?軟件測試的輔助作用,對于軟件工程項(xiàng)目的精細(xì)化管理、軟件相關(guān)技術(shù)的綜合管理等至關(guān)重要。
2.2軟件工程項(xiàng)目實(shí)施反促軟件測試發(fā)展
研發(fā)一個新的軟件系統(tǒng)時,其核心內(nèi)容包括目標(biāo)確定、框架設(shè)計(jì)、分支設(shè)計(jì)和編碼應(yīng)用等,這些核心內(nèi)容均需要軟件測試來實(shí)現(xiàn)其統(tǒng)一性和兼容性。系統(tǒng)目標(biāo)是軟件測試的最終目的,軟件測試需要圍繞系統(tǒng)目標(biāo)進(jìn)行缺陷的發(fā)現(xiàn)和反饋,從而實(shí)現(xiàn)各階段測試的統(tǒng)一性和完整性,從而促進(jìn)系統(tǒng)的協(xié)調(diào)和完善。經(jīng)過軟件測試的系統(tǒng),必須保證達(dá)到項(xiàng)目目標(biāo),且在長時間運(yùn)行下無重大bug。從這一過程來看,軟件測試是在軟件工程項(xiàng)目實(shí)施中得以發(fā)展的。軟件測試機(jī)構(gòu)并不是真正意義上的獨(dú)立,其“獨(dú)立”僅是功能上的獨(dú)立。實(shí)際上,在進(jìn)行軟件工程項(xiàng)目實(shí)施的整個過程中,無論是整體設(shè)計(jì)還是精細(xì)化管理,都需要軟件測試參與其中,以測試角度對軟件工程項(xiàng)目的設(shè)計(jì)和實(shí)施進(jìn)行指導(dǎo)和輔助,從而糾正一些設(shè)計(jì)上的錯誤和細(xì)節(jié)上的缺陷。這種參與的直接性促進(jìn)軟件測試必須緊跟項(xiàng)目研發(fā)現(xiàn)狀,才能提出及時有效的參考意見,促進(jìn)項(xiàng)目順利開發(fā)。軟件編碼規(guī)范是軟件研發(fā)團(tuán)隊(duì)必須規(guī)范執(zhí)行的,而這種規(guī)范的編碼剛是軟件測試機(jī)構(gòu)的首要任務(wù),制定規(guī)范要嚴(yán)肅,執(zhí)行規(guī)范要嚴(yán)格,才能給用戶呈現(xiàn)出高質(zhì)量的軟件產(chǎn)品。
2.3軟件測試原則
軟件測試的原則是在其測試的基本目的和要求下產(chǎn)生的,因此,在進(jìn)行軟件測試時,必須注意其原則性。(1)堅(jiān)持用戶使用目的,堅(jiān)持項(xiàng)目總體目標(biāo)和階段性目標(biāo)的實(shí)現(xiàn)原則;(2)測試“精細(xì)化”即細(xì)分分支、單元模塊、階段性成果、系統(tǒng)全面測試等隨時進(jìn)行;(3)測試時間要越早越好,頻率越高越好;(4)測試中邏輯性檢測和算法檢測要注重;(5)測試要結(jié)合數(shù)據(jù)檢測進(jìn)行;(6)保證測試的嚴(yán)肅性;(7)測試堅(jiān)持第三方進(jìn)行原則;(8)不合理?xiàng)l件值都要進(jìn)行測試;(9)測試過程、方法、用便、結(jié)果、完善等都要記錄在案,便于故障定位和日常維護(hù)。
3自動化軟件測試技術(shù)分析
隨著智能化技術(shù)和自動化技術(shù)的不斷深入應(yīng)用,在軟件測試中,自動化軟件測試技術(shù)得到創(chuàng)新和發(fā)展,并在軟件開發(fā)中應(yīng)用得越來越廣泛。所以,人們將各種自動測試的效果進(jìn)行評估,將成功案例進(jìn)行相似引用,來判斷檢測的可行性。最初的自動化測試具有較嚴(yán)格的針對性,運(yùn)用特定的測試原則和測試方法,將統(tǒng)計(jì)指標(biāo)運(yùn)用其中,從而得到測試結(jié)果,并對其進(jìn)行全面評估,從而得出自動化測試的嚴(yán)密性。隨著自動化測試的不斷深入推進(jìn)和創(chuàng)新,其測試準(zhǔn)則和自動測試技術(shù)越來越成熟,逐漸過渡到自動測試模型化階段。逐漸形成自動測試的等級制度,使得自動軟件測試技術(shù)成為測試控制能力高低優(yōu)劣的一個重要判斷依據(jù)。
4結(jié)語
總之,軟件測試已經(jīng)發(fā)展成為軟件工程中一個必不可少的重要組成部分,軟件測試不僅能夠?qū)浖馁|(zhì)量進(jìn)行一個系統(tǒng)的評價(jià),而且是目前確保軟件質(zhì)量的主要途徑之一。并實(shí)現(xiàn)軟件產(chǎn)品整體質(zhì)量與企業(yè)經(jīng)濟(jì)效益的整體提高,進(jìn)而提升軟件企業(yè)的核心競爭力。。
作者:欒新亮 單位:鄂爾多斯市特種設(shè)備檢驗(yàn)所
1嵌入式軟件的特點(diǎn)
嵌入式系統(tǒng)的應(yīng)用軟件是實(shí)現(xiàn)嵌入式系統(tǒng)功能的關(guān)鍵,其主要特點(diǎn)如下:
1.1軟件開發(fā)環(huán)境和運(yùn)行環(huán)境不同
嵌入式系統(tǒng)軟件的開發(fā)通常采用交叉編譯方式,即軟件的開發(fā)在通用計(jì)算機(jī)上進(jìn)行,而軟件的運(yùn)行環(huán)境卻是在嵌入式專用設(shè)備上。開發(fā)環(huán)境被認(rèn)為是主機(jī)平臺,運(yùn)行環(huán)境為目標(biāo)平臺,相應(yīng)的測試被稱為主機(jī)測試和交叉測試。
1.2缺乏可視性
嵌入式軟件缺乏可視性主要表現(xiàn)在兩個方面:(1)數(shù)據(jù)的可視性方面:嵌入式系統(tǒng)通常沒有顯示設(shè)備和存儲設(shè)備,只有在線實(shí)時觀測或是將數(shù)據(jù)傳輸?shù)街鳈C(jī)上才能進(jìn)行結(jié)果分析;(2)編程的可視性方面:由于嵌入式軟件的開發(fā)環(huán)境和運(yùn)行環(huán)境不同,在進(jìn)行開發(fā)時,一方面不能實(shí)時觀察程序的運(yùn)行效果,另一方面程序在仿真環(huán)境和目標(biāo)設(shè)備中的運(yùn)行效果可能存在差異。
1.3實(shí)時性要求較高
多任務(wù)嵌入式系統(tǒng)中,對重要性各不相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合理調(diào)度是保證每項(xiàng)任務(wù)及時執(zhí)行的關(guān)鍵,單純通過提高處理器速度是無法完成和提高效率的,這種任務(wù)調(diào)度只能由優(yōu)化編寫的系統(tǒng)軟件來完成,因此實(shí)時性是系統(tǒng)軟件的基本要求。
1.4軟硬件緊密結(jié)合
在嵌入式系統(tǒng)軟硬件體系結(jié)構(gòu)內(nèi)部,各層次、模塊之間的耦合度比通用計(jì)算機(jī)更強(qiáng),這是嵌入式系統(tǒng)要求高效的結(jié)果,而通用計(jì)算機(jī)出于可擴(kuò)展等要求更強(qiáng)調(diào)系統(tǒng)的模塊化、層次化和標(biāo)準(zhǔn)化。
2嵌入式軟件仿真測試環(huán)境
嵌入式軟件測試不同于傳統(tǒng)的通用軟件測試,由于其嵌入性、實(shí)時性、反應(yīng)性、專用性等特點(diǎn),它比一般的通用軟件測試更加困難。因此,根據(jù)不同測試階段的需求,建立恰當(dāng)?shù)臏y試環(huán)境是避免嵌入式軟件測試瓶頸、提高測試效率、保證測試質(zhì)量的唯一出路。由于嵌入式系統(tǒng)通常采用軟硬件并行開發(fā)的方式,在進(jìn)行軟件設(shè)計(jì)與測試時,真實(shí)目標(biāo)設(shè)備常常不能及時提供,而且對于單片機(jī)、DSP這些深嵌入式系統(tǒng)來說,數(shù)據(jù)的顯示采集、測試用例輸入等都需要專門的軟件來實(shí)現(xiàn),因此在進(jìn)行嵌入式軟件測試前,必須首先建立嵌入式軟件仿真測試環(huán)境。嵌入式軟件是軟硬件耦合系統(tǒng),把軟硬件分離開來,建立嵌入式軟件獨(dú)立的運(yùn)行環(huán)境是建立嵌入式軟件仿真測試環(huán)境的關(guān)鍵。一個完整的嵌入式系統(tǒng)包括處理器、I/O接口以及各種外部設(shè)備,在建立嵌入式軟件仿真測試環(huán)境時,需要考慮軟硬件的分離原則,即哪些采用真實(shí)硬件設(shè)備,哪些需要用軟件仿真實(shí)現(xiàn),哪些需要用硬件仿真實(shí)現(xiàn),不同的嵌入式系統(tǒng)以及軟件測試階段,需要建立的仿真測試環(huán)境也不相同。
3嵌入式軟件仿真測試環(huán)境分類
根據(jù)運(yùn)行環(huán)境和實(shí)際環(huán)境的差異,嵌入式軟件仿真測試環(huán)境可分為全數(shù)字仿真測試環(huán)境、半物理仿真測試環(huán)境和全物理仿真測試環(huán)境。
3.1全數(shù)字仿真測試環(huán)境
全數(shù)字仿真測試環(huán)境是指仿真嵌入式系統(tǒng)硬件及外圍環(huán)境的一套軟件系統(tǒng)。全數(shù)字仿真環(huán)境是通過CPU、控制芯片、I/O、中斷、時鐘等仿真器的組合在宿主機(jī)上構(gòu)造嵌入式軟件運(yùn)行所必需的硬件環(huán)境,為嵌入式軟件的運(yùn)行提供一個精確的數(shù)字化硬件環(huán)境模型。
3.2半實(shí)物仿真測試環(huán)境
半實(shí)物仿真測試環(huán)境是利用仿真模型來仿真被測系統(tǒng)的外圍系統(tǒng),而被測系統(tǒng)采用真實(shí)的系統(tǒng)。測試環(huán)境模擬被測軟件運(yùn)行所需的真實(shí)環(huán)境的輸入和輸出,并且能夠組織被測軟件的輸入來驅(qū)動被測軟件運(yùn)行,同時接收被測軟件的輸出結(jié)果。外部仿真設(shè)備:為目標(biāo)機(jī)提供激勵信號輸入,接收并處理目標(biāo)機(jī)輸出數(shù)據(jù),保證軟件的連續(xù)、不間斷運(yùn)行,實(shí)現(xiàn)自動化測試;可以采用軟件仿真或硬件仿真(ADS2等)。并不是所有的外設(shè)都采用仿真實(shí)現(xiàn),可以隨著項(xiàng)目的進(jìn)展以及根據(jù)外設(shè)的復(fù)雜性,有選擇性的加入真實(shí)外部設(shè)備。
3.3全實(shí)物仿真測試環(huán)境
在全實(shí)物仿真測試環(huán)境中,被測軟件處在完全真實(shí)的運(yùn)行環(huán)境中,直接將整個系統(tǒng)和其外圍的物理設(shè)備建立真實(shí)的連接,形成閉環(huán)進(jìn)行測試。全物理仿真測試環(huán)境是基于真實(shí)目標(biāo)機(jī)的系統(tǒng)測試,是對整個嵌入式系統(tǒng)軟硬件的綜合測試,只有在系統(tǒng)研制的后期,所有硬件研制工作都已完成后才能進(jìn)行。
4嵌入式軟件仿真測試環(huán)境的構(gòu)建方法
根據(jù)嵌入式軟件及測試環(huán)境的特點(diǎn),不同測試階段的測試環(huán)境搭建方法如下:
4.1單元測試
單元測試是針對軟件設(shè)計(jì)最小單位模塊而進(jìn)行的內(nèi)部測試。由于目標(biāo)機(jī)環(huán)境資源少、實(shí)現(xiàn)難度大,因此嵌入式軟件的單元測試主要采用白盒測試的方法,一般在宿主機(jī)上,利用集成開發(fā)環(huán)境或測試工具(Clockwork、TestBed、Cantata++等)的全數(shù)字仿真模擬器來進(jìn)行,找出單元編碼時產(chǎn)生的錯誤以及與軟件需求設(shè)計(jì)的偏差。在極特殊情況下,也可以在目標(biāo)機(jī)上進(jìn)行,利用單元測試中的驅(qū)動模塊和樁模塊進(jìn)行。
4.2集成測試
集成測試是把經(jīng)過單元測試的模塊按軟件的結(jié)構(gòu)組合在一起作為一個軟件部件或部件集來進(jìn)行的綜合測試。嵌入式軟件的集成測試可在宿主機(jī)環(huán)境上利用Clockwork、TestBed、Cantata++等測試工具來完成,也可在目標(biāo)機(jī)上搭建仿真測試環(huán)境來完成,具體依賴于軟硬件耦合程度和集成級別。
4.3軟硬件集成測試
軟硬件集成測試主要是在軟件集成測試完成后,形成獨(dú)立的配置項(xiàng),加載到相應(yīng)的硬件平臺上測試其運(yùn)行情況,以確定軟硬件能夠正確協(xié)調(diào)工作,實(shí)現(xiàn)軟件需求規(guī)定的功能、性能等要求。軟硬件集成測試必須在目標(biāo)機(jī)環(huán)境下進(jìn)行,交聯(lián)設(shè)備可以采用仿真模型替代??梢岳冒雽?shí)物仿真測試工具搭建測試環(huán)境來進(jìn)行確認(rèn)測試,比如:ADS-2、dSPACE等。
4.4系統(tǒng)測試
系統(tǒng)測試是將被測軟件和硬件資源都綜合起來構(gòu)成完整的應(yīng)用系統(tǒng)進(jìn)行測試,確保整個系統(tǒng)達(dá)到研制任務(wù)書的要求。嵌入式軟件的系統(tǒng)測試對測試環(huán)境有嚴(yán)格的要求,必須在真實(shí)目標(biāo)機(jī)環(huán)境下進(jìn)行,包括運(yùn)行平臺、交聯(lián)設(shè)備都要是真實(shí)的,目的是要確保嵌入式軟件能夠在最終的真實(shí)硬件環(huán)境下正確運(yùn)行。
5結(jié)束語
嵌入式系統(tǒng)在人類生活中發(fā)揮著重要的作用,軟件所占的比重越來越大,也越來越復(fù)雜,保證嵌入式軟件的可靠性正面臨嚴(yán)峻的挑戰(zhàn)。由于嵌入式系統(tǒng)的實(shí)時性和嵌入式特性,使得嵌入式軟件的測試也面臨一些特殊的問題。根據(jù)嵌入式軟件設(shè)計(jì)過程中不同階段的測試需求,建立合適的測試環(huán)境,才能提高嵌入式軟件的測試效率,保證軟件設(shè)計(jì)工作的順利進(jìn)行。另外,雖然日前已經(jīng)有一些針對嵌入式軟件的測試和調(diào)試工具,但是在有些方面仍存在不足,需要進(jìn)一步對嵌入式軟件的測試環(huán)境和測試技術(shù)進(jìn)行研究,完善和研制更先進(jìn)的測試工具。
作者:于慧媛 單位:中國人民解放軍91413部隊(duì)
1軟件測試對于軟件開發(fā)工作的重要意義
軟件測試是軟件開發(fā)中不可缺失的工作內(nèi)容,通過有效的軟件測試步驟,能夠幫助軟件開發(fā)工程人員減輕工作負(fù)擔(dān),在很大程度上提升了軟件的實(shí)用性能。因?yàn)殡娮榆浖纳a(chǎn)過程極為復(fù)雜,在開發(fā)的過程中需要經(jīng)歷許多環(huán)節(jié),每個環(huán)節(jié)的數(shù)據(jù)要求都極為嚴(yán)格,很有可能因?yàn)闃O小的差異造成軟件應(yīng)用的失誤。軟件測試就是為了實(shí)現(xiàn)對于軟件開發(fā)后的使用作出初步的評估,保證下一個生產(chǎn)環(huán)節(jié)能夠正常執(zhí)行,也為了確認(rèn)軟件的使用具有質(zhì)量保證。軟件的測試能夠涉及整個軟件設(shè)計(jì)、開發(fā),以及未來升級的過程。首先,能夠幫助軟件開發(fā)商確認(rèn)軟件的使用質(zhì)量。其次,還能夠?yàn)楣こ處熖峁┯行У男畔⒎答?,幫助工程師進(jìn)行軟件系統(tǒng)操作的風(fēng)險(xiǎn)預(yù)警評估。還有,就是實(shí)現(xiàn)為未來軟件系統(tǒng)升級奠定基礎(chǔ),能夠保證軟件在未來的開發(fā)計(jì)劃中添加有效的性能價(jià)值[1]。軟件測試的工作具有相當(dāng)高的行業(yè)地位,能夠幫助工程師和開發(fā)商盡早發(fā)現(xiàn)問題,并且給予充足的時間去解決問題,進(jìn)而提升了大眾對軟件的使用效果,滿足了推動科學(xué)技術(shù)進(jìn)步的時代要求。
2軟件測試的具體步驟和方法
2.1軟件測試的對象
軟件測試的對象主要是針對于軟件使用過程中出現(xiàn)的邏輯操作,其中包含軟件的使用規(guī)則,還有在軟件應(yīng)用中的程序設(shè)定是否滿足人們的應(yīng)用習(xí)慣,還要考慮到軟件開發(fā)的初期設(shè)計(jì)是否能夠滿足社會大眾的需求,能夠?qū)崿F(xiàn)廣泛的普及,并且獲得大眾的喜愛。因?yàn)檐浖y試與其他方式的應(yīng)用測試不同,軟件的測試需要遍布整個軟件的設(shè)計(jì)完成過程,要求軟件能夠?qū)崿F(xiàn)具體使用的功能性。
2.2軟件測試的種類
軟件的測試工作也分成兩種形式,一種是靜態(tài)的檢測試驗(yàn),另外一種是動態(tài)的檢測試驗(yàn)[2]。首先進(jìn)行靜態(tài)種類的具體劃分解釋,其中的工作內(nèi)容具體實(shí)施不必要展開軟件的運(yùn)行功能,只要進(jìn)行人力的代碼查詢工作審核就可以了。這期間可以對整個軟件的設(shè)計(jì)腳本進(jìn)行分析,得到房中數(shù)據(jù)的編碼,保證在網(wǎng)絡(luò)中展開的數(shù)據(jù)時正確有效的。與此同時能夠展開對軟件編程的評估,其中的數(shù)據(jù)值都在控制范圍內(nèi),不能超過最低的數(shù)值要求。編寫數(shù)據(jù)程序的人員在結(jié)束初始工作后還要展開對程序的審查,其中的大部分工作內(nèi)容需要依靠合作完成。專業(yè)的人員通過技術(shù)手段結(jié)束數(shù)據(jù)的參考值評估,要求在人工審查的途徑中實(shí)現(xiàn)數(shù)據(jù)的核對工作??偨Y(jié)的角度來評定靜態(tài)測試的作用,就是通過人工和數(shù)據(jù)參考工具實(shí)現(xiàn)對編程的審核。另外一種就是動態(tài)的測試種類,這種方式需要進(jìn)行軟件的啟動,在運(yùn)行的過程中通過既定的數(shù)據(jù)進(jìn)行測試評估。按照專業(yè)的白盒與黑盒方式進(jìn)行測試實(shí)驗(yàn),達(dá)到動態(tài)測評的目的。白盒的功能就是測試軟件的邏輯性,能夠滿足人們使用的正常運(yùn)作,黑盒則更傾向與想軟件的使用功能,以及軟件的數(shù)據(jù)管理進(jìn)行測試。白盒與黑盒的測試功能滿足了對于軟件測試的基本要求,實(shí)現(xiàn)了為軟件后續(xù)開發(fā)提供數(shù)據(jù)的重要任務(wù)。
2.3軟件測試的方法步驟
將軟件的測試方法進(jìn)行歸納和綜合,發(fā)現(xiàn)主要的測試方法來源于對于測試種類的需求。將白盒和黑盒的測試程序運(yùn)用到軟件的測試中去,實(shí)現(xiàn)人工和技術(shù)的雙層數(shù)據(jù)收集,實(shí)現(xiàn)對于軟件的數(shù)據(jù)編程、應(yīng)用操作,以及未來升級的發(fā)展需求都進(jìn)行監(jiān)管。由白盒協(xié)助人工進(jìn)行數(shù)據(jù)的整理,達(dá)成數(shù)據(jù)外接的基礎(chǔ)使用。再由黑盒的運(yùn)行操作達(dá)成對于內(nèi)置程序、數(shù)據(jù)的檢測和觀察,保證軟件進(jìn)入正式使用中的功能性。軟件測試的整體步驟,都由數(shù)據(jù)的支持進(jìn)行操作,具體的步驟首先是進(jìn)行功能性檢驗(yàn),然后將外因排除后執(zhí)行內(nèi)因運(yùn)行,之后找尋可能導(dǎo)致程序出現(xiàn)問題的原因,最后結(jié)合參數(shù)的運(yùn)算和總結(jié),達(dá)成軟件測試的目的[3]。
3軟件測試在軟件開發(fā)過程中的應(yīng)用實(shí)施
軟件的開發(fā)是一個十分復(fù)雜的過程,為了成功的實(shí)現(xiàn)軟件的應(yīng)用和升級,就需要工程師進(jìn)行嚴(yán)密的設(shè)計(jì)、開發(fā),以及研制,最后成就的科學(xué)技術(shù)產(chǎn)品。因?yàn)槿藗內(nèi)找嬖鲩L的科學(xué)需求,完美的軟件必須還要經(jīng)過不斷的推敲和升級。
(1)軟件測試的應(yīng)用主要考察軟件的實(shí)用性和需求。軟件的創(chuàng)作和制造都是為了滿足人們生活的需求,在開發(fā)的過程中要考慮產(chǎn)品的功能性,還要考慮開發(fā)商的開發(fā)成本是否能夠支持整個軟件的制作完成。
(2)軟件的整體設(shè)計(jì)是否合理,需要通過軟件測試得到論證。工程師進(jìn)行軟件的數(shù)據(jù)編寫,是為了滿足人們的生活需要,各項(xiàng)開發(fā)和功能的深入研究都是為了實(shí)現(xiàn)軟件的實(shí)用性。軟件的測試能夠檢測出軟件開發(fā)中的問題,進(jìn)行及時的補(bǔ)救工作實(shí)施,盡量做到不浪費(fèi)開發(fā)成本的目的。
(3)要求在軟件測試應(yīng)用實(shí)際作用于軟件的后期拓展。無論是學(xué)習(xí)軟件還是工作軟件,甚至于游戲軟件,都必須要滿足未來的發(fā)展和升級要求,實(shí)現(xiàn)能夠無限開發(fā)和研制的目的,保證軟件具有創(chuàng)新性。軟件測試很大程度上也是為了找尋軟件的功能延續(xù)性,促進(jìn)軟件的再開發(fā)和再創(chuàng)造。
(4)軟件的測試需要應(yīng)用到軟件的最終檢測和維護(hù)環(huán)節(jié)中去。每款軟件開發(fā)后都應(yīng)該得到檢測,只有質(zhì)量能夠達(dá)到標(biāo)準(zhǔn)才能保證軟件的出售。再者就是應(yīng)用到軟件出售后的軟件維護(hù),保證軟件高質(zhì)量運(yùn)行[4]。
4結(jié)語
在信息技術(shù)不斷摸索前進(jìn)的過程中,軟件的應(yīng)用托陳出新不斷進(jìn)步,實(shí)現(xiàn)了人們生活、工作,以及學(xué)習(xí)的全面提速。為了保證軟件在人們生活中的使用質(zhì)量,以及適用程度,進(jìn)行軟件開發(fā)前期的軟件測試是必須嚴(yán)格執(zhí)行的工作步驟。
作者:丁旻昊 單位:中國特種飛行器研究所
軟件測試是保證軟件質(zhì)量的重要手段之一。目前社會上對軟件測試人才需求非常旺盛,據(jù)報(bào)道其人才缺口高達(dá)30萬人[1],高校學(xué)生畢業(yè)后直接從事軟件測試工作的占據(jù)了軟件測試行業(yè)從業(yè)人員的48%[2],許多高校都開設(shè)了軟件測試課程,如蘇州大學(xué)[3],北京工業(yè)大學(xué)[4]等,以培養(yǎng)相應(yīng)的軟件測試人才。我校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)2008版教學(xué)設(shè)計(jì)中新增了軟件測評課程,含理論課28學(xué)時及實(shí)驗(yàn)課8學(xué)時,于2011年首次在大四上學(xué)期開設(shè)。軟件測試主要是一門技能型課程[5],其理論性相對較弱,且和軟件工程概論課存在較多內(nèi)容的重復(fù)。吸取了首次授課時重理論輕實(shí)踐的教訓(xùn),我們將軟件測試課程的目標(biāo)定位為在一定理論基礎(chǔ)的指導(dǎo)下使學(xué)生熟練掌握軟件測試的技能,因此2012年第二次授課時將理論課減少為24學(xué)時,實(shí)驗(yàn)課增加到12學(xué)時。借鑒同濟(jì)大學(xué)朱少民教授[6-7]的經(jīng)驗(yàn),實(shí)驗(yàn)課著重講述一些常用開源軟件測試工具的使用,包括功能測試工具Selenium和AutoIT,單元測試工具Junit,代碼覆蓋工具Emma以及性能測試工具Jmeter等。Jmeter是Apache組織開發(fā)的一個用于壓力測試和性能測試的純Java桌面工具,可用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο蟮饶M繁重的負(fù)載來測試它們的強(qiáng)度或分析不同壓力類型下的整體性能[8]。性能測試是保證應(yīng)用程序后能夠穩(wěn)定可靠運(yùn)行的必要手段之一。以我們?yōu)槟硻C(jī)場開發(fā)的戰(zhàn)略規(guī)劃管理系統(tǒng)為例,由于前未進(jìn)行全面的性能測試,客戶使用一段時間后經(jīng)常反映系統(tǒng)響應(yīng)速度慢。利用Jmeter對主要模塊進(jìn)行了性能測試,結(jié)合測試結(jié)果對數(shù)據(jù)庫進(jìn)行了優(yōu)化,此后客戶再也沒有反映過響應(yīng)速度慢的問題。本著科研服務(wù)于教學(xué)的宗旨,以該系統(tǒng)為原型,完善了基于Jmeter的性能測試及數(shù)據(jù)庫優(yōu)化實(shí)驗(yàn)教學(xué)設(shè)計(jì)。
1Web應(yīng)用程序性能測試實(shí)驗(yàn)
這部分實(shí)驗(yàn)?zāi)康氖鞘箤W(xué)生熟練掌握使用Jmeter測試Web應(yīng)用程序的一般流程和方法。實(shí)驗(yàn)任務(wù)測試績效考核子系統(tǒng)中的評分模塊。評分人登錄系統(tǒng)后進(jìn)入評分環(huán)節(jié),選擇其未完成的評分項(xiàng)目(若有多個未評分項(xiàng),則需要全部對其評分)。每個評分項(xiàng)中包含對多個部門的評分,部門數(shù)大于等于3個時需符合正態(tài)分布,如可評出優(yōu)秀3個、良好6個、合格4個、基本合格2個,否則可任意評分。按照循序漸進(jìn)的原則,設(shè)計(jì)了3個步驟:一是Jmeter的基本應(yīng)用,包括腳本錄制、添加http請求、添加斷言以及查看測試結(jié)果等;二是Jmeter的邏輯控制結(jié)構(gòu),如分支和循環(huán)等;三是Jmeter的高級應(yīng)用,如參數(shù)值可變以及參數(shù)個數(shù)可變等。
1.1Jmeter的基本應(yīng)用
Jmeter可以手工添加腳本,但更方便的是使用腳本錄制軟件Badboy[9]。Badboy錄制的腳本可以保存為Jmeter格式,然后在Jmeter中直接打開和修改。腳本主要是一系列的http請求,其中可以設(shè)置請求的URL,請求方法(get/post)及請求參數(shù)等,如圖1所示。通過添加斷言(如是否含有特定字符串)檢查請求是否返回正確結(jié)果。添加查看結(jié)果樹并運(yùn)行測試腳本查看程序的測試結(jié)果。
1.2Jmeter的控制結(jié)構(gòu)
Jmeter具有豐富的邏輯控制結(jié)構(gòu),包括控制器,switch控制器,while控制器以及forEach控制器等。實(shí)驗(yàn)重點(diǎn)練習(xí)控制器和forEach控制器??刂破髋袛郕meter變量是否滿足給定條件,若滿足則執(zhí)行其包含的測試元素,否則不執(zhí)行。ForEach控制器對Jmeter變量的每一個取值都執(zhí)行一遍其包含的測試元素。圖2是一個控制器,其條件為變量COUNT小于10且變量VAR等于字符串“abcd”。圖2Jmeter的控制器圖Jmeter的變量引用使用${變量名}的方式,變量一般提取自返回頁面中的某些信息,如滿足特定條件記錄的行數(shù)或某個特定位置的字符串取值等。變量提取可采用正則表達(dá)式或Xpath進(jìn)行匹配,講解其匹配原則并現(xiàn)場演示。圖3利用正則表達(dá)式提取需評選優(yōu)秀的單位個數(shù),其中引用名稱youxiu就是變量名。匹配失敗則取設(shè)置的缺省值0。如對于頁面中返回的html代碼“…您當(dāng)前可以評出優(yōu)秀<spanid="ltYSMsg">3</span>個…”可提取出優(yōu)秀個數(shù)為3。
1.3Jmeter的高級應(yīng)用
本部分著重解決實(shí)際測試過程中的一些常見問題,如參數(shù)內(nèi)容可變及參數(shù)個數(shù)可變等。測試登錄環(huán)節(jié)時需模擬不同的用戶登錄行為,即圖1的http請求中txtUserName一項(xiàng)的值應(yīng)是變化的。Jmeter提供的CSVDataSetConfig可解決這一問題,如圖4所示。將所有評分人的信息存儲在一個CSV文件中,把其中的列名填入VariableNames項(xiàng),之后將圖1中的txtUserName值改為userAccount(即CSV文件的第1列)實(shí)現(xiàn)參數(shù)值的動態(tài)變化。進(jìn)入評分項(xiàng)后需根據(jù)情況選擇優(yōu)秀和良好等的個數(shù),且要反映在http請求的參數(shù)中。由于參評單位的個數(shù)因評分人和評分項(xiàng)各異,因此無法在GUI界面中一一添加。需動態(tài)添加的參數(shù)包括評分列表中的name及其value,value的取值從優(yōu)秀到基本合格依次為1234。為簡單起見,我們按順序?qū)挝贿M(jìn)行評分。如系統(tǒng)要求評出3個優(yōu)秀,則測試中前3個部門打優(yōu)秀,其余依次類推。由于同一部門的優(yōu)秀良好等單選按鈕的name值相同(如圖5所示),我們選擇提取該組唯一的ID號,然后將其轉(zhuǎn)換為name,其對應(yīng)關(guān)系是用$代替下劃線(如ID號為gbBSCExamList_ctl02_rbExamerLevel,name為gbBSCExamList$ctl02$rbExamerLevel)。Jmeter的Beanshellpreprocessor可在提交http請求前動態(tài)調(diào)整參數(shù)個數(shù)及參數(shù)值。下面給出了Beanshellpreprocessor的代碼。其中ExamerLevel_matchNr為Jmeter的系統(tǒng)變量,提供了正則表達(dá)式匹配項(xiàng)ExamerLevel匹配成功的個數(shù)(即參評單位的個數(shù))。如前所述匹配數(shù)量小于3時可任意評分,為簡單起見我們均將其評為優(yōu)秀。N=Integer.parseInt(vars.get("ExamerLevel_match-Nr"));(N>=3){YX=Integer.parseInt(vars.get("youxiu"));LH=Integer.parseInt(vars.get("lianghao"))+YX;HG=Integer.parseInt(vars.get("hege"))+LH;BHG=Integer.parseInt(vars.get("jibenhege"))+HG;for(i=1;i<=N;i++){item=vars.get("ExamerLevel_"+i);item=item.replace("_","$");(i<=YX){sampler.a(chǎn)ddArgument(item,"1");}else(i<=LH){sampler.a(chǎn)ddArgument(item,"2");}else(i<=HG){sampler.a(chǎn)ddArgument(item,"3");}else(i<=BHG){sampler.a(chǎn)ddArgument(item,"4");}}}else{for(i=1;i<=N;i++){item=vars.get("ExamerLevel_"+i);item=item.replace("_","$");sampler.a(chǎn)ddArgument(item,"1");}}設(shè)計(jì)了含35個并發(fā)線程的線程組,模擬實(shí)際35個評分人的評分過程。全部線程在1秒鐘之內(nèi)啟動,比實(shí)際情況更嚴(yán)格。得到聚合報(bào)告如圖6所示,其中點(diǎn)擊考核評分頁面響應(yīng)時間最長,為335毫秒。且測試過程中無錯誤發(fā)生,說明系統(tǒng)評分模塊可靠。
2數(shù)據(jù)庫性能優(yōu)化實(shí)驗(yàn)
除應(yīng)用程序外,數(shù)據(jù)庫設(shè)計(jì)的優(yōu)劣亦影響系統(tǒng)性能。這部分實(shí)驗(yàn)?zāi)康氖鞘箤W(xué)生熟練掌握使用SQLServer測試數(shù)據(jù)庫性能的一般流程和方法,并進(jìn)行簡單的數(shù)據(jù)庫調(diào)優(yōu)。為減少復(fù)雜性,設(shè)計(jì)一個簡單的由三張表組成的人員組織結(jié)構(gòu)數(shù)據(jù)庫:user、or-gan及userorgan表。其中user表含4586條記錄,or-gan表含1722條記錄,userorgan表含6804條記錄(一人可在多部門任職)。實(shí)驗(yàn)任務(wù)根據(jù)賬號查詢其姓名及所在單位信息。
2.1SQL語句執(zhí)行計(jì)劃對應(yīng)用程序中頻繁執(zhí)行的SQL語句檢查執(zhí)行計(jì)劃非常重要。初始時,三張表均未建立任何索引,下面SQL語句的執(zhí)行計(jì)劃如圖7所示。由圖7知,三張表均采用全表掃描的方式。對大表全表掃描可能涉及多次磁盤I/O,非常費(fèi)時,應(yīng)盡力避免此種情況。SQLServer報(bào)告由于缺少索引影響了查詢性能,并給出了相關(guān)建議。selectA.vcAccount,A.vcName,C.vcNamefromtest.dbo.[user]Ainnerjointest.dbo.[useror-gan]BonA.vcAccount=B.cnvcempidinnerjointest.dbo.organConB.cnvcorgid=C.nNodeIDwhereA.vcAccount='testuser'為表格建立以下索引:indexIND_USERACCOUNTontest.dbo.[user](vcAccount)clusteredindexPK_ORGANontest.dbo.[organ](nNodeID)indexIND_USERORGANontest.dbo.[userorgan](cnvcempid,cnvcorgid)再次運(yùn)行后顯示執(zhí)行計(jì)劃如圖8所示。可見所有表掃描均已替換為相應(yīng)的索引查找,且SQLServ-er未報(bào)告缺少索引影響查詢性能。兩次執(zhí)行查詢的磁盤I/O和CPU時間見表1,可見為表添加正確的索引可提高查詢性能。
2.2索引建立原則總結(jié)
建立索引的一般滿足原則如下[10](篇幅所限,未給出實(shí)例):(1)為主鍵所在的列創(chuàng)建索引。為經(jīng)常進(jìn)行連接但未指定為外鍵的字段建立索引。(2)在頻繁進(jìn)行排序或分組的字段上建立索引。(3)在條件表達(dá)式中經(jīng)常用到的不同值較多的字段上建立索引,在不同值較少的字段上不建立索引,如性別字段。不在查詢很少引用的列上創(chuàng)建索引。(4)若經(jīng)常同時使用多個字段排序,可在這些字段上建立復(fù)合索引。要盡量使關(guān)鍵查詢形成索引覆蓋,其前導(dǎo)字段一定是使用最頻繁的字段。(5)查看索引并刪除不使用的索引。需頻繁進(jìn)行數(shù)據(jù)查入操作的數(shù)據(jù)庫應(yīng)有較少的索引,需頻繁進(jìn)行讀取操作的數(shù)據(jù)庫應(yīng)有更多的索引。(6)在聚集索引中,避免包括不必要的列,盡可能使用較小的數(shù)據(jù)類型。(7)在支持排序和范圍查詢的字段上考慮使用聚集索引。(8)具有高選擇性的列是索引的好候選列,具有高密度的列是索引最糟糕的候選列。
3結(jié)語
軟件測試是保證軟件質(zhì)量的關(guān)鍵步驟。在軟件正式前一般都需要經(jīng)過性能測試,以保證軟件在一定負(fù)荷下的平穩(wěn)可靠運(yùn)行。Jmeter是一款優(yōu)秀的開源性能測試工具,可測試繁重負(fù)載下的系統(tǒng)表現(xiàn)。軟件性能表現(xiàn)還取決于數(shù)據(jù)庫設(shè)計(jì)的優(yōu)劣,建立適當(dāng)?shù)乃饕蓽p輕數(shù)據(jù)庫查詢和處理負(fù)擔(dān),進(jìn)而提高系統(tǒng)處理能力。通過本教學(xué)設(shè)計(jì)實(shí)驗(yàn)學(xué)生普遍反映認(rèn)識到了性能測試的重要性,了解了執(zhí)行計(jì)劃在數(shù)據(jù)庫性能優(yōu)化中的作用。
作者:張志遠(yuǎn)馮興杰單位:中國民航大學(xué)
摘要:
在IT行業(yè),人們對于軟件開發(fā)與測試關(guān)系的研究熱度不減;同時軟件的開發(fā)與測試,也一直是軟件項(xiàng)目團(tuán)隊(duì)的中堅(jiān)力量,要想保證軟件開發(fā)產(chǎn)品的質(zhì)量,就要有測試人員對于質(zhì)量進(jìn)行驗(yàn)證,所以測試人員也相當(dāng)于質(zhì)檢人員,但是兩者之間的關(guān)系還有更加深入的關(guān)系,對此本文就軟件測試與軟件開發(fā)關(guān)系展開分析,希望對于軟件設(shè)計(jì)水平的提升,起到積極促進(jìn)的作用。
關(guān)鍵詞:
軟件測試;軟件開發(fā);關(guān)系
0前言
軟件開發(fā)是一個系統(tǒng)性的過程,包括概念階段、計(jì)劃階段、開發(fā)階段等,而軟件開發(fā)工程與軟件測試工程師分別對應(yīng)著軟件產(chǎn)品生命周期的開發(fā)與驗(yàn)證階段。表面看似兩者是一個上下游的關(guān)系,但是不同工程師所占的立場不同們對于軟件的認(rèn)識也呈現(xiàn)差異化,對此需要工程師共同討論等,繼而確定最佳的產(chǎn)品方案。
1概念分析
軟件開發(fā)與軟件測試是軟件工程的重要階段,前者是在客戶需求的基礎(chǔ)上進(jìn)行軟件系統(tǒng)制造的過程,也包括系統(tǒng)設(shè)計(jì)、編碼程序等內(nèi)容。而后者主要是將前者各個階段,存在的漏洞等利用測試用例找出,是對于軟件需求等的最終審核,也是對于產(chǎn)品的質(zhì)檢。
2工作內(nèi)容
2.1開發(fā)人員
其工作內(nèi)容主要體現(xiàn)在以下幾點(diǎn);第一、加強(qiáng)軟件需求分析,明確軟件開發(fā)方向。第二、編寫軟件詳細(xì)設(shè)計(jì)文檔,包括程序流程、函數(shù)等內(nèi)容;還包括單元、集成測試等文檔的編寫。另外只有審核完寫好的文檔后,才能進(jìn)行代碼的編寫。第三、代碼編寫是非常重要的,直接關(guān)系著軟件程序的功能發(fā)揮;而軟件開發(fā)不僅僅就是寫代碼,還包括很多其他的內(nèi)容。第四、程序編碼結(jié)束后,需要由開發(fā)工程師,對其進(jìn)行系統(tǒng)自測,保證程序正確編寫;自測合格后,以及文檔編寫好后,一并交給軟件測試人員進(jìn)行檢測。
2.2測試人員
第一、通過對于軟件需求說明書的審核,明確軟件功能開發(fā)方向。第二、積極建立測試環(huán)境,也就是指軟件運(yùn)行的條件,包括軟硬件設(shè)施的設(shè)置等。對于軟件實(shí)際工作環(huán)境的模擬,也是測試環(huán)境構(gòu)建的主要內(nèi)容,繼而保證軟件的實(shí)際應(yīng)用不會出現(xiàn)問題,對此可見測試環(huán)節(jié)還原現(xiàn)場環(huán)境的重要性。第三、將配套軟件進(jìn)行運(yùn)行,檢查其是否存在缺陷、功能是否充分的發(fā)揮,對于檢查出來的問題,組織相關(guān)的工程師進(jìn)行軟件問題的修正工作。第四、協(xié)助并指導(dǎo)工作人員安裝軟件程序。
3關(guān)系
軟件開發(fā)和軟件測試主要的工作目標(biāo)在于用戶需求的實(shí)現(xiàn),保證交付軟件的質(zhì)量,開發(fā)與測試并存,首先由開發(fā)人員進(jìn)行軟件實(shí)現(xiàn),然后由測試人員找出軟件中存在的程序問題,最后提交開發(fā)修復(fù),兩者之間是相互合作、相互影響的關(guān)系,繼而除去軟件開發(fā)中的的程序問題,保證軟件的高品質(zhì)。兩者的工作交集,在于軟件缺陷,但是軟件開發(fā)工程師、軟件測試工程師,工作崗位不同、對于軟件的看法不同,對此難免會存在意見分歧,所以測試工程師加強(qiáng)與軟件開發(fā)師之間的關(guān)系處理尤為重要,繼而更好的形成向心力,保證軟件開發(fā)的高效性和該品質(zhì)性。好的軟件開發(fā),不僅僅要狠抓軟件開發(fā)與軟件測試兩個環(huán)節(jié),更要注重產(chǎn)品開發(fā)的全過程;另外更不能傾向于某個環(huán)節(jié),而要讓軟件開發(fā)和測試都要硬,從而更好的保證后續(xù)工作的順利進(jìn)行。
4關(guān)系處理辦法
4.1尊重開發(fā)成果
測試人員的綜合素養(yǎng)、綜合技能等,直接影響著軟件開發(fā)的進(jìn)度與質(zhì)量等,為了更好地處理測試與開發(fā)之間的關(guān)系,測試人員要抱有一定崗位職責(zé)、職業(yè)素質(zhì),本著公平、公正的心理尊重軟件開發(fā)環(huán)節(jié)的工作成果;軟件開發(fā)會可能會存在一系列的隱藏程序漏洞等,這都是非常正常的,而測試工程師的主要職責(zé)就是找出這些漏洞,提高開發(fā)進(jìn)行修正,從而另一個角度來說也是在幫助開發(fā)工程師成長;但是實(shí)際上,部分的測試人員在檢查開發(fā)提交的測試軟件時,會因?yàn)榘l(fā)現(xiàn)問題而出現(xiàn)一系列消極的情緒,對于軟件開發(fā)工程師進(jìn)行謾罵侮辱等,不僅降低了軟件開發(fā)工程師的工作積極性,也影響了兩個工作層面的關(guān)系,最終延長了軟件交付的日期,以及軟件的質(zhì)量。開發(fā)工程工作內(nèi)容繁瑣且任務(wù)重,不可能全面顧及,導(dǎo)致程序開發(fā)存在一定的問題,而測試人員作為軟件品質(zhì)完善的關(guān)鍵,要在尊重軟件開發(fā)作品的同時,積極的進(jìn)行漏洞檢查,實(shí)現(xiàn)良好的團(tuán)隊(duì)協(xié)作氛圍。
4.2缺陷技巧的提交
由于軟件開發(fā)與軟件測試工作埃的交集就是程序缺陷,對此測試人員就要做到以下幾點(diǎn),繼而保證缺陷技巧的有效提交,保證軟件開發(fā)人員的更好接受。
4.2.1換位思考測試
人員在接受軟件開發(fā)提交的作品時,首要的就是了解軟件開發(fā)工程師對于測試結(jié)果的關(guān)注內(nèi)容、范圍以及關(guān)鍵點(diǎn)等;一般軟件開發(fā)人員對于測試結(jié)果最注重的就是軟件邏輯、數(shù)據(jù)流轉(zhuǎn)等方面的內(nèi)容,對此測試人員就要合理的采用測試技巧,有效的調(diào)整程序漏洞的提交方案。軟件測試也是一個復(fù)雜且繁瑣的過程,首先測試工程師要按照指定的測試流程,對軟件作品進(jìn)行系統(tǒng)邏輯的測試,找出影響系統(tǒng)正常運(yùn)轉(zhuǎn)的錯誤邏輯問題,將其第一時間反饋給開發(fā)工程師;測試環(huán)節(jié)接觸到的其他問題,但并不是影響系統(tǒng)邏輯的漏洞點(diǎn),按照漏洞提交順序進(jìn)行依次提交更容易被開發(fā)工程師所接受。
4.2.2漏洞描述要精準(zhǔn)
測試人員的測試結(jié)果,是開發(fā)人員漏洞改進(jìn)的關(guān)鍵,一個精準(zhǔn)的的Bug描述,對于開發(fā)人員來說幫助性是非常大的,能夠幫助開發(fā)人員更加精準(zhǔn)的進(jìn)行漏洞定位。這就要求測試人員在進(jìn)行Bug描述時,要注重語言的干練簡明,語氣要肯定,避免使用好像、不確定等詞匯,繼而模糊開發(fā)人員的工作思路。其次描述的內(nèi)容要突出重點(diǎn),忌諱全面開花。最后根據(jù)以往的經(jīng)驗(yàn),給軟件開發(fā)人員提出一系列的建議,像可能會出現(xiàn)漏洞的部位等,繼而實(shí)現(xiàn)軟件的高品質(zhì)。
4.2.3注重普遍問題的提交
軟件開發(fā)人員一般工作都非常的忙碌,而重復(fù)漏洞或是無效漏洞的提交,會大大的影響其工作的心情、工作量與工作進(jìn)度等,對此測試人員在測試系統(tǒng)漏洞時,要養(yǎng)成Bug分析的好習(xí)慣,分清其問題的獨(dú)立性還是普遍性,若是普遍問題可以提交一個。這就要求測試時人員要加強(qiáng)對于軟件系統(tǒng)的熟練度,包括業(yè)務(wù)要求、操作以及使用等,當(dāng)測試人員也不確定漏洞是否存在時,可以與其他測試人員進(jìn)行溝通,或是與開發(fā)工程師進(jìn)行溝通,繼而精準(zhǔn)定位程序漏洞。
4.2.4加強(qiáng)有效溝通
考慮到測試人員與開發(fā)人員之間的矛盾問題,主要的原因在于缺乏溝通或是交流無效,對此首先測試熱源就要占到用戶的角度上,正確的表達(dá)出自己的想法,讓開發(fā)人員也占到用戶的角度進(jìn)行討論。其次由于兩者工作理念不同,對此難免會存在爭議,對此測試人員保持自己觀點(diǎn),可在下個版本中完善。最后加強(qiáng)兩者之間的溝通,明確對方的工作想法,保證系統(tǒng)認(rèn)知的更加深入、全面,并靈活的運(yùn)用測試手段,從而更好的保證軟件高品質(zhì)。
5總結(jié)
綜上所述,通過對于軟件測試與軟件開發(fā)關(guān)系的分析,發(fā)現(xiàn)作為軟件產(chǎn)品全生命周期的關(guān)鍵環(huán)節(jié),更要加強(qiáng)溝通合作,提升企業(yè)研發(fā)的凝聚力,做到就事論事奔著相同目標(biāo)共同努力,從而更好的保證軟件產(chǎn)品的進(jìn)度和質(zhì)量。
作者:侯中原 單位:商丘醫(yī)學(xué)高等專科學(xué)校
[摘要]
隨著我國計(jì)算機(jī)網(wǎng)絡(luò)的不斷普及和發(fā)展,無論是人們的日常生活還是工作,甚至是休閑娛樂,都離不開互聯(lián)網(wǎng)的支持,可以說,計(jì)算機(jī)軟件已經(jīng)受到越來越多人的應(yīng)用,并且逐步成為了影響人們生活的重要技術(shù)。隨著人們對計(jì)算機(jī)應(yīng)用軟件需求量的不斷增加,計(jì)算機(jī)應(yīng)用軟件的開發(fā)也越來越頻繁,因此,要對其開發(fā)流程以及開發(fā)需求進(jìn)行深入的分析。文章將對計(jì)算機(jī)軟件測試技術(shù)與開發(fā)應(yīng)用進(jìn)行了研究。
[關(guān)鍵詞]
計(jì)算機(jī)軟件;測試技術(shù);開發(fā)應(yīng)用;相關(guān)研究
計(jì)算機(jī)軟件測試技術(shù)對于軟件開發(fā)而言具有重要的作用,能充分保障軟件的精確性,為軟件開發(fā)工作帶來安全保證。筆者將從計(jì)算機(jī)軟件開發(fā)的重要性、計(jì)算機(jī)軟件開發(fā)流程、計(jì)算機(jī)軟件測試技術(shù)在軟件開發(fā)中的有效應(yīng)用,三個部分進(jìn)行闡述。
1分析計(jì)算機(jī)軟件開發(fā)的重要性
相對于應(yīng)用軟件而言,計(jì)算機(jī)僅僅只是作為一種輔助工具,計(jì)算機(jī)之所以能夠幫助人們有效地解決這類問題,促進(jìn)社會迅猛發(fā)展,最重要的就是計(jì)算機(jī)內(nèi)的軟件應(yīng)用,可見,軟件的開發(fā)極為重要。隨著國家經(jīng)濟(jì)體系的不斷改革,各行各業(yè)已經(jīng)逐步面向現(xiàn)代化發(fā)展,互聯(lián)網(wǎng)的普及無疑為人們的發(fā)展奠定了結(jié)實(shí)的基礎(chǔ),也給應(yīng)用軟件的進(jìn)一步研究開發(fā)提供強(qiáng)有力的保障,計(jì)算機(jī)軟件的應(yīng)用已經(jīng)在人們的生活中得以普及,而人們的日常生活也已經(jīng)離不開網(wǎng)絡(luò)的支持。計(jì)算機(jī)軟件的應(yīng)用不斷豐富了人們的日常生活,使人們更加重視精神的自我培養(yǎng),此外,計(jì)算機(jī)網(wǎng)絡(luò)也在不斷推動著人們前進(jìn)。
2計(jì)算機(jī)軟件開發(fā)流程
2.1分析開發(fā)需求和設(shè)計(jì)概要
在開發(fā)計(jì)算機(jī)軟件之前,對其進(jìn)行需求分析是開發(fā)應(yīng)用軟件的首要環(huán)節(jié),亦是最重要的環(huán)節(jié)之一。軟件開發(fā)需求分析質(zhì)量,會直接對應(yīng)用軟件開發(fā)造成影響,一般情況下研究人員要根據(jù)軟件需求內(nèi)容,對軟件的概要進(jìn)行設(shè)計(jì),并且結(jié)合軟件的功能需求情況設(shè)計(jì)出軟件程序流程圖,若是利用類似于C語言等的高級語言實(shí)施程序編寫,還應(yīng)當(dāng)根據(jù)軟件模塊設(shè)計(jì)各模塊的應(yīng)用功能。概要設(shè)計(jì)為軟件的開發(fā)提供了程序框架,后續(xù)的開發(fā)工作都是在這個框架基礎(chǔ)上進(jìn)行操作,可見這個框架不但能夠決定計(jì)算機(jī)軟件程序功能,而且還能對軟件運(yùn)行的效率產(chǎn)生一定的影響。在基于軟件程序具體的開發(fā)過程中,想要實(shí)現(xiàn)其特定功能,可選擇多個語句或者邏輯關(guān)系等來實(shí)現(xiàn),但不同的邏輯關(guān)系與語句也會從一定程度上影響軟件。軟件開發(fā)及其需求越來越復(fù)雜,如何編寫簡潔而又不會存在漏洞的應(yīng)用程序,已經(jīng)成為了各軟件開發(fā)人員最終的目標(biāo),因此,在實(shí)際研究過程當(dāng)中,研究人員要十分重視概要設(shè)計(jì)環(huán)節(jié)的工作,并且保持思路清晰,設(shè)計(jì)完程序流程圖之后要進(jìn)行全方位的審核,不斷簡化軟件的邏輯關(guān)系,最終實(shí)現(xiàn)科學(xué)合理的軟件邏輯關(guān)系。
2.2詳細(xì)的編碼與設(shè)計(jì)
緊跟需求分析和概要設(shè)計(jì)后的一個環(huán)節(jié)就是進(jìn)行程序的具體編寫工作。在編寫程序的過程當(dāng)中,首先應(yīng)當(dāng)選擇計(jì)算機(jī)語言,經(jīng)過長時間的發(fā)展,高級計(jì)算機(jī)語言出現(xiàn)提高了軟件的開發(fā)效率。人們按照開發(fā)軟件的實(shí)際需求,有針對性地研究了很多種類的計(jì)算機(jī)語言,例如:如常見有JAVA、C語言等,到了現(xiàn)在出現(xiàn)了VF與VB等可視化的編程軟件,這類軟件的研發(fā)使研究人員即便沒有專業(yè)知識也可完成簡單的軟件開發(fā)。此外,在實(shí)際編碼前,研究人員應(yīng)進(jìn)行詳細(xì)設(shè)計(jì),在已設(shè)計(jì)的框架上,按特定的邏輯關(guān)系將軟件所需實(shí)現(xiàn)的一些功能進(jìn)行設(shè)計(jì),根據(jù)詳細(xì)設(shè)計(jì)流程進(jìn)行編碼。目前,計(jì)算機(jī)軟件設(shè)計(jì)使用最多的是C語言,這種語言的模塊形式較為簡單、語句便于理解,所以非常適合在開發(fā)、維護(hù)軟件過程中運(yùn)用,受到研發(fā)人員的青睞。
3計(jì)算機(jī)軟件測試技術(shù)在軟件開發(fā)中的有效應(yīng)用
軟件程序的編寫完成之后,研發(fā)人員還要對其實(shí)施相應(yīng)測試,監(jiān)測這款軟件的應(yīng)用效果以及功能等是否能夠達(dá)到預(yù)期效果,一般情況下,測試軟件的方法就是隨機(jī)輸入一些數(shù)據(jù)到計(jì)算機(jī)中,然后再看結(jié)果是否達(dá)到要求,為了能夠確保軟件功能的精準(zhǔn)性,常常會選擇幾組隨機(jī)數(shù)據(jù)配合一些特殊參數(shù)進(jìn)行檢測。如果檢測出來的結(jié)果和軟件功能相符合,那么則說明通過測試,反之,則不符合。近幾年以來,計(jì)算機(jī)的軟件開發(fā)技術(shù)得到迅猛發(fā)展,研究人員也開發(fā)了一些專門針對軟件測試的程序,但是由于受到技術(shù)水平因素的影響,使用測試軟件受到一定的局限,比如:一個測試軟件只能對一種軟件實(shí)施檢測,并且測試結(jié)果只能當(dāng)作參考,測試結(jié)果的準(zhǔn)確率還需要提升,但是不管怎樣,測試軟件的研發(fā)就足以標(biāo)志著計(jì)算機(jī)軟件程序的未來發(fā)展方向。新開發(fā)軟件通過檢測以后,需要交予需求方進(jìn)行使用,為了保證軟件能滿足人們的實(shí)際使用需求,使用方也會進(jìn)行驗(yàn)收,軟件驗(yàn)收方要求極為嚴(yán)格,但是驗(yàn)收方式基本和測試方法相似,同樣采取輸入?yún)?shù)來進(jìn)行驗(yàn)收,因此,就增加了不必要的驗(yàn)收程序。研發(fā)人員還應(yīng)當(dāng)繼續(xù)研究,爭取研發(fā)出更多的測試軟件,使軟件的測試結(jié)果更加精確。軟件測試技術(shù)作為軟件開發(fā)過程中最為重要的組成部分,該技術(shù)主要目的是為了將軟件產(chǎn)品中存在的問題及時找出,并將測試報(bào)告交給軟件開發(fā)人員予以修改。可見,在軟件開發(fā)工作中,軟件檢測技術(shù)的應(yīng)用是不可缺少的環(huán)節(jié)。
4結(jié)語
總而言之,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)已經(jīng)在人們的生活中得以廣泛應(yīng)用,而軟件就是應(yīng)用計(jì)算機(jī)的關(guān)鍵,隨著人們各類需求不斷增加,開發(fā)計(jì)算機(jī)軟件已經(jīng)成為了研究人員的日常工作,在具體的軟件研究過程中,軟件測試技術(shù)的使用是必不可少的,因此軟件開發(fā)人員還應(yīng)切實(shí)做好相關(guān)工作,解決軟件開發(fā)所面臨的困境,不斷提升自己的開發(fā)水平,對軟件開發(fā)工作進(jìn)行深入研究,促進(jìn)軟件事業(yè)的持續(xù)發(fā)展。
作者:高俊 鄒金萍 單位:江西生物科技職業(yè)學(xué)院
摘要:
本文針對軟件測試課程的教育現(xiàn)狀,結(jié)合軟件測試的課程特點(diǎn)和培養(yǎng)目標(biāo),從面向應(yīng)用型人才的培養(yǎng)方式出發(fā),提出了以案例式教學(xué)為主導(dǎo),走教學(xué)產(chǎn)業(yè)化發(fā)展的軟件測試改革方案。
關(guān)鍵詞:
軟件測試;應(yīng)用型人才;案例式教學(xué);教學(xué)產(chǎn)業(yè)化
隨著我國IT行業(yè)的發(fā)展,越來越多的企業(yè)意識到軟件測試的重要性,因此軟件測試人員成為當(dāng)前IT業(yè)界亟需的熱門人才。面對軟件測試人員緊迫的需求形勢,應(yīng)用型人才培養(yǎng)單位應(yīng)該擴(kuò)大軟件測試人員的人才培養(yǎng)規(guī)模,提高培養(yǎng)質(zhì)量。
一、《軟件測試》課程教育現(xiàn)狀
我國軟件測試技術(shù)發(fā)展已有十余年,但I(xiàn)T市場對于測試人員仍然呈現(xiàn)出供不應(yīng)求的勢態(tài)。目前國內(nèi)高校對軟件工程專業(yè)幾乎都會開設(shè)軟件測試課程,甚至有些高校已經(jīng)設(shè)置有軟件測試專業(yè)。2011年11月,教育部主辦了“2011年高等學(xué)校軟件測試課程教學(xué)論壇”,對測試人才的培養(yǎng)及測試領(lǐng)域的全面發(fā)展起到了積極地推動作用[1]。高校系統(tǒng)化的專業(yè)教育體系為學(xué)生奠定了扎實(shí)而科學(xué)的學(xué)科基礎(chǔ),并對軟件測試技術(shù)的理論化和系統(tǒng)化發(fā)展起到了不可替代的作用。利弊相依,傳統(tǒng)的人才培養(yǎng)模式對軟件測試課程設(shè)置和培養(yǎng)方案上還是會存在以下不足。
1.重理論輕實(shí)踐在傳統(tǒng)的軟件測試課程設(shè)置中,大多采用教師在課堂上講授理論知識,學(xué)生上機(jī)時完成實(shí)驗(yàn)操作的教學(xué)方式。實(shí)驗(yàn)的目的只是為了檢查學(xué)生知識點(diǎn)的理解和掌握,實(shí)驗(yàn)題目大多比較陳舊,不能與時俱進(jìn)地與當(dāng)前的最新技術(shù)或最熱門的應(yīng)用相結(jié)合,使得學(xué)生的測試知識體系過于單薄。
2.重學(xué)生個體知識積累,輕團(tuán)隊(duì)協(xié)作能力培養(yǎng)團(tuán)隊(duì)協(xié)作在軟件工程中的重要性無須多述。軟件測試作為軟件工程中重要一個環(huán)節(jié),貫穿于整個軟件生命周期,測試人員與系統(tǒng)分析員、軟件設(shè)計(jì)師、程序員、維護(hù)人員之間的溝通必不可少,良好的團(tuán)隊(duì)協(xié)作才能有助于項(xiàng)目的進(jìn)行,有助于高效、正確地開發(fā)出高質(zhì)量的軟件產(chǎn)品。傳統(tǒng)的教學(xué)模式中,很少引入分組協(xié)作的環(huán)節(jié)去鍛煉學(xué)生的溝通和交流能力,更不能設(shè)計(jì)出測試人員和開發(fā)人員的溝通場景,不能滿足學(xué)生在項(xiàng)目中去加深理解、鞏固提高的需求。
3.重即有知識,輕科學(xué)創(chuàng)新一直以來,軟件測試課程在高校的課程體系中受到重視并不多,課程結(jié)束后并沒有延續(xù)測試知識的后續(xù)課程。因此,學(xué)生不能在后面的學(xué)習(xí)和實(shí)踐中進(jìn)行總結(jié)提升。知識在母體中是要經(jīng)過消化、適應(yīng)、轉(zhuǎn)化、演進(jìn)、創(chuàng)新、融合、活化,而后才稱為組織的“行動知識”,現(xiàn)有的教學(xué)模式不能很好的產(chǎn)生知識發(fā)酵效果。
二、《軟件測試》課程特點(diǎn)和培養(yǎng)目標(biāo)
軟件測試是一門應(yīng)用型較強(qiáng)的學(xué)科,應(yīng)注重理論聯(lián)系實(shí)踐。一個合格的軟件評測師除了要掌握即有的測試?yán)碚摵蛙浖R外,還必須具備對軟件測試行業(yè)的深刻理解,必須具備對計(jì)算機(jī)專業(yè)知識,包括編程技能、數(shù)據(jù)庫、網(wǎng)絡(luò)、中間件等知識的系統(tǒng)掌握,必須具備溝通能力、團(tuán)隊(duì)協(xié)作精神。軟件測試是為了盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件交給用戶,這并不是一項(xiàng)簡單的工作。要做好軟件測試,測試人員不僅需要站在客戶的角度思考問題,真正理解客戶的需求,具備良好的分析能力和創(chuàng)造性思維能力,完成功能測試和界面測試,而且要能理解軟件系統(tǒng)的實(shí)現(xiàn)原理和各種使用場景,具備扎實(shí)的技術(shù)功底,能使用測試工具完成相應(yīng)的性能測試、安全性測試、兼容性測試和可靠性測試等更具挑戰(zhàn)性的任務(wù)[2]。從這個角度看,一個優(yōu)秀的測試工程師需要掌握更多的知識和技能。
三、《軟件測試》課程教學(xué)改革方案
以上可以看出,當(dāng)前高校對于測試課程的不重視,以及當(dāng)前的軟硬件設(shè)施及教學(xué)方法都不能滿足對應(yīng)用型測試技術(shù)人才的培養(yǎng)要求。為了適應(yīng)軟件產(chǎn)業(yè)發(fā)展對測試人才的迫切需要,實(shí)現(xiàn)軟件人才培養(yǎng)的持續(xù)性發(fā)展,針對軟件測試課程調(diào)整培養(yǎng)方案,展開深入的教學(xué)改革和實(shí)踐活動十分迫切和必要。
1.加大師資力量,構(gòu)建完善的軟硬件測試平臺教師素養(yǎng)的提高是軟件測試教學(xué)改革得以順利開展的前提。此前,國內(nèi)對軟件測試并不重視,致使國內(nèi)軟件測試人才短缺,大部分高校內(nèi)雖然有計(jì)算機(jī)系,但多以重開發(fā)輕測試,測試教師的專業(yè)素質(zhì)和數(shù)量都遠(yuǎn)遠(yuǎn)不夠。因此,不僅要重視對教師測試專業(yè)技術(shù)的培訓(xùn),提供更多的學(xué)習(xí)機(jī)會,也應(yīng)該認(rèn)真開展軟件測試教學(xué)研究,構(gòu)造專業(yè)的軟件測試教學(xué)團(tuán)隊(duì)。作為一門實(shí)踐性較高的課程,軟件測試必須建議專門的、完備的實(shí)驗(yàn)教學(xué)體系和環(huán)境。目前,高校普遍缺乏軟件測試的軟、硬件環(huán)境,致使學(xué)生無法通過項(xiàng)目實(shí)踐來深入理解和提高測試相關(guān)知識和技能。
2.運(yùn)用案例教學(xué),豐富軟件測試項(xiàng)目實(shí)戰(zhàn)案例在教學(xué)活動中,學(xué)生總是對最新、最流行的項(xiàng)目和案例感興趣,陳舊的案例既不能滿足當(dāng)前市場上對測試人才的技術(shù)需求,又不能很好的激起學(xué)生的興趣。運(yùn)用案例教學(xué)最重要的環(huán)節(jié)就是豐富案例素材,保持案例的“鮮活性”與“生命力”。高??梢圆捎脷v年本科畢業(yè)設(shè)計(jì)中運(yùn)用了流行的技術(shù)、難度適中、功能較為完整的應(yīng)用作為軟件測試課程的測試案例,不但可以保證素材的延續(xù)性,也使得學(xué)生畢業(yè)設(shè)計(jì)完成的質(zhì)量有所提高。
3.加強(qiáng)校企合作,走教學(xué)產(chǎn)業(yè)化發(fā)展之路[3]企業(yè)需要人才,高校為企業(yè)輸送人才,校園中學(xué)習(xí)的技能最終要接收用人單位的考驗(yàn)。所以與軟件企業(yè)合作,建立對口的學(xué)生實(shí)訓(xùn)基地,是應(yīng)用型人才培養(yǎng)的重要途徑。軟件測試技術(shù)的掌握與提高離不開項(xiàng)目實(shí)戰(zhàn),讓學(xué)生在真正的軟件工程過程中從事測試工作,不僅能使學(xué)生深刻體會到軟件測試在整個項(xiàng)目中的作用,掌握測試方法和技巧,對于學(xué)生的溝通交流能力、團(tuán)隊(duì)協(xié)作能力都有積極的促進(jìn)作用。
四、小結(jié)
軟件測試是保障軟件質(zhì)量,驗(yàn)證軟件可靠性的重要環(huán)節(jié),其重要性不言而喻。重視軟件測試應(yīng)從企業(yè)用人的實(shí)際需求出發(fā),高校應(yīng)加強(qiáng)面向企業(yè)需求的軟件測試改革,切實(shí)培養(yǎng)學(xué)生的動手操作能力,使學(xué)生掌握最新的測試方法和技巧,讓企業(yè)需求促進(jìn)和推動高校教學(xué)發(fā)展。
作者:于營 單位:三亞學(xué)院
1測試流程不合理
1.1測試設(shè)計(jì)重點(diǎn)偏離使用QC軟件測試發(fā)現(xiàn)bug統(tǒng)計(jì),如表1所示。根據(jù)表1工作量統(tǒng)計(jì),25人/日為5個中級測試工程師一周的工作量,但是根據(jù)測試用例發(fā)現(xiàn)的bug數(shù)量僅占bug總量的44.18%,該比例顯示測試用例的設(shè)計(jì)重點(diǎn)嚴(yán)重出現(xiàn)偏離。需要在測試用例設(shè)計(jì)的方向上進(jìn)行調(diào)整。
1.2測試過程不可控QC軟件測試計(jì)劃中測試執(zhí)行階段為2013.3.8-2013.3.27,執(zhí)行三輪測試;實(shí)際測試時間為2013.3.23-2013.4.20,執(zhí)行測試三輪,計(jì)劃完成時間嚴(yán)重偏離,表2為原計(jì)劃與實(shí)際計(jì)劃的對比。表2顯示測試計(jì)劃進(jìn)行了較大調(diào)整,計(jì)劃截止時間比原計(jì)劃延遲23天。延遲原因經(jīng)分析主要為開發(fā)提交測試時間延遲,開發(fā)提交版本問題較多,測試計(jì)劃安排不合理,在兩輪測試間為安排開發(fā)修改bug時間等。想要解決該問題,不僅需要對測試過程進(jìn)行管理,同時也需要對開發(fā)提交的測試版本質(zhì)量進(jìn)行管理。
2軟件質(zhì)量管理改進(jìn)對策
2.1需求工程管理軟件開發(fā)過程中,需求不明確會帶來需求的頻繁變更,浪費(fèi)了很多時間。針對此項(xiàng)問題,可對需求相關(guān)的活動進(jìn)行統(tǒng)一管理,其需求管理結(jié)構(gòu)圖如圖2所示。加強(qiáng)需求開發(fā)和需求管理的有機(jī)結(jié)合,不僅減少了需求的變更次數(shù),還解決了工程師對需求不能理解到位的問題。需求開發(fā)和需求管理同樣重要,只有兩者互相配合才能做出用戶滿意的產(chǎn)品。
2.2立項(xiàng)管理為了使有限的資源發(fā)揮更高的價(jià)值,公司可通過立項(xiàng)管理流程進(jìn)行立項(xiàng)管理,立項(xiàng)管理流程分為立項(xiàng)建議、立項(xiàng)評審和立項(xiàng)籌備三個階段,其具體流程圖3所示。
2.3測試流程管理針對測試流程中發(fā)現(xiàn)的問題,可對整體的測試流程做如下的改變:(1)測試部門可進(jìn)行需求學(xué)習(xí)及需求討論,對理解不清楚及有疑問的需求,由研發(fā)設(shè)計(jì)部門進(jìn)行解答,研發(fā)設(shè)計(jì)部門不能解答的由其聯(lián)系用戶確認(rèn)后作出解答;(2)需求確認(rèn)后,針對系統(tǒng)功能和性能等指標(biāo),由測試工程師進(jìn)行測試測用例的設(shè)計(jì),設(shè)計(jì)從兩個方面進(jìn)行,一方面測試工程師根據(jù)需求進(jìn)行測試用例的編寫,另一方面測試工程師可根據(jù)用戶反饋問題進(jìn)行分析匯總;(3)使用QC功能測試工具對應(yīng)用軟件兼容性、操作系統(tǒng)兼容性進(jìn)行測試,以便于使用測試工具完成多種環(huán)境下的功能和兼容性測試;(4)進(jìn)行自由測試以便于對系統(tǒng)測試用例進(jìn)行補(bǔ)充,分析測試用例未覆蓋問題的原因;(5)定期分析缺陷庫中的問題,分析問題產(chǎn)生的原因,進(jìn)行測試用例的修改。
3結(jié)論
本文指出了軟件質(zhì)量管理過程中可能會引起軟件質(zhì)量問題的原因,對軟件質(zhì)量管理的相關(guān)問題進(jìn)行了分析,歸納和總結(jié),這些問題在軟件開發(fā)人員中具有一定的普遍性。實(shí)踐表明,通過對這些問題進(jìn)行分類,開發(fā)人員可以清楚地知道在軟件設(shè)計(jì)中容易出現(xiàn)的問題,能夠及時采取相應(yīng)的措施,推動軟件質(zhì)量的全面提高。
作者:翁婕丁鐵喬揚(yáng)單位:南京萊斯信息技術(shù)股份有限公司質(zhì)量與技術(shù)管理部
根據(jù)權(quán)威機(jī)構(gòu)統(tǒng)計(jì)部門調(diào)查數(shù)據(jù)顯示可知,在常用的軟件開發(fā)項(xiàng)目環(huán)節(jié)中,軟件測試工作大約能夠占到軟件開發(fā)工作總量的42%以上,而軟件測試所需投入的研究經(jīng)費(fèi)成本也將占到總額數(shù)的50%。由此可知,軟件測試環(huán)節(jié)對于整個軟件工程開發(fā)應(yīng)用具有十分重要的意義。然而,如何建立一支高效軟件測試團(tuán)隊(duì)對于構(gòu)建更加完善的軟件工程起著直接導(dǎo)向性作用。BarryBoehm曾闡述了人的因素在軟件測試中的重要作用,人為所占因素甚至超過了其他環(huán)節(jié)性因素,其代表理論構(gòu)造性成本模型認(rèn)為由于軟件測試分析師與程序員的原因會導(dǎo)致其工作效率相差數(shù)倍。因此,加強(qiáng)軟件測試團(tuán)隊(duì)的高效率建設(shè)對于構(gòu)建高質(zhì)量軟件應(yīng)用程序具有重要作用。
1高效軟件測試團(tuán)隊(duì)建設(shè)的可行性策略
1.1軟件測試團(tuán)隊(duì)的特質(zhì)建設(shè)
軟件測試團(tuán)隊(duì)的素質(zhì)建設(shè)對于整個軟件工程質(zhì)量而言具有非常重要的作用,人是測試工作中最具價(jià)值也是最重要的資源。因此,應(yīng)該積極構(gòu)建合格的、高質(zhì)量的合作團(tuán)隊(duì)。(1)軟件測試以及軟件工程開發(fā)都需要程序員具備足夠的自信心,對軟件檢測結(jié)構(gòu)以及程序的缺陷要如實(shí)匯報(bào)。對于軟件項(xiàng)目工程中出現(xiàn)的各種問題要認(rèn)真處理,以此減少客戶可能遇到的種種問題。(2)軟件測試人員還要具備足夠的懷疑精神,對可能存在的漏洞性錯誤要及時予以檢測和糾正,進(jìn)而提高其自我創(chuàng)造力。(3)軟件測試團(tuán)隊(duì)要積極構(gòu)建溝通協(xié)調(diào)能力。可以通過與客戶進(jìn)行必要的溝通來及時發(fā)現(xiàn)軟件運(yùn)行中存在的不足之處,其中測試者可以針對模擬環(huán)境下用戶對于軟件環(huán)境的應(yīng)用情況進(jìn)行科學(xué)分析,以此對軟件編寫過程和總結(jié)文檔進(jìn)行反復(fù)檢查檢測,提高軟件的運(yùn)行效率和正確性。(4)必備的檢測技術(shù)能力。軟件測試團(tuán)隊(duì)必須具備重要的專業(yè)技能,需要精通數(shù)據(jù)庫、通信、網(wǎng)絡(luò)、GUI測試、測試工具、自動化測試腳本和相關(guān)業(yè)務(wù)領(lǐng)域等,以此全面提升他們的測試能力和測試積極性。
1.2軟件測試團(tuán)隊(duì)的制度性建設(shè)舉措
一個優(yōu)秀的軟件測試團(tuán)隊(duì)必定擁有一套完善的團(tuán)隊(duì)管理制度,擁有明確的職責(zé)分工和高端測試人員,通過不斷規(guī)范團(tuán)隊(duì)管理制度,做到揚(yáng)長避短,及時提升整體測試質(zhì)量。其中,軟件測試團(tuán)隊(duì)需要不斷加強(qiáng)匯報(bào)制度建設(shè)、工作總結(jié)制度建設(shè)、獎懲制度建設(shè)、測試審核制度建設(shè)、會議制度建設(shè)等,通過科學(xué)合理地分配職責(zé)關(guān)系來進(jìn)一步強(qiáng)化團(tuán)隊(duì)成員的素質(zhì)建設(shè)。在此過程中,還要注重對于資深測試人員的正確引導(dǎo)和建設(shè),加強(qiáng)彼此間的溝通交流,不斷豐富團(tuán)隊(duì)的測試知識庫,通過科學(xué)吸收先進(jìn)的測試管理知識來提升整體測試技能和技巧,以此減少開發(fā)團(tuán)隊(duì)協(xié)同工作中的一些領(lǐng)域瓶頸。
2結(jié)語
綜上所述,本文對目前國內(nèi)軟件工程的發(fā)展應(yīng)用現(xiàn)狀以及其中出現(xiàn)的漏洞不足之處進(jìn)行了分析。只有不斷加強(qiáng)對軟件測試團(tuán)隊(duì)的整體素質(zhì)和綜合開發(fā)技能的教育,才能從根本上提升其軟件測試技能,要在不斷建立健全團(tuán)隊(duì)管理制度的基礎(chǔ)上加強(qiáng)相關(guān)軟件工程建設(shè),以此全面提高測試人員的軟件工程技術(shù)水平。
作者:段煉單位:鄭州銀行科技開發(fā)部
1軟件工程提升軟件健壯性分析
軟件工程目前一直缺少一個明確的定義,但是目前業(yè)內(nèi)專家都一致認(rèn)為軟件工程一般分為需求分析、設(shè)計(jì)、編碼及測試4個環(huán)節(jié)。其中前面3個環(huán)節(jié)是整個軟件的編寫,而最后1個環(huán)節(jié)的軟件測試,則是通過各種專業(yè)測試方法來測試軟件是否滿足軟件工程下的10種特性:可修改性、有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性。
2當(dāng)前軟件測試的現(xiàn)狀
從對軟件工程的分析來看,軟件測試是保證軟件最終健壯性的最后一個工序。但是,當(dāng)前很多軟件設(shè)計(jì)公司,在軟件測試方面投入的人力物力都非常低,甚至沒有專門的軟件測試部門,而是由一些軟件設(shè)計(jì)人員兼職。雖然這樣也有了所謂的軟件測試這道工序,顯然因?yàn)檐浖O(shè)計(jì)人員本身的先入為主,所以在軟件測試的過程中,往往不容易發(fā)現(xiàn)潛在的問題。另外有的軟件測試人員僅僅把軟件推到市場上,部分使用人員來進(jìn)行測試,雖然這也是一種測試方法,但是這種由用戶測試的軟件測試環(huán)節(jié),更多的是在軟件的操作體驗(yàn)的測試,并不能夠發(fā)現(xiàn)軟件潛在的bug,正確的軟件測試流程,應(yīng)該設(shè)計(jì)專業(yè)的測試軟件,通過白盒測試的方法來針對軟件代碼進(jìn)行測試。而上述的僅僅測試界面和操作,那只是軟件測試中的黑盒測試法,只有綜合白盒和黑盒,才可能獲得更好的軟件測試效果。但是,目前能夠綜合這2種測試方法的專業(yè)軟件測試部門,還是非常稀缺的。這自然導(dǎo)致了國內(nèi)整個軟件行業(yè)的軟件健壯性存在缺陷的主要原因之一。
3軟件測試重要性分析
3.1軟件危機(jī)下凸顯軟件測試的重要性
軟件危機(jī)一直是IT行業(yè)的最重要的話題,其實(shí)在軟件危機(jī)這個名詞出來之前,軟件工程就已經(jīng)初步有了核心流程,不過正是因?yàn)楹芏鄬<矣兄约旱睦碚摚宰屲浖こ踢@門技術(shù)的解釋出現(xiàn)了很多不同的版本,不過在眾多版本中,軟件測試始終占據(jù)一個重要的模塊。軟件危機(jī)常見的表現(xiàn)就是因?yàn)檐浖陂_發(fā)的過程中,成本失控、時間跳水、穩(wěn)定性和兼容性欠缺等諸多問題,而不得不一而再再而三的重新開發(fā),特別是軟件在設(shè)計(jì)的過程中,對于可維護(hù)性、可修復(fù)性不重視,導(dǎo)致維護(hù)的成本占據(jù)了整個軟件生存周期的90%以上,這很明顯是不正常的。通常而言,軟件維護(hù)的成本應(yīng)該是軟件生存周期的70%以下,超過70%,這個軟件最終的結(jié)局一定會失敗。軟件測試的過程,除了針對軟件的運(yùn)行是否穩(wěn)定,同樣也會對軟件的可維護(hù)性進(jìn)行有效的判斷,盡可能的避免軟件危機(jī)的產(chǎn)生,所以從軟件危機(jī)的角度上來看,軟件測試在軟件工程中的地位無疑是非常重要的。
3.2軟件測試的必要性
(1)是交流的問題,容易導(dǎo)致軟件接口處的錯誤?,F(xiàn)代軟件設(shè)計(jì)已經(jīng)不是單人作戰(zhàn)的模式,已經(jīng)上升到團(tuán)隊(duì)甚至全球軟件工程師通過互聯(lián)網(wǎng)這個大平臺進(jìn)行合作,這種方式顯然對軟件工程規(guī)范要求更高。其中交流往往就成了一個很重要的問題,很多軟件工程師在設(shè)計(jì)的過程中,盡可能的將自己負(fù)責(zé)的模塊做到完美,甚至也能夠考慮到模塊間的借口問題。但是因?yàn)榻涣魃系牟槐?,或者忽視交流,往往會產(chǎn)生2個模塊接口不兼容,甚至還會發(fā)生軟件需要重新改寫的問題。
(2)軟件結(jié)構(gòu)有越來越復(fù)雜的趨勢。雖然軟件開始實(shí)施模塊化設(shè)計(jì)方式,將一個軟件整體拆解成無數(shù)個小的系統(tǒng)模塊進(jìn)行設(shè)計(jì),然后將設(shè)計(jì)好的模塊進(jìn)行統(tǒng)一封裝。這種化整為零的軟件設(shè)計(jì)方式的確有效的改善了軟件復(fù)雜性的問題,但是同樣也面臨著模塊間的兼容問題,不同設(shè)計(jì)師的設(shè)計(jì)風(fēng)格可能會導(dǎo)致軟件可維護(hù)性降低及可移植性降低,特別是一些軟件開發(fā)公司,根本就沒有軟件工程的概念,其研發(fā)的軟件產(chǎn)品,更是漏洞百出,自然很難保證軟件產(chǎn)品的健壯性。
(3)程序代碼的設(shè)計(jì)問題。目前一個軟件的誕生,往往會有好幾千萬行的代碼,而且在軟件正式代碼編寫之前,還需要撰寫概要設(shè)計(jì)代碼和詳細(xì)設(shè)計(jì)代碼,這些往往都給錯誤埋下伏筆。如果程序設(shè)計(jì)代碼撰寫不規(guī)范,沒有相應(yīng)的注釋,沒有相應(yīng)的模塊設(shè)計(jì),往往計(jì)算式發(fā)現(xiàn)了軟件的錯誤,最終維護(hù)起來,也很難讓維護(hù)工程師定位,甚至連測試工程師也很難找到錯誤的地方。
(4)設(shè)計(jì)文檔的組成非常少。一個軟件產(chǎn)品的誕生,除了優(yōu)秀的代碼設(shè)計(jì)之外,還要一份完善的代碼文檔,包括軟件的可行性研究、需求分析、詳細(xì)設(shè)計(jì)、代碼編寫,以及軟件測試等工作流程中所需要的一切的代碼文檔。如果代碼文檔貧乏,甚至沒有,那么一旦在軟件測試環(huán)節(jié),或者在軟件使用環(huán)節(jié),出現(xiàn)錯誤時,那就很難進(jìn)行維護(hù)調(diào)試了。這時候的維護(hù)成本往往會比重新編寫一款軟件的成本還要低,可見設(shè)計(jì)文檔的錯誤撰寫給軟件健壯性的影響。
(5)一些軟件測試工具和開發(fā)工具本身的問題,往往導(dǎo)致軟件出現(xiàn)嚴(yán)重的bug。而且在設(shè)計(jì)階段,還很難發(fā)現(xiàn),因?yàn)槭潜旧碥浖y試工具和軟件開發(fā)工具引起的,因?yàn)檐浖y試工具和開發(fā)工具實(shí)際上也是一種軟件,如果這些軟件的健壯性有問題,自然也會導(dǎo)致測試結(jié)果出現(xiàn)偏差,最終影響到軟件的健壯性。
3.3軟件測試成本過半證明了軟件測試的重要性
軟件工程雖然在很多專家和權(quán)威機(jī)構(gòu)的定義有所偏差,但是無一例外,對于軟件成本構(gòu)成的分析上,軟件測試的成本一直占據(jù)了主要部分,最低的認(rèn)為,軟件測試成本要占據(jù)30%,最高的則認(rèn)為占據(jù)到50%。如果將后期維護(hù)成本也放在軟件測試板塊中,那么這個測試成本就會變得更高。因?yàn)檐浖M(jìn)入維護(hù)期時,一旦出現(xiàn)軟件需要進(jìn)行調(diào)試,那么修復(fù)后的軟件依然要進(jìn)行軟件測試,否則很難保證調(diào)試后軟件依然能夠保證健壯性。作為一個軟件系統(tǒng)的所有代碼,都是牽一發(fā)而動全身,修改了某處代碼,可能會影響到另外一個模塊的功能,所以在維護(hù)期內(nèi),對軟件的任何變動,都需要進(jìn)行軟件測試,才能夠保證軟件接下來的健壯性。但很明顯,如果將軟件測試工作放在軟件推出市場之前,就來進(jìn)行有效的測試,那么對于軟件整個生命周期的成本,將能夠得到有效的降低。軟件測試的成本的高低,往往和軟件的質(zhì)量成正比,而軟件質(zhì)量提升了,后期的維護(hù)成本就能夠有效的降低,所以綜合起來,軟件測試這部分的成本支出是非常有必要的。
4軟件測試流程分析
(1)建立獨(dú)立的軟件測試部門,測試部門領(lǐng)導(dǎo)應(yīng)該對這個專業(yè)非常精通,而不是簡單的由開發(fā)人員兼職,這個測試部門需要從可行性研究開始就應(yīng)該著手對軟件研發(fā)進(jìn)行測試,可行性研究的最終確認(rèn)應(yīng)該也有軟件測試主管部門的簽字確認(rèn)才能夠進(jìn)行下一步的工作。
(2)軟件測試工作不是等到軟件全部開發(fā)完畢才來進(jìn)行測試,而是跟隨軟件設(shè)計(jì)的整改生命周期,針對每一個環(huán)節(jié)進(jìn)行測試,軟件測試部門應(yīng)該擁有獨(dú)立的物理部門和獨(dú)立于開放環(huán)境的測試環(huán)境,這樣才能夠提供更加完善的軟件測試,盡可能的將軟件bug扼殺在搖籃里。
(3)軟件模塊測試,因?yàn)楝F(xiàn)在軟件設(shè)計(jì)都已經(jīng)進(jìn)入模塊化設(shè)計(jì)標(biāo)準(zhǔn),比如一個完整的軟件是S,它有A、B、C、D等模塊構(gòu)成,那么對于A模塊的軟件設(shè)計(jì)過程中,就應(yīng)該有獨(dú)立的軟件測試人員進(jìn)行跟蹤,直到A模塊被測試證明沒有隱患。以此類推,分別對B、C、D等模塊分別進(jìn)行測試,合格以后,組裝后的軟件依然進(jìn)行測試,這樣才能夠最終提升軟件健壯性。在軟件設(shè)計(jì)的過程中,其實(shí)測試人員是和軟件開發(fā)人員并行工作的,而不是等到軟件設(shè)計(jì)完畢之后,再來對模塊進(jìn)行測試,這種方法才能夠提升軟件測試的效果。
5結(jié)語
軟件測試隨著軟件系統(tǒng)復(fù)雜性的不斷提升而變得越來越重要,如果現(xiàn)在的軟件設(shè)計(jì)公司依然按照傳統(tǒng)的軟件研發(fā),只注重軟件的功能設(shè)計(jì),而忽視軟件測試,通過不斷的壓縮測試成本,希望以此來提升軟件最終的利潤作法已經(jīng)行不通了,只有將軟件測試做好、做精,才能夠提升軟件的健壯性,才能夠提升軟件的生存周期,才能夠降低軟件的整體成本。
作者:董倩范亞斌單位:石家莊學(xué)院
1關(guān)于軟件測試的認(rèn)識
在軟件開發(fā)的每一個階段中,人員的參與都是離不開的部分,而人的工作以及人們之間的通信質(zhì)量有很難做到完美無缺,這就導(dǎo)致了錯誤是不可避免的。另外,伴隨著計(jì)算機(jī)控制對象越來越復(fù)雜,且軟件的功能及規(guī)模也在不斷的提升,這也使得錯誤相對而言更容易發(fā)生,比如對于WindowsNT操作系統(tǒng)來說,其代碼約為3200萬行。總體來看,在軟件設(shè)計(jì)階段,人們所犯的錯位是引起軟件失效的主要原因,而軟件缺陷的根源則在于軟件的復(fù)雜性。在確保軟件可靠性以及質(zhì)量的過程中,軟件測試屬于最為主要的手段,以當(dāng)前的軟件工程來看,多以結(jié)構(gòu)化分析及設(shè)計(jì)作為核心,因此在開發(fā)階段,需求分析以及設(shè)計(jì)都是以工程管理以及技術(shù)評審作為質(zhì)量的保障手段,而工程管理以及技術(shù)評審又存在著主觀上的缺陷,很容易遺漏錯誤使其延續(xù)至開發(fā)階段。客觀來說,軟件測試在發(fā)掘軟件中隱藏缺陷的過程中的確有著很好的效果,以英國的SHOLIS項(xiàng)目來看,這一項(xiàng)目使用形式化方法對軟件規(guī)約進(jìn)行描述及證明,而且利用程序正確性證明方法對前期的很多缺陷進(jìn)行排除,但是通過軟件測試卻依舊發(fā)現(xiàn)了整個過程15.175%的缺陷。此外,隨著人們對軟件測試重要性的認(rèn)識越來越深,其所在軟件開發(fā)周期中所占的比例也越來越高,當(dāng)前很多軟件開發(fā)機(jī)構(gòu)已經(jīng)將其40%的研制力量投放到了軟件測試中,而對一些比較重要的軟件來說,其測試的費(fèi)用往往會高達(dá)其他階段費(fèi)用的3至5倍,由此可見,不管從哪個角度出發(fā),軟件測試都是非常重要的。
2軟件測試分類
當(dāng)前的軟件測試技術(shù)主要可以分為動態(tài)測試以及靜態(tài)測試,其中,靜態(tài)測試主要是指在不執(zhí)行程序代碼的情況下找到程序中有可能存在的缺陷或者對程序代碼進(jìn)行評估的過程中,廣義上看,靜態(tài)測試還包括軟件需求分析以及技術(shù)評審。至于動態(tài)測試,則是通過抽樣測試數(shù)據(jù)對程序進(jìn)行運(yùn)行以起到檢查程序中存在的缺陷。在動態(tài)測試的過程中,其核心內(nèi)容主要包括測試用例、運(yùn)行正與以及對于程序運(yùn)行結(jié)果進(jìn)行驗(yàn)證這3部分內(nèi)容,此外還包括一些數(shù)據(jù)管理、文檔編制、操作規(guī)程等輔助方面的工作。
3軟件測試的對象
在軟件測試的過程中,不單單進(jìn)行一些比較簡單的程序測試,也就是說僅對程序能否運(yùn)行進(jìn)行測試是遠(yuǎn)遠(yuǎn)不夠的。具體來看,軟件測試要貫穿在軟件定義以及開發(fā)的整個過程中,因此軟件測試的對象包括需求分析、系統(tǒng)設(shè)計(jì)、程序編碼以及各階段說明文檔。此外,因軟件開發(fā)過程中各個階段之間有著非常金敏的銜接,因此如果前一階段出現(xiàn)問題必然會對下一階段段的工作造成影響,所以為了確保每一個階段的正確性,我們要做好確認(rèn)及驗(yàn)證工作。具體來看,確認(rèn)主要是對需求規(guī)格以及程序進(jìn)行確認(rèn),這既含有靜態(tài)確認(rèn),又有動態(tài)確認(rèn),其中靜態(tài)確認(rèn)大多數(shù)是由人工進(jìn)行分析,而動態(tài)確認(rèn)則是利用動態(tài)分析以及程序測試對程序執(zhí)行的情況進(jìn)行檢查。至于驗(yàn)證,則主要是采取一定手段對程序執(zhí)行情況進(jìn)行檢查,進(jìn)而證明軟件各階段中的完備性、正確性以及邏輯協(xié)調(diào)性。舉例來說,我們驗(yàn)證的對象包括測試用戶需求和系統(tǒng)分析員報(bào)告是否想和、設(shè)計(jì)說明書和測試需求說明書是否匹配等。
4軟件測試目的及原則
4.1軟件測試目的
測試目前因立場的不同又可以分為兩種,從客戶角度來看,總是會希望通過測試來發(fā)現(xiàn)軟件中的缺陷及隱蔽錯誤。而從軟件開發(fā)者角度來看的話,則是希望產(chǎn)品少出現(xiàn)錯誤,對軟件已經(jīng)符合客戶需求進(jìn)行驗(yàn)證,在這種思路下,測試人員會使用一些導(dǎo)致程序失效概率小的測試模塊進(jìn)行測試,并對容易導(dǎo)致錯誤暴露的測試用例進(jìn)行回避,而且對于有可能出現(xiàn)副作用的語句也并不會去刻意的檢查。基于此,在程序中,還存在很多預(yù)料不到的問題,而這類問題往往要在一些比較特殊的環(huán)境之下才能夠表現(xiàn)出來。從以上分析我們可以看出,在對軟件進(jìn)行測試的過程中還是要更多的站在用戶角度對問題進(jìn)行考慮。
4.2軟件測試原則
(1)“盡早和不斷的進(jìn)行軟件測試”,只有時刻牢記這一原則才能夠降低軟件開發(fā)中由于工作多樣化、人員配置復(fù)雜化所帶來的不利影響。具體實(shí)踐的時候,我們首先要端正態(tài)度,對各階段技術(shù)審核要認(rèn)真進(jìn)行,另外,我們還要將軟件測試貫徹到每一個環(huán)節(jié)中,進(jìn)而早對錯誤進(jìn)行發(fā)現(xiàn)和預(yù)防。
(2)測試用例選擇的過程中要有輸入數(shù)據(jù)和以及和輸入數(shù)據(jù)相對應(yīng)的預(yù)期輸出結(jié)果,具體來看,在我們進(jìn)行軟件測試的過程中要選擇比較適合程序段的測試用例,這些用例可以對程序員所編制的程序是否存在錯誤進(jìn)行分析,而給出預(yù)期的輸出結(jié)果則可以對程序段是否存在錯誤進(jìn)行更為快捷的判斷。
(3)要避免程序員對自己的程序進(jìn)行測試,在軟件測試的過程中,冷靜的情緒以及客觀的態(tài)度是不可避免的,而人又很難對自己的勞動成果進(jìn)行否定,因此在程序員對自己程序進(jìn)行檢查的過程中會從主觀上出現(xiàn)偏差,導(dǎo)致測試結(jié)果不準(zhǔn)確、不客觀。
(4)設(shè)計(jì)測試用例的過程中要注意使用不合理輸入套件,所謂不合理輸入條件主要包括輸入異?;蛘邥?dǎo)致異變的條件。在軟件正常使用的過程中,不合理輸入是不可避免的,輕則會導(dǎo)致運(yùn)算錯誤,嚴(yán)重的時候甚至?xí)管浖А?
(5)對測試工作中的群集現(xiàn)象進(jìn)行注意,針對測試過程中錯誤較多的程序段,要對其進(jìn)行詳細(xì)認(rèn)真的檢查,這是因?yàn)閺慕?jīng)驗(yàn)上看,程序段中殘存的錯誤于已發(fā)現(xiàn)的錯誤往往會成正比。
(6)對測試要認(rèn)真執(zhí)行,這是指我們要做好一個詳細(xì)的規(guī)劃,具體來說,規(guī)劃主要包括:軟件功能、輸入、輸出以及每一功能測試的進(jìn)度安排等。
(7)對測試計(jì)劃、用例、出錯統(tǒng)計(jì)以及分析報(bào)告等進(jìn)行妥善的保管,進(jìn)而為日后的軟件維護(hù)提供更為便捷的服務(wù)??傮w來看,在我們的工作中如果能夠把握住以上原則必然能夠?qū)μ嵘郎y試工作的效果起到很強(qiáng)促進(jìn)作用。
5結(jié)語
在軟件開發(fā)工程中,軟件測試屬于一個重要的環(huán)節(jié),一旦缺乏了這一環(huán)節(jié),所開發(fā)出的產(chǎn)品必然難以滿足用戶的要求。本文關(guān)于軟件測試必要性的分析還存在很多不足之處,也希望各位測試人員能夠?qū)ζ溥M(jìn)行補(bǔ)充及指正,進(jìn)而共同促進(jìn)這方面研究水平的提升。
作者:樓煒單位:同濟(jì)大學(xué)軟件學(xué)院
按照軟件特征分類,軟件測試可分為:功能測試和性能測試。功能測試是黑盒測試的1個方面,它檢查實(shí)際軟件功能是否符合用戶的需求。一般分為:邏輯功能測試、易用性測試、安裝測試和兼容性測試等。性能測試主要有時間性能測試和空間性能測試2種。通常還包括:一般性能測試、可靠性測試、負(fù)載測試、壓力測試。其它分類還包括:回歸測試、冒煙測試、隨機(jī)測試?;貧w測試是指對軟件的新版本測試時,重復(fù)執(zhí)行上一版本測試時的用例。冒煙測試是指對一個新版本進(jìn)行系統(tǒng)大規(guī)模的測試之前,先驗(yàn)證一下軟件的基本功能是否實(shí)現(xiàn),是否具備可測性。隨機(jī)測試是指測試中所有的輸入數(shù)據(jù)都是隨機(jī)產(chǎn)生的,其目的是模擬用戶的真實(shí)操作,并發(fā)現(xiàn)一些邊緣性的錯誤。
軟件測試過程一般來說,軟件測試工作從立項(xiàng)后就開始了,主要經(jīng)歷以下幾個主要環(huán)節(jié),如圖1所示。需求分析是軟件測試的1個重要環(huán)節(jié),測試人員對這一環(huán)節(jié)的理解程度將直接影響后續(xù)測試工作的開展。一般而言,需求分析包括軟件功能需求分析,測試環(huán)境需求分析,測試資源需求分析等。測試計(jì)劃的依據(jù)主要是項(xiàng)目開發(fā)計(jì)劃和測試需求分析結(jié)果而制定,測試計(jì)劃指導(dǎo)整個測試過程。測試設(shè)計(jì)在測試活動的各個階段,對測試策略、測試方法、測試用例進(jìn)行制定和編寫。測試環(huán)境搭建要盡可能模擬實(shí)際應(yīng)用場景,滿足項(xiàng)目的設(shè)計(jì)要求,從而達(dá)到理想的測試效果。測試執(zhí)行和測試記錄由測試工程師完成,主要是查找軟件的錯誤和缺陷,并記錄測試活動中出現(xiàn)的問題。缺陷管理是對測試活動中出現(xiàn)的BUG進(jìn)行管理和跟蹤,保證每個BUG得到及時修復(fù)。軟件評估是在測試活動的最后,對軟件進(jìn)行全面地分析和總結(jié)。
鐵路產(chǎn)品開發(fā)過程中容易忽視軟件測試
鐵路產(chǎn)品供應(yīng)商普遍重視占領(lǐng)市場份額,追求利益的最大化,提升產(chǎn)品的服務(wù)質(zhì)量,但是卻容易忽視保證產(chǎn)品質(zhì)量的軟件測試,這給鐵路安全運(yùn)輸帶來巨大安全隱患。項(xiàng)目的開發(fā)過程通常是確定項(xiàng)目負(fù)責(zé)人和項(xiàng)目參與人、項(xiàng)目的方案以及項(xiàng)目需要完成的時間,然后投入項(xiàng)目的開發(fā)。研發(fā)過程中采用團(tuán)隊(duì)協(xié)作,項(xiàng)目分工到人,經(jīng)過程序編寫、調(diào)試,最后集成為產(chǎn)品,并在實(shí)驗(yàn)室和現(xiàn)場環(huán)境下進(jìn)行測試實(shí)驗(yàn)。對于項(xiàng)目進(jìn)展情況的掌握是通過不定期的召開會議和單獨(dú)詢問主要開發(fā)人員以及研發(fā)人員匯報(bào)來實(shí)現(xiàn)的。
在這種開發(fā)模式下,因?yàn)轫?xiàng)目的開發(fā)過程中沒有系統(tǒng)和獨(dú)立的測試過程,所進(jìn)行的測試也是以正向思維為主,重點(diǎn)驗(yàn)證軟件是否實(shí)現(xiàn)了相應(yīng)的功能,而不是軟件在異常情況下的響應(yīng)和處理。軟件開發(fā)和軟件測試本來就是不同的活動,開發(fā)人員的工作目標(biāo)是創(chuàng)建相應(yīng)模塊,實(shí)現(xiàn)特定功能,從而會不自覺地朝這個方向努力,挑選那些使程序出錯可能性較小的測試數(shù)據(jù)和手段,無法保證軟件被全方位進(jìn)行測試,會給項(xiàng)目帶來隱患。正是認(rèn)識到這一情況,才大力主張產(chǎn)品開發(fā)應(yīng)進(jìn)行科學(xué)和規(guī)范性管理,加強(qiáng)軟件測試隊(duì)伍建設(shè),任命專職人員從事測試工作。利用軟件領(lǐng)域中的相關(guān)技術(shù),對軟件進(jìn)行科學(xué)、合理的測試。
如何在企業(yè)內(nèi)部實(shí)施軟件測試
企業(yè)想要在產(chǎn)品開發(fā)過程中,對產(chǎn)品軟件展開相關(guān)測試,首先應(yīng)建立合適企業(yè)特點(diǎn)和開發(fā)模式的測試流程;其次,對不同測試階段和不同產(chǎn)品的軟件和硬件的特點(diǎn),擬采用不同的測試技術(shù)和策略。另外,在產(chǎn)品開發(fā)過程中,項(xiàng)目的配置管理、質(zhì)量保證的等方面都應(yīng)形成明確的制度。
1測試流程
企業(yè)應(yīng)全面規(guī)范項(xiàng)目開發(fā)管理流程,對項(xiàng)目進(jìn)展的各個階段進(jìn)行明確劃分。軟件測試是建立在軟件開發(fā)的成果之上,即測試的對象就是軟件開發(fā)的階段性成果,如設(shè)計(jì)文檔、程序代碼和可執(zhí)行的程序。
軟件測試和硬件測試的側(cè)重點(diǎn)有所不同。對于軟件測試,采用比較通用的測試流程,如圖2所示。軟件項(xiàng)目的開發(fā)從項(xiàng)目立項(xiàng)開始,測試人員介入項(xiàng)目組,明確需求分析階段的用戶需求,針對不同測試階段的工作重點(diǎn),制定各階段的測試計(jì)劃。在設(shè)計(jì)測試階段,測試人員需要確定各測試階段的測試方法和必要的測試工具,搭建測試環(huán)境,編寫相應(yīng)的測試用例。接下來,按照測試計(jì)劃分別進(jìn)行單元測試、集成測試和系統(tǒng)測試,形成各階段的測試報(bào)告,對測試過程中發(fā)現(xiàn)的缺陷進(jìn)行跟蹤,保證缺陷得到及時修復(fù)。為了保證軟件在現(xiàn)場環(huán)境下能夠正常運(yùn)行,測試人員針對現(xiàn)場實(shí)際情況,制定現(xiàn)場驗(yàn)收計(jì)劃,確定現(xiàn)場驗(yàn)收策略,對軟件進(jìn)行現(xiàn)場驗(yàn)收和評估。當(dāng)軟件通過了各階段的測試,且全部缺陷得到修復(fù),將進(jìn)入到軟件的階段。軟件階段通過對軟件版本的管理和控制,實(shí)現(xiàn)軟件、維護(hù)和升級等。
對于硬件測試,需要面向硬件編程,即在硬件環(huán)境下,編寫代碼,實(shí)現(xiàn)采集、控制、通訊等功能。由于硬件產(chǎn)品的開發(fā)不能脫離硬件環(huán)境,因此,測試活動與硬件產(chǎn)品開發(fā)、過程調(diào)試、硬件聯(lián)調(diào)都是密不可分的,軟件測試作為硬件產(chǎn)品開發(fā)過程中的重要環(huán)節(jié),“驗(yàn)證”和“確認(rèn)”產(chǎn)品滿足項(xiàng)目的設(shè)計(jì)需求,硬件產(chǎn)品開發(fā)流程如圖3所示。硬件產(chǎn)品的開發(fā),首先要明確硬件需求,預(yù)計(jì)產(chǎn)品達(dá)到的效果。在硬件總體設(shè)計(jì)階段,獲取硬件需求,并根據(jù)功能進(jìn)行模塊劃分,定義模塊之間的接口。在詳細(xì)設(shè)計(jì)階段,對各模塊進(jìn)行編程,搭建相應(yīng)的硬件電路。過程調(diào)試可分為:軟件過程調(diào)試和硬件過程調(diào)試兩種,軟件過程調(diào)試指的是在硬件電路的環(huán)境下,進(jìn)行軟件調(diào)試的過程,保證軟件能夠正確控制硬件電路和讀取相應(yīng)數(shù)據(jù);硬件過程調(diào)試指的是產(chǎn)品電路部分的調(diào)試過程,驗(yàn)證電子器件之間邏輯是否符合系統(tǒng)設(shè)計(jì)要求,保證硬件產(chǎn)品穩(wěn)定、可靠,不受干擾。各硬件功能模塊調(diào)試成功后,需要進(jìn)行整體硬件聯(lián)調(diào),各硬件模塊被連接成1個整體,形成產(chǎn)品的雛形,在此階段,主要驗(yàn)證各模塊之間的接口是否符合設(shè)計(jì)要求,是否能夠?qū)崿F(xiàn)系統(tǒng)設(shè)計(jì)的各項(xiàng)功能。硬件產(chǎn)品經(jīng)過整體聯(lián)調(diào)后,形成樣機(jī)。測試工程師根據(jù)產(chǎn)品的硬件需求說明,制定測試計(jì)劃,確定測試方案和測試方法,并搭建測試環(huán)境,對樣機(jī)進(jìn)行硬件測試,確認(rèn)產(chǎn)品符合硬件產(chǎn)品設(shè)計(jì)要求。
2軟件測試技術(shù)在各階段的運(yùn)用
在軟件測試實(shí)施的各個階段,所采用的測試方法和測試策略也各不相同。下面對于測試過程的各階段進(jìn)行分別敘述。
2.1設(shè)計(jì)和代碼審查
設(shè)計(jì)審查是由項(xiàng)目組和測試組成員組成評審組對軟件設(shè)計(jì)和開發(fā)的輸出進(jìn)行評價(jià),以判斷確定設(shè)計(jì)和開發(fā)的輸出能否實(shí)現(xiàn)軟件產(chǎn)品預(yù)先定義的規(guī)格,同時通過審查標(biāo)識出與項(xiàng)目需求之間的偏差。設(shè)計(jì)審查按《項(xiàng)目計(jì)劃》所規(guī)定的評審點(diǎn)進(jìn)行。因臨時變更引起的突發(fā)性的評審隨時進(jìn)行。代碼審查實(shí)際上屬于靜態(tài)測試。在代碼審查之前,首先要對代碼進(jìn)行靜態(tài)分析,其目的是通過對源程序分析、目測,但不執(zhí)行程序,找出源代碼中可能存在的錯誤和缺陷,對程序設(shè)計(jì)的結(jié)構(gòu)屬性,如分支、路徑、轉(zhuǎn)移等進(jìn)行審查,盡可能地掌握程序的結(jié)構(gòu),為單元測試的測試用例的設(shè)計(jì)和執(zhí)行提供信息。代碼審查的目的是檢查源程序編碼是否符合詳細(xì)設(shè)計(jì)的編碼規(guī)定,確保編碼與設(shè)計(jì)的一致性和可追蹤性。檢查的方面主要包括:書寫格式、子程序或函數(shù)的入口和出口,數(shù)據(jù),參數(shù),程序語言的使用,存儲器的使用,可讀性,邏輯表達(dá)式的正確性,代碼結(jié)構(gòu)合理性等。靜態(tài)分析和代碼審查通??梢酝瑫r進(jìn)行,通過靜態(tài)分析掌握源程序結(jié)構(gòu),通過代碼審查,盡量減少書寫錯誤和隱含的邏輯錯誤,為單元測試提供比較穩(wěn)定的環(huán)境。
2.2單元測試
單元測試是軟件測試的基礎(chǔ),集成測試、系統(tǒng)測試都是建立在單元測試之上。單元測試是用來檢驗(yàn)每個軟件單元能否正確地實(shí)現(xiàn)其功能,滿足性能和接口要求,還要驗(yàn)證程序和詳細(xì)設(shè)計(jì)說明的一致性。從廣義上來講,單元測試包括靜態(tài)測試和動態(tài)測試。靜態(tài)測試就是上面介紹的“代碼審查”,而動態(tài)測試則是通過測試用例、測試工具來執(zhí)行程序,檢驗(yàn)程序是否存在缺陷的過程。單元測試一般采用白盒測試方法,手工測試和自動測試相結(jié)合,針對程序內(nèi)部的結(jié)構(gòu)和邏輯來展開,單元測試工具一般針對不同編程語言和開發(fā)環(huán)境而設(shè)計(jì)開發(fā)的,種類很多。我們利用白盒測試進(jìn)行代碼測試,利用黑盒測試進(jìn)行功能性測試,利用回歸測試保證維護(hù)代碼的完整性。單元測試工具固然有用,更重要的是測試策略,以及測試用例的設(shè)計(jì)。這也提醒我們在做單元測試的過程中,不可避重就輕,要抓住項(xiàng)目核心,進(jìn)行科學(xué)、有效的測試,只有這樣才能達(dá)到事半功倍的效果。
2.3集成測試
集成測試階段采用白盒測試和黑盒測試相結(jié)合的方式,將每個獨(dú)立的功能模塊進(jìn)行關(guān)聯(lián)和集成,便于進(jìn)行功能測試、界面測試、結(jié)構(gòu)測試、數(shù)據(jù)正確性測試等。在進(jìn)行集成測試前,測試工程師要搭建測試所需的硬件和軟件環(huán)境,盡量模擬設(shè)備實(shí)際的工作環(huán)境。結(jié)合項(xiàng)目的不同特點(diǎn),測試過程可以采用手工或自動測試。在進(jìn)行多次重復(fù)測試和回歸測試的情況下,可采用自動化測試工具對軟件進(jìn)行功能性檢測。
2.4系統(tǒng)測試
在系統(tǒng)測試階段,不僅要進(jìn)行功能測試,還要對系統(tǒng)的性能、安全性、兼容性和可靠性等進(jìn)行測試,系統(tǒng)測試涉及人機(jī)交互和復(fù)雜邏輯,因此系統(tǒng)測試多采用黑盒測試的手工測試方法。系統(tǒng)兼容性測試要考慮軟、硬件的兼容性。項(xiàng)目開發(fā)的硬件和軟件要在指定的環(huán)境下,進(jìn)行多次反復(fù)的安裝和反安裝測試,以驗(yàn)證接口數(shù)據(jù)調(diào)用和驅(qū)動程序是否達(dá)到設(shè)計(jì)標(biāo)準(zhǔn)。安全性測試和軟件的安全策略密切相關(guān),安全性測試主要包括:用戶訪問權(quán)限、數(shù)據(jù)庫安全性、文件安全性等。性能測試、負(fù)載測試等必須借助測試工具來實(shí)現(xiàn)。過分強(qiáng)調(diào)測試工具的作用,極力追求各種軟件測試工具,是軟件測試本末倒置的表現(xiàn)。實(shí)際上,測試過程中80%以上的缺陷是手工測試發(fā)現(xiàn)的,僅有不到20%的缺陷是靠工具測試發(fā)現(xiàn)的,而且這還得要求測試人員合理地使用工具。
3采用的測試模型
企業(yè)對產(chǎn)品開發(fā)應(yīng)重點(diǎn)關(guān)注產(chǎn)品開發(fā)的過程控制,以及測試、管理。保證產(chǎn)品質(zhì)量從源頭開始。因此,測試過程更適合采用W模型,如圖4所示。在W模型中,測試過程和開發(fā)過程都貫穿項(xiàng)目開發(fā)過程的整個生命周期,兩者同時開始,同時結(jié)束,相輔相成、始終保持著同步的關(guān)系。這樣做的原因是:測試工作盡早介入,軟件存在問題的可能性就會降低。項(xiàng)目正式立項(xiàng)后,測試人員既可參與到項(xiàng)目組中,通過學(xué)習(xí)和閱讀相關(guān)文檔,加強(qiáng)對項(xiàng)目的了解,對項(xiàng)目有個整體認(rèn)識,形成初步的測試思路。同時測試越早介入項(xiàng)目就能夠越早發(fā)現(xiàn)問題,解決問題所花費(fèi)的成本越小。如果在軟件的最后階段進(jìn)行測試,發(fā)現(xiàn)功能設(shè)計(jì)不合理或性能不好,需要修改需求和設(shè)計(jì),不得不返工到系統(tǒng)設(shè)計(jì)或需求定義階段,會造成很大的代價(jià),所以有必要將軟件測試延伸到需求、設(shè)計(jì)階段,對需求、設(shè)計(jì)進(jìn)行驗(yàn)證。有資料表明,60%以上的軟件錯誤不是程序錯誤,而是分析和設(shè)計(jì)錯誤。若把軟件分析、設(shè)計(jì)上的問題遺留到后期,可能造成設(shè)計(jì)、編碼的部分甚至全部返工,從而增加軟件開發(fā)成本及延長開發(fā)周期等后果。同時,需求和設(shè)計(jì)階段所產(chǎn)生的缺陷具有放大效應(yīng),嚴(yán)重地影響軟件質(zhì)量。因此,為了更早地發(fā)現(xiàn)并解決問題,降低修改錯誤和缺陷的代價(jià),有必要將測試延伸到需求分析和設(shè)計(jì)階段中去,使軟件測試貫穿于整個生命周期,提倡軟件生命周期測試的理念,即軟件測試是對軟件形成過程中的所有工作產(chǎn)品(包括程序以及相關(guān)文檔)進(jìn)行的測試,而不僅僅是對程序的運(yùn)行進(jìn)行測試。測試在對需求和設(shè)計(jì)階段的測試活動主要是通過需求評審和設(shè)計(jì)評審來實(shí)現(xiàn),可以更早發(fā)現(xiàn)問題,及時修改問題。即對軟件開發(fā)階段中的階段性產(chǎn)品進(jìn)行評審、走讀或者回憶評審,發(fā)現(xiàn)其中的問題,是一種靜態(tài)測試。通過靜態(tài)測試,可以更早地發(fā)現(xiàn)問題,把問題消滅在萌芽中,將每個階段產(chǎn)生的缺陷及時清除。
總結(jié)
軟件測試作為專業(yè)性比較強(qiáng)的技術(shù)在我國起步較晚,受重視程度不夠,但它是保證軟件質(zhì)量的終極手段,目前越來越受到了人們的關(guān)注。鐵路行業(yè)的生產(chǎn)企業(yè),認(rèn)真做好產(chǎn)品質(zhì)量把關(guān),合理運(yùn)用相關(guān)檢測技術(shù),將軟件缺陷消滅在萌芽階段,保證鐵路運(yùn)輸和人們生命財(cái)產(chǎn)的安全。
作者:朱劍輝單位:哈爾濱鐵路局科學(xué)技術(shù)研究所