亚洲精品一区二区三区大桥未久_亚洲春色古典小说自拍_国产人妻aⅴ色偷_国产精品一区二555

軟件測試8篇

時間:2023-03-07 15:01:17

緒論:在尋找寫作靈感嗎?愛發(fā)表網(wǎng)為您精選了8篇軟件測試,愿這些內容能夠啟迪您的思維,激發(fā)您的創(chuàng)作熱情,歡迎您的閱讀與分享!

篇1

乙方(供測方):_________

甲乙雙方經(jīng)過平等協(xié)商,在誠信友好,充分地表達各自意愿的基礎上,根據(jù)《中華人民共和國合同法》的規(guī)定,達成如下協(xié)議,雙方共同遵守。

第一條 合同性質

本合同屬于軟件測試合同。

第二條 合同內容

乙方為甲方提供《_________軟件》的測試。

以下的測試款項,甲方在購買正式的軟件時,可作為正式購買軟件預付款的一部分抵扣,同時,測試期結束,此合同失效。

第三條 測試方式,費用及支付方式

測試方式為:賬號的測試;_________提供測試服務器測試;客戶出服務器,_________提供測試軟件。

支付方式:a.賬號的測試:合同簽訂后,乙方提供2個帶有_________的賬號(每個賬號有30分鐘的話費)話機或網(wǎng)關,提交甲方測試,測試的費用只收硬件的押金即可。測試結束,乙方按硬件的借側合同執(zhí)行。b._________提供測試服務器測試:由乙方提供整套的已裝有_________軟件帶有公網(wǎng)ip地址的服務器,其管理權由甲方控制,測試期為一個月,測試費用:_________元,合同簽訂后一次付清,即可將服務器的地址與密碼交予甲方。測試結束后全部收回。c.客戶出服務器,_________提供測試軟件:客戶按照乙方的要求將服務器,中繼網(wǎng)關配好后,提交乙方安裝_________軟件,具體的條款見本合同的第四、五、六、七條。測試期為_________個月,費用為_________元人民幣,合同簽訂后一次性付清。

第四條 合同執(zhí)行期限

交貨:甲方將所需要的全部硬件設備配好后(硬件設備配置必須符合乙方系統(tǒng)的要求);乙方應于甲方通知乙方安裝系統(tǒng)之日起_________個工作日內完成軟件系統(tǒng)的安裝和調試。

第五條 驗收標準及時間

乙方安裝和調試竣工資料(包括用戶手冊和/或維護手冊等)。

甲方接到乙方驗收通知后在現(xiàn)場安排驗收,驗收合格后,甲方以書面方式簽收。

第六條 系統(tǒng)培訓

甲方參加系統(tǒng)培訓的人員的基本的要求:熟悉并具有電信操作及運營經(jīng)驗,熟悉英特網(wǎng)及寬帶網(wǎng)的協(xié)議及設計,能熟練操作msie6.0linux9.0cis,熟悉計算機及服務器系統(tǒng)的維護及簡單維修。

第七條 軟件服務內容

7.1 在_________網(wǎng)關及_________接通并通過_________驗收后,_________在_________個工作日內完成遠程_________網(wǎng)關軟件安裝及調試工作。

7.2 在服務器及完整的linux9.0操作系統(tǒng)安裝完畢并通過_________驗收后,_________在_________個工作日內完成遠程軟件安裝及調試工作。

7.3 在以上兩項工作完成之后,_________科技在5個工作日內完成遠程綜合調試工作并提交綜合測試報告。

7.4 售后服務條例:對于使用_________系統(tǒng)服務平臺的運營商,乙方提供許可軟件的售后服務支持

7.5 售后服務指標體系:乙方在接到甲方反映的技術問題30分鐘內電話聯(lián)系一級技術支持并開始工作。經(jīng)常性問題在60分鐘內解決,為解決的問題提供120分鐘進展報告。有難度問題(在24小時內不能解決的問題),提供每12小時進展報告。

7.6 系統(tǒng)的安裝,調試及維護原則上由乙方負責。

7.7 乙方提供的技術支持為_________。

第八條 不可抗力

甲乙雙方的任何一方由于不可抗力的原因不能履行合同時,應及時向對方通報不能履行或不能完全履行的理由,在取得有關主管機關證明以后,允許延期履行,部分履行或者不履行合同,并根據(jù)情況可部分或全部免予承擔違約責任。

第九條 爭議解決方式

在合同履行過程中發(fā)生爭議,雙方應當協(xié)商解決。協(xié)商解決不成,雙方商定,采用向合同簽訂地仲裁委員會仲裁。

第十條 合同生效

本合同正本一式二份,甲乙雙方各執(zhí)一份,經(jīng)雙方簽字蓋章后生效。

甲方(蓋章):_________乙方(蓋章):_________

授權代表(簽字):_________授權代表(簽字):_________

篇2

關鍵詞:軟件可靠性;軟件質量;軟件測試;測試用例



1概述

信息技術的飛速發(fā)展,使軟件產品應用到社會的各個領域,軟件產品的質量自然成為人們共同關注的焦點。軟件開發(fā)商為了占有市場,必須把產品質量作為企業(yè)的重要目標之一,以免在激烈的競爭中被淘汰。用戶為了保證自己業(yè)務的順利完成,總是希望選用優(yōu)質的軟件。質量不佳的軟件產品不僅會使開發(fā)商的維護費用和用戶的使用成本大幅增加,還可能產生其他的責任風險,在一些關鍵應用,如民航訂票系統(tǒng)、銀行結算系統(tǒng)、證券交易系統(tǒng)等中使用質量有問題的軟件,還可能造成災難性的后果。

軟件危機曾經(jīng)是軟件界甚至整個計算機界最熱門的話題,為了解決這個危機,軟件從業(yè)人員、專家和學者做出了大量的努力?,F(xiàn)在人們已經(jīng)逐步認識到所謂的軟件危機實際上僅是一種狀況,那就是軟件中有錯誤,正是這些錯誤導致了軟件開發(fā)在成本、進度和質量上的失控。有錯是軟件的屬性,而且是無法改變的。因為軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。問題在于應該如何去避免錯誤的產生和消除已經(jīng)產生的錯誤,使程序中的錯誤密度達到盡可能低的程度。

軟件工程學出現(xiàn)后,軟件開發(fā)被視為一項工程,以工程化的方法來進行規(guī)劃和管理軟件的開發(fā)。事實上,不論采用什么技術和什么方法,軟件中出現(xiàn)錯誤總是難免的。采用新的語言、先進的開發(fā)方式、完善的開發(fā)過程,可以減少錯誤的引入,但是不可能完全杜絕軟件中的錯誤,這些引入的錯誤需要測試來找出。測試是軟件開發(fā)的重要部分。統(tǒng)計表明,在典型的軟件開發(fā)項目中,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上。而在軟件開發(fā)的總成本中用在測試上的開銷要占30%到50%。如果把維護階段也考慮在內,討論整個軟件生存時期時,測試的成本比例也許會有所降低,但實際上維護工作相當于二次開發(fā),仍至多次開發(fā),其中必定還包含有許多測試工作。系統(tǒng)的問題越早發(fā)現(xiàn),改正成本越低,破壞性越小,所以,在系統(tǒng)前要盡量多地把系統(tǒng)問題找出來,其手段就是有計劃、有組織地進行充分的測試。

軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內部結構而精心設計一組測試數(shù)據(jù),并利用這些測試數(shù)據(jù)運行程序,以發(fā)現(xiàn)程序錯誤的過程。根據(jù)測試數(shù)據(jù)設計方法,軟件測試可分為結構測試和功能測試。在結構測試過程中,測試者對程序的語句、分支和邏輯路徑進行各種覆蓋測試,可以在不同點檢查程序的狀態(tài),以確定實際狀態(tài)與預期狀態(tài)是否一致。軟件測試的目的是發(fā)現(xiàn)錯誤,而不是確認其正確性,而對已進行的測試過程的程度進行評估。

2測試方法

2.1軟件測試實質

