期刊大全 雜志訂閱 SCI期刊 投稿指導 期刊服務 文秘服務 出版社 登錄/注冊 購物車(0)

首頁 > 公文范文 > 軟件測試論文

軟件測試論文

時間:2022-05-10 03:20:40

序論:寫作是一種深度的自我表達。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內心深處的真相,好投稿為您帶來了一篇軟件測試論文范文,愿它們成為您寫作過程中的靈感催化劑,助力您的創(chuàng)作。

軟件測試論文

軟件測試論文:嵌入式計算機軟件測試關鍵技術初探

摘要:嵌入式計算機是計算機行業(yè)中一種比較先進的計算機技術。隨著科學技術的不斷發(fā)展,嵌入式計算機的使用范圍也越來越廣,在嵌入式計算機使用的過程中,能夠有效地保證對需要的功能的實現。但是,由于嵌入式計算機軟件的結構相對于其他類型的計算機來說比較復雜,這就要求我們要能夠按照使用需要,及時對嵌入式計算機軟件技術進行測試。文章根據現階段嵌入式計算機與嵌入式計算機軟件的概念,針對開發(fā)使用的技術進行分析,找出如何使用相關的技術對嵌入式計算機的軟件進行測試。

關鍵詞:嵌入式;計算機軟件;測試;關鍵技術

前言

隨著我國的工業(yè)不斷地進步,科學技術的不斷發(fā)展,嵌入式計算機技術也得到了很大程度的提升。我們身邊普通的計算機并不是嵌入式計算機,嵌入式計算機指的是專門針對某一個項目或者是某一個行業(yè)進行開發(fā)的專業(yè)計算機。嵌入式計算機不僅僅能夠實現對需求開發(fā)的功能,有效地提升工作的效率。嵌入式軟件是嵌入式計算機中安裝的軟件,一般情況下,嵌入式軟件都需要根據不同的工作需要,完成相應的功能,這就要求嵌入式軟件要具備一定的穩(wěn)定性,對嵌入式計算機軟件進行測試,能夠很好地保證嵌入式軟件的正常工作。

1什么是嵌入式計算機

嵌入式計算機指的是針對某一種技術,或者是某一種網絡、某一種功能等專門開發(fā)的計算機系統(tǒng),利用計算機技術,加入嵌入式系統(tǒng),能夠實現對計算機硬件和軟件功能的增多,能夠更加適合實際運用的需要。嵌入式計算機針對某一種功能的需要進行開發(fā),對開發(fā)的成本、功能的可靠性以及計算機的大小等因素,都有十分嚴格的要求。通過對計算機處理器、硬件、系統(tǒng)、應用等進行嵌入式技術的操作,能夠更加有效地保證計算機技術的實現。嵌入式計算機大多被應用在工業(yè)生產中,能夠提升工作效率,保證工作的質量[1]。

2什么是嵌入式計算機軟件

嵌入式計算機軟件指的是在嵌入式計算機中使用的軟件,能夠進行獨立功能的操作,嵌入式計算機軟件包括嵌入式微處理器、傳感器、控制器、定時器、儲存器等等。在嵌入式計算機中使用的電子芯片或是電子器件,將嵌入式計算機軟件安裝到嵌入式計算機中,能夠有效地實現常規(guī)計算機不具備的功能,比如:實時監(jiān)控功能、對設備的管理功能、數據處理功能、進行移動計算等等,真正地實現了現代化自動化的電子處理,是實現現階段自動化與智能化的社會生產力的重要途徑,嵌入式計算機軟件就是自動化的核心部分[2]。我們可以將嵌入式計算機軟件分為:簡單嵌入式系統(tǒng)和復雜嵌入式系統(tǒng)兩種。簡單的嵌入式系統(tǒng)只能夠完成一項功能,比較典型的簡單嵌入式系統(tǒng)就是單片機。單片機通過ROM技術就能夠實現對系統(tǒng)的使用,能夠達到對程序控制的目的。復雜嵌入式系統(tǒng)的功能與普通的計算機系統(tǒng)功能并沒有什么過大的區(qū)別,只不過在復雜的嵌入式系統(tǒng)中,安裝了一些微型的嵌入式操作系統(tǒng),以及嵌入式應用軟件在計算機中,能夠使計算機的功能得到相應的完善,這就是嵌入式計算機軟件的作用[3]。

3什么是嵌入式計算機軟件的測試

嵌入式計算機軟件相比普通的計算機軟件來說,更具有專業(yè)性,嵌入式計算機軟件只能夠在某一個制定的平臺或者系統(tǒng)中運行。但是嵌入式計算機軟件的開發(fā)環(huán)境與運行的環(huán)境還存在很大的差異,不能夠使用同一網絡環(huán)境。嵌入式計算機軟件需要使用交叉開發(fā)的形式,在進行開發(fā)的計算機中,安裝并運行開發(fā)工具,開始對軟件進行編譯,再將編譯完成的軟件通過下載的方式,將軟件發(fā)送到目標計算機中,當開發(fā)計算機與目標計算機都有了嵌入式軟件,就能夠建立通訊連接,并且能夠對軟件下達命令、下載數據等等。兩臺計算機的操作系統(tǒng)不同,計算機的處理器也有著一定的差異,這樣的方式會增加嵌入式軟件開發(fā)過程的步驟,增加了開發(fā)步驟的復雜性[4]。我們將對嵌入式軟件進行開發(fā)的計算機稱為宿主機,對軟件進行接收并運行的稱為目標機。宿主機對使用開發(fā)工具,利用宿主機的操作系統(tǒng)對計算機軟件進行開發(fā),通過通信連接將計算機軟件發(fā)送到目標集中,盡管這一系列的操作看似很簡單,但是卻需要強大的系統(tǒng)和硬件的支持。在這種形式下進行運行的嵌入式計算機軟件開發(fā)的活動,一般情況下,宿主機都是我們平時工作生活中使用的通用計算機,也可以是開發(fā)微機或者是軟件工作站等等。目標機與宿主機不同,目標機能夠承載宿主機開發(fā)的嵌入式計算機軟件的運行,將嵌入式計算機軟件安裝在目標機中,就能夠實現嵌入式軟件的功能[5]。

4對嵌入式軟件測試關鍵技術進行研究

4.1對宿主機進行測試的技術研究

宿主機指的是對嵌入式軟件進行開發(fā)的計算機,對宿主機進行測試的方式有兩種,即靜態(tài)測試與動態(tài)測試兩種,這兩種方式使用的是代碼邏輯的方式對宿主機進行測試。4.1.1靜態(tài)測試技術很多計算機軟件開發(fā)的專家,在對計算機軟件進行檢測的時候,通常使用的都是人工檢查的方式,由設計人員組成一個小組,小組的成員之間互相交流對軟件開發(fā)使用了哪些程序、使用的是什么算法進行的計算,并交代設計數據與軟件的模塊之間有什么樣的關系等。這樣的方式雖然能夠在一定程度上找出軟件中是否存在相關的問題。但是,由于現階段嵌入式計算機軟件的結構越來越復雜,設計的步驟越來越繁瑣,軟件設計的規(guī)模也在逐漸擴大,這就要求在一款軟件的設計過程中,可能會有很多的軟件設計師、工程師等一起參與到軟件的開發(fā)工作當中,每個工作人員的分工也大有不同,再使用從前的方式對軟件進行檢查,就會加重檢查工作的負擔[6]。這就要求我們,要根據現階段的計算機軟件開發(fā)的實際情況,找出最合適現階段軟件開發(fā)的檢測技術,對原始的計算機軟件的檢測工作進行優(yōu)化升級,能夠使計算機軟件的檢查工作更加簡便。在檢查的過程中,加入適當的檢測技術,先對整個嵌入式計算機軟件的開發(fā)軟件系統(tǒng)框圖進行整理,并且對其設置自動連接的相關量,軟件的源代碼編程能夠通過自動化技術進行查找。這樣的方式能夠使軟件審查工作的工作效率有很大的提升,能夠使驗證工作的結果更加準確有效。我們可以通過靜態(tài)測試的方式,得到軟件中相關信息[7]。(1)軟件的源代碼程序繪制過程的邏輯圖,以及對軟件進行控制的工作流程。(2)軟件系統(tǒng)完整的邏輯框圖,系統(tǒng)內部關系調節(jié)的網絡圖。(3)軟件程序運行的路徑分析圖。(4)軟件生成的不同部分的顯示圖。(5)軟件不同部分顯示圖的位置信息,操作的頻率等信息。這些信息都能夠在靜態(tài)測試中得到實現,首先要使用靜態(tài)測試的系統(tǒng)對軟件的操作邏輯和控制系統(tǒng)進行分析,能夠有效地將軟件分析的更加精確,在進行軟件測試的過程中,能夠使測試的結果更加準確,并且能夠將測試結果更加精準的表現出來,檢測出軟件系統(tǒng)中是否存在相關的問題,并以此對軟件的系統(tǒng)進行改善。4.1.2動態(tài)測試技術對宿主機的動態(tài)測試主要指的是對軟件的代碼進行測試,能夠有效地檢測出代碼的執(zhí)行能力,并且分析軟件代碼的覆蓋率,能夠有效地檢測出軟件的功能。能夠有效地了解到軟件的性能,還能夠通過分析更加了解軟件中代碼的執(zhí)行情況,這樣的檢測方式能夠促進對軟件系統(tǒng)的改進,推進了軟件系統(tǒng)的發(fā)展,可以根據檢測的結果,對軟件的功能進行優(yōu)化和完善[8]。動態(tài)測試技術還能夠對軟件設置的完成程度進行測試,能夠對其中已經開發(fā)完畢的數據進行檢測,檢查其中是否存在缺少的數據,這樣的方式能夠為軟件的開發(fā)工作提供重要的依據。動態(tài)測試技術能夠將軟件中的每個函數的情況,以及對內存的分配情況等進行檢測,能夠將軟件中各種元素的分配情況進行顯示,并且能夠同時對相對應的數據、代碼、函數等進行顯示。

4.2對仿真機進行測試的技術研究

仿真機作為宿主機與目標機之間重要的環(huán)節(jié)之一,通過仿真機的使用,能夠有效地完善計算機軟件測試的功能以及軟件自身的性能,比對宿主機的測試更加直觀、更加真實,并且能夠對軟件中主要的技術進行仿真測試,使測試的結果更具有說服力。其測試的結果既能夠作用于宿主機,還能夠作用于目標機。4.2.1仿真機測試數據獲取技術現階段,針對仿真機的數據監(jiān)測,一直都是技術上很難實現的問題之一,很多對嵌入式軟件的檢測都需要在測試的過程中先提供軟件設計的源代碼,這樣的方式需要使用的數據量比較大,這就要求我們要針對這類數據的準確性進行技術的提升,才能夠保證檢測數據的精準性。仿真機監(jiān)測技術能夠從一定程度上保證數據信息的完整性,在對數據進行完全的緩存后,再使用測試工具進行修改,能夠從很大程度上保證數據的正常輸入,在測試結束之后,還能夠對已經進行緩存的數據進行讀取,并將數據整理保存到計算機中。但是,需要注意的是,使用這種方式進行測試,還要保證數據緩存的大小不會超過測試的容量,測試才能夠順利的運行[9]。4.2.2仿真機仿真測試技術對嵌入式計算機軟件進行仿真測試,能夠在測試的過程中,對數據進行集中地管理和處理。仿真測試需要一定的技術支持,能夠將數據進行仿真模擬,在模擬的過程中,能夠看到技術的使用過程,再按照每款軟件不同的性質,分類仿真,使測試的結果更加真實可靠。還要保證在對數據的檢測過程中,傳輸信號是能夠穩(wěn)定運行的,才能夠保證仿真測試的數據是實時的。

4.3對目標機進行測試的技術

目標機相對于其他部分來說,在測試的過程中,更需要注意目標機的綜合能力,還要能夠測試軟件自身的交互能力,并且測試軟件是否安全可靠,目標機測試的結果能夠更加真實地體現計算機軟件的性能[10]。4.3.1故障注入技術嵌入式計算機軟件在計算機中運行的狀態(tài),可以通過人為的方式進行設置。但是,這就要求目標機的部件能夠具備一定的功能,能夠按照設置的時間、設置的運行方式等進行運作。故障注入技術指的是在目標機中,通過對某一部分的測試,能夠更加有效地檢驗目標機中的性能,比如:魯棒性測試、邊界測試等等。使軟件在運行時的狀態(tài)能夠表現的更加明顯。4.3.2內存分析技術嵌入式計算機的系統(tǒng),一般情況下內存都會比較小。使用內存分析技術,能夠有效地保證在分析的過程中,找出計算機內存存在的問題。在問題的分析過程中,能夠防止內存中的某些內存會產生分配錯誤的問題,很多的計算機軟件故障都是因為內存分配的錯誤造成的。這就要求我們要通過內存分析的技術,來對內存進行判定。一般情況下,我們都會選擇硬件的方式進行分析,但是硬件分析的方式需要耗費的資金比較多,而且分析工具具有一定的環(huán)境限制,但是軟件分析會對計算機的代碼產生一定的影響,并且會影響內存的運行。這就要求我們在進行內存分析的過程中,要能夠按照不同的情況對測試的方式進行選擇[11]。4.3.3程序性能分析技術在嵌入式計算機運行的過程中,還有一個十分重要的因素就是程序的性能。一般情況下,嵌入式計算機對程序的性能都有一定的要求,能夠在已經設置的時間內,對某一數據進行中斷處理或者是生成處理,這就要求我們要在測試的過程中,要能夠根據實際情況決定先對那一部分的代碼進行優(yōu)化,因為嵌入式計算機的優(yōu)化程序的時間是很寶貴的,要盡可能地避免對一些沒有必要的程序的優(yōu)化工作。使用程序性能分析技術,能夠將計算機內的數據進行整理,并按照消耗的時間,消耗的類型,消耗的歷時等進行分析。按照這些數據,能夠對計算機中的數據進行判斷,決定先對哪一部分的程序進行優(yōu)化,才能夠保證對數據檢測的工作效率,保證對程序的優(yōu)化是有效的。使用程序性能分析的工具,不僅僅能夠顯示計算機中每一部分的優(yōu)化需要多少時間,還能夠按照需要優(yōu)化的程度進行排序,引導工作人員對系統(tǒng)程序進行優(yōu)化分析[12]。在對程序進行測試的過程中,可以先對計算機軟件中的代碼進行分析,能夠找出已經被使用的代碼,以及計算機接口的工作效率等等。可以在測試的過程中使用插樁的方式進行測試,分析完畢后在可執(zhí)行的代碼當中適當地融入嵌入式軟件,并將二者進行綜合測試,得到的結果就能夠明確地看出,其中的代碼哪些已經執(zhí)行,哪些被遺漏,或者是哪些數據的信息覆蓋還不夠全面。需要注意的是,使用這類分析工具進行分析,很可能會影響到計算機軟件代碼的運行,導致軟件運行出現故障問題。