軟件測試是一項邏輯性強、且極具條理的工作,也是具有風險性的行為。由于軟件的輸入量、輸出結果、軟件實現(xiàn)途徑都很多,而且軟件產品說明書沒有客觀的標準,導致從不同的角度看,軟件缺陷的標準不同,因而無法對軟件實施完全測試,這樣,就無法通過軟件測試顯示隱藏的軟件缺陷,只能盡量查找軟件缺陷,找到的軟件缺陷越多,說明軟件本身的缺陷就越多,況且還有一些是未發(fā)現(xiàn)、不能斷定的缺陷,這就是軟件測試的局限性。軟件測試與軟件開發(fā)過程的關系如圖1所示。

圖1軟件測試與軟件開發(fā)的關系

所有的軟件測試都有2個關鍵的問題組成:建立能測試應用程序的環(huán)境,并在該環(huán)境中測試軟件能力。測試員必須理解和重新生成軟件所在的復雜軟件環(huán)境,并運用其能力確保正常的測試。

2.2軟件測試手段

從測試是否針對系統(tǒng)的內部結構和具體實現(xiàn)算法的角度來看,可分為白盒測試和黑盒測試。2.2.1黑盒測試

黑盒測試也稱功能測試或數(shù)據(jù)驅動測試,它是在已知產品所應具有的功能情況下,通過測試來檢測每個功能是否都能正常使用。在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)而產生正確的輸出信息并且保持外部信息(如:數(shù)據(jù)庫或文件)的完整性。黑盒法著眼于程序外部結構,不考慮內部邏輯結構,只針對軟件界面和軟件功能進行測試,它主要用于軟件驗收測試。黑盒法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。測試情況實際上有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。

2.2.2白盒測試

白盒測試也稱結構測試或邏輯驅動測試,它是在已知產品內部工作過程情況下,通過測試來檢測產品內部動作是否按照規(guī)格說明書的規(guī)定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都能按預定要求正確工作,而不顧它的功能。白盒測試的主要方法有邏輯驅動、基路測試等,白盒法是窮舉路徑測試,主要用于軟件驗證。

(1)軟件有產品說明書時,對產品說明書實施測試和審查:由于軟件產品說明書屬于文檔,因此對產品說明書的測試是黑盒測試。在實施測試時要弄清所開發(fā)軟件的客戶,并熟悉現(xiàn)有的標準和規(guī)范,基于同類軟件測試的經(jīng)驗進行測試。除了這些,如果時間和條件允許,應該對產品說明書進行審查,按照相關的標準,看產品說明書是否符合要求。這都是通常的一些做法,當然還可以采用其他軟件檢測方法。

(2)由于當前軟件開發(fā)有時不是很正規(guī),在沒有產品說明書時應使用試探性測試:首先要分步驟地弄清軟件特性,記錄軟件運行情況,詳細描述軟件功能,然后運用靜態(tài)和動態(tài)黑盒測試兩種方式來測試軟件,發(fā)現(xiàn)軟件缺陷,在這種情況下,可以將一些非法、錯誤和垃圾數(shù)據(jù)作為輸入數(shù)據(jù),以檢驗軟件的輸出結果。測試時可采用反復測試、邊界值測試和不合條件等方法。

(3)對有些軟件實施狀態(tài)測試:首先是熟悉軟件的邏輯流程,可能的話,建立狀態(tài)轉換圖,盡量清晰地描繪軟件可能的獨立狀態(tài),從一種狀態(tài)到另一種狀態(tài)所允許的輸入和條件,以及進入或退出某種狀態(tài)時的設置條件和輸出結果;如果要測試的軟件規(guī)模較大、復雜性較高,那么建立狀態(tài)轉換圖將是非常艱巨的任務,這時減少要測試的狀態(tài)及狀態(tài)的數(shù)量,但是必須保證每種狀態(tài)都必須測試一次,也可以在狀態(tài)測試時選擇那些不常用的分支,因為這是最容易被忽略的。在此基礎上,測試所有的錯誤狀態(tài)及返回值,測試隨機狀態(tài)轉換。

(4)在前述測試的基礎上,對有些測試實施失敗狀態(tài)測試:具體在實施時,指的是幾個時間對某一資源競爭使用,比如:

①兩個不同的程序同時保持或打開同一個文檔。

②共享同一臺設備。

③當軟件處于讀取或者修改狀態(tài)時按鍵或者單擊鼠標。

④同時關閉或者啟動同一個軟件的多個實例。

⑤使用不同的程序同時訪問同一個數(shù)據(jù)庫。

類似這樣的競爭條件還有很多,不一一舉例。

(5)在實際測試時還常用反復、壓迫和重負測試,實施這些測試的目的是考驗軟件在惡劣條件下是否能正常運行和退出,從而驗證軟件的性能。反復測試指的是不斷地執(zhí)行同樣的操作;壓迫測試是使用軟件在不夠理想的條件下運行,從而觀察軟件對外部資源的要求和依賴程度,借此來測試軟件的性能;重負測試是指盡量提供條件任其發(fā)揮,讓軟件處理盡可能大的數(shù)據(jù)文件,即最大限度地發(fā)掘軟件的能力,使之不堪重負,大多數(shù)情況下,用時間作為參數(shù)實施重負測試,看其在重負情況下能否正常運行。實際測試時,常將三種測試方法結合起來使用。

(6)測試軟件的另一種有效方法就是進行正式審查,其中包括以下幾個方面:確定問題、制定審查規(guī)則、準備工作以及編寫報告,進行審查的主要方法就是組織熟悉該類軟件的人員逐一檢查代碼,其中重要的軟件還需要按能力成熟度(CMM)中的要求進行同行評審。

(7)在實際測試中經(jīng)常采用一種稱之為動態(tài)白盒測試的方法,其意義是指利用查看代碼功能和實現(xiàn)方式得到的信息來確定哪些要測試,哪些不需要測試,以及如何開展測試。其中不僅是查看代碼,還包括直接測試和控制軟件。包括以下幾個部分:

①直接測試底層功能、過程、子程序和庫。

②根據(jù)軟件運行的實際情況不斷地調整測試用例。

③對軟件中的部分變量和狀態(tài)信息進行訪問,確定測試與預期結果是否相符,并強制軟件以正常測試難以實現(xiàn)的方式運行。在具體實施時應分階段地進行測試,即遵循單元測試、集成測試、配置項測試和系統(tǒng)測試的步驟。目前,灰盒測試逐漸為大家認同,灰盒測試綜合了白盒測試和黑盒測試的優(yōu)點,模糊了兩者的界限,在做法上仍然把軟件當成黑盒來測試,但是通過簡單地查看(不像白盒那樣進行完整地查看)軟件內部工作機制作為補充?,F(xiàn)在的網(wǎng)頁制作就很適合灰盒測試。

3結束語

軟件測試的目的不是為了僅僅找出錯誤,而是通過它發(fā)現(xiàn)錯誤、分析錯誤,找到錯誤的分布特征和規(guī)律,從而幫助項目管理人員發(fā)現(xiàn)當前所采用的軟件開發(fā)過程的缺陷,以便改進;同時也能夠通過設計有針對性的檢測方法,改善軟件測試的有效性。即使測試沒有發(fā)現(xiàn)任何錯誤,也是十分有價值的,因為完整的測試不僅可以給軟件質量進行一個正確的評價,而且是提高軟件質量的重要方法之一。

參考文獻

篇3

關鍵詞:軟件測試;滿足需求;可靠性

Software Test

Dalian maritime University in Liaoning province Xu Xinghao

Abstract: With the development of science and technology, the function of software is becoming more and more powerful. The complexity of software is increasing so fast that it is very difficult to test and assess the reliability of software. As an important part of software development, software testing has been paid more and more attention. The importance of software testing is more prominent. In order to ensure the quality of a software system, it is necessary to specialize in software testing and method for assessment of reliability. This paper is something about studying in this area.

Key words: software testing; meet demand; reliability

1 引言

隨著科學技術的飛速發(fā)展,硬件發(fā)雜性、多樣性和應用的復雜性增加,軟件系統(tǒng)的復雜性和規(guī)模也在不斷增大,軟件安全性和質量的保證成為各大公司及個人日益關注的焦點,軟件中存在的各種問題也逐漸成為制約我國軟件產業(yè)發(fā)展的主要因素。后期的軟件測試工作可以說是為軟件產品的完工把好最后一道關,是檢驗軟件產品最為重要的一步。所以軟件測試在軟件開發(fā)中的地位日趨升高、軟件測試員的地位也在日益提高。