5結束語

嵌入式計算機與我們的生活之間的關系十分緊密,能夠產生巨大的影響,我們身邊很多部分都使用了嵌入式計算機進行功能的完成和實現,比如:飛機的飛行控制器,或者是我們家中很多的家用電器,冰箱、洗衣機等等,都在一定程度上使用了嵌入式軟件技術。隨著科學技術的進步越來越快,嵌入式技術也越來越繁瑣。這就要求我們要在不斷地使用中對嵌入式技術進行完善,對嵌入式技術進行優(yōu)化升級,能夠從一定程度上保證嵌入式技術的發(fā)展,對軟件進行測試,能夠大大地提升嵌入式計算機軟件的穩(wěn)定性。

作者:王琨 單位:西安外事學院工學院

軟件測試論文:軟件工程中軟件測試的應用

1軟件工程中的軟件測試

1.1軟件測試的含義

軟件測試根據用戶的使用目的,將成功開發(fā)的軟件進行相應的糾錯動作,從而披露該軟件的各種問題及缺失因素,促進研發(fā)人員進行相應的改進,從而達到完善軟件的目的。

1.2軟件測試的關鍵性階段

主要有以下兩個關鍵性的檢測階段。第一階段是軟件開發(fā)過程中各主要單元模塊完成后進行測試。這一階段測試可以將缺陷控制在最小單元模塊內,給研發(fā)人員最快的測試反饋,促使其完善單元模塊的功能,達到用戶的使用要求;第二階段測試是軟件系統(tǒng)全部完成后,進行全方位的綜合測試,查找系統(tǒng)在使用過程中可能存在的問題。此時,需要根據系統(tǒng)要實現的功能進行多種測試工具的應用,以其找到系統(tǒng)不符合要求的功能或性能瑕疵。

1.3軟件工程中軟件測試的方法

對軟件工程進行軟件測試時,不同軟件可以運用不同的測試方法?,F階段,主要以軟件測試在測試過程中是否需要將程序進行完全運行來判斷測試方法,不需要系統(tǒng)程序運行就能完成測試的方法稱為靜態(tài)方法;需要系統(tǒng)時時傳送相應數據,并通過相應程序檢測系統(tǒng)是否達到用戶的期望值,是否存在運行邏輯上的問題和算法上的缺陷等的測試方法稱為動態(tài)方法。目前,靜態(tài)測試方法應用較廣的有靜態(tài)排演法、軟件檢查法和軟件審查法。隨著軟件測試方法的不斷創(chuàng)新和完善,新興的測試方法如靜態(tài)自動分析、分析模型等方法不斷得到應用;動態(tài)測試方法隨著精細化測試進程的深入逐漸細分為單元測試方法、集成測試方法、系統(tǒng)測試方法。這些測試方法相較于靜態(tài)測試方法,具有范圍廣、測試成功率高、內容覆蓋面大、應用程度高等特點。如白盒測試、代碼覆蓋測試等。

2軟件測試在軟件工程中的作用分析

2.1軟件工程項目需要軟件測試進行全方位的輔助管理

所謂軟件工程項目就是將用戶的要求進行立項管理,通過建立項目組、研究用戶的使用目標來確立項目目標,對目標現狀進行系統(tǒng)研究與分析、總體目標細分階段性目標以及規(guī)劃項目總體方案等,將軟件開發(fā)過程建立在項目管理過程中。在這一過程中,各階段性成果都需要軟件測試來校驗其可行性,從而輔助軟件工程項目步入更完善的項目管理中。首先,軟件工程項目需要精細化項目管理和集中項目管理兩者協調統(tǒng)一。因此,需要設立軟件測試機構,能夠對項目細分的各階段、各模塊進行軟件測試。其次,項目組人員組成和責任落實要依照規(guī)章制度實施。要體現軟件測試的重要性和實際意義,測試機構負責人為項目組組長的最佳人選。其組員為各項目負責人和其他測試人員組成。軟件測試結果必須立即反饋到軟件研發(fā)人員、程序員及系統(tǒng)分析人員等相關人員手中,以期促進其團結協作,將軟件各部分呈現出的問題解決。最終滿足用戶的使用要求,實現軟件設計的目標。可見,軟件測試的輔助作用,對于軟件工程項目的精細化管理、軟件相關技術的綜合管理等至關重要。

2.2軟件工程項目實施反促軟件測試發(fā)展

研發(fā)一個新的軟件系統(tǒng)時,其核心內容包括目標確定、框架設計、分支設計和編碼應用等,這些核心內容均需要軟件測試來實現其統(tǒng)一性和兼容性。系統(tǒng)目標是軟件測試的最終目的,軟件測試需要圍繞系統(tǒng)目標進行缺陷的發(fā)現和反饋,從而實現各階段測試的統(tǒng)一性和完整性,從而促進系統(tǒng)的協調和完善。經過軟件測試的系統(tǒng),必須保證達到項目目標,且在長時間運行下無重大bug。從這一過程來看,軟件測試是在軟件工程項目實施中得以發(fā)展的。軟件測試機構并不是真正意義上的獨立,其“獨立”僅是功能上的獨立。實際上,在進行軟件工程項目實施的整個過程中,無論是整體設計還是精細化管理,都需要軟件測試參與其中,以測試角度對軟件工程項目的設計和實施進行指導和輔助,從而糾正一些設計上的錯誤和細節(jié)上的缺陷。這種參與的直接性促進軟件測試必須緊跟項目研發(fā)現狀,才能提出及時有效的參考意見,促進項目順利開發(fā)。軟件編碼規(guī)范是軟件研發(fā)團隊必須規(guī)范執(zhí)行的,而這種規(guī)范的編碼剛是軟件測試機構的首要任務,制定規(guī)范要嚴肅,執(zhí)行規(guī)范要嚴格,才能給用戶呈現出高質量的軟件產品。

2.3軟件測試原則

軟件測試的原則是在其測試的基本目的和要求下產生的,因此,在進行軟件測試時,必須注意其原則性。(1)堅持用戶使用目的,堅持項目總體目標和階段性目標的實現原則;(2)測試“精細化”即細分分支、單元模塊、階段性成果、系統(tǒng)全面測試等隨時進行;(3)測試時間要越早越好,頻率越高越好;(4)測試中邏輯性檢測和算法檢測要注重;(5)測試要結合數據檢測進行;(6)保證測試的嚴肅性;(7)測試堅持第三方進行原則;(8)不合理條件值都要進行測試;(9)測試過程、方法、用便、結果、完善等都要記錄在案,便于故障定位和日常維護。

3自動化軟件測試技術分析

隨著智能化技術和自動化技術的不斷深入應用,在軟件測試中,自動化軟件測試技術得到創(chuàng)新和發(fā)展,并在軟件開發(fā)中應用得越來越廣泛。所以,人們將各種自動測試的效果進行評估,將成功案例進行相似引用,來判斷檢測的可行性。最初的自動化測試具有較嚴格的針對性,運用特定的測試原則和測試方法,將統(tǒng)計指標運用其中,從而得到測試結果,并對其進行全面評估,從而得出自動化測試的嚴密性。隨著自動化測試的不斷深入推進和創(chuàng)新,其測試準則和自動測試技術越來越成熟,逐漸過渡到自動測試模型化階段。逐漸形成自動測試的等級制度,使得自動軟件測試技術成為測試控制能力高低優(yōu)劣的一個重要判斷依據。

4結語

總之,軟件測試已經發(fā)展成為軟件工程中一個必不可少的重要組成部分,軟件測試不僅能夠對軟件的質量進行一個系統(tǒng)的評價,而且是目前確保軟件質量的主要途徑之一。并實現軟件產品整體質量與企業(yè)經濟效益的整體提高,進而提升軟件企業(yè)的核心競爭力。。

作者:欒新亮 單位:鄂爾多斯市特種設備檢驗所

軟件測試論文:嵌入式軟件測試環(huán)境研究

1嵌入式軟件的特點

嵌入式系統(tǒng)的應用軟件是實現嵌入式系統(tǒng)功能的關鍵,其主要特點如下:

1.1軟件開發(fā)環(huán)境和運行環(huán)境不同

嵌入式系統(tǒng)軟件的開發(fā)通常采用交叉編譯方式,即軟件的開發(fā)在通用計算機上進行,而軟件的運行環(huán)境卻是在嵌入式專用設備上。開發(fā)環(huán)境被認為是主機平臺,運行環(huán)境為目標平臺,相應的測試被稱為主機測試和交叉測試。

1.2缺乏可視性

嵌入式軟件缺乏可視性主要表現在兩個方面:(1)數據的可視性方面:嵌入式系統(tǒng)通常沒有顯示設備和存儲設備,只有在線實時觀測或是將數據傳輸到主機上才能進行結果分析;(2)編程的可視性方面:由于嵌入式軟件的開發(fā)環(huán)境和運行環(huán)境不同,在進行開發(fā)時,一方面不能實時觀察程序的運行效果,另一方面程序在仿真環(huán)境和目標設備中的運行效果可能存在差異。

1.3實時性要求較高

多任務嵌入式系統(tǒng)中,對重要性各不相同的任務進行統(tǒng)籌兼顧的合理調度是保證每項任務及時執(zhí)行的關鍵,單純通過提高處理器速度是無法完成和提高效率的,這種任務調度只能由優(yōu)化編寫的系統(tǒng)軟件來完成,因此實時性是系統(tǒng)軟件的基本要求。

1.4軟硬件緊密結合

在嵌入式系統(tǒng)軟硬件體系結構內部,各層次、模塊之間的耦合度比通用計算機更強,這是嵌入式系統(tǒng)要求高效的結果,而通用計算機出于可擴展等要求更強調系統(tǒng)的模塊化、層次化和標準化。

2嵌入式軟件仿真測試環(huán)境

嵌入式軟件測試不同于傳統(tǒng)的通用軟件測試,由于其嵌入性、實時性、反應性、專用性等特點,它比一般的通用軟件測試更加困難。因此,根據不同測試階段的需求,建立恰當的測試環(huán)境是避免嵌入式軟件測試瓶頸、提高測試效率、保證測試質量的唯一出路。由于嵌入式系統(tǒng)通常采用軟硬件并行開發(fā)的方式,在進行軟件設計與測試時,真實目標設備常常不能及時提供,而且對于單片機、DSP這些深嵌入式系統(tǒng)來說,數據的顯示采集、測試用例輸入等都需要專門的軟件來實現,因此在進行嵌入式軟件測試前,必須首先建立嵌入式軟件仿真測試環(huán)境。嵌入式軟件是軟硬件耦合系統(tǒng),把軟硬件分離開來,建立嵌入式軟件獨立的運行環(huán)境是建立嵌入式軟件仿真測試環(huán)境的關鍵。一個完整的嵌入式系統(tǒng)包括處理器、I/O接口以及各種外部設備,在建立嵌入式軟件仿真測試環(huán)境時,需要考慮軟硬件的分離原則,即哪些采用真實硬件設備,哪些需要用軟件仿真實現,哪些需要用硬件仿真實現,不同的嵌入式系統(tǒng)以及軟件測試階段,需要建立的仿真測試環(huán)境也不相同。

3嵌入式軟件仿真測試環(huán)境分類

根據運行環(huán)境和實際環(huán)境的差異,嵌入式軟件仿真測試環(huán)境可分為全數字仿真測試環(huán)境、半物理仿真測試環(huán)境和全物理仿真測試環(huán)境。

3.1全數字仿真測試環(huán)境

全數字仿真測試環(huán)境是指仿真嵌入式系統(tǒng)硬件及外圍環(huán)境的一套軟件系統(tǒng)。全數字仿真環(huán)境是通過CPU、控制芯片、I/O、中斷、時鐘等仿真器的組合在宿主機上構造嵌入式軟件運行所必需的硬件環(huán)境,為嵌入式軟件的運行提供一個精確的數字化硬件環(huán)境模型。