我們先簡單的分析一下軟件缺陷產生的原因。軟件在投入運行之前會先進行軟件測試,但運行前的軟件測試是根據(jù)軟件的需求分析、設計規(guī)格和編碼實現(xiàn)為審定目標。但程序中的故障并一定是由編碼引起的,大多數(shù)的軟件缺陷可能是在系統(tǒng)詳細設計階段、概要設計階段甚至是在需求分析階段就存在問題所導致。在軟件開發(fā)過程中,需求的更改、軟件說明書的描述開發(fā)小組人員間的交流都可能導致軟件程序出現(xiàn)缺陷。而軟件測試是最大限度避免軟件缺陷產生的最好途徑[1]。本文系統(tǒng)的介紹了有關軟件測試的各階段及其用途。

2 軟件測試的定義

軟件測試(Software testing)是軟件生存期(Software life cycle)中的一個重要階段,是軟件質量保證的關鍵步驟。通俗地講,軟件測試就是在軟件投入運行前,對軟件需求分析、設計規(guī)格說明和編碼進行最終復審的活動。1983年IEEE提出的軟件工程術語中給軟件測試下的定義是:“使用人工或自動的手段來運行或測定某個軟件系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或弄清預期結果與實際結果之間的差別”。這個定義明確指出:軟件測試的目的是為了檢驗軟件系統(tǒng)是否滿足需求[2]。

從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程”?;蛘哒f,軟件測試應該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內部結構而精心設計一批測試用例(即輸入數(shù)據(jù)及其預期的輸出結果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤或缺陷。

3 軟件測試的生命周期

軟件測試就是軟件在投入運行前,對軟件需求分析、設計規(guī)格和編碼是的最終審查,他是保證軟件質量的關鍵步驟。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序并根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內部結構而精心設計的測試。下圖為一個測試生命周期模型。

軟件測試不僅僅是對程序的測試,而是貫穿于軟件定義和開發(fā)的整個過程,因此,軟件開發(fā)過程中產生的需求分析、概要設計、詳細設計以及編碼等各個階段所得到的文檔,包括需求規(guī)格說明、概要設計規(guī)格說明、詳細設計規(guī)格說明以及源程序,都是軟件測試的對象[3]。軟件測試在軟件生命周期,也就是軟件從開發(fā)設計、運行、直到結束使用的全過程中,主要橫跨單元測試階段和綜合測試階段,即要在每個模塊編寫出以后進行測試、在完成單元測試后進行的測試,如集成測試、系統(tǒng)測試、驗收測試等。

4 軟件測試的目的

軟件測試的目的,第一是確認軟件的質量,其一方面是確認軟件做了你所期望的事情(Do the right thing),另一方面是確認軟件以正確的方式來做了這個事件(Do it right)。第二是提供信息,比如提供給開發(fā)人員或程序經(jīng)理的反饋信息,為風險評估所準備的信息。 第三軟件測試不僅是在測試軟件產品的本身,而且還包括軟件開發(fā)的過程。如果一個軟件產品開發(fā)完成之后發(fā)現(xiàn)了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。因此軟件測試的第三個目的是保證整個軟件開發(fā)過程是高質量的。

軟件質量是由幾個方面來衡量的:一、在正確的時間用正確的的方法把一個工作做正確(Doing the right things right at the right time.)。二、符合一些應用標準的要求,比如不同國家的用戶不同的操作習慣和要求,項目工程中的可維護性、可測試性等要求。三、質量本身就是軟件達到了最開始所設定的要求,而代碼的優(yōu)美或精巧的技巧并不代表軟件的高質量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、質量也代表著它符合客戶的需要(Quality also means “meet customer needs”.)。作為軟件測試這個行業(yè),最重要的一件事就是從客戶的需求出發(fā),從客戶的角度去看產品,客戶會怎么去使用這個產品,使用過程中會遇到什么樣的問題。只有這些問題都解決了,軟件產品的質量才可以說是上去了[4]。

測試人員在軟件開發(fā)過程中的任務:

1、尋找Bug;

2、避免軟件開發(fā)過程中的缺陷;

3、衡量軟件的品質;

4、關注用戶的需求。

總的目標是:確保軟件的質量

5軟件測試方法及流程

軟件測試方法主要有黑箱測試方法與白箱測試兩類。黑箱測試又稱功能測試、數(shù)據(jù)驅動測試或基于規(guī)格說明的測試,是在完全不考慮程序內部結構和內部特性的情況下,檢查輸入與輸出之間關系是否符合要求。白箱測試又稱結構測試、邏輯驅動測試或基于程序的測試,是在已知程序內部結構的情況下設計測試用例的測試方法。顯然,白箱測試適合在單元測試中運用,而在獨立測試階段多采用黑箱測試方法。

測試用例(Test case)實際上是對軟件運行過程中所有可能存在的目標、運動、行動、環(huán)境和結果的描述,是對客觀世界的一種抽象。設計測試用例即設計針對特定功能或組合功能的測試方案,并編寫成文檔。測試用例應該體現(xiàn)軟件工程的思想和原則。測試用例的選擇既要有一般情況,也應有極限情況以及最大和最小的邊界值情況[5]。因為測試的目的是暴露應用軟件中隱藏的缺陷,所以在設計選取測試用例和數(shù)據(jù)時要考慮那些易于發(fā)現(xiàn)缺陷的測試用例和數(shù)據(jù),結合復雜的運行環(huán)境,在所有可能的輸入條件和輸出條件中確定測試數(shù)據(jù),來檢查應用軟件是否都能產生正確的輸出。

軟件測試所得到的數(shù)據(jù)經(jīng)過處理以后,可以用來作為評估軟件系統(tǒng)是否滿足用戶需求的依據(jù)。軟件測試階段的信息流如下圖所示:

6 結語

軟件系統(tǒng)的規(guī)模也在持續(xù)擴大,需求日益復雜,對軟件質量的要求也越來越高。但現(xiàn)實中軟件系統(tǒng)的質量和穩(wěn)定性卻不盡如人意,采用有效的軟件測試是保證軟件質量、提高軟件可靠性的重要手段。

軟件測試是產品最終交付到用戶之前的最后一道防線,有著舉足輕重的地位。然而,做好軟件測試卻是不容易的,一方面你需要同時掌握軟件開發(fā)的技能和軟件測試方面的技能;另一方面,產品必須給予測試充分的獨立性和資源保證。

軟件測試是發(fā)現(xiàn)軟件中錯誤而檢查文檔、運行程序的一個過程。軟件測試的概念雖然是和軟件編程同時提出的,但發(fā)展速度卻遠遠沒有編程技術快。近十幾年來,隨著軟件應用的迅速推廣,對軟件測試也變得迫切需要,各種針對性的測試方法和技術不斷出現(xiàn)。

軟件測試前景被極為看好,我們相信,在不久的將來,軟件測試會成為軟件行業(yè)的主題被越來越多的人更廣泛的重視。

參考文獻

[1].楊為民等,可靠性維修性保障性叢書,國防工業(yè)出版社,1995.

[2].張海藩,軟件工程,人民郵電出版社,2008.

[3].Daniel J.Mosley, Bruce A.Posey,軟件測試自動化,機械工業(yè)出版社,2007.

[4].梅啟智、廖炯生、孫惠中,系統(tǒng)可靠性工程基礎,科學出版社,1992.

篇4

關鍵詞:軟件測試;方法;技術

白盒測試也稱結構測試或邏輯驅動測試。它是按照程序內部的邏輯結構測試程序,主要關注代碼是否能夠正確執(zhí)行。通過白盒測試可以檢測出產品內部動作是否按照設計規(guī)格說明書的規(guī)定正常工作,并檢驗程序中的每條通路是否都能按預定要求正確工作。白盒測試是把測試對象看作一個透明的盒子,軟件測試人員能夠依據(jù)程序內部邏輯結構等相關信息,設計或選擇測試用例,對程序進行測試。通過在不同的節(jié)點檢查程序的狀態(tài),以保證實際的狀態(tài)和預期的狀態(tài)一致。

3.灰盒測試

灰盒測試,是介于白盒測試與黑盒測試之間的??梢赃@樣理解,灰盒測試關注輸出對于輸入的正確性,同時也關注內部表現(xiàn),但這種關注不像白那樣詳細、完整,只是通過一些表征性的現(xiàn)象、事件、標志來判斷內部的運行狀態(tài),有時候輸出是正確的,但內部其實已經(jīng)錯誤了,這種情況非常多,如果每次都通過白盒測試來操作,效率會很低,因此需要采取這樣的一種灰盒的方法。

二、 軟件測試技術的策略

軟件測試并不單是軟件開發(fā)完成后的一個獨立的過程,而是貫穿于整個軟件開發(fā)的過程,根據(jù)軟件開發(fā)的周期不同,可以將軟件測試分為:單元測試、集成測試、確認測試、系統(tǒng)測試和驗收測試。

1.單元測試(Unit Testing)

單元測試是在軟件開發(fā)過程中能夠進行的最基礎的測試活動,在單元測試活動中,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。單元測試不僅僅是作為無錯編碼一種輔助手段在一次性的開發(fā)過程中使用,單元測試必須是可重復的,無論是在軟件修改,或是移植到新的運行環(huán)境的過程中。因此,所有的測試都必須在整個軟件系統(tǒng)的生命周期中進行維護。

2.集成測試(Integrated Testing)

集成測試,也叫組裝測試或聯(lián)合測試。在單元測試的基礎上,將所有模塊按照設計要求(如根據(jù)結構圖)組裝成為子系統(tǒng)或系統(tǒng),進行集成測試。實踐表明,一些模塊雖然能夠單獨地工作,但并不能保證連接起來也能正常的工作。程序在某些局部反映不出來的問題,在全局上很可能暴露出來,影響功能的實現(xiàn)。因此,單元測試后,有必要進行集成測試,發(fā)現(xiàn)并排除在模塊連接中可能發(fā)生的問題,最終構成要求的軟件子系統(tǒng)或系統(tǒng)。對子系統(tǒng),集成測試也叫部件測試。

3.確認測試(Validation Testing)

確認測試又稱有效性測試。有效性測試是在模擬的環(huán)境下,運用黑盒測試的方法,驗證被測軟件是否能夠按照需求規(guī)格說明書中所要求的工作。任務是驗證軟件的功能和性能及其他特性是否與用戶的要求一致。對軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定,它包含的信息就是軟件確認測試的基礎。確認測試的目的是向未來的用戶表明系統(tǒng)能夠像預定要求那樣工作。經(jīng)集成測試后,已經(jīng)按照設計把所有的模塊組裝成一個完整的軟件系統(tǒng),接口錯誤也已經(jīng)基本排除了,接著就應該進一步驗證軟件的有效性,這就是確認測試的任務,即軟件的功能和性能如同用戶所合理期待的那樣。

4.系統(tǒng)測試(System Testing)

系統(tǒng)測試的任務是盡可能徹底地檢查出程序中的錯誤,提高軟件系統(tǒng)的可靠性,其目的是檢驗系統(tǒng)“做得怎樣”。這階段又可分為三個步驟:模塊測試,測試每個模塊的程序是否有錯誤;組裝測試,測試模塊之間的接口是否正確;確認測試,測試整個軟件系統(tǒng)是否滿足用戶功能和性能的要求。該階段結束應交付測試報告,說明測試數(shù)據(jù)的選擇,測試用例以及測試結果是否符合預期結果。

三、軟件測試未來發(fā)展方向

目前,軟件測試存在4個發(fā)展方向。

1.驗證技術

驗證的目的在于證明在軟件生命期各個階段,以及階段間的邏輯協(xié)調性和正確性。驗證技術目前僅適用于特殊用途的小程序。

2.靜態(tài)測試

正逐步地從代碼的靜態(tài)測試往高層開發(fā)產品的靜態(tài)測試發(fā)展。

3.測試用例的選擇

什么樣的測試用例是好的測試用例?可以從4個特性描述測試用例的質量,即有效性、仿效性、經(jīng)濟性和修改性。

4.測試技術的自動化

這是一個最新的發(fā)展方向。自動測試也是一門技術,但與測試技術存在很大的區(qū)別。

參考文獻:

篇5

關鍵詞:軟件測試;軟件測試技術;自動化測試;測試工具

中圖分類號:TP311.5 文獻標識碼:A

The Status Quo of Software Testing Technology

LI Jing, GUO Xiao-lei

(Software Vocational and Technical College,Kaifeng University,Henan Kaifeng 475004)

Key words: software testing; software testing techniques;automated testin; testing tools

1 軟件測試概述與必要性

軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。問題在于應該如何去避免錯誤的產生和消除已經(jīng)產生的錯誤,使程序中的錯誤密度達到盡可能低的程度。

隨著軟件規(guī)模的增大,軟件的復雜程度也越來越大,與其他系統(tǒng)的接口不斷增多應用越來越廣泛,集成度越來越高,這使得沒有現(xiàn)代軟件開發(fā)經(jīng)驗的人很難理解它。為了盡可能地減少錯誤,軟件測試這一環(huán)節(jié)必須得到重視。

中國軟件外包市場巨大,國內軟件外包服務多屬于為客戶提供技術和質量服務的中間環(huán)節(jié)。以占中國軟件外包總量近85%的對日軟件外包來說,業(yè)務內容基本都針對測試環(huán)節(jié)。這就要求我們加強對軟件測試的重視。

質量不佳的軟件產品不僅會使開發(fā)商的維護費用和用戶的使用成本大幅增加,還可能產生其他的責任風險,在一些關鍵應用,如民航訂票系統(tǒng)、銀行結算系統(tǒng)、證券交易系統(tǒng)等中使用質量有問題的軟件,還可能造成災難性的后果。這使得軟件測試環(huán)節(jié)顯得尤為重要。

2 軟件測試技術分析

2.1軟件測試的概念

軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內部結構而精心設計一組測試數(shù)據(jù),并利用這些測試數(shù)據(jù)運行程序,以發(fā)現(xiàn)程序錯誤的過程。根據(jù)測試數(shù)據(jù)設計方法,軟件測試可分為結構測試和功能測試。在結構測試過程中,測試者對程序的語句、分支和邏輯路徑進行各種覆蓋測試,可以在不同點檢查程序的狀態(tài),以確定實際狀態(tài)與預期狀態(tài)是否一致。軟件測試的目的是發(fā)現(xiàn)錯誤,而不是確認其正確性,而對已進行的測試過程的程度進行評估。

2.2軟件測試的目的

軟件測試的目的是為了保證軟件產品的最終質量,在軟件開發(fā)的過程中,對軟件產品進行質量控制。一般來說軟件測試應由獨立的產品評測中心負責,嚴格按照軟件測試流程,制定測試計劃、測試方案、測試規(guī)范,實施測試,對測試記錄進行分析,并根據(jù)回歸測試情況撰寫測試報告。測試是為了證明程序有錯,而不能保證程序沒有錯誤。

2.3軟件測試的方法和過程

軟件測試的種類可以分為人工測試和基于計算機的測試。而基于計算機的測試又可以分為白盒測試和黑盒測試。原則上講,軟件測試分為靜態(tài)測試和動態(tài)測試兩類。靜態(tài)測試包括代碼審查和靜態(tài)分析,動態(tài)測試包括白盒測試和黑盒測試。[2]

測試雖然是軟件生存周期的一個獨立階段,但測試工作卻滲透到從分析、設計直到編程的各個階段中,如測試計劃的編寫從分析和設計階段就開始了,而具體的測試工作隨編程工作的不斷深入也在進行中。在實際工作中,測試環(huán)節(jié)可分為明顯的、同等重要的三個階段:即單元測試、集成測試(又稱構件測試)和系統(tǒng)測試。

2.3.1單元測試

軟件單元定義了一個軟件很底層的塊,用PB開發(fā)的客戶機/服務器的軟件系統(tǒng)中,一個窗口、函數(shù)、菜單、報表或一個存儲過程都可以作為一個單元進行測試。單元測試是測試的第一步。由開發(fā)者自己進行測試最合適,一般采用白盒測試。

2.3.2集成測試

在將所有的單元經(jīng)過測試以后,接著進行集成測試。集成測試也稱綜合測試,即將已分別通過測試的單元按要求組合起來再進行的測試,以檢查這些單元之間的接口是否存在問題。要求參與的人熟悉單元的內部細節(jié),又要求他們能夠從足夠高的層次上觀察整個系統(tǒng)。集成測試階段是以黑盒法為主,在自底向上集成的早期,白盒法測試占一定的比例,隨著集成測試的不斷深入,這種比例在測試過程中將越來越少,漸漸地,黑盒法測試占據(jù)主導地位。

2.3.3系統(tǒng)測試

系統(tǒng)測試是整個測試階段的最后一步,所有的開發(fā)和測試在這一點上集中表現(xiàn)為生成一個具有一定功能的軟件系統(tǒng)。該階段主要對系統(tǒng)的準確性及完整性等方面進行測試。主要進行:功能確認測試、運行測試、強度測試、恢復測試、安全性測試等。系統(tǒng)測試的測試人員由測試組成員(或質量保證人員)或測試組成員與用戶共同測試。在整個系統(tǒng)開發(fā)完成,即將交付用戶使用前進行。在這一階段,完全采用黑盒法對整個系統(tǒng)進行測試。

3 軟件測試方法與軟件測試工具

3.1軟件測試方法

軟件測試方法是軟件測試技術的一個重要的組成部分,引入自動化測試可以提高軟件質量,節(jié)省經(jīng)費,縮短軟件產品的周期。軟件測試自動化就是通過測試工具或其他手段,按照測試工程師的預定計劃對軟件產品進行自動的測試,它是軟件測試的一個重要組成部分,能夠完成許多手工無法完成或者難以實現(xiàn)的一些測試工作。[3]

3.2軟件測試工具

自動化測試工具可以減少測試工作量,提高測試工作效率。在實際應用中,首先是能夠選擇一個合適的且滿足企業(yè)信息系統(tǒng)工程壞境的自動化測試工具,因為不同的測試工具,其面向的測試對象是不一樣的。按照測試工具的主要用途和應用領域將測試軟件做了一個整理歸納,將自動化測試工具分為以下幾類:

3.2.1捕獲錯誤用途

用于捕獲軟件錯誤或程序調試。常用的軟件:一個是開發(fā)人員自行編寫的測試工具;另一個是利用所使用的開發(fā)工具的調試功能或工具;最后就是購買專業(yè)的調試軟件。如:Compuware NuMega推出的一系列的調試軟件。

3.2.2一般用途

一般用途的測試工具在進行測試時,可以適用大部分的軟件。如Sysinternals網(wǎng)站提供的一些免費軟件。

3.2.3GUI自動化用途

這類軟件除了提供在窗口界面中使用外,也有不少是針對瀏覽器窗口開發(fā)的自動化測試工具。主要代表:Rational公司的Robot、Compuware的QARun等。

3.2.4專項用途

以專項用途為主的測試工具,就是某種專項測試的軟件。專用代碼測試工具:BoundsChecke、CodeReview、JCheck;白盒測試工具:Logiscope和PRQA、DevPartner、Rational Purify系列等;網(wǎng)絡測試工具:Network Associates提供的Network Sniffer。

3.2.5軟件產品功能、性能測試用途

IBM Rational系列包括多款測試產品,如功能測試工具IBM Rational Manual Tester、IBM Rational Functional Tester和IBM Rational Robot。如性能測試工具:手動測試工具IBM Rational Performance Tester和IBM Rational Robot。(Robot包括功能測試和性能測試)

3.2.6測試管理工具

一般而言,測試管理工具對測試需求、測試計劃、測試用例、測試實施進行管理,并且測 試管理工具還包括對缺陷的跟蹤管理。測試管理工具能讓測試人員、開發(fā)人員或其他的IT人員 通過一個中央數(shù)據(jù)倉庫,在不同地方就能交互信息。主要代表:TestDirector MI的測試管理工具、TrackRecord、Bugzilla、QC(quick center)。

3.2.7測試輔助工具

這些工具本身并不執(zhí)行測試,例如它們可以生成測試數(shù)據(jù),為測試提供數(shù)據(jù)準備。常用工具:SmartDraw、SDemo。

4 結束語

軟件測試是軟件工程的一個范疇。軟件測試是有計劃、有目的的工程性的活動。軟件測試是使用人工或者自動化的手段來運行或測試某個系統(tǒng)的過程其目的在于檢驗是否滿足某種預期的結果。軟件測試目的是發(fā)現(xiàn)錯誤。一個好的測試用例是發(fā)現(xiàn)未發(fā)現(xiàn)的錯誤。一個經(jīng)過測試的軟件不能就說是完全正確的。軟件測試是保證軟件質量的一個重要手段。因此,軟件測試應該貫穿與軟件工程的始終。

參考文獻:

[1]王水.軟件工程[M].鄭州:河南科學技術出版社,2008.

篇6

Abstract: As an important phrase in software lifecycle,software testing is effective to ensure software quality. This paper analyses the basic ideas of present techniques and discusses the research contents and problems.

關鍵詞: 軟件測試;軟件質量;Web測試

Key words: software testing;software quality;Web testing

中圖分類號:TP31文獻標識碼:A文章編號:1006-4311(2010)22-0156-01

0引言

軟件測試是保證軟件質量和可靠性的重要手段。軟件測試是軟件生命周期的一個重要組成部分,貫穿整個開發(fā)過程。軟件測試是保證軟件達到高質量和高可靠性的關鍵元素?,F(xiàn)有的軟件測試技術通常分為靜態(tài)測試和動態(tài)測試。根據(jù)測試對象和研究側重點的不同,目前軟件測試技術的研究大多在以下方面:

1白盒測試

白盒測試是對軟件的過程性細節(jié)做細致的檢查,把測試對象看做一個打開的盒子,允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試,因此又被稱為結構測試或邏輯驅動測試。對白盒測試的研究主要在提高軟件的各種覆蓋率上,如文獻[1、2]。目前一般認為,基于同一測試覆蓋準則,測試覆蓋率越高,軟件的可靠性或可信性就越高。

2黑盒測試

黑盒測試[2]將被測對象看作一個打不開的黑盒,測試人員在不考慮程序內部結構和內部特性的情況下,只依據(jù)需求規(guī)格說明書,設計測試用例,檢查程序的功能是否按照規(guī)范說明的規(guī)定正確地執(zhí)行。它著重于驗證軟件功能和性能的正確性,典型測試項目包括功能測試、性能測試、邊界側試、余量測試、強度測試等。黑盒測試主要缺點是:測試結果取決于測試例的設計,而測試例的設計部分來源于經(jīng)驗,沒有狀態(tài)轉換的概念,給尋找和確定程序缺陷帶來困難。

3性能測試

性能測試主要測試軟件處理事務的速度,一是檢驗軟件性能是否符合要求,二是得到某些客戶感興趣的數(shù)據(jù)以供軟件產品宣傳。目前性能測試工具偏向于多用戶的并發(fā)操作,側重于負載壓力的產生和服務器的監(jiān)控,忽略負載壓力情況下的功能不穩(wěn)定問題。文獻[3]指出性能測試時中間件的license、數(shù)據(jù)庫的用戶數(shù)有時影響系統(tǒng)的性能,測試時需綜合分析,以得到準確結果。

4Web測試

基于Web的系統(tǒng)測試與傳統(tǒng)的軟件測試不同,它需要檢查和驗證是否按照設計的要求運行,而且還測試系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適,并從最終用戶的角度進行安全性和可用性測試。研究人員針對Web應用的交互、動態(tài)等特性進行深入分析,探討Web應用的相關測試方法和技術。

4.1 Web應用模型的研究文獻[4]提出一種基于非確定Petri網(wǎng)的鏈接模型;文獻[5]將Web測試模型分為對象內部模型、交互關系模型和體系結構模型3個層次,分別對應測試內容的不同范圍和階段,即單元測試、交互測試和集成測試。

4.2 Web可用性測試方法文獻[6]針對目前各Web服務間采用統(tǒng)一的SOAP協(xié)議進行通訊,提出基于協(xié)議對Web服務程序進行測試的方法;文獻通過分析Web站點服務器端的日志文件得到的統(tǒng)計數(shù)據(jù),從獨特的角度探討如何進行有效的Web站點測試,提出切實可行的測試方法。

4.3 Web測試自動化的研究目前Web測試的自動化多采用捕捉―回放工具(Capture-Replay)的工作過程和相關技術,但Web應用中有很多動態(tài)生成的頁面且變動非常頻繁,捕捉―回放技術不能完全勝任。因而文獻提出通過使用具備一定智能的Agent建立起高效的Web應用測試執(zhí)行方案。

4.4 其他方面的研究文獻利用語義標注和XML描述技術實現(xiàn)Web頁面中數(shù)據(jù)與顯示信息的分離,并引入反饋控制機制,把測試結果反饋給Web應用本身。文獻提出一種Web服務測試數(shù)據(jù)自動生成方法;它基于Web服務的功能說明隨機地生成初始測試數(shù)據(jù),然后使用合約變異技術進行測試數(shù)據(jù)選擇,以生成一組達到一定合約變異充分度的有效測試數(shù)據(jù)。

5面向對象軟件測試

面向對象技術具有多態(tài)、繼承、封裝等特點,使傳統(tǒng)測試技術無法對面向對象軟件進行有效的測試。宏觀上面向對象軟件是各個類之間的相互作用,系統(tǒng)的基本構造模塊是封裝的數(shù)據(jù)和方法的類和對象。對象中的數(shù)據(jù)和方法是一個有機的整體,測試過程不僅檢查輸入數(shù)據(jù)產生的輸出結果是否與預期的吻合,還考慮對象的狀態(tài)。

為使設計的軟件測試工具具有良好的語言無關性,文獻設計一種程序劃分機制,它針對基于狀態(tài)的面向對象軟件的類測試過程中存在的不可預測、不可達狀態(tài)、狀態(tài)組合“爆炸”和測試用例“爆炸”等問題,提出基于EDPN(Event-driven petri network)模型的類測試、類的交互測試和類的層次測試框架,設計相應的測試模型。此外,研究人員對面向對象的測試策略和面向對象的回歸測試等方面,根據(jù)其特點提出相應的新的思想和方法,如將多Agent系統(tǒng)引入面向對象的測試中等。

6總結

人類發(fā)展是一個發(fā)現(xiàn)問題,解決問題的改善過程。軟件業(yè)的發(fā)展帶來的問題,需要通過軟件測試來解決,因此軟件測試受到越來越多的關注和推廣。同時面向對象、Agent 等新技術的應用為軟件測試發(fā)展帶來新的機遇。

參考文獻:

[1]毛志雄.軟件測試理論與實踐.北京:中國鐵道出版社,2008.

[2]曹曉勇.軟件測試工具的分類和使用.信息系統(tǒng)工程,2009,9,8: 81-84.

[3]蔡立志,楊根興.軟件系統(tǒng)性能測試方法初探.信息技術與標準化,2005,(7): 44-50.

[4]路曉麗等.Web應用軟件測試模型的研究和構建.計算機科學,2006,33(1):175-176,271.

篇7

關鍵詞:軟件測試;集成測試;調用圖;MM-路徑

中圖分類號:TP317文獻標識碼:A文章編號:1007-9599 (2012) 03-0000-02

Analysis of Integration Testing of Software Testing

Hou Yanfang,Chu Shulai

(Zhoukou Vocational and Technical College,Zhoukou466001,China)

Abstract:The integration testing plays a very important role in software testing,the concept of integration testing,integration testing strategy and the main types of integration testing (phase) briefly discusses the analysis of several key integration testing.

Keywords:Software testing;Integration testing;Call graph;MM-path

軟件測試作為軟件質量保證的關鍵技術之一,其目的就是能夠有效地發(fā)現(xiàn)軟件中的錯誤或缺陷。集成測試是軟件測試中處于組件測試和系統(tǒng)測試之間一個非常重要的環(huán)節(jié),這是因為所有組件都經(jīng)過測試并能正常運行并不意味著這些組件放到一起經(jīng)過集成后還能正常運行,正是基于這一點,很多大的軟件公司成立了專門關注集成測試的測試團隊,如能恰當實施,集成測試能大大減少一些在系統(tǒng)測試階段才會發(fā)現(xiàn)的缺陷。

一、集成測試的概念

(一)集成測試的定義

集成測試是構造軟件體系結構的系統(tǒng)化技術,同時也是進行一些旨在發(fā)現(xiàn)與接口相關的錯誤的測試。其目標是利用已通過單元測試的構件建立設計中描述的程序結構。

(二)集成測試遵循的原則

集成測試遵循的原則主要包括:所有公共接口都要被測試到;關鍵模塊必須進行充分的測試;集成測試應當按一定的層次進行;集成測試的策略選擇應當綜合考慮質量、成本和進度之間的關系;集成測試應當盡早開始,并已總體設計為基礎;在模塊與接口的劃分上,測試人員應當和開發(fā)人員進行充分的溝通;當接口發(fā)生修改時,涉及的相關接口必須進行再測試;測試執(zhí)行結果應當如實的記錄;集成測試應根據(jù)集成測試計劃和方案進行,不能隨意測試;項目管理者應保證審核測試用例。

(三)集成測試的任務

集成測試的主要任務包括:將各模塊連接起來,檢查模塊相互調用時,數(shù)據(jù)經(jīng)過接口是否丟失;將各個子功能組合起來,檢查能否達到預期要求的各項功能;一個模塊的功能是否會對另一個模塊的功能產生不利的影響;全局數(shù)據(jù)結構是否有問題,會不會被異常修改;單個模塊的誤差積累起來,是否被放大,從而達到不可接受的程度。

(四)集成測試的文檔

軟件集成的總體計劃和特定的測試描述應該在測試規(guī)約中文檔化。這個文檔包含測試計劃和測試規(guī)程,它是軟件過程的工作產品,也是軟件配置的一部分。

下列準則和相應的測試可應用于所有的測試階段:接口一致性。當每個模塊(或簇)引入程序結構中時,要對其內部和外部接口進行測試;功能有效性。執(zhí)行的測試旨在發(fā)現(xiàn)功能錯誤;信息內容。執(zhí)行的測試旨在發(fā)現(xiàn)與局部或全局數(shù)據(jù)結構相關的錯誤;性能。執(zhí)行的測試旨在驗證軟件設計期間建立的性能邊界。

測試計劃主要包括:集成測試的進度,確定每個階段的開始和結束時間;附加軟件(樁模塊及驅動模塊)的簡要描述側重于專門進行的工作的特征;描述測試環(huán)境和資源;特殊的硬件配置、特殊的仿真器和專門的測試工具或技術也是需要討論的問題;詳細測試規(guī)程。

測試規(guī)約:集成策略(包含在測試計劃中)和測試細節(jié)(在測試規(guī)程中描述)是最基本的成分,因此必須要有。

二、集成測試的策略

驅動模塊(Driver):用來模擬待測模塊的上級模塊。驅動模塊在集成測試中接受測試數(shù)據(jù),將相關的數(shù)據(jù)傳送給待測模塊,啟動待測模塊,并打印出相應的結果。樁模塊(Stub):也稱為存根程序,用以模擬待測模塊工作過程中所調用的模塊。樁模塊由待測模塊調用,它們一般只進行很少的數(shù)據(jù)處理,例如打印入口和返回,以便于檢驗待測模塊與下級模塊的接口。

一般可分為非增量集成和增量式集成,其中增量集成指的是程序以小增量的方式逐步進行構造和測試,這樣錯誤易于分離和糾正,更易于對接口進行徹底測試,而且可以運用系統(tǒng)化的測試方法,傳統(tǒng)的將增量測試策略分為自頂向下集成、自底向上集成以及三明治集成。

三、集成測試的主要類型(階段)

(一)基于功能分解的集成

在討論集成測試時,測試方法都基于采用樹或文字形式來表示的功能分解。這類討論不可避免地要深入到將要集成的模塊的順序。

1.自頂向下集成(從樹頂開始向下)。深度優(yōu)先集成是首先集成結構中主控路徑下的所有模塊。

2.自底向上集成(從樹底開始向上)。自底向上集成是自頂向下順序的“鏡像”,不同的是,樁由模擬功能分解樹上一層單元的驅動模塊替代。在自底向上集成中,首先從分解樹的葉子開始,并用特別編寫的驅動模塊進行測試。驅動模塊中的一次性代碼比樁中的少。大多數(shù)系統(tǒng)在接近葉子節(jié)點時都有相當高的扇出數(shù),因此在自底向上集成順序中,不需要同樣數(shù)量的驅動模塊,不過代價是驅動模塊都比較復雜。

3.三明治集成(前兩種方法的某種組合)。三明治集成測試是將自頂向下測試與自底向上測試兩種模式有機結合起來,采用并行的自頂向下、自底向上集成方式,形成的方法。三明治集成測試更重要的是采取持續(xù)集成的策略。樁和驅動的開發(fā)工作都比較小,不過代價是作為大爆炸集成的后果,在一定程度上增加了定位缺陷的難度。

(二)基于功能分解方法的優(yōu)缺點

1.自頂向下集成,其優(yōu)點:在于它可以自然地做到逐步求精,一開始就能讓測試者看到系統(tǒng)的框架。缺點:需要提供樁模塊,樁模塊是對被調用子模塊的模擬,可能不能反映真實情況,因此測試有可能不充分。

由于被調用模擬子模塊不能模擬數(shù)據(jù),如果模塊間的數(shù)據(jù)流不能構成有向無環(huán)圖,一些模塊的測試數(shù)據(jù)便難以生成。同時,觀察和解釋測試輸出往往也是困難的。

2.自底向上集成,其優(yōu)點:由于驅動模塊模擬了所有調用參數(shù),即便數(shù)據(jù)流并未構成有向無環(huán)圖,生成測試數(shù)據(jù)也沒有困難。如果關鍵的模塊是在結構圖的底部,那么自底向上測試是有優(yōu)越性的。缺點:直到最后一個模塊被加入進去之后才能看到整個程序(系統(tǒng))的框架。

3.三明治集成測試采用自頂向下、自底向上集成相結合的方式,并采取持續(xù)集成的策略,有助于盡早發(fā)現(xiàn)缺陷,也有利于提高工作效率。

4.功能分解缺點。為了滿足項目管理的需要,而不是為了滿足軟件開發(fā)人員的需要。樁或驅動的開發(fā)工作量,此外還有重新測試所需工作量的問題。對于自頂向下集成,需要開發(fā)(節(jié)點-1個)樁模塊;對于自底向上集成,需要開發(fā)(節(jié)點-葉子)個驅動模塊。

(三)基于調用圖的集成

基于調用圖的集成一般分為成對集成和相鄰集成?;谡{用圖方法的優(yōu)點:偏離了純結構基礎,轉向行為基礎,因此底層假設是一種改進;這些技術還免除了樁/驅動器開發(fā)工作量;與以構建和合成為特征的開發(fā)匹配得很好。缺點:缺陷隔離問題,尤其是對有大量鄰居的情況;清除缺陷后,意味著以前測試過的包含已變更代碼的鄰居,都需要重新進行測試。

(四)基于路徑的集成

將集成測試的側重點由測試單獨開發(fā)并通過測試的單元之間的接口,轉移到這些單元的交互上,即它們的“協(xié)同功能”上。接口是結構性的,而交互是功能性的。

MM-路徑是功能性測試和結構性測試的一種混合,其優(yōu)點:它與實際系統(tǒng)行為結合緊密,而不依賴于基于分解和調用圖集成的結構性推動?;诼窂郊蓽y試也適用于面向對象的軟件測試。缺點:需要更多的工作量標識MM-路徑。這種工作量可能會與樁和驅動的開發(fā)所需工作量有偏差。

(五)面向對象環(huán)境中的集成測試

兩種不同的策略:

1.基于線程的測試(thread-based testing)。

2.基于使用的測試(use-based testing)。

驅動程序和樁程序:驅動程序可用于測試低層中的操作和整組類的測試。驅動程序也可用于代替用戶界面以便在界面實現(xiàn)之前就可以進行系統(tǒng)功能的測試。樁程序可用于在需要類間的協(xié)作但其中的一個或多個協(xié)作類仍未完全實現(xiàn)的情況下。

四、結語

集成測試既是一種測試類型也是一個測試階段,因為集成定義為一組交互,因此組件之間的所有已定義的交互都需要測試,體系結構和設計可以提供系統(tǒng)內部的交互細節(jié),但是測試一個系統(tǒng)與另一個系統(tǒng)之間的交互要求對這些系統(tǒng)一起工作的方式有深刻理解,此時的集成測試是一個階段。由于集成測試的目標是模塊之間的交互,這種測試就像白盒、黑盒及其它類型的測試一樣,也有一套技術和方法,因此集成測試也被看作是一種測試類型。

參考文獻:

[1]周燕,宋敬華.面向對象的集成測試順序的研究[J].計算機測量與控制,2010,9

[2]張云崗,劉春茂.軟件測試技術淺析[J].技術與市場,2011,2

[3]朱家云.淺析軟件測試[J].信息系統(tǒng)工程,2011,4

[4王麗達.論軟件系統(tǒng)的測試[J].經(jīng)濟研究導刊,2011,14

[5]劉欣.軟件測試方法分析與實踐[D].北京郵電大學,2009

[6]趙,孫寧.軟件測試技術:基于案例的測試[M].北京:機械工業(yè)出版社,2011

篇8

關鍵詞:軟件測試;系統(tǒng)測試;線索;壓力測試;性能測試

中圖分類號:TP39文獻標識碼:A文章編號:1007-9599 (2012) 05-0000-02

一、引言

軟件測試作為軟件質量保證的關鍵技術之一,其目的就是能夠有效地發(fā)現(xiàn)軟件中的錯誤或缺陷。系統(tǒng)測試是對完整集成后的系統(tǒng)進行測試的階段,用來評價系統(tǒng)對具體需求規(guī)格說明的符合性,系統(tǒng)測試是在單元、組件和集成測試階段之后進行的。主要針對軟件系統(tǒng)和其他系統(tǒng)元素(及硬件、數(shù)據(jù)庫和人機交互信息)組合構成完整的計算機應用系統(tǒng)中所有的元素配合是否合適以及整個系統(tǒng)的功能、性能、執(zhí)行強度、安全性等是否達到規(guī)定標準而進行的測試。

二、系統(tǒng)測試概述

(一)系統(tǒng)測試概念

所謂系統(tǒng)測試是將通過集成測試的軟件系統(tǒng),作為計算機系統(tǒng)的一個重要組成部分,與計算機硬件、外設、某些支撐軟件的系統(tǒng)等其他系統(tǒng)元素組合在一起所進行的測試,目的在于通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或矛盾的地方。

(二)系統(tǒng)測試前的準備工作

系統(tǒng)測試前的準備工作主要包括:對系統(tǒng)各種功能的描述;系統(tǒng)要求的數(shù)據(jù)處理及傳輸?shù)乃俾剩粚ο到y(tǒng)性能的要求;對備份及修復的要求;對兼容性的描述;對配置的描述;對安全方面的要求等。

(三)系統(tǒng)測試的測試數(shù)據(jù)

系統(tǒng)測試所用的數(shù)據(jù)必須盡可能地像真實數(shù)據(jù)一樣精確和有代表性。可以使用真實數(shù)據(jù)或者使用真實數(shù)據(jù)的一個復制,復制數(shù)據(jù)的質量、精度和數(shù)據(jù)量必須盡可能地代表真實的數(shù)據(jù)。

(四)系統(tǒng)測試與確認測試區(qū)別

確認測試始于集成測試的結束,那時已測試完單個構件,軟件已組裝成完整的軟件包,且接口錯誤已被發(fā)現(xiàn)和改正。在確認測試時,傳統(tǒng)軟件與面向對象軟件的差別已經(jīng)消失,測試便集中于用戶可見的動作和用戶可識別的系統(tǒng)輸出。

1.確認測試準則

軟件確認是通過一系列表明已符合軟件需求的測試而獲得的。測試計劃和規(guī)程都是用于確保滿足所有的功能需求,具有所有的行為特征,達到所有的性能需求,文檔是正確的、可用的。執(zhí)行每個確認測試用例之后,存在下面兩種可能條件之一:(1)功能或性能特征符合需求規(guī)約,因而被接受;(2)發(fā)現(xiàn)了與規(guī)約的偏差,創(chuàng)建缺陷列表。

2.配置評審

評審的目的是保證所有的軟件配置元素已正確開發(fā)、編目,且具有支持軟件生命周期的支持階段的必要細節(jié)。

3.α測試與β測試

α測試是由最終用戶在開發(fā)者的場所進行。軟件在自然的環(huán)境下使用,開發(fā)者站在典型用戶的后面觀看,并記錄錯誤和使用問題。α測試在受控的環(huán)境下進行。

β測試是最終用戶場所執(zhí)行。開發(fā)者通常不在場,因此,β測試是在不為開發(fā)者控制的環(huán)境下軟件的現(xiàn)場應用。最終用戶記錄測試過程中遇見的所有問題(現(xiàn)實存在或想象的),并將其定期地報告給開發(fā)者。接到β測試的問題報告之后,軟件工程師進行修改,然后準備向最終用戶軟件產品。

二、系統(tǒng)級功能測試技術

(一)線索的概念

線索(thread)的概念很難定義。事實上,一些已經(jīng)公開的定義都是矛盾、容易產生誤導或錯誤的。可以把線索看作是一種不需要形式化定義的原始概念。以下是對線索的多種看法:一般使用的場景;系統(tǒng)級測試用例;激勵/響應對;由系統(tǒng)級輸入序列產生的行為;端口輸入和輸出事件的交替序列;系統(tǒng)狀態(tài)機描述中的轉換序列;對象消息和方法執(zhí)行的交替序列;機器指令序列;源指令序列;MM-路徑序列;原子系統(tǒng)功能序列。

(二)需求規(guī)約的基本構造元素

根據(jù)一組基本需求規(guī)約構造元素,即數(shù)據(jù)、行動、設備、事件和線索,來討論系統(tǒng)測試。每個系統(tǒng)都可以使用這五種元素表示。

1.數(shù)據(jù)

主要包括:變量、數(shù)據(jù)結構、字段、記錄、數(shù)據(jù)存儲和文件、實體關系模型高層數(shù)據(jù)描述。

2.行動

以行動為中心建模仍然是需求規(guī)約的一種常見形式,這是因為有命令式程序設計語言以行動為中心性質的歷史原因。行動有輸入和輸出,這些輸入和輸出既可以是數(shù)據(jù),也可以是端口事件。行動還可以分解為低層活動,例如數(shù)據(jù)流圖。

3.設備

每個系統(tǒng)都有端口設備,這些端口設備是系統(tǒng)級輸入和輸出(端口事件)的源和目的地。在技術上,端口是I/O設備接入系統(tǒng)的點。

4.事件

事件既有數(shù)據(jù)方面的一些特征,又有行動方面的一些特征。事件是發(fā)生在端口設備上的系統(tǒng)級輸入(或輸出)??梢允请x散的,也可以是連續(xù)的(例如溫度、高度或壓力)。端口輸入事件是物理到邏輯的轉換,同樣,端口輸出事件是邏輯到物理的轉換。

5.線索

因為要測試線索,因此測試人員通常不能在數(shù)據(jù)、事件和行動之間的交互中找出線索。線索本身出現(xiàn)在需求規(guī)約中的惟一地方,是使用快速原型法并結合場景記錄器。

(三)線索測試的結構策略及功能策略

結構策略實際上是基于有限狀態(tài)機的行為建模中的結構來尋找測試線索的。首先自底向上組織各層次的狀態(tài)機,然后尋找線索覆蓋每個狀態(tài)機的節(jié)點和邊,同時還要找出節(jié)點與邊覆蓋指標。

線索測試的功能策略

1.基于事件的線索測試

(1)端口輸入事件覆蓋指標

五個覆蓋指標為覆蓋端口輸入事件提供了一組線索:

(1)PI1:每個端口輸入事件發(fā)生。

(2)PI2:端口輸入事件的常見序列發(fā)生。

(3)PI3:每個端口輸入事件在所有“相關”數(shù)據(jù)語境中發(fā)生。

(4)PI4:對于給定語境,所有“不合適”的輸入事件發(fā)生。

(5)Pl5:對于給定語境,所有可能的輸入事件發(fā)生。

(2)端口輸出事件覆蓋指標

根據(jù)端口輸出事件定義兩種覆蓋指標:

(1)PO1:每個端口輸出事件發(fā)生。

(2)PO2:每個端口輸出事件在每種原因下發(fā)生

2.基于端口的線索測試

基于端口的測試是基于事件測試的有用補充。

對于每個端口都要詢問端口上會出現(xiàn)什么事件。然后根據(jù)每個端口的事件列表尋找使用輸入端口和輸出端口的線索。有些需求規(guī)約技術要求提供這種端口的事件列表。

設備和事件之間的多對多測試應該在兩個方向上進行:基于事件的測試覆蓋從事件到端口的一對多關系,反之,基于端口的測試覆蓋從端口到事件的一對多關系。SATM系統(tǒng)不能使用這種測試,因為SATM不發(fā)生在多個端口上。

三、系統(tǒng)測試的主要內容

系統(tǒng)測試一般要完成以下幾種測試:功能測試、性能測試、可靠性、穩(wěn)定性測試、兼容性測試、恢復性測試、安全性測試、強度測試、面向用戶支持方面的測試、其他限制條件的測試。下面就對常用的系統(tǒng)測試做一個介紹:

(一)壓力測試

壓力測試是指模擬巨大的工作負荷以查看或評估應用程序在峰值或超越最大負載使用情況下如何執(zhí)行操作。壓力測試有如下特點:可以測試系統(tǒng)的穩(wěn)定性;一般需要對用戶的使用情況進行模擬。壓力測試的方法包括:并發(fā)測試法、增加量級法、重復測試法。

(二)性能測試

性能測試一般需進行:對軟件計算的精度有要求時,設計測試用例;對軟件有時間要求時,設計測試用例;測試為完成功能所處理的數(shù)據(jù)量;測試程序運行所占用的空間;測試對系統(tǒng)的負載潛力;測試配置項各部分的協(xié)調性;測試軟件性能和硬件性能的集成;測試系統(tǒng)對并發(fā)事務和并發(fā)用戶訪問的處理能力。

(三)恢復性測試

多數(shù)基于計算機的系統(tǒng)必須從錯誤中恢復并在一定的時間內重新運行?;謴托詼y試是通過各種方式強制地讓系統(tǒng)發(fā)生故障并驗證其能適當恢復的一種系統(tǒng)測試。若恢復是自動的(由系統(tǒng)自身完成),則對重新初始化、檢查點機制、數(shù)據(jù)恢復和重新啟動都要進行正確性評估。若恢復需要人工干預,則估算平均恢復時間(mean-time-to-repair,MTTR)以確定其是否在可接受的范圍之內。

(四)安全性測試

安全性測試驗證建立在系統(tǒng)內的保護機制是否能夠實際保護系統(tǒng)不受非法入侵。系統(tǒng)的安全必須經(jīng)受住正面的攻擊,但是也必須能夠經(jīng)受住側面和背后的攻擊。在安全性測試過程中,測試者扮演試圖攻擊系統(tǒng)的角色。測試者可以試圖通過外部手段獲取密碼;可以通過瓦解任何防守的定制軟件來攻擊系統(tǒng);可以“制服”系統(tǒng)使其無法對別人提供服務;可以有目的地引發(fā)系統(tǒng)錯誤以期在其恢復過程中入侵系統(tǒng);可以通過瀏覽非保密數(shù)據(jù),從中找到進入系統(tǒng)的鑰匙等等。

四、結語

系統(tǒng)測試有助于在其部署中客戶發(fā)現(xiàn)缺陷之前,盡可能多滴發(fā)現(xiàn)缺陷,在系統(tǒng)測試期間要驗證完整產品的行為,包括設計多個模塊、程序和功能的測試,測試完整產品的行為是很關鍵的,因為很多人錯誤地認為經(jīng)過單獨測試的組件放到一起后仍能正常運行。

參考文獻:

[1]薛沖沖,陳堅.軟件測試研究[J].計算機系統(tǒng)應用,2011,2

[2]陶幸輝,宋志剛.軟件系統(tǒng)測試類型及測試用例設計[J].科技經(jīng)濟市場,2011,6

[3]朱家云.淺析軟件測試[J].信息系統(tǒng)工程,2011,4

[4王麗達.論軟件系統(tǒng)的測試[J].經(jīng)濟研究導刊,2011,14

推薦期刊