3.2半實物仿真測試環(huán)境

半實物仿真測試環(huán)境是利用仿真模型來仿真被測系統(tǒng)的外圍系統(tǒng),而被測系統(tǒng)采用真實的系統(tǒng)。測試環(huán)境模擬被測軟件運行所需的真實環(huán)境的輸入和輸出,并且能夠組織被測軟件的輸入來驅動被測軟件運行,同時接收被測軟件的輸出結果。外部仿真設備:為目標機提供激勵信號輸入,接收并處理目標機輸出數據,保證軟件的連續(xù)、不間斷運行,實現自動化測試;可以采用軟件仿真或硬件仿真(ADS2等)。并不是所有的外設都采用仿真實現,可以隨著項目的進展以及根據外設的復雜性,有選擇性的加入真實外部設備。

3.3全實物仿真測試環(huán)境

在全實物仿真測試環(huán)境中,被測軟件處在完全真實的運行環(huán)境中,直接將整個系統(tǒng)和其外圍的物理設備建立真實的連接,形成閉環(huán)進行測試。全物理仿真測試環(huán)境是基于真實目標機的系統(tǒng)測試,是對整個嵌入式系統(tǒng)軟硬件的綜合測試,只有在系統(tǒng)研制的后期,所有硬件研制工作都已完成后才能進行。

4嵌入式軟件仿真測試環(huán)境的構建方法

根據嵌入式軟件及測試環(huán)境的特點,不同測試階段的測試環(huán)境搭建方法如下:

4.1單元測試

單元測試是針對軟件設計最小單位模塊而進行的內部測試。由于目標機環(huán)境資源少、實現難度大,因此嵌入式軟件的單元測試主要采用白盒測試的方法,一般在宿主機上,利用集成開發(fā)環(huán)境或測試工具(Clockwork、TestBed、Cantata++等)的全數字仿真模擬器來進行,找出單元編碼時產生的錯誤以及與軟件需求設計的偏差。在極特殊情況下,也可以在目標機上進行,利用單元測試中的驅動模塊和樁模塊進行。

4.2集成測試

集成測試是把經過單元測試的模塊按軟件的結構組合在一起作為一個軟件部件或部件集來進行的綜合測試。嵌入式軟件的集成測試可在宿主機環(huán)境上利用Clockwork、TestBed、Cantata++等測試工具來完成,也可在目標機上搭建仿真測試環(huán)境來完成,具體依賴于軟硬件耦合程度和集成級別。

4.3軟硬件集成測試

軟硬件集成測試主要是在軟件集成測試完成后,形成獨立的配置項,加載到相應的硬件平臺上測試其運行情況,以確定軟硬件能夠正確協調工作,實現軟件需求規(guī)定的功能、性能等要求。軟硬件集成測試必須在目標機環(huán)境下進行,交聯設備可以采用仿真模型替代??梢岳冒雽嵨锓抡鏈y試工具搭建測試環(huán)境來進行確認測試,比如:ADS-2、dSPACE等。

4.4系統(tǒng)測試

系統(tǒng)測試是將被測軟件和硬件資源都綜合起來構成完整的應用系統(tǒng)進行測試,確保整個系統(tǒng)達到研制任務書的要求。嵌入式軟件的系統(tǒng)測試對測試環(huán)境有嚴格的要求,必須在真實目標機環(huán)境下進行,包括運行平臺、交聯設備都要是真實的,目的是要確保嵌入式軟件能夠在最終的真實硬件環(huán)境下正確運行。

5結束語

嵌入式系統(tǒng)在人類生活中發(fā)揮著重要的作用,軟件所占的比重越來越大,也越來越復雜,保證嵌入式軟件的可靠性正面臨嚴峻的挑戰(zhàn)。由于嵌入式系統(tǒng)的實時性和嵌入式特性,使得嵌入式軟件的測試也面臨一些特殊的問題。根據嵌入式軟件設計過程中不同階段的測試需求,建立合適的測試環(huán)境,才能提高嵌入式軟件的測試效率,保證軟件設計工作的順利進行。另外,雖然日前已經有一些針對嵌入式軟件的測試和調試工具,但是在有些方面仍存在不足,需要進一步對嵌入式軟件的測試環(huán)境和測試技術進行研究,完善和研制更先進的測試工具。

作者:于慧媛 單位:中國人民解放軍91413部隊

軟件測試論文:軟件測試在軟件開發(fā)過程中的應用研究

1軟件測試對于軟件開發(fā)工作的重要意義

軟件測試是軟件開發(fā)中不可缺失的工作內容,通過有效的軟件測試步驟,能夠幫助軟件開發(fā)工程人員減輕工作負擔,在很大程度上提升了軟件的實用性能。因為電子軟件的生產過程極為復雜,在開發(fā)的過程中需要經歷許多環(huán)節(jié),每個環(huán)節(jié)的數據要求都極為嚴格,很有可能因為極小的差異造成軟件應用的失誤。軟件測試就是為了實現對于軟件開發(fā)后的使用作出初步的評估,保證下一個生產環(huán)節(jié)能夠正常執(zhí)行,也為了確認軟件的使用具有質量保證。軟件的測試能夠涉及整個軟件設計、開發(fā),以及未來升級的過程。首先,能夠幫助軟件開發(fā)商確認軟件的使用質量。其次,還能夠為工程師提供有效的信息反饋,幫助工程師進行軟件系統(tǒng)操作的風險預警評估。還有,就是實現為未來軟件系統(tǒng)升級奠定基礎,能夠保證軟件在未來的開發(fā)計劃中添加有效的性能價值[1]。軟件測試的工作具有相當高的行業(yè)地位,能夠幫助工程師和開發(fā)商盡早發(fā)現問題,并且給予充足的時間去解決問題,進而提升了大眾對軟件的使用效果,滿足了推動科學技術進步的時代要求。

2軟件測試的具體步驟和方法

2.1軟件測試的對象

軟件測試的對象主要是針對于軟件使用過程中出現的邏輯操作,其中包含軟件的使用規(guī)則,還有在軟件應用中的程序設定是否滿足人們的應用習慣,還要考慮到軟件開發(fā)的初期設計是否能夠滿足社會大眾的需求,能夠實現廣泛的普及,并且獲得大眾的喜愛。因為軟件測試與其他方式的應用測試不同,軟件的測試需要遍布整個軟件的設計完成過程,要求軟件能夠實現具體使用的功能性。

2.2軟件測試的種類

軟件的測試工作也分成兩種形式,一種是靜態(tài)的檢測試驗,另外一種是動態(tài)的檢測試驗[2]。首先進行靜態(tài)種類的具體劃分解釋,其中的工作內容具體實施不必要展開軟件的運行功能,只要進行人力的代碼查詢工作審核就可以了。這期間可以對整個軟件的設計腳本進行分析,得到房中數據的編碼,保證在網絡中展開的數據時正確有效的。與此同時能夠展開對軟件編程的評估,其中的數據值都在控制范圍內,不能超過最低的數值要求。編寫數據程序的人員在結束初始工作后還要展開對程序的審查,其中的大部分工作內容需要依靠合作完成。專業(yè)的人員通過技術手段結束數據的參考值評估,要求在人工審查的途徑中實現數據的核對工作??偨Y的角度來評定靜態(tài)測試的作用,就是通過人工和數據參考工具實現對編程的審核。另外一種就是動態(tài)的測試種類,這種方式需要進行軟件的啟動,在運行的過程中通過既定的數據進行測試評估。按照專業(yè)的白盒與黑盒方式進行測試實驗,達到動態(tài)測評的目的。白盒的功能就是測試軟件的邏輯性,能夠滿足人們使用的正常運作,黑盒則更傾向與想軟件的使用功能,以及軟件的數據管理進行測試。白盒與黑盒的測試功能滿足了對于軟件測試的基本要求,實現了為軟件后續(xù)開發(fā)提供數據的重要任務。

2.3軟件測試的方法步驟

將軟件的測試方法進行歸納和綜合,發(fā)現主要的測試方法來源于對于測試種類的需求。將白盒和黑盒的測試程序運用到軟件的測試中去,實現人工和技術的雙層數據收集,實現對于軟件的數據編程、應用操作,以及未來升級的發(fā)展需求都進行監(jiān)管。由白盒協助人工進行數據的整理,達成數據外接的基礎使用。再由黑盒的運行操作達成對于內置程序、數據的檢測和觀察,保證軟件進入正式使用中的功能性。軟件測試的整體步驟,都由數據的支持進行操作,具體的步驟首先是進行功能性檢驗,然后將外因排除后執(zhí)行內因運行,之后找尋可能導致程序出現問題的原因,最后結合參數的運算和總結,達成軟件測試的目的[3]。

3軟件測試在軟件開發(fā)過程中的應用實施

軟件的開發(fā)是一個十分復雜的過程,為了成功的實現軟件的應用和升級,就需要工程師進行嚴密的設計、開發(fā),以及研制,最后成就的科學技術產品。因為人們日益增長的科學需求,完美的軟件必須還要經過不斷的推敲和升級。

(1)軟件測試的應用主要考察軟件的實用性和需求。軟件的創(chuàng)作和制造都是為了滿足人們生活的需求,在開發(fā)的過程中要考慮產品的功能性,還要考慮開發(fā)商的開發(fā)成本是否能夠支持整個軟件的制作完成。

(2)軟件的整體設計是否合理,需要通過軟件測試得到論證。工程師進行軟件的數據編寫,是為了滿足人們的生活需要,各項開發(fā)和功能的深入研究都是為了實現軟件的實用性。軟件的測試能夠檢測出軟件開發(fā)中的問題,進行及時的補救工作實施,盡量做到不浪費開發(fā)成本的目的。

(3)要求在軟件測試應用實際作用于軟件的后期拓展。無論是學習軟件還是工作軟件,甚至于游戲軟件,都必須要滿足未來的發(fā)展和升級要求,實現能夠無限開發(fā)和研制的目的,保證軟件具有創(chuàng)新性。軟件測試很大程度上也是為了找尋軟件的功能延續(xù)性,促進軟件的再開發(fā)和再創(chuàng)造。

(4)軟件的測試需要應用到軟件的最終檢測和維護環(huán)節(jié)中去。每款軟件開發(fā)后都應該得到檢測,只有質量能夠達到標準才能保證軟件的出售。再者就是應用到軟件出售后的軟件維護,保證軟件高質量運行[4]。

4結語

在信息技術不斷摸索前進的過程中,軟件的應用托陳出新不斷進步,實現了人們生活、工作,以及學習的全面提速。為了保證軟件在人們生活中的使用質量,以及適用程度,進行軟件開發(fā)前期的軟件測試是必須嚴格執(zhí)行的工作步驟。

作者:丁旻昊 單位:中國特種飛行器研究所

軟件測試論文:軟件測試實驗教學設計論文

軟件測試是保證軟件質量的重要手段之一。目前社會上對軟件測試人才需求非常旺盛,據報道其人才缺口高達30萬人[1],高校學生畢業(yè)后直接從事軟件測試工作的占據了軟件測試行業(yè)從業(yè)人員的48%[2],許多高校都開設了軟件測試課程,如蘇州大學[3],北京工業(yè)大學[4]等,以培養(yǎng)相應的軟件測試人才。我校計算機科學與技術專業(yè)2008版教學設計中新增了軟件測評課程,含理論課28學時及實驗課8學時,于2011年首次在大四上學期開設。軟件測試主要是一門技能型課程[5],其理論性相對較弱,且和軟件工程概論課存在較多內容的重復。吸取了首次授課時重理論輕實踐的教訓,我們將軟件測試課程的目標定位為在一定理論基礎的指導下使學生熟練掌握軟件測試的技能,因此2012年第二次授課時將理論課減少為24學時,實驗課增加到12學時。借鑒同濟大學朱少民教授[6-7]的經驗,實驗課著重講述一些常用開源軟件測試工具的使用,包括功能測試工具Selenium和AutoIT,單元測試工具Junit,代碼覆蓋工具Emma以及性能測試工具Jmeter等。Jmeter是Apache組織開發(fā)的一個用于壓力測試和性能測試的純Java桌面工具,可用于對服務器、網絡或對象等模擬繁重的負載來測試它們的強度或分析不同壓力類型下的整體性能[8]。性能測試是保證應用程序后能夠穩(wěn)定可靠運行的必要手段之一。以我們?yōu)槟硻C場開發(fā)的戰(zhàn)略規(guī)劃管理系統(tǒng)為例,由于前未進行全面的性能測試,客戶使用一段時間后經常反映系統(tǒng)響應速度慢。利用Jmeter對主要模塊進行了性能測試,結合測試結果對數據庫進行了優(yōu)化,此后客戶再也沒有反映過響應速度慢的問題。本著科研服務于教學的宗旨,以該系統(tǒng)為原型,完善了基于Jmeter的性能測試及數據庫優(yōu)化實驗教學設計。

1Web應用程序性能測試實驗

這部分實驗目的是使學生熟練掌握使用Jmeter測試Web應用程序的一般流程和方法。實驗任務測試績效考核子系統(tǒng)中的評分模塊。評分人登錄系統(tǒng)后進入評分環(huán)節(jié),選擇其未完成的評分項目(若有多個未評分項,則需要全部對其評分)。每個評分項中包含對多個部門的評分,部門數大于等于3個時需符合正態(tài)分布,如可評出優(yōu)秀3個、良好6個、合格4個、基本合格2個,否則可任意評分。按照循序漸進的原則,設計了3個步驟:一是Jmeter的基本應用,包括腳本錄制、添加http請求、添加斷言以及查看測試結果等;二是Jmeter的邏輯控制結構,如分支和循環(huán)等;三是Jmeter的高級應用,如參數值可變以及參數個數可變等。

1.1Jmeter的基本應用

Jmeter可以手工添加腳本,但更方便的是使用腳本錄制軟件Badboy[9]。Badboy錄制的腳本可以保存為Jmeter格式,然后在Jmeter中直接打開和修改。腳本主要是一系列的http請求,其中可以設置請求的URL,請求方法(get/post)及請求參數等,如圖1所示。通過添加斷言(如是否含有特定字符串)檢查請求是否返回正確結果。添加查看結果樹并運行測試腳本查看程序的測試結果。

1.2Jmeter的控制結構

Jmeter具有豐富的邏輯控制結構,包括控制器,switch控制器,while控制器以及forEach控制器等。實驗重點練習控制器和forEach控制器。控制器判斷Jmeter變量是否滿足給定條件,若滿足則執(zhí)行其包含的測試元素,否則不執(zhí)行。ForEach控制器對Jmeter變量的每一個取值都執(zhí)行一遍其包含的測試元素。圖2是一個控制器,其條件為變量COUNT小于10且變量VAR等于字符串“abcd”。圖2Jmeter的控制器圖Jmeter的變量引用使用${變量名}的方式,變量一般提取自返回頁面中的某些信息,如滿足特定條件記錄的行數或某個特定位置的字符串取值等。變量提取可采用正則表達式或Xpath進行匹配,講解其匹配原則并現場演示。圖3利用正則表達式提取需評選優(yōu)秀的單位個數,其中引用名稱youxiu就是變量名。匹配失敗則取設置的缺省值0。如對于頁面中返回的html代碼“…您當前可以評出優(yōu)秀<spanid="ltYSMsg">3</span>個…”可提取出優(yōu)秀個數為3。

1.3Jmeter的高級應用

本部分著重解決實際測試過程中的一些常見問題,如參數內容可變及參數個數可變等。測試登錄環(huán)節(jié)時需模擬不同的用戶登錄行為,即圖1的http請求中txtUserName一項的值應是變化的。Jmeter提供的CSVDataSetConfig可解決這一問題,如圖4所示。將所有評分人的信息存儲在一個CSV文件中,把其中的列名填入VariableNames項,之后將圖1中的txtUserName值改為userAccount(即CSV文件的第1列)實現參數值的動態(tài)變化。進入評分項后需根據情況選擇優(yōu)秀和良好等的個數,且要反映在http請求的參數中。由于參評單位的個數因評分人和評分項各異,因此無法在GUI界面中一一添加。需動態(tài)添加的參數包括評分列表中的name及其value,value的取值從優(yōu)秀到基本合格依次為1234。為簡單起見,我們按順序對單位進行評分。如系統(tǒng)要求評出3個優(yōu)秀,則測試中前3個部門打優(yōu)秀,其余依次類推。由于同一部門的優(yōu)秀良好等單選按鈕的name值相同(如圖5所示),我們選擇提取該組唯一的ID號,然后將其轉換為name,其對應關系是用$代替下劃線(如ID號為gbBSCExamList_ctl02_rbExamerLevel,name為gbBSCExamList$ctl02$rbExamerLevel)。Jmeter的Beanshellpreprocessor可在提交http請求前動態(tài)調整參數個數及參數值。下面給出了Beanshellpreprocessor的代碼。其中ExamerLevel_matchNr為Jmeter的系統(tǒng)變量,提供了正則表達式匹配項ExamerLevel匹配成功的個數(即參評單位的個數)。如前所述匹配數量小于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.addArgument(item,"1");}else(i<=LH){sampler.addArgument(item,"2");}else(i<=HG){sampler.addArgument(item,"3");}else(i<=BHG){sampler.addArgument(item,"4");}}}else{for(i=1;i<=N;i++){item=vars.get("ExamerLevel_"+i);item=item.replace("_","$");sampler.addArgument(item,"1");}}設計了含35個并發(fā)線程的線程組,模擬實際35個評分人的評分過程。全部線程在1秒鐘之內啟動,比實際情況更嚴格。得到聚合報告如圖6所示,其中點擊考核評分頁面響應時間最長,為335毫秒。且測試過程中無錯誤發(fā)生,說明系統(tǒng)評分模塊可靠。

2數據庫性能優(yōu)化實驗

除應用程序外,數據庫設計的優(yōu)劣亦影響系統(tǒng)性能。這部分實驗目的是使學生熟練掌握使用SQLServer測試數據庫性能的一般流程和方法,并進行簡單的數據庫調優(yōu)。為減少復雜性,設計一個簡單的由三張表組成的人員組織結構數據庫:user、or-gan及userorgan表。其中user表含4586條記錄,or-gan表含1722條記錄,userorgan表含6804條記錄(一人可在多部門任職)。實驗任務根據賬號查詢其姓名及所在單位信息。

2.1SQL語句執(zhí)行計劃對應用程序中頻繁執(zhí)行的SQL語句檢查執(zhí)行計劃非常重要。初始時,三張表均未建立任何索引,下面SQL語句的執(zhí)行計劃如圖7所示。由圖7知,三張表均采用全表掃描的方式。對大表全表掃描可能涉及多次磁盤I/O,非常費時,應盡力避免此種情況。SQLServer報告由于缺少索引影響了查詢性能,并給出了相關建議。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)再次運行后顯示執(zhí)行計劃如圖8所示??梢娝斜頀呙杈烟鎿Q為相應的索引查找,且SQLServ-er未報告缺少索引影響查詢性能。兩次執(zhí)行查詢的磁盤I/O和CPU時間見表1,可見為表添加正確的索引可提高查詢性能。

2.2索引建立原則總結

建立索引的一般滿足原則如下[10](篇幅所限,未給出實例):(1)為主鍵所在的列創(chuàng)建索引。為經常進行連接但未指定為外鍵的字段建立索引。(2)在頻繁進行排序或分組的字段上建立索引。(3)在條件表達式中經常用到的不同值較多的字段上建立索引,在不同值較少的字段上不建立索引,如性別字段。不在查詢很少引用的列上創(chuàng)建索引。(4)若經常同時使用多個字段排序,可在這些字段上建立復合索引。要盡量使關鍵查詢形成索引覆蓋,其前導字段一定是使用最頻繁的字段。(5)查看索引并刪除不使用的索引。需頻繁進行數據查入操作的數據庫應有較少的索引,需頻繁進行讀取操作的數據庫應有更多的索引。(6)在聚集索引中,避免包括不必要的列,盡可能使用較小的數據類型。(7)在支持排序和范圍查詢的字段上考慮使用聚集索引。(8)具有高選擇性的列是索引的好候選列,具有高密度的列是索引最糟糕的候選列。

3結語

軟件測試是保證軟件質量的關鍵步驟。在軟件正式前一般都需要經過性能測試,以保證軟件在一定負荷下的平穩(wěn)可靠運行。Jmeter是一款優(yōu)秀的開源性能測試工具,可測試繁重負載下的系統(tǒng)表現。軟件性能表現還取決于數據庫設計的優(yōu)劣,建立適當的索引可減輕數據庫查詢和處理負擔,進而提高系統(tǒng)處理能力。通過本教學設計實驗學生普遍反映認識到了性能測試的重要性,了解了執(zhí)行計劃在數據庫性能優(yōu)化中的作用。

作者:張志遠馮興杰單位:中國民航大學

軟件測試論文:軟件測試與軟件開發(fā)探究

摘要:

在IT行業(yè),人們對于軟件開發(fā)與測試關系的研究熱度不減;同時軟件的開發(fā)與測試,也一直是軟件項目團隊的中堅力量,要想保證軟件開發(fā)產品的質量,就要有測試人員對于質量進行驗證,所以測試人員也相當于質檢人員,但是兩者之間的關系還有更加深入的關系,對此本文就軟件測試與軟件開發(fā)關系展開分析,希望對于軟件設計水平的提升,起到積極促進的作用。

關鍵詞:

軟件測試;軟件開發(fā);關系

0前言

軟件開發(fā)是一個系統(tǒng)性的過程,包括概念階段、計劃階段、開發(fā)階段等,而軟件開發(fā)工程與軟件測試工程師分別對應著軟件產品生命周期的開發(fā)與驗證階段。表面看似兩者是一個上下游的關系,但是不同工程師所占的立場不同們對于軟件的認識也呈現差異化,對此需要工程師共同討論等,繼而確定最佳的產品方案。

1概念分析

軟件開發(fā)與軟件測試是軟件工程的重要階段,前者是在客戶需求的基礎上進行軟件系統(tǒng)制造的過程,也包括系統(tǒng)設計、編碼程序等內容。而后者主要是將前者各個階段,存在的漏洞等利用測試用例找出,是對于軟件需求等的最終審核,也是對于產品的質檢。

2工作內容

2.1開發(fā)人員

其工作內容主要體現在以下幾點;第一、加強軟件需求分析,明確軟件開發(fā)方向。第二、編寫軟件詳細設計文檔,包括程序流程、函數等內容;還包括單元、集成測試等文檔的編寫。另外只有審核完寫好的文檔后,才能進行代碼的編寫。第三、代碼編寫是非常重要的,直接關系著軟件程序的功能發(fā)揮;而軟件開發(fā)不僅僅就是寫代碼,還包括很多其他的內容。第四、程序編碼結束后,需要由開發(fā)工程師,對其進行系統(tǒng)自測,保證程序正確編寫;自測合格后,以及文檔編寫好后,一并交給軟件測試人員進行檢測。

2.2測試人員

第一、通過對于軟件需求說明書的審核,明確軟件功能開發(fā)方向。第二、積極建立測試環(huán)境,也就是指軟件運行的條件,包括軟硬件設施的設置等。對于軟件實際工作環(huán)境的模擬,也是測試環(huán)境構建的主要內容,繼而保證軟件的實際應用不會出現問題,對此可見測試環(huán)節(jié)還原現場環(huán)境的重要性。第三、將配套軟件進行運行,檢查其是否存在缺陷、功能是否充分的發(fā)揮,對于檢查出來的問題,組織相關的工程師進行軟件問題的修正工作。第四、協助并指導工作人員安裝軟件程序。

3關系

軟件開發(fā)和軟件測試主要的工作目標在于用戶需求的實現,保證交付軟件的質量,開發(fā)與測試并存,首先由開發(fā)人員進行軟件實現,然后由測試人員找出軟件中存在的程序問題,最后提交開發(fā)修復,兩者之間是相互合作、相互影響的關系,繼而除去軟件開發(fā)中的的程序問題,保證軟件的高品質。兩者的工作交集,在于軟件缺陷,但是軟件開發(fā)工程師、軟件測試工程師,工作崗位不同、對于軟件的看法不同,對此難免會存在意見分歧,所以測試工程師加強與軟件開發(fā)師之間的關系處理尤為重要,繼而更好的形成向心力,保證軟件開發(fā)的高效性和該品質性。好的軟件開發(fā),不僅僅要狠抓軟件開發(fā)與軟件測試兩個環(huán)節(jié),更要注重產品開發(fā)的全過程;另外更不能傾向于某個環(huán)節(jié),而要讓軟件開發(fā)和測試都要硬,從而更好的保證后續(xù)工作的順利進行。

4關系處理辦法

4.1尊重開發(fā)成果

測試人員的綜合素養(yǎng)、綜合技能等,直接影響著軟件開發(fā)的進度與質量等,為了更好地處理測試與開發(fā)之間的關系,測試人員要抱有一定崗位職責、職業(yè)素質,本著公平、公正的心理尊重軟件開發(fā)環(huán)節(jié)的工作成果;軟件開發(fā)會可能會存在一系列的隱藏程序漏洞等,這都是非常正常的,而測試工程師的主要職責就是找出這些漏洞,提高開發(fā)進行修正,從而另一個角度來說也是在幫助開發(fā)工程師成長;但是實際上,部分的測試人員在檢查開發(fā)提交的測試軟件時,會因為發(fā)現問題而出現一系列消極的情緒,對于軟件開發(fā)工程師進行謾罵侮辱等,不僅降低了軟件開發(fā)工程師的工作積極性,也影響了兩個工作層面的關系,最終延長了軟件交付的日期,以及軟件的質量。開發(fā)工程工作內容繁瑣且任務重,不可能全面顧及,導致程序開發(fā)存在一定的問題,而測試人員作為軟件品質完善的關鍵,要在尊重軟件開發(fā)作品的同時,積極的進行漏洞檢查,實現良好的團隊協作氛圍。

4.2缺陷技巧的提交

由于軟件開發(fā)與軟件測試工作埃的交集就是程序缺陷,對此測試人員就要做到以下幾點,繼而保證缺陷技巧的有效提交,保證軟件開發(fā)人員的更好接受。

4.2.1換位思考測試

人員在接受軟件開發(fā)提交的作品時,首要的就是了解軟件開發(fā)工程師對于測試結果的關注內容、范圍以及關鍵點等;一般軟件開發(fā)人員對于測試結果最注重的就是軟件邏輯、數據流轉等方面的內容,對此測試人員就要合理的采用測試技巧,有效的調整程序漏洞的提交方案。軟件測試也是一個復雜且繁瑣的過程,首先測試工程師要按照指定的測試流程,對軟件作品進行系統(tǒng)邏輯的測試,找出影響系統(tǒng)正常運轉的錯誤邏輯問題,將其第一時間反饋給開發(fā)工程師;測試環(huán)節(jié)接觸到的其他問題,但并不是影響系統(tǒng)邏輯的漏洞點,按照漏洞提交順序進行依次提交更容易被開發(fā)工程師所接受。

4.2.2漏洞描述要精準

測試人員的測試結果,是開發(fā)人員漏洞改進的關鍵,一個精準的的Bug描述,對于開發(fā)人員來說幫助性是非常大的,能夠幫助開發(fā)人員更加精準的進行漏洞定位。這就要求測試人員在進行Bug描述時,要注重語言的干練簡明,語氣要肯定,避免使用好像、不確定等詞匯,繼而模糊開發(fā)人員的工作思路。其次描述的內容要突出重點,忌諱全面開花。最后根據以往的經驗,給軟件開發(fā)人員提出一系列的建議,像可能會出現漏洞的部位等,繼而實現軟件的高品質。

4.2.3注重普遍問題的提交

軟件開發(fā)人員一般工作都非常的忙碌,而重復漏洞或是無效漏洞的提交,會大大的影響其工作的心情、工作量與工作進度等,對此測試人員在測試系統(tǒng)漏洞時,要養(yǎng)成Bug分析的好習慣,分清其問題的獨立性還是普遍性,若是普遍問題可以提交一個。這就要求測試時人員要加強對于軟件系統(tǒng)的熟練度,包括業(yè)務要求、操作以及使用等,當測試人員也不確定漏洞是否存在時,可以與其他測試人員進行溝通,或是與開發(fā)工程師進行溝通,繼而精準定位程序漏洞。

4.2.4加強有效溝通

考慮到測試人員與開發(fā)人員之間的矛盾問題,主要的原因在于缺乏溝通或是交流無效,對此首先測試熱源就要占到用戶的角度上,正確的表達出自己的想法,讓開發(fā)人員也占到用戶的角度進行討論。其次由于兩者工作理念不同,對此難免會存在爭議,對此測試人員保持自己觀點,可在下個版本中完善。最后加強兩者之間的溝通,明確對方的工作想法,保證系統(tǒng)認知的更加深入、全面,并靈活的運用測試手段,從而更好的保證軟件高品質。

5總結

綜上所述,通過對于軟件測試與軟件開發(fā)關系的分析,發(fā)現作為軟件產品全生命周期的關鍵環(huán)節(jié),更要加強溝通合作,提升企業(yè)研發(fā)的凝聚力,做到就事論事奔著相同目標共同努力,從而更好的保證軟件產品的進度和質量。

作者:侯中原 單位:商丘醫(yī)學高等??茖W校

軟件測試論文:計算機軟件測試技術及開發(fā)應用

[摘要]

隨著我國計算機網絡的不斷普及和發(fā)展,無論是人們的日常生活還是工作,甚至是休閑娛樂,都離不開互聯網的支持,可以說,計算機軟件已經受到越來越多人的應用,并且逐步成為了影響人們生活的重要技術。隨著人們對計算機應用軟件需求量的不斷增加,計算機應用軟件的開發(fā)也越來越頻繁,因此,要對其開發(fā)流程以及開發(fā)需求進行深入的分析。文章將對計算機軟件測試技術與開發(fā)應用進行了研究。

[關鍵詞]

計算機軟件;測試技術;開發(fā)應用;相關研究

計算機軟件測試技術對于軟件開發(fā)而言具有重要的作用,能充分保障軟件的精確性,為軟件開發(fā)工作帶來安全保證。筆者將從計算機軟件開發(fā)的重要性、計算機軟件開發(fā)流程、計算機軟件測試技術在軟件開發(fā)中的有效應用,三個部分進行闡述。

1分析計算機軟件開發(fā)的重要性

相對于應用軟件而言,計算機僅僅只是作為一種輔助工具,計算機之所以能夠幫助人們有效地解決這類問題,促進社會迅猛發(fā)展,最重要的就是計算機內的軟件應用,可見,軟件的開發(fā)極為重要。隨著國家經濟體系的不斷改革,各行各業(yè)已經逐步面向現代化發(fā)展,互聯網的普及無疑為人們的發(fā)展奠定了結實的基礎,也給應用軟件的進一步研究開發(fā)提供強有力的保障,計算機軟件的應用已經在人們的生活中得以普及,而人們的日常生活也已經離不開網絡的支持。計算機軟件的應用不斷豐富了人們的日常生活,使人們更加重視精神的自我培養(yǎng),此外,計算機網絡也在不斷推動著人們前進。

2計算機軟件開發(fā)流程

2.1分析開發(fā)需求和設計概要

在開發(fā)計算機軟件之前,對其進行需求分析是開發(fā)應用軟件的首要環(huán)節(jié),亦是最重要的環(huán)節(jié)之一。軟件開發(fā)需求分析質量,會直接對應用軟件開發(fā)造成影響,一般情況下研究人員要根據軟件需求內容,對軟件的概要進行設計,并且結合軟件的功能需求情況設計出軟件程序流程圖,若是利用類似于C語言等的高級語言實施程序編寫,還應當根據軟件模塊設計各模塊的應用功能。概要設計為軟件的開發(fā)提供了程序框架,后續(xù)的開發(fā)工作都是在這個框架基礎上進行操作,可見這個框架不但能夠決定計算機軟件程序功能,而且還能對軟件運行的效率產生一定的影響。在基于軟件程序具體的開發(fā)過程中,想要實現其特定功能,可選擇多個語句或者邏輯關系等來實現,但不同的邏輯關系與語句也會從一定程度上影響軟件。軟件開發(fā)及其需求越來越復雜,如何編寫簡潔而又不會存在漏洞的應用程序,已經成為了各軟件開發(fā)人員最終的目標,因此,在實際研究過程當中,研究人員要十分重視概要設計環(huán)節(jié)的工作,并且保持思路清晰,設計完程序流程圖之后要進行全方位的審核,不斷簡化軟件的邏輯關系,最終實現科學合理的軟件邏輯關系。

2.2詳細的編碼與設計

緊跟需求分析和概要設計后的一個環(huán)節(jié)就是進行程序的具體編寫工作。在編寫程序的過程當中,首先應當選擇計算機語言,經過長時間的發(fā)展,高級計算機語言出現提高了軟件的開發(fā)效率。人們按照開發(fā)軟件的實際需求,有針對性地研究了很多種類的計算機語言,例如:如常見有JAVA、C語言等,到了現在出現了VF與VB等可視化的編程軟件,這類軟件的研發(fā)使研究人員即便沒有專業(yè)知識也可完成簡單的軟件開發(fā)。此外,在實際編碼前,研究人員應進行詳細設計,在已設計的框架上,按特定的邏輯關系將軟件所需實現的一些功能進行設計,根據詳細設計流程進行編碼。目前,計算機軟件設計使用最多的是C語言,這種語言的模塊形式較為簡單、語句便于理解,所以非常適合在開發(fā)、維護軟件過程中運用,受到研發(fā)人員的青睞。

3計算機軟件測試技術在軟件開發(fā)中的有效應用

軟件程序的編寫完成之后,研發(fā)人員還要對其實施相應測試,監(jiān)測這款軟件的應用效果以及功能等是否能夠達到預期效果,一般情況下,測試軟件的方法就是隨機輸入一些數據到計算機中,然后再看結果是否達到要求,為了能夠確保軟件功能的精準性,常常會選擇幾組隨機數據配合一些特殊參數進行檢測。如果檢測出來的結果和軟件功能相符合,那么則說明通過測試,反之,則不符合。近幾年以來,計算機的軟件開發(fā)技術得到迅猛發(fā)展,研究人員也開發(fā)了一些專門針對軟件測試的程序,但是由于受到技術水平因素的影響,使用測試軟件受到一定的局限,比如:一個測試軟件只能對一種軟件實施檢測,并且測試結果只能當作參考,測試結果的準確率還需要提升,但是不管怎樣,測試軟件的研發(fā)就足以標志著計算機軟件程序的未來發(fā)展方向。新開發(fā)軟件通過檢測以后,需要交予需求方進行使用,為了保證軟件能滿足人們的實際使用需求,使用方也會進行驗收,軟件驗收方要求極為嚴格,但是驗收方式基本和測試方法相似,同樣采取輸入參數來進行驗收,因此,就增加了不必要的驗收程序。研發(fā)人員還應當繼續(xù)研究,爭取研發(fā)出更多的測試軟件,使軟件的測試結果更加精確。軟件測試技術作為軟件開發(fā)過程中最為重要的組成部分,該技術主要目的是為了將軟件產品中存在的問題及時找出,并將測試報告交給軟件開發(fā)人員予以修改??梢?,在軟件開發(fā)工作中,軟件檢測技術的應用是不可缺少的環(huán)節(jié)。

4結語

總而言之,計算機網絡技術已經在人們的生活中得以廣泛應用,而軟件就是應用計算機的關鍵,隨著人們各類需求不斷增加,開發(fā)計算機軟件已經成為了研究人員的日常工作,在具體的軟件研究過程中,軟件測試技術的使用是必不可少的,因此軟件開發(fā)人員還應切實做好相關工作,解決軟件開發(fā)所面臨的困境,不斷提升自己的開發(fā)水平,對軟件開發(fā)工作進行深入研究,促進軟件事業(yè)的持續(xù)發(fā)展。

作者:高俊 鄒金萍 單位:江西生物科技職業(yè)學院

軟件測試論文:人才培養(yǎng)的軟件測試課程改革

摘要:

本文針對軟件測試課程的教育現狀,結合軟件測試的課程特點和培養(yǎng)目標,從面向應用型人才的培養(yǎng)方式出發(fā),提出了以案例式教學為主導,走教學產業(yè)化發(fā)展的軟件測試改革方案。

關鍵詞:

軟件測試;應用型人才;案例式教學;教學產業(yè)化

隨著我國IT行業(yè)的發(fā)展,越來越多的企業(yè)意識到軟件測試的重要性,因此軟件測試人員成為當前IT業(yè)界亟需的熱門人才。面對軟件測試人員緊迫的需求形勢,應用型人才培養(yǎng)單位應該擴大軟件測試人員的人才培養(yǎng)規(guī)模,提高培養(yǎng)質量。

一、《軟件測試》課程教育現狀

我國軟件測試技術發(fā)展已有十余年,但IT市場對于測試人員仍然呈現出供不應求的勢態(tài)。目前國內高校對軟件工程專業(yè)幾乎都會開設軟件測試課程,甚至有些高校已經設置有軟件測試專業(yè)。2011年11月,教育部主辦了“2011年高等學校軟件測試課程教學論壇”,對測試人才的培養(yǎng)及測試領域的全面發(fā)展起到了積極地推動作用[1]。高校系統(tǒng)化的專業(yè)教育體系為學生奠定了扎實而科學的學科基礎,并對軟件測試技術的理論化和系統(tǒng)化發(fā)展起到了不可替代的作用。利弊相依,傳統(tǒng)的人才培養(yǎng)模式對軟件測試課程設置和培養(yǎng)方案上還是會存在以下不足。

1.重理論輕實踐在傳統(tǒng)的軟件測試課程設置中,大多采用教師在課堂上講授理論知識,學生上機時完成實驗操作的教學方式。實驗的目的只是為了檢查學生知識點的理解和掌握,實驗題目大多比較陳舊,不能與時俱進地與當前的最新技術或最熱門的應用相結合,使得學生的測試知識體系過于單薄。

2.重學生個體知識積累,輕團隊協作能力培養(yǎng)團隊協作在軟件工程中的重要性無須多述。軟件測試作為軟件工程中重要一個環(huán)節(jié),貫穿于整個軟件生命周期,測試人員與系統(tǒng)分析員、軟件設計師、程序員、維護人員之間的溝通必不可少,良好的團隊協作才能有助于項目的進行,有助于高效、正確地開發(fā)出高質量的軟件產品。傳統(tǒng)的教學模式中,很少引入分組協作的環(huán)節(jié)去鍛煉學生的溝通和交流能力,更不能設計出測試人員和開發(fā)人員的溝通場景,不能滿足學生在項目中去加深理解、鞏固提高的需求。

3.重即有知識,輕科學創(chuàng)新一直以來,軟件測試課程在高校的課程體系中受到重視并不多,課程結束后并沒有延續(xù)測試知識的后續(xù)課程。因此,學生不能在后面的學習和實踐中進行總結提升。知識在母體中是要經過消化、適應、轉化、演進、創(chuàng)新、融合、活化,而后才稱為組織的“行動知識”,現有的教學模式不能很好的產生知識發(fā)酵效果。

二、《軟件測試》課程特點和培養(yǎng)目標

軟件測試是一門應用型較強的學科,應注重理論聯系實踐。一個合格的軟件評測師除了要掌握即有的測試理論和軟件知識外,還必須具備對軟件測試行業(yè)的深刻理解,必須具備對計算機專業(yè)知識,包括編程技能、數據庫、網絡、中間件等知識的系統(tǒng)掌握,必須具備溝通能力、團隊協作精神。軟件測試是為了盡可能多地發(fā)現并排除軟件中潛藏的錯誤,最終把一個高質量的軟件交給用戶,這并不是一項簡單的工作。要做好軟件測試,測試人員不僅需要站在客戶的角度思考問題,真正理解客戶的需求,具備良好的分析能力和創(chuàng)造性思維能力,完成功能測試和界面測試,而且要能理解軟件系統(tǒng)的實現原理和各種使用場景,具備扎實的技術功底,能使用測試工具完成相應的性能測試、安全性測試、兼容性測試和可靠性測試等更具挑戰(zhàn)性的任務[2]。從這個角度看,一個優(yōu)秀的測試工程師需要掌握更多的知識和技能。

三、《軟件測試》課程教學改革方案

以上可以看出,當前高校對于測試課程的不重視,以及當前的軟硬件設施及教學方法都不能滿足對應用型測試技術人才的培養(yǎng)要求。為了適應軟件產業(yè)發(fā)展對測試人才的迫切需要,實現軟件人才培養(yǎng)的持續(xù)性發(fā)展,針對軟件測試課程調整培養(yǎng)方案,展開深入的教學改革和實踐活動十分迫切和必要。

1.加大師資力量,構建完善的軟硬件測試平臺教師素養(yǎng)的提高是軟件測試教學改革得以順利開展的前提。此前,國內對軟件測試并不重視,致使國內軟件測試人才短缺,大部分高校內雖然有計算機系,但多以重開發(fā)輕測試,測試教師的專業(yè)素質和數量都遠遠不夠。因此,不僅要重視對教師測試專業(yè)技術的培訓,提供更多的學習機會,也應該認真開展軟件測試教學研究,構造專業(yè)的軟件測試教學團隊。作為一門實踐性較高的課程,軟件測試必須建議專門的、完備的實驗教學體系和環(huán)境。目前,高校普遍缺乏軟件測試的軟、硬件環(huán)境,致使學生無法通過項目實踐來深入理解和提高測試相關知識和技能。

2.運用案例教學,豐富軟件測試項目實戰(zhàn)案例在教學活動中,學生總是對最新、最流行的項目和案例感興趣,陳舊的案例既不能滿足當前市場上對測試人才的技術需求,又不能很好的激起學生的興趣。運用案例教學最重要的環(huán)節(jié)就是豐富案例素材,保持案例的“鮮活性”與“生命力”。高校可以采用歷年本科畢業(yè)設計中運用了流行的技術、難度適中、功能較為完整的應用作為軟件測試課程的測試案例,不但可以保證素材的延續(xù)性,也使得學生畢業(yè)設計完成的質量有所提高。

3.加強校企合作,走教學產業(yè)化發(fā)展之路[3]企業(yè)需要人才,高校為企業(yè)輸送人才,校園中學習的技能最終要接收用人單位的考驗。所以與軟件企業(yè)合作,建立對口的學生實訓基地,是應用型人才培養(yǎng)的重要途徑。軟件測試技術的掌握與提高離不開項目實戰(zhàn),讓學生在真正的軟件工程過程中從事測試工作,不僅能使學生深刻體會到軟件測試在整個項目中的作用,掌握測試方法和技巧,對于學生的溝通交流能力、團隊協作能力都有積極的促進作用。

四、小結

軟件測試是保障軟件質量,驗證軟件可靠性的重要環(huán)節(jié),其重要性不言而喻。重視軟件測試應從企業(yè)用人的實際需求出發(fā),高校應加強面向企業(yè)需求的軟件測試改革,切實培養(yǎng)學生的動手操作能力,使學生掌握最新的測試方法和技巧,讓企業(yè)需求促進和推動高校教學發(fā)展。

作者:于營 單位:三亞學院

軟件測試論文:軟件測試質量管理論文

1測試流程不合理

1.1測試設計重點偏離使用QC軟件測試發(fā)現bug統(tǒng)計,如表1所示。根據表1工作量統(tǒng)計,25人/日為5個中級測試工程師一周的工作量,但是根據測試用例發(fā)現的bug數量僅占bug總量的44.18%,該比例顯示測試用例的設計重點嚴重出現偏離。需要在測試用例設計的方向上進行調整。

1.2測試過程不可控QC軟件測試計劃中測試執(zhí)行階段為2013.3.8-2013.3.27,執(zhí)行三輪測試;實際測試時間為2013.3.23-2013.4.20,執(zhí)行測試三輪,計劃完成時間嚴重偏離,表2為原計劃與實際計劃的對比。表2顯示測試計劃進行了較大調整,計劃截止時間比原計劃延遲23天。延遲原因經分析主要為開發(fā)提交測試時間延遲,開發(fā)提交版本問題較多,測試計劃安排不合理,在兩輪測試間為安排開發(fā)修改bug時間等。想要解決該問題,不僅需要對測試過程進行管理,同時也需要對開發(fā)提交的測試版本質量進行管理。

2軟件質量管理改進對策

2.1需求工程管理軟件開發(fā)過程中,需求不明確會帶來需求的頻繁變更,浪費了很多時間。針對此項問題,可對需求相關的活動進行統(tǒng)一管理,其需求管理結構圖如圖2所示。加強需求開發(fā)和需求管理的有機結合,不僅減少了需求的變更次數,還解決了工程師對需求不能理解到位的問題。需求開發(fā)和需求管理同樣重要,只有兩者互相配合才能做出用戶滿意的產品。

2.2立項管理為了使有限的資源發(fā)揮更高的價值,公司可通過立項管理流程進行立項管理,立項管理流程分為立項建議、立項評審和立項籌備三個階段,其具體流程圖3所示。

2.3測試流程管理針對測試流程中發(fā)現的問題,可對整體的測試流程做如下的改變:(1)測試部門可進行需求學習及需求討論,對理解不清楚及有疑問的需求,由研發(fā)設計部門進行解答,研發(fā)設計部門不能解答的由其聯系用戶確認后作出解答;(2)需求確認后,針對系統(tǒng)功能和性能等指標,由測試工程師進行測試測用例的設計,設計從兩個方面進行,一方面測試工程師根據需求進行測試用例的編寫,另一方面測試工程師可根據用戶反饋問題進行分析匯總;(3)使用QC功能測試工具對應用軟件兼容性、操作系統(tǒng)兼容性進行測試,以便于使用測試工具完成多種環(huán)境下的功能和兼容性測試;(4)進行自由測試以便于對系統(tǒng)測試用例進行補充,分析測試用例未覆蓋問題的原因;(5)定期分析缺陷庫中的問題,分析問題產生的原因,進行測試用例的修改。

3結論

本文指出了軟件質量管理過程中可能會引起軟件質量問題的原因,對軟件質量管理的相關問題進行了分析,歸納和總結,這些問題在軟件開發(fā)人員中具有一定的普遍性。實踐表明,通過對這些問題進行分類,開發(fā)人員可以清楚地知道在軟件設計中容易出現的問題,能夠及時采取相應的措施,推動軟件質量的全面提高。

作者:翁婕丁鐵喬揚單位:南京萊斯信息技術股份有限公司質量與技術管理部

軟件測試論文:軟件測試團隊建設的軟件工程論文

根據權威機構統(tǒng)計部門調查數據顯示可知,在常用的軟件開發(fā)項目環(huán)節(jié)中,軟件測試工作大約能夠占到軟件開發(fā)工作總量的42%以上,而軟件測試所需投入的研究經費成本也將占到總額數的50%。由此可知,軟件測試環(huán)節(jié)對于整個軟件工程開發(fā)應用具有十分重要的意義。然而,如何建立一支高效軟件測試團隊對于構建更加完善的軟件工程起著直接導向性作用。BarryBoehm曾闡述了人的因素在軟件測試中的重要作用,人為所占因素甚至超過了其他環(huán)節(jié)性因素,其代表理論構造性成本模型認為由于軟件測試分析師與程序員的原因會導致其工作效率相差數倍。因此,加強軟件測試團隊的高效率建設對于構建高質量軟件應用程序具有重要作用。

1高效軟件測試團隊建設的可行性策略

1.1軟件測試團隊的特質建設

軟件測試團隊的素質建設對于整個軟件工程質量而言具有非常重要的作用,人是測試工作中最具價值也是最重要的資源。因此,應該積極構建合格的、高質量的合作團隊。(1)軟件測試以及軟件工程開發(fā)都需要程序員具備足夠的自信心,對軟件檢測結構以及程序的缺陷要如實匯報。對于軟件項目工程中出現的各種問題要認真處理,以此減少客戶可能遇到的種種問題。(2)軟件測試人員還要具備足夠的懷疑精神,對可能存在的漏洞性錯誤要及時予以檢測和糾正,進而提高其自我創(chuàng)造力。(3)軟件測試團隊要積極構建溝通協調能力??梢酝ㄟ^與客戶進行必要的溝通來及時發(fā)現軟件運行中存在的不足之處,其中測試者可以針對模擬環(huán)境下用戶對于軟件環(huán)境的應用情況進行科學分析,以此對軟件編寫過程和總結文檔進行反復檢查檢測,提高軟件的運行效率和正確性。(4)必備的檢測技術能力。軟件測試團隊必須具備重要的專業(yè)技能,需要精通數據庫、通信、網絡、GUI測試、測試工具、自動化測試腳本和相關業(yè)務領域等,以此全面提升他們的測試能力和測試積極性。

1.2軟件測試團隊的制度性建設舉措

一個優(yōu)秀的軟件測試團隊必定擁有一套完善的團隊管理制度,擁有明確的職責分工和高端測試人員,通過不斷規(guī)范團隊管理制度,做到揚長避短,及時提升整體測試質量。其中,軟件測試團隊需要不斷加強匯報制度建設、工作總結制度建設、獎懲制度建設、測試審核制度建設、會議制度建設等,通過科學合理地分配職責關系來進一步強化團隊成員的素質建設。在此過程中,還要注重對于資深測試人員的正確引導和建設,加強彼此間的溝通交流,不斷豐富團隊的測試知識庫,通過科學吸收先進的測試管理知識來提升整體測試技能和技巧,以此減少開發(fā)團隊協同工作中的一些領域瓶頸。

2結語

綜上所述,本文對目前國內軟件工程的發(fā)展應用現狀以及其中出現的漏洞不足之處進行了分析。只有不斷加強對軟件測試團隊的整體素質和綜合開發(fā)技能的教育,才能從根本上提升其軟件測試技能,要在不斷建立健全團隊管理制度的基礎上加強相關軟件工程建設,以此全面提高測試人員的軟件工程技術水平。

作者:段煉單位:鄭州銀行科技開發(fā)部

軟件測試論文:軟件工程中軟件測試的必要性

1軟件工程提升軟件健壯性分析

軟件工程目前一直缺少一個明確的定義,但是目前業(yè)內專家都一致認為軟件工程一般分為需求分析、設計、編碼及測試4個環(huán)節(jié)。其中前面3個環(huán)節(jié)是整個軟件的編寫,而最后1個環(huán)節(jié)的軟件測試,則是通過各種專業(yè)測試方法來測試軟件是否滿足軟件工程下的10種特性:可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性。

2當前軟件測試的現狀

從對軟件工程的分析來看,軟件測試是保證軟件最終健壯性的最后一個工序。但是,當前很多軟件設計公司,在軟件測試方面投入的人力物力都非常低,甚至沒有專門的軟件測試部門,而是由一些軟件設計人員兼職。雖然這樣也有了所謂的軟件測試這道工序,顯然因為軟件設計人員本身的先入為主,所以在軟件測試的過程中,往往不容易發(fā)現潛在的問題。另外有的軟件測試人員僅僅把軟件推到市場上,部分使用人員來進行測試,雖然這也是一種測試方法,但是這種由用戶測試的軟件測試環(huán)節(jié),更多的是在軟件的操作體驗的測試,并不能夠發(fā)現軟件潛在的bug,正確的軟件測試流程,應該設計專業(yè)的測試軟件,通過白盒測試的方法來針對軟件代碼進行測試。而上述的僅僅測試界面和操作,那只是軟件測試中的黑盒測試法,只有綜合白盒和黑盒,才可能獲得更好的軟件測試效果。但是,目前能夠綜合這2種測試方法的專業(yè)軟件測試部門,還是非常稀缺的。這自然導致了國內整個軟件行業(yè)的軟件健壯性存在缺陷的主要原因之一。

3軟件測試重要性分析

3.1軟件危機下凸顯軟件測試的重要性

軟件危機一直是IT行業(yè)的最重要的話題,其實在軟件危機這個名詞出來之前,軟件工程就已經初步有了核心流程,不過正是因為很多專家有著自己的理論,所以讓軟件工程這門技術的解釋出現了很多不同的版本,不過在眾多版本中,軟件測試始終占據一個重要的模塊。軟件危機常見的表現就是因為軟件在開發(fā)的過程中,成本失控、時間跳水、穩(wěn)定性和兼容性欠缺等諸多問題,而不得不一而再再而三的重新開發(fā),特別是軟件在設計的過程中,對于可維護性、可修復性不重視,導致維護的成本占據了整個軟件生存周期的90%以上,這很明顯是不正常的。通常而言,軟件維護的成本應該是軟件生存周期的70%以下,超過70%,這個軟件最終的結局一定會失敗。軟件測試的過程,除了針對軟件的運行是否穩(wěn)定,同樣也會對軟件的可維護性進行有效的判斷,盡可能的避免軟件危機的產生,所以從軟件危機的角度上來看,軟件測試在軟件工程中的地位無疑是非常重要的。

3.2軟件測試的必要性

(1)是交流的問題,容易導致軟件接口處的錯誤?,F代軟件設計已經不是單人作戰(zhàn)的模式,已經上升到團隊甚至全球軟件工程師通過互聯網這個大平臺進行合作,這種方式顯然對軟件工程規(guī)范要求更高。其中交流往往就成了一個很重要的問題,很多軟件工程師在設計的過程中,盡可能的將自己負責的模塊做到完美,甚至也能夠考慮到模塊間的借口問題。但是因為交流上的不便,或者忽視交流,往往會產生2個模塊接口不兼容,甚至還會發(fā)生軟件需要重新改寫的問題。

(2)軟件結構有越來越復雜的趨勢。雖然軟件開始實施模塊化設計方式,將一個軟件整體拆解成無數個小的系統(tǒng)模塊進行設計,然后將設計好的模塊進行統(tǒng)一封裝。這種化整為零的軟件設計方式的確有效的改善了軟件復雜性的問題,但是同樣也面臨著模塊間的兼容問題,不同設計師的設計風格可能會導致軟件可維護性降低及可移植性降低,特別是一些軟件開發(fā)公司,根本就沒有軟件工程的概念,其研發(fā)的軟件產品,更是漏洞百出,自然很難保證軟件產品的健壯性。

(3)程序代碼的設計問題。目前一個軟件的誕生,往往會有好幾千萬行的代碼,而且在軟件正式代碼編寫之前,還需要撰寫概要設計代碼和詳細設計代碼,這些往往都給錯誤埋下伏筆。如果程序設計代碼撰寫不規(guī)范,沒有相應的注釋,沒有相應的模塊設計,往往計算式發(fā)現了軟件的錯誤,最終維護起來,也很難讓維護工程師定位,甚至連測試工程師也很難找到錯誤的地方。

(4)設計文檔的組成非常少。一個軟件產品的誕生,除了優(yōu)秀的代碼設計之外,還要一份完善的代碼文檔,包括軟件的可行性研究、需求分析、詳細設計、代碼編寫,以及軟件測試等工作流程中所需要的一切的代碼文檔。如果代碼文檔貧乏,甚至沒有,那么一旦在軟件測試環(huán)節(jié),或者在軟件使用環(huán)節(jié),出現錯誤時,那就很難進行維護調試了。這時候的維護成本往往會比重新編寫一款軟件的成本還要低,可見設計文檔的錯誤撰寫給軟件健壯性的影響。

(5)一些軟件測試工具和開發(fā)工具本身的問題,往往導致軟件出現嚴重的bug。而且在設計階段,還很難發(fā)現,因為是本身軟件測試工具和軟件開發(fā)工具引起的,因為軟件測試工具和開發(fā)工具實際上也是一種軟件,如果這些軟件的健壯性有問題,自然也會導致測試結果出現偏差,最終影響到軟件的健壯性。

3.3軟件測試成本過半證明了軟件測試的重要性

軟件工程雖然在很多專家和權威機構的定義有所偏差,但是無一例外,對于軟件成本構成的分析上,軟件測試的成本一直占據了主要部分,最低的認為,軟件測試成本要占據30%,最高的則認為占據到50%。如果將后期維護成本也放在軟件測試板塊中,那么這個測試成本就會變得更高。因為軟件進入維護期時,一旦出現軟件需要進行調試,那么修復后的軟件依然要進行軟件測試,否則很難保證調試后軟件依然能夠保證健壯性。作為一個軟件系統(tǒng)的所有代碼,都是牽一發(fā)而動全身,修改了某處代碼,可能會影響到另外一個模塊的功能,所以在維護期內,對軟件的任何變動,都需要進行軟件測試,才能夠保證軟件接下來的健壯性。但很明顯,如果將軟件測試工作放在軟件推出市場之前,就來進行有效的測試,那么對于軟件整個生命周期的成本,將能夠得到有效的降低。軟件測試的成本的高低,往往和軟件的質量成正比,而軟件質量提升了,后期的維護成本就能夠有效的降低,所以綜合起來,軟件測試這部分的成本支出是非常有必要的。

4軟件測試流程分析

(1)建立獨立的軟件測試部門,測試部門領導應該對這個專業(yè)非常精通,而不是簡單的由開發(fā)人員兼職,這個測試部門需要從可行性研究開始就應該著手對軟件研發(fā)進行測試,可行性研究的最終確認應該也有軟件測試主管部門的簽字確認才能夠進行下一步的工作。

(2)軟件測試工作不是等到軟件全部開發(fā)完畢才來進行測試,而是跟隨軟件設計的整改生命周期,針對每一個環(huán)節(jié)進行測試,軟件測試部門應該擁有獨立的物理部門和獨立于開放環(huán)境的測試環(huán)境,這樣才能夠提供更加完善的軟件測試,盡可能的將軟件bug扼殺在搖籃里。

(3)軟件模塊測試,因為現在軟件設計都已經進入模塊化設計標準,比如一個完整的軟件是S,它有A、B、C、D等模塊構成,那么對于A模塊的軟件設計過程中,就應該有獨立的軟件測試人員進行跟蹤,直到A模塊被測試證明沒有隱患。以此類推,分別對B、C、D等模塊分別進行測試,合格以后,組裝后的軟件依然進行測試,這樣才能夠最終提升軟件健壯性。在軟件設計的過程中,其實測試人員是和軟件開發(fā)人員并行工作的,而不是等到軟件設計完畢之后,再來對模塊進行測試,這種方法才能夠提升軟件測試的效果。

5結語

軟件測試隨著軟件系統(tǒng)復雜性的不斷提升而變得越來越重要,如果現在的軟件設計公司依然按照傳統(tǒng)的軟件研發(fā),只注重軟件的功能設計,而忽視軟件測試,通過不斷的壓縮測試成本,希望以此來提升軟件最終的利潤作法已經行不通了,只有將軟件測試做好、做精,才能夠提升軟件的健壯性,才能夠提升軟件的生存周期,才能夠降低軟件的整體成本。

作者:董倩范亞斌單位:石家莊學院

軟件測試論文:探微軟件測試在軟件工程的重要性

1關于軟件測試的認識

在軟件開發(fā)的每一個階段中,人員的參與都是離不開的部分,而人的工作以及人們之間的通信質量有很難做到完美無缺,這就導致了錯誤是不可避免的。另外,伴隨著計算機控制對象越來越復雜,且軟件的功能及規(guī)模也在不斷的提升,這也使得錯誤相對而言更容易發(fā)生,比如對于WindowsNT操作系統(tǒng)來說,其代碼約為3200萬行??傮w來看,在軟件設計階段,人們所犯的錯位是引起軟件失效的主要原因,而軟件缺陷的根源則在于軟件的復雜性。在確保軟件可靠性以及質量的過程中,軟件測試屬于最為主要的手段,以當前的軟件工程來看,多以結構化分析及設計作為核心,因此在開發(fā)階段,需求分析以及設計都是以工程管理以及技術評審作為質量的保障手段,而工程管理以及技術評審又存在著主觀上的缺陷,很容易遺漏錯誤使其延續(xù)至開發(fā)階段。客觀來說,軟件測試在發(fā)掘軟件中隱藏缺陷的過程中的確有著很好的效果,以英國的SHOLIS項目來看,這一項目使用形式化方法對軟件規(guī)約進行描述及證明,而且利用程序正確性證明方法對前期的很多缺陷進行排除,但是通過軟件測試卻依舊發(fā)現了整個過程15.175%的缺陷。此外,隨著人們對軟件測試重要性的認識越來越深,其所在軟件開發(fā)周期中所占的比例也越來越高,當前很多軟件開發(fā)機構已經將其40%的研制力量投放到了軟件測試中,而對一些比較重要的軟件來說,其測試的費用往往會高達其他階段費用的3至5倍,由此可見,不管從哪個角度出發(fā),軟件測試都是非常重要的。

2軟件測試分類

當前的軟件測試技術主要可以分為動態(tài)測試以及靜態(tài)測試,其中,靜態(tài)測試主要是指在不執(zhí)行程序代碼的情況下找到程序中有可能存在的缺陷或者對程序代碼進行評估的過程中,廣義上看,靜態(tài)測試還包括軟件需求分析以及技術評審。至于動態(tài)測試,則是通過抽樣測試數據對程序進行運行以起到檢查程序中存在的缺陷。在動態(tài)測試的過程中,其核心內容主要包括測試用例、運行正與以及對于程序運行結果進行驗證這3部分內容,此外還包括一些數據管理、文檔編制、操作規(guī)程等輔助方面的工作。

3軟件測試的對象

在軟件測試的過程中,不單單進行一些比較簡單的程序測試,也就是說僅對程序能否運行進行測試是遠遠不夠的。具體來看,軟件測試要貫穿在軟件定義以及開發(fā)的整個過程中,因此軟件測試的對象包括需求分析、系統(tǒng)設計、程序編碼以及各階段說明文檔。此外,因軟件開發(fā)過程中各個階段之間有著非常金敏的銜接,因此如果前一階段出現問題必然會對下一階段段的工作造成影響,所以為了確保每一個階段的正確性,我們要做好確認及驗證工作。具體來看,確認主要是對需求規(guī)格以及程序進行確認,這既含有靜態(tài)確認,又有動態(tài)確認,其中靜態(tài)確認大多數是由人工進行分析,而動態(tài)確認則是利用動態(tài)分析以及程序測試對程序執(zhí)行的情況進行檢查。至于驗證,則主要是采取一定手段對程序執(zhí)行情況進行檢查,進而證明軟件各階段中的完備性、正確性以及邏輯協調性。舉例來說,我們驗證的對象包括測試用戶需求和系統(tǒng)分析員報告是否想和、設計說明書和測試需求說明書是否匹配等。

4軟件測試目的及原則

4.1軟件測試目的

測試目前因立場的不同又可以分為兩種,從客戶角度來看,總是會希望通過測試來發(fā)現軟件中的缺陷及隱蔽錯誤。而從軟件開發(fā)者角度來看的話,則是希望產品少出現錯誤,對軟件已經符合客戶需求進行驗證,在這種思路下,測試人員會使用一些導致程序失效概率小的測試模塊進行測試,并對容易導致錯誤暴露的測試用例進行回避,而且對于有可能出現副作用的語句也并不會去刻意的檢查。基于此,在程序中,還存在很多預料不到的問題,而這類問題往往要在一些比較特殊的環(huán)境之下才能夠表現出來。從以上分析我們可以看出,在對軟件進行測試的過程中還是要更多的站在用戶角度對問題進行考慮。

4.2軟件測試原則

(1)“盡早和不斷的進行軟件測試”,只有時刻牢記這一原則才能夠降低軟件開發(fā)中由于工作多樣化、人員配置復雜化所帶來的不利影響。具體實踐的時候,我們首先要端正態(tài)度,對各階段技術審核要認真進行,另外,我們還要將軟件測試貫徹到每一個環(huán)節(jié)中,進而早對錯誤進行發(fā)現和預防。

(2)測試用例選擇的過程中要有輸入數據和以及和輸入數據相對應的預期輸出結果,具體來看,在我們進行軟件測試的過程中要選擇比較適合程序段的測試用例,這些用例可以對程序員所編制的程序是否存在錯誤進行分析,而給出預期的輸出結果則可以對程序段是否存在錯誤進行更為快捷的判斷。

(3)要避免程序員對自己的程序進行測試,在軟件測試的過程中,冷靜的情緒以及客觀的態(tài)度是不可避免的,而人又很難對自己的勞動成果進行否定,因此在程序員對自己程序進行檢查的過程中會從主觀上出現偏差,導致測試結果不準確、不客觀。

(4)設計測試用例的過程中要注意使用不合理輸入套件,所謂不合理輸入條件主要包括輸入異常或者會導致異變的條件。在軟件正常使用的過程中,不合理輸入是不可避免的,輕則會導致運算錯誤,嚴重的時候甚至會使軟件失效。

(5)對測試工作中的群集現象進行注意,針對測試過程中錯誤較多的程序段,要對其進行詳細認真的檢查,這是因為從經驗上看,程序段中殘存的錯誤于已發(fā)現的錯誤往往會成正比。

(6)對測試要認真執(zhí)行,這是指我們要做好一個詳細的規(guī)劃,具體來說,規(guī)劃主要包括:軟件功能、輸入、輸出以及每一功能測試的進度安排等。

(7)對測試計劃、用例、出錯統(tǒng)計以及分析報告等進行妥善的保管,進而為日后的軟件維護提供更為便捷的服務。總體來看,在我們的工作中如果能夠把握住以上原則必然能夠對提升測試工作的效果起到很強促進作用。

5結語

在軟件開發(fā)工程中,軟件測試屬于一個重要的環(huán)節(jié),一旦缺乏了這一環(huán)節(jié),所開發(fā)出的產品必然難以滿足用戶的要求。本文關于軟件測試必要性的分析還存在很多不足之處,也希望各位測試人員能夠對其進行補充及指正,進而共同促進這方面研究水平的提升。

作者:樓煒單位:同濟大學軟件學院

軟件測試論文:軟件測試技術在鐵路產品開發(fā)中的作用

按照軟件特征分類,軟件測試可分為:功能測試和性能測試。功能測試是黑盒測試的1個方面,它檢查實際軟件功能是否符合用戶的需求。一般分為:邏輯功能測試、易用性測試、安裝測試和兼容性測試等。性能測試主要有時間性能測試和空間性能測試2種。通常還包括:一般性能測試、可靠性測試、負載測試、壓力測試。其它分類還包括:回歸測試、冒煙測試、隨機測試?;貧w測試是指對軟件的新版本測試時,重復執(zhí)行上一版本測試時的用例。冒煙測試是指對一個新版本進行系統(tǒng)大規(guī)模的測試之前,先驗證一下軟件的基本功能是否實現,是否具備可測性。隨機測試是指測試中所有的輸入數據都是隨機產生的,其目的是模擬用戶的真實操作,并發(fā)現一些邊緣性的錯誤。

軟件測試過程一般來說,軟件測試工作從立項后就開始了,主要經歷以下幾個主要環(huán)節(jié),如圖1所示。需求分析是軟件測試的1個重要環(huán)節(jié),測試人員對這一環(huán)節(jié)的理解程度將直接影響后續(xù)測試工作的開展。一般而言,需求分析包括軟件功能需求分析,測試環(huán)境需求分析,測試資源需求分析等。測試計劃的依據主要是項目開發(fā)計劃和測試需求分析結果而制定,測試計劃指導整個測試過程。測試設計在測試活動的各個階段,對測試策略、測試方法、測試用例進行制定和編寫。測試環(huán)境搭建要盡可能模擬實際應用場景,滿足項目的設計要求,從而達到理想的測試效果。測試執(zhí)行和測試記錄由測試工程師完成,主要是查找軟件的錯誤和缺陷,并記錄測試活動中出現的問題。缺陷管理是對測試活動中出現的BUG進行管理和跟蹤,保證每個BUG得到及時修復。軟件評估是在測試活動的最后,對軟件進行全面地分析和總結。

鐵路產品開發(fā)過程中容易忽視軟件測試

鐵路產品供應商普遍重視占領市場份額,追求利益的最大化,提升產品的服務質量,但是卻容易忽視保證產品質量的軟件測試,這給鐵路安全運輸帶來巨大安全隱患。項目的開發(fā)過程通常是確定項目負責人和項目參與人、項目的方案以及項目需要完成的時間,然后投入項目的開發(fā)。研發(fā)過程中采用團隊協作,項目分工到人,經過程序編寫、調試,最后集成為產品,并在實驗室和現場環(huán)境下進行測試實驗。對于項目進展情況的掌握是通過不定期的召開會議和單獨詢問主要開發(fā)人員以及研發(fā)人員匯報來實現的。

在這種開發(fā)模式下,因為項目的開發(fā)過程中沒有系統(tǒng)和獨立的測試過程,所進行的測試也是以正向思維為主,重點驗證軟件是否實現了相應的功能,而不是軟件在異常情況下的響應和處理。軟件開發(fā)和軟件測試本來就是不同的活動,開發(fā)人員的工作目標是創(chuàng)建相應模塊,實現特定功能,從而會不自覺地朝這個方向努力,挑選那些使程序出錯可能性較小的測試數據和手段,無法保證軟件被全方位進行測試,會給項目帶來隱患。正是認識到這一情況,才大力主張產品開發(fā)應進行科學和規(guī)范性管理,加強軟件測試隊伍建設,任命專職人員從事測試工作。利用軟件領域中的相關技術,對軟件進行科學、合理的測試。

如何在企業(yè)內部實施軟件測試

企業(yè)想要在產品開發(fā)過程中,對產品軟件展開相關測試,首先應建立合適企業(yè)特點和開發(fā)模式的測試流程;其次,對不同測試階段和不同產品的軟件和硬件的特點,擬采用不同的測試技術和策略。另外,在產品開發(fā)過程中,項目的配置管理、質量保證的等方面都應形成明確的制度。

1測試流程

企業(yè)應全面規(guī)范項目開發(fā)管理流程,對項目進展的各個階段進行明確劃分。軟件測試是建立在軟件開發(fā)的成果之上,即測試的對象就是軟件開發(fā)的階段性成果,如設計文檔、程序代碼和可執(zhí)行的程序。

軟件測試和硬件測試的側重點有所不同。對于軟件測試,采用比較通用的測試流程,如圖2所示。軟件項目的開發(fā)從項目立項開始,測試人員介入項目組,明確需求分析階段的用戶需求,針對不同測試階段的工作重點,制定各階段的測試計劃。在設計測試階段,測試人員需要確定各測試階段的測試方法和必要的測試工具,搭建測試環(huán)境,編寫相應的測試用例。接下來,按照測試計劃分別進行單元測試、集成測試和系統(tǒng)測試,形成各階段的測試報告,對測試過程中發(fā)現的缺陷進行跟蹤,保證缺陷得到及時修復。為了保證軟件在現場環(huán)境下能夠正常運行,測試人員針對現場實際情況,制定現場驗收計劃,確定現場驗收策略,對軟件進行現場驗收和評估。當軟件通過了各階段的測試,且全部缺陷得到修復,將進入到軟件的階段。軟件階段通過對軟件版本的管理和控制,實現軟件、維護和升級等。

對于硬件測試,需要面向硬件編程,即在硬件環(huán)境下,編寫代碼,實現采集、控制、通訊等功能。由于硬件產品的開發(fā)不能脫離硬件環(huán)境,因此,測試活動與硬件產品開發(fā)、過程調試、硬件聯調都是密不可分的,軟件測試作為硬件產品開發(fā)過程中的重要環(huán)節(jié),“驗證”和“確認”產品滿足項目的設計需求,硬件產品開發(fā)流程如圖3所示。硬件產品的開發(fā),首先要明確硬件需求,預計產品達到的效果。在硬件總體設計階段,獲取硬件需求,并根據功能進行模塊劃分,定義模塊之間的接口。在詳細設計階段,對各模塊進行編程,搭建相應的硬件電路。過程調試可分為:軟件過程調試和硬件過程調試兩種,軟件過程調試指的是在硬件電路的環(huán)境下,進行軟件調試的過程,保證軟件能夠正確控制硬件電路和讀取相應數據;硬件過程調試指的是產品電路部分的調試過程,驗證電子器件之間邏輯是否符合系統(tǒng)設計要求,保證硬件產品穩(wěn)定、可靠,不受干擾。各硬件功能模塊調試成功后,需要進行整體硬件聯調,各硬件模塊被連接成1個整體,形成產品的雛形,在此階段,主要驗證各模塊之間的接口是否符合設計要求,是否能夠實現系統(tǒng)設計的各項功能。硬件產品經過整體聯調后,形成樣機。測試工程師根據產品的硬件需求說明,制定測試計劃,確定測試方案和測試方法,并搭建測試環(huán)境,對樣機進行硬件測試,確認產品符合硬件產品設計要求。

2軟件測試技術在各階段的運用

在軟件測試實施的各個階段,所采用的測試方法和測試策略也各不相同。下面對于測試過程的各階段進行分別敘述。

2.1設計和代碼審查

設計審查是由項目組和測試組成員組成評審組對軟件設計和開發(fā)的輸出進行評價,以判斷確定設計和開發(fā)的輸出能否實現軟件產品預先定義的規(guī)格,同時通過審查標識出與項目需求之間的偏差。設計審查按《項目計劃》所規(guī)定的評審點進行。因臨時變更引起的突發(fā)性的評審隨時進行。代碼審查實際上屬于靜態(tài)測試。在代碼審查之前,首先要對代碼進行靜態(tài)分析,其目的是通過對源程序分析、目測,但不執(zhí)行程序,找出源代碼中可能存在的錯誤和缺陷,對程序設計的結構屬性,如分支、路徑、轉移等進行審查,盡可能地掌握程序的結構,為單元測試的測試用例的設計和執(zhí)行提供信息。代碼審查的目的是檢查源程序編碼是否符合詳細設計的編碼規(guī)定,確保編碼與設計的一致性和可追蹤性。檢查的方面主要包括:書寫格式、子程序或函數的入口和出口,數據,參數,程序語言的使用,存儲器的使用,可讀性,邏輯表達式的正確性,代碼結構合理性等。靜態(tài)分析和代碼審查通??梢酝瑫r進行,通過靜態(tài)分析掌握源程序結構,通過代碼審查,盡量減少書寫錯誤和隱含的邏輯錯誤,為單元測試提供比較穩(wěn)定的環(huán)境。

2.2單元測試

單元測試是軟件測試的基礎,集成測試、系統(tǒng)測試都是建立在單元測試之上。單元測試是用來檢驗每個軟件單元能否正確地實現其功能,滿足性能和接口要求,還要驗證程序和詳細設計說明的一致性。從廣義上來講,單元測試包括靜態(tài)測試和動態(tài)測試。靜態(tài)測試就是上面介紹的“代碼審查”,而動態(tài)測試則是通過測試用例、測試工具來執(zhí)行程序,檢驗程序是否存在缺陷的過程。單元測試一般采用白盒測試方法,手工測試和自動測試相結合,針對程序內部的結構和邏輯來展開,單元測試工具一般針對不同編程語言和開發(fā)環(huán)境而設計開發(fā)的,種類很多。我們利用白盒測試進行代碼測試,利用黑盒測試進行功能性測試,利用回歸測試保證維護代碼的完整性。單元測試工具固然有用,更重要的是測試策略,以及測試用例的設計。這也提醒我們在做單元測試的過程中,不可避重就輕,要抓住項目核心,進行科學、有效的測試,只有這樣才能達到事半功倍的效果。

2.3集成測試

集成測試階段采用白盒測試和黑盒測試相結合的方式,將每個獨立的功能模塊進行關聯和集成,便于進行功能測試、界面測試、結構測試、數據正確性測試等。在進行集成測試前,測試工程師要搭建測試所需的硬件和軟件環(huán)境,盡量模擬設備實際的工作環(huán)境。結合項目的不同特點,測試過程可以采用手工或自動測試。在進行多次重復測試和回歸測試的情況下,可采用自動化測試工具對軟件進行功能性檢測。

2.4系統(tǒng)測試

在系統(tǒng)測試階段,不僅要進行功能測試,還要對系統(tǒng)的性能、安全性、兼容性和可靠性等進行測試,系統(tǒng)測試涉及人機交互和復雜邏輯,因此系統(tǒng)測試多采用黑盒測試的手工測試方法。系統(tǒng)兼容性測試要考慮軟、硬件的兼容性。項目開發(fā)的硬件和軟件要在指定的環(huán)境下,進行多次反復的安裝和反安裝測試,以驗證接口數據調用和驅動程序是否達到設計標準。安全性測試和軟件的安全策略密切相關,安全性測試主要包括:用戶訪問權限、數據庫安全性、文件安全性等。性能測試、負載測試等必須借助測試工具來實現。過分強調測試工具的作用,極力追求各種軟件測試工具,是軟件測試本末倒置的表現。實際上,測試過程中80%以上的缺陷是手工測試發(fā)現的,僅有不到20%的缺陷是靠工具測試發(fā)現的,而且這還得要求測試人員合理地使用工具。

3采用的測試模型

企業(yè)對產品開發(fā)應重點關注產品開發(fā)的過程控制,以及測試、管理。保證產品質量從源頭開始。因此,測試過程更適合采用W模型,如圖4所示。在W模型中,測試過程和開發(fā)過程都貫穿項目開發(fā)過程的整個生命周期,兩者同時開始,同時結束,相輔相成、始終保持著同步的關系。這樣做的原因是:測試工作盡早介入,軟件存在問題的可能性就會降低。項目正式立項后,測試人員既可參與到項目組中,通過學習和閱讀相關文檔,加強對項目的了解,對項目有個整體認識,形成初步的測試思路。同時測試越早介入項目就能夠越早發(fā)現問題,解決問題所花費的成本越小。如果在軟件的最后階段進行測試,發(fā)現功能設計不合理或性能不好,需要修改需求和設計,不得不返工到系統(tǒng)設計或需求定義階段,會造成很大的代價,所以有必要將軟件測試延伸到需求、設計階段,對需求、設計進行驗證。有資料表明,60%以上的軟件錯誤不是程序錯誤,而是分析和設計錯誤。若把軟件分析、設計上的問題遺留到后期,可能造成設計、編碼的部分甚至全部返工,從而增加軟件開發(fā)成本及延長開發(fā)周期等后果。同時,需求和設計階段所產生的缺陷具有放大效應,嚴重地影響軟件質量。因此,為了更早地發(fā)現并解決問題,降低修改錯誤和缺陷的代價,有必要將測試延伸到需求分析和設計階段中去,使軟件測試貫穿于整個生命周期,提倡軟件生命周期測試的理念,即軟件測試是對軟件形成過程中的所有工作產品(包括程序以及相關文檔)進行的測試,而不僅僅是對程序的運行進行測試。測試在對需求和設計階段的測試活動主要是通過需求評審和設計評審來實現,可以更早發(fā)現問題,及時修改問題。即對軟件開發(fā)階段中的階段性產品進行評審、走讀或者回憶評審,發(fā)現其中的問題,是一種靜態(tài)測試。通過靜態(tài)測試,可以更早地發(fā)現問題,把問題消滅在萌芽中,將每個階段產生的缺陷及時清除。

總結

軟件測試作為專業(yè)性比較強的技術在我國起步較晚,受重視程度不夠,但它是保證軟件質量的終極手段,目前越來越受到了人們的關注。鐵路行業(yè)的生產企業(yè),認真做好產品質量把關,合理運用相關檢測技術,將軟件缺陷消滅在萌芽階段,保證鐵路運輸和人們生命財產的安全。

作者:朱劍輝單位:哈爾濱鐵路局科學技術研究所