 |
基礎(chǔ)知識(shí):軟件測(cè)試的要點(diǎn)介紹 |
 |
一、概述 信息技術(shù)的飛速發(fā)展,使軟件產(chǎn)品應(yīng)用到社會(huì)的各個(gè)領(lǐng)域,軟件產(chǎn)品的質(zhì)量自然成為人們共同關(guān)注的焦點(diǎn)。不論軟件的生產(chǎn)者還是軟件的使用者,均生存在競(jìng)爭(zhēng)的環(huán)境中,軟件開(kāi)發(fā)商為了占有市場(chǎng),必須把產(chǎn)品質(zhì)量作為企業(yè)的重要目標(biāo)之一,以免在激烈的競(jìng)爭(zhēng)中被淘汰出局。用戶(hù)為了保證自己業(yè)務(wù)的順利完成,當(dāng)然希望選用優(yōu)質(zhì)的軟件。質(zhì)量不佳的軟件產(chǎn)品不僅會(huì)使開(kāi)發(fā)商的維護(hù)費(fèi)用和用戶(hù)的使用成本大幅增加,還可能產(chǎn)生其他的責(zé)任風(fēng)險(xiǎn),造成公司信譽(yù)下降,繼而沖擊股票市場(chǎng)。在一些關(guān)鍵應(yīng)用 (如民航訂票系統(tǒng)、銀行結(jié)算系統(tǒng)、證券交易系統(tǒng)、自動(dòng)飛行控制軟件、軍事防御和核電站安全控制系統(tǒng)等) 中使用質(zhì)量有問(wèn)題的軟件,還可能造成災(zāi)難性的后果。 軟件危機(jī)曾經(jīng)是軟件界甚至整個(gè)計(jì)算機(jī)界最熱門(mén)的話(huà)題。為了解決這場(chǎng)危機(jī),軟件從業(yè)人員、專(zhuān)家和學(xué)者做出了大量的努力,F(xiàn)在人們已經(jīng)逐步認(rèn)識(shí)到所謂的軟件危機(jī)實(shí)際上僅是一種狀況,那就是軟件中有錯(cuò)誤,正是這些錯(cuò)誤導(dǎo)致了軟件開(kāi)發(fā)在成本、進(jìn)度和質(zhì)量上的失控。有錯(cuò)是軟件的屬性,而且是無(wú)法改變的,因?yàn)檐浖怯扇藖?lái)完成的,所有由人做的工作都不會(huì)是完美無(wú)缺的。問(wèn)題在于我們?nèi)绾稳ケ苊忮e(cuò)誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯(cuò)誤,使程序中的錯(cuò)誤密度達(dá)到盡可能低的程度。 給軟件帶來(lái)錯(cuò)誤的原因很多,具體地說(shuō),主要有如下幾點(diǎn): 、佟⒔涣鞑粔、交流上有誤解或者根本不進(jìn)行交流 在應(yīng)用應(yīng)該做什么或不應(yīng)該做什么的細(xì)節(jié)(應(yīng)用的需求)不清晰的情況下進(jìn)行開(kāi)發(fā)。 、凇④浖䦶(fù)雜性 圖形用戶(hù)界面(gui),客戶(hù)/服務(wù)器結(jié)構(gòu),分布式應(yīng)用,數(shù)據(jù)通信,超大型關(guān)系型數(shù)據(jù)庫(kù)以及龐大的系統(tǒng)規(guī)模,使得軟件及系統(tǒng)的復(fù)雜性呈指數(shù)增長(zhǎng),沒(méi)有現(xiàn)代軟件開(kāi)發(fā)經(jīng)驗(yàn)的人很難理解它。 、、程序設(shè)計(jì)錯(cuò)誤 向所有的人一樣,程序員也會(huì)出錯(cuò)。 、堋⑿枨笞兓 需求變化的影響是多方面的,客戶(hù)可能不了解需求變化帶來(lái)的影響,也可能知道但又不得不那么做。需求變化的后果可能是造成系統(tǒng)的重新設(shè)計(jì),設(shè)計(jì)人員的日程的重新安排,已經(jīng)完成的工作可能要重做或者完全拋棄,對(duì)其他項(xiàng)目產(chǎn)生影響,硬件需求可能要因此改變,等等。如果有許多小的改變或者一次大的變化,項(xiàng)目各部分之間已知或未知的依賴(lài)性可能會(huì)相互影響而導(dǎo)致更多問(wèn)題的出現(xiàn),需求改變帶來(lái)的復(fù)雜性可能導(dǎo)致錯(cuò)誤,還可能影響工程參與者的積極性。 、、時(shí)間壓力 軟件項(xiàng)目的日程表很難做到準(zhǔn)確,很多時(shí)候需要預(yù)計(jì)和猜測(cè)。當(dāng)最終期限迫近和關(guān)鍵時(shí)刻到來(lái)之際,錯(cuò)誤也就跟著來(lái)了。 、、自負(fù)人更喜歡說(shuō):'沒(méi)問(wèn)題','這事情很容易','幾個(gè)小時(shí)我就能拿出來(lái)' 太多不切實(shí)際的‘沒(méi)問(wèn)題’,結(jié)果只能是引入錯(cuò)誤。 、、代碼文檔貧乏 貧乏或者差勁的文檔使得代碼維護(hù)和修改變的異常艱辛,其結(jié)果是帶來(lái)許多錯(cuò)誤。事實(shí)上,在許多機(jī)構(gòu)并不鼓勵(lì)其程序員為代碼編寫(xiě)文檔,也不鼓勵(lì)程序員將代碼寫(xiě)得清晰和容易理解,相反他們認(rèn)為少寫(xiě)文檔可以更快的進(jìn)行編碼,無(wú)法理解的代碼更易于工作的保密(“寫(xiě)得艱難必定讀的痛苦”)。 、、軟件開(kāi)發(fā)工具 可視化工具,類(lèi)庫(kù),編譯器,腳本工具,等等,它們常常會(huì)將自身的錯(cuò)誤帶到應(yīng)用軟件中。就象我們所知道的,沒(méi)有良好的工程化作為基礎(chǔ),使用面向?qū)ο蟮募夹g(shù)只會(huì)使項(xiàng)目變得更復(fù)雜。 為了更好地解決這些問(wèn)題,軟件界做出了各種各樣的努力。 人們?cè)?jīng)認(rèn)為更好的程序語(yǔ)言可以使我們擺脫這些困擾,這推動(dòng)了程序設(shè)計(jì)語(yǔ)言的發(fā)展,更多的語(yǔ)言開(kāi)始流行,為了使程序更易于理解開(kāi)發(fā)了結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,如pl/1,pascal等;為了解決實(shí)時(shí)多任務(wù)需求開(kāi)發(fā)了結(jié)構(gòu)化多任務(wù)程序設(shè)計(jì)語(yǔ)言,如modula,ada等;為了提高重用性開(kāi)發(fā)了面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,如simlasa等;為了避免產(chǎn)生不正確的需求理解,開(kāi)發(fā)形式化描述語(yǔ)言,如hal/s等,這使得建立基于自然語(yǔ)言的描述成為可能,人們以形式化語(yǔ)言來(lái)描述需求;為了支持大型數(shù)據(jù)庫(kù)應(yīng)用,開(kāi)發(fā)了可視化工具,如visual studio、power builder等。程序語(yǔ)言對(duì)提高軟件生產(chǎn)效率起到了一定的積極作用,但它對(duì)整個(gè)軟件質(zhì)量尤其是可靠性的影響,與其他因素相比作用較小。 可能是因?yàn)槌绦蛘Z(yǔ)言基于嚴(yán)格的語(yǔ)法和語(yǔ)義規(guī)則,人們企圖用形式化證明方法來(lái)證明程序的正確性。將程序當(dāng)作數(shù)學(xué)對(duì)象來(lái)看待,從數(shù)學(xué)意義上證明程序是正確的是可能的。數(shù)學(xué)家對(duì)形式化證明方法最有興趣,在論文上談起來(lái)非常吸引人,但實(shí)際價(jià)值卻非常有限,因?yàn)樾问交C明方法只有在代碼寫(xiě)出來(lái)之后才能使用,這顯然太遲了,而且對(duì)于大的程序證明起來(lái)非常困難。 受到其他行業(yè)項(xiàng)目工程化的啟發(fā),軟件工程學(xué)出現(xiàn)了,軟件開(kāi)發(fā)被視為一項(xiàng)工程,以工程化的方法來(lái)進(jìn)行規(guī)劃和管理軟件的開(kāi)發(fā)。 針對(duì)需求不確定的應(yīng)用,可以使用漸進(jìn)和迭代類(lèi)的開(kāi)發(fā)模型。還可以采用快速應(yīng)用程序開(kāi)發(fā)(rad)和協(xié)同應(yīng)用程序開(kāi)發(fā)(jad)技術(shù),由軟件開(kāi)發(fā)者和用戶(hù)代表共同參與開(kāi)發(fā)軟件規(guī)范。rad和jad的基本思路是開(kāi)發(fā)者和用戶(hù)共同設(shè)計(jì)系統(tǒng)中的屏幕,開(kāi)發(fā)者迅速地把實(shí)現(xiàn)這些屏幕的最基本功能編寫(xiě)好,然后把它們交給用戶(hù)看,然后用戶(hù)和開(kāi)發(fā)者回顧這些屏幕以確認(rèn)它們達(dá)到了用戶(hù)的要求,這個(gè)周期一直持續(xù)到系統(tǒng)的基本部分定義完畢。一旦設(shè)計(jì)被用戶(hù)接受,開(kāi)發(fā)者將完成完全實(shí)現(xiàn)屏幕需要的代碼。rad和傳統(tǒng)軟件開(kāi)發(fā)項(xiàng)目之間的一個(gè)基本區(qū)別是:應(yīng)用程序rad系統(tǒng)是按階段發(fā)布的。傳統(tǒng)項(xiàng)目一般一次發(fā)布,也叫“big bang”。rad方法使用高效開(kāi)發(fā)工具,開(kāi)發(fā)者能夠非常迅速地設(shè)計(jì)出系統(tǒng)的基本屏幕,允許用戶(hù)在開(kāi)發(fā)周期中很早就能見(jiàn)識(shí)到系統(tǒng)將來(lái)看起來(lái)怎么樣,避免了在傳統(tǒng)開(kāi)發(fā)項(xiàng)目中長(zhǎng)篇大論并且枯燥難懂的說(shuō)明。 ibm的dr.harlan mills提出了凈室過(guò)程。凈室過(guò)程組合了形式化程序驗(yàn)證和統(tǒng)計(jì)過(guò)程控制(spc)。在這種方法中,首先用正確性數(shù)學(xué)證明預(yù)防缺陷發(fā)生,然后用mtbf度量軟件質(zhì)量。凈室過(guò)程是一種相當(dāng)新的軟件開(kāi)發(fā)方法,它要求軟件開(kāi)發(fā)在管理方式和技術(shù)方法上作重大改變,特別是要求spc應(yīng)用到軟件的知識(shí),這影響了其被廣泛的接受。 硬件成本持續(xù)降低,可支持case工具運(yùn)行的新的強(qiáng)大的工作站和網(wǎng)絡(luò)已經(jīng)成為軟件工程使用的工作平臺(tái),case工具可完成一些特定的軟件開(kāi)發(fā)過(guò)程。這些工具提供給軟件設(shè)計(jì)者以圖形方式描述軟件設(shè)計(jì)的能力,這樣就易于維護(hù)、易于交叉檢查、易于理解。許多人(尤其是case工具供貨商)相信case工具扮演了解決軟件危機(jī)和拯救軟件工業(yè)的角色,但事實(shí)上我們看到的情形卻是許多公司花了大量的金錢(qián)買(mǎi)回的case工具但很少使用,原因在于這些工具執(zhí)行的過(guò)程與機(jī)構(gòu)的軟件設(shè)計(jì)過(guò)程不相適用。 在可以借助許多新的技術(shù)和工具進(jìn)行軟件開(kāi)發(fā)的今天,軟件開(kāi)發(fā)過(guò)程的成熟性問(wèn)題開(kāi)始引起人們的重視。這種產(chǎn)品一致性問(wèn)題的主要癥結(jié)在于管理,因此人們將目標(biāo)轉(zhuǎn)向了管理的改善,一些以改進(jìn)軟件開(kāi)發(fā)過(guò)程為目標(biāo)的活動(dòng)已經(jīng)展示出積極的結(jié)果。 以下是一些比較典型的文本。 sei sw-cmm iso spice(software process improvement and capability determination) bootstrap iso-9000-3 tickit trillium 事實(shí)上,對(duì)于軟件來(lái)講,還沒(méi)有象銀彈那樣的東西。不論采用什么技術(shù)和什么方法,軟件中仍然會(huì)有錯(cuò)。采用新的語(yǔ)言、先進(jìn)的開(kāi)發(fā)方式、完善的開(kāi)發(fā)過(guò)程,可以減少錯(cuò)誤的引入,但是不可能完全杜絕軟件中的錯(cuò)誤,這些引入的錯(cuò)誤需要測(cè)試來(lái)找出,軟件中的錯(cuò)誤密度也需要測(cè)試來(lái)進(jìn)行估計(jì)。 測(cè)試是所有工程學(xué)科的基本組成單元,是軟件開(kāi)發(fā)的重要部分。自有程序設(shè)計(jì)的那天起測(cè)試就一直伴隨著。統(tǒng)計(jì)表明,在典型的軟件開(kāi)發(fā)項(xiàng)目中,軟件測(cè)試工作量往往占軟件開(kāi)發(fā)總工作量的40%以上。而在軟件開(kāi)發(fā)的總成本中,用在測(cè)試上的開(kāi)銷(xiāo)要占30%到50%。如果把維護(hù)階段也考慮在內(nèi),討論整個(gè)軟件生存期時(shí),測(cè)試的成本比例也許會(huì)有所降低,但實(shí)際上維護(hù)工作相當(dāng)于二次開(kāi)發(fā),乃至多次開(kāi)發(fā),其中必定還包含有許多測(cè)試工作。因此,測(cè)試對(duì)于軟件生產(chǎn)來(lái)說(shuō)是必需的,問(wèn)題是我們應(yīng)該思考“采用什么方法、如何安排測(cè)試?” 二、軟件測(cè)試的目的 軟件測(cè)試的目的決定了如何去組織測(cè)試。如果測(cè)試的目的是為了盡可能多地找出錯(cuò)誤,那么測(cè)試就應(yīng)該直接針對(duì)軟件比較復(fù)雜的部分或是以前出錯(cuò)比較多的位置。如果測(cè)試目的是為了給最終用戶(hù)提供具有一定可信度的質(zhì)量評(píng)價(jià),那么測(cè)試就應(yīng)該直接針對(duì)在實(shí)際應(yīng)用中會(huì)經(jīng)常用到的商業(yè)假設(shè)。 不同的機(jī)構(gòu)會(huì)有不同的測(cè)試目的;相同的機(jī)構(gòu)也可能有不同測(cè)試目的,可能是測(cè)試不同區(qū)域或是對(duì)同一區(qū)域的不同層次的測(cè)試。 在談到軟件測(cè)試時(shí),許多人都引用grenford j. myers在《the art of software testing》一書(shū)中的觀點(diǎn): 、、軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程; ②、測(cè)試是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)誤。 ③、一個(gè)好的測(cè)試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤; 、、一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。 這種觀點(diǎn)可以提醒人們測(cè)試要以查找錯(cuò)誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點(diǎn)可能會(huì)產(chǎn)生誤導(dǎo),認(rèn)為發(fā)現(xiàn)錯(cuò)誤是軟件測(cè)試的唯一目,查找不出錯(cuò)誤的測(cè)試就是沒(méi)有價(jià)值的,事實(shí)并非如此。 首先,測(cè)試并不僅僅是為了要找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的分布特征,可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前所采用的軟件過(guò)程的缺陷,以便改進(jìn)。同時(shí),這種分析也能幫助我們?cè)O(shè)計(jì)出有針對(duì)性地檢測(cè)方法,改善測(cè)試的有效性。 其次,沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定測(cè)試質(zhì)量的一種方法。詳細(xì)而嚴(yán)謹(jǐn)?shù)目煽啃栽鲩L(zhǎng)模型可以證明這一點(diǎn)。例如 bev littlewood發(fā)現(xiàn)一個(gè)經(jīng)過(guò)測(cè)試而正常運(yùn)行了n小時(shí)的系統(tǒng)有繼續(xù)正常運(yùn)行n小時(shí)的概率。 三、軟件測(cè)試的基本方法 軟件測(cè)試的方法和技術(shù)是多種多樣的。 對(duì)于軟件測(cè)試技術(shù),可以從不同的角度加以分類(lèi): 從是否需要執(zhí)行被測(cè)軟件的角度,可分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。 從測(cè)試是否針對(duì)系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)算法的角度來(lái)看,可分為白盒測(cè)試和黑盒測(cè)試; 1、黑盒測(cè)試 黑盒測(cè)試也稱(chēng)功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開(kāi)的黑盆子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測(cè)試者在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說(shuō)明書(shū)的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)鋸而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。黑盒測(cè)試方法主要有等價(jià)類(lèi)劃分、邊值分析、因?果圖、錯(cuò)誤推測(cè)等,主要用于軟件確認(rèn)測(cè)試。 “黑盒”法著眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部邏輯結(jié)構(gòu)、針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試!昂诤小狈ㄊ歉F舉輸入測(cè)試,只有把所有可能的輸入都作為測(cè)試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。實(shí)際上測(cè)試情況有無(wú)窮多個(gè),人們不僅要測(cè)試所有合法的輸入,而且還要對(duì)那些不合法但是可能的輸入進(jìn)行測(cè)試。 2、白盒測(cè)試 白盒測(cè)試也稱(chēng)結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是知道產(chǎn)品內(nèi)部工作過(guò)程,可通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測(cè)試的主要方法有邏輯驅(qū)動(dòng)、基路測(cè)試等,主要用于軟件驗(yàn)證。 “白盒”法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試!鞍缀小狈ㄊ歉F舉路徑測(cè)試。在使用這一方案時(shí),測(cè)試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測(cè)試數(shù)據(jù)。貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字。但即使每條路徑都測(cè)試了仍然可能有錯(cuò)誤。第一,窮舉路徑測(cè)試決不能查出程序違反了設(shè)計(jì)規(guī)范,即程序本身是個(gè)錯(cuò)誤的程序。第二,窮舉路徑測(cè)試不可能查出程序中因遺漏路徑而出錯(cuò)。第三,窮舉路徑測(cè)試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯(cuò)誤。 3.a(chǎn)lac(act-like-a-customer)測(cè)試 alac測(cè)試是一種基于客戶(hù)使用產(chǎn)品的知識(shí)開(kāi)發(fā)出來(lái)的測(cè)試方法。alac測(cè)試是基于復(fù)雜的軟件產(chǎn)品有許多錯(cuò)誤的原則。最大的受益者是用戶(hù),缺陷查找和改正將針對(duì)哪些客戶(hù)最容易遇到的錯(cuò)誤。 四、軟件測(cè)試的復(fù)雜性與經(jīng)濟(jì)性 人們常常以為,開(kāi)發(fā)一個(gè)程序是困難的,測(cè)試一個(gè)程序則比較容易。這其實(shí)是誤解。設(shè)計(jì)測(cè)試用例是一項(xiàng)細(xì)致并需要高度技巧的工作,稍有不慎就會(huì)顧此失彼,發(fā)生不應(yīng)有的疏漏。 不論是黑盒測(cè)試方法還是白盒測(cè)試方法,由于測(cè)試情況數(shù)量巨大,都不可能進(jìn)行徹底的測(cè)試。所謂徹底測(cè)試,就是讓被測(cè)程序在一切可能的輸入情況下全部執(zhí)行一遍。通常也稱(chēng)這種測(cè)試為“窮舉測(cè)試”。 “黑盒”法是窮舉輸入測(cè)試,只有把所有可能的輸入都作為測(cè)試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。實(shí)際上測(cè)試情況有無(wú)窮多個(gè),人們不僅要測(cè)試所有合法的輸入,而且還要對(duì)那些不合法但是可能的輸入進(jìn)行測(cè)試。 “白盒”法是窮舉路徑測(cè)試,貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字,但即使每條路徑都測(cè)試了仍然可能有錯(cuò)誤。第一,窮舉路徑測(cè)試決不能查出程序違反了設(shè)計(jì)規(guī)范,即程序本身是個(gè)錯(cuò)誤的程序。第二,窮舉路徑測(cè)試不可能查出程序中因遺漏路徑而出錯(cuò)。第三,窮舉路徑測(cè)試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯(cuò)誤。e.w.dijkstra的一句名言對(duì)測(cè)試的不徹底性作了很好的注解:“程序測(cè)試只能證明錯(cuò)誤的存在,但不能證明錯(cuò)誤不存在”。 在實(shí)際測(cè)試中,窮舉測(cè)試工作量太大,實(shí)踐上行不通,這就注定了一切實(shí)際測(cè)試都是不徹底的。當(dāng)然就不能夠保證被測(cè)試程序中不存在遺留的錯(cuò)誤。軟件工程的總目標(biāo)是充分利用有限的人力和物力資源,高效率、高質(zhì)量地完成測(cè)試。為了降低測(cè)試成本,選擇測(cè)試用例時(shí)應(yīng)注意遵守“經(jīng)濟(jì)性”的原則。第一,要根據(jù)程序的重要性和一旦發(fā)生故障將造成的損失來(lái)確定它的測(cè)試等級(jí);第二,要認(rèn)真研究測(cè)試策略,以便能使用盡可能少的測(cè)試用例,發(fā)現(xiàn)盡可能多的程序錯(cuò)誤。掌握好測(cè)試量是至關(guān)重要的,一位有經(jīng)驗(yàn)的軟件開(kāi)發(fā)管理人員在談到軟件測(cè)試時(shí)曾這樣說(shuō)過(guò):“不充分的測(cè)試是愚蠢的,而過(guò)度的測(cè)試是一種罪孽”。測(cè)試不足意味著讓用戶(hù)承擔(dān)隱藏錯(cuò)誤帶來(lái)的危險(xiǎn),過(guò)度測(cè)試則會(huì)浪費(fèi)許多寶貴的資源。 測(cè)試是軟件生存期中費(fèi)用消耗最大的環(huán)節(jié)。測(cè)試費(fèi)用除了測(cè)試的直接消耗外,還包括其它的相關(guān)費(fèi)用。能夠決定需要做多少次測(cè)試的主要影響因素如下: 、、系統(tǒng)的目的 系統(tǒng)的目的的差別在很大程度上影響所需要進(jìn)行的測(cè)試的數(shù)量。那些可能產(chǎn)生嚴(yán)重后果的系統(tǒng)必須要進(jìn)行更多的測(cè)試。一臺(tái)在boeing 757上的系統(tǒng)應(yīng)該比一個(gè)用于公共圖書(shū)館中檢索資料的系統(tǒng)需要更多的測(cè)試。一個(gè)用來(lái)控制密封燃?xì)夤艿赖南到y(tǒng)應(yīng)該比一個(gè)與有毒爆炸物品無(wú)關(guān)的系統(tǒng)有更高的可信度。一個(gè)安全關(guān)鍵軟件的開(kāi)發(fā)組比一個(gè)游戲軟件開(kāi)發(fā)組要有苛刻得多的查找錯(cuò)誤方面的要求。 、、潛在的用戶(hù)數(shù)量 一個(gè)系統(tǒng)的潛在用戶(hù)數(shù)量也在很大程度上影響了測(cè)試必要性的程度。這主要是由于用戶(hù)團(tuán)體在經(jīng)濟(jì)方面的影響。一個(gè)在全世界范圍內(nèi)有幾千個(gè)用戶(hù)的系統(tǒng)肯定比一個(gè)只在辦公室中運(yùn)行的有兩三個(gè)用戶(hù)的系統(tǒng)需要更多的測(cè)試。如果不能使用的話(huà),前一個(gè)系統(tǒng)的經(jīng)濟(jì)影響肯定比后一個(gè)系統(tǒng)大。除此而外,在分配處理錯(cuò)誤的時(shí)候,所花的代價(jià)的差別也很大。如果在內(nèi)部系統(tǒng)中發(fā)現(xiàn)了一個(gè)嚴(yán)重的錯(cuò)誤,在處理錯(cuò)誤的時(shí)候的費(fèi)用就相對(duì)少一些,如果要處理一個(gè)遍布全世界的錯(cuò)誤就需要花費(fèi)相當(dāng)大的財(cái)力和精力。 ③、信息的價(jià)值 在考慮測(cè)試的必要性時(shí),還需要將系統(tǒng)中所包含的信息的價(jià)值考慮在內(nèi),一個(gè)支持許多家大銀行或眾多證券交易所的客戶(hù)機(jī)/服務(wù)器系統(tǒng)中含有經(jīng)濟(jì)價(jià)值非常高的內(nèi)容。很顯然這一系統(tǒng)需要比一個(gè)支持鞋店的系統(tǒng)要進(jìn)行更多的測(cè)試。這兩個(gè)系統(tǒng)的用戶(hù)都希望得到高質(zhì)量、無(wú)錯(cuò)誤的系統(tǒng),但是前一種系統(tǒng)的影響比后一種要大得多。因此我們應(yīng)該從經(jīng)濟(jì)方面考慮,投入與經(jīng)濟(jì)價(jià)值相對(duì)應(yīng)的時(shí)間和金錢(qián)去進(jìn)行測(cè)試。 、堋㈤_(kāi)發(fā)機(jī)構(gòu) 一個(gè)沒(méi)有標(biāo)準(zhǔn)和缺少經(jīng)驗(yàn)的開(kāi)發(fā)機(jī)構(gòu)很可能開(kāi)發(fā)出充滿(mǎn)錯(cuò)誤的系統(tǒng)。在一個(gè)建立了標(biāo)準(zhǔn)和有很多經(jīng)驗(yàn)的開(kāi)發(fā)機(jī)構(gòu)中開(kāi)發(fā)出來(lái)的系統(tǒng)中的錯(cuò)誤不會(huì)很多,因此,對(duì)于不同的開(kāi)發(fā)機(jī)構(gòu)來(lái)說(shuō),所需要的測(cè)試的必要性也就截然的不同。 然而,那些需要進(jìn)行大幅度改善的機(jī)構(gòu)反而不大可能認(rèn)識(shí)到自身的弱點(diǎn)。那些需要更加嚴(yán)格的測(cè)試過(guò)程的機(jī)構(gòu)往往是最不可能進(jìn)行這一活動(dòng)的,在許多情況下,機(jī)構(gòu)的管理部門(mén)并不能真正地理解開(kāi)發(fā)一個(gè)高質(zhì)量的系統(tǒng)的好處。 、、測(cè)試的時(shí)機(jī) 測(cè)試量會(huì)隨時(shí)間的推移發(fā)生改變。在一個(gè)竟?fàn)幒芗ち业氖袌?chǎng)里,爭(zhēng)取時(shí)間可能是制勝的關(guān)鍵,開(kāi)始可能不會(huì)在測(cè)試上花多少時(shí)間,但幾年后如果市場(chǎng)分配格局已經(jīng)建立起來(lái)了,那么產(chǎn)品的質(zhì)量就變得更重要了,測(cè)試量就要加大。測(cè)試量應(yīng)該針對(duì)合適的目標(biāo)進(jìn)行調(diào)整。 五、軟件測(cè)試的心理學(xué)問(wèn)題 1、程序測(cè)試的過(guò)程具有破壞性 人類(lèi)的活動(dòng)具有高度的目的性,建立適當(dāng)?shù)哪繕?biāo)具有重要的心理作用。如果我們的目的是要證明程序中沒(méi)有錯(cuò)誤,那我們就會(huì)不自覺(jué)地朝這個(gè)方向去做;也就是說(shuō),我們會(huì)傾向于挑選那些使程序出錯(cuò)的可能性較小的測(cè)試數(shù)據(jù)。另一方面,如果我們的目標(biāo)是要證明程序中有錯(cuò),那就會(huì)選擇一些易于發(fā)現(xiàn)程序所含錯(cuò)誤的測(cè)試數(shù)據(jù)。而后一種態(tài)度會(huì)比前者給程序增添更多的價(jià)值。 測(cè)試的定義意味著程序測(cè)試的過(guò)程是具有破壞性的,其程度甚至達(dá)到了不可容忍的地步。社會(huì)上大多數(shù)人的人生觀是建設(shè)性的,而不是破壞性的。人們傾向于創(chuàng)造一個(gè)物品,而不是輕易毀壞?個(gè)物品。因此,程序壞?個(gè)物品。因此,程序測(cè)試的破壞性的定義使人們對(duì)程序測(cè)試工作望而生畏。程序測(cè)試定義還隱含著如何設(shè)計(jì)測(cè)試情況(測(cè)過(guò)數(shù)據(jù)),以及應(yīng)該由誰(shuí)和不應(yīng)由誰(shuí)來(lái)測(cè)試一個(gè)給定程序等等觀點(diǎn)。 心理學(xué)研究還告訴我們,當(dāng)人在干一件已經(jīng)知道是不合適的或不可能做到的事時(shí),往往做得不好。例如:如果讓一個(gè)人在15分鐘解出一個(gè)刊登在星期曰《紐約時(shí)報(bào)》上的交叉填字字謎,10分鐘后我們會(huì)看到這人幾乎沒(méi)一點(diǎn)進(jìn)展,因?yàn)樗麜?huì)感到實(shí)際上不可能做到而放棄自已的努力。然而,如果我們要求花4小時(shí)解出這題,那也許就會(huì)看到他在開(kāi)頭的10分鐘內(nèi)有較大的進(jìn)展了。把程序測(cè)試定義為在程序中找出錯(cuò)誤的過(guò)程,就使測(cè)試成了可以做到的任務(wù),從而克服了心理上存在的問(wèn)題。 另一個(gè)令人煩躁的問(wèn)題是即使程序完成了預(yù)期要求,仍可能含有錯(cuò)誤。也就是說(shuō),如果程序不按要求工作,它顯然有錯(cuò),但是如果程序做了不要它做的事,它也有錯(cuò)。 2、程序員應(yīng)避免測(cè)試自己的程序 開(kāi)發(fā)者被指定測(cè)試自己的代碼是一件很糟糕的事。開(kāi)發(fā)和測(cè)試生來(lái)就是不同的活動(dòng)。開(kāi)發(fā)是創(chuàng)造或者建立什么東西的行為,一個(gè)模塊或者整個(gè)系統(tǒng)。而測(cè)試的唯一目的是證明一個(gè)模塊或者系統(tǒng)工作不正常。這兩個(gè)活動(dòng)之間有著本質(zhì)的矛盾。一個(gè)人不太可能把兩個(gè)截然對(duì)立的角色都扮演的很好。基于這個(gè)想法,應(yīng)該限制開(kāi)發(fā)者在測(cè)試中的參與。給他們比較合適的任務(wù)是進(jìn)行有可能的最低層的測(cè)試--單元測(cè)試。不同當(dāng)一個(gè)程序員在完成了設(shè)計(jì),編寫(xiě)程序的建設(shè)性工作后,要一夜之間突然改變他的觀點(diǎn),設(shè)法對(duì)程序形成一個(gè)完全否定的態(tài)度,那是非常困難的。許多戶(hù)主都知道,揭掉糊墻紙(破壞性過(guò)程〉是不容易的,若糊墻紙?jiān)仁怯伤皇莿e人貼上的,他幾平會(huì)感到難以忍受的沮喪。所以,大部分程序員都由于不能使自己進(jìn)入必要的精神狀態(tài)(不是抱著要揭露出自己程序中錯(cuò)誤的態(tài)度),因而不能有效地測(cè)試自己的程序。 除了這個(gè)心理學(xué)問(wèn)題之外,還有一個(gè)重要的問(wèn)題:程序中可能包含由于程序員對(duì)問(wèn)題的敘述或說(shuō)明的誤解而產(chǎn)生的錯(cuò)誤。如果是這種情況,當(dāng)程序員測(cè)試自己的程序時(shí),往往還會(huì)帶著同樣的誤解致使問(wèn)題難以發(fā)現(xiàn)。 再者,可以把測(cè)試看做是對(duì)一篇論文或?本書(shū)作校對(duì),或與寫(xiě)評(píng)論相類(lèi)似的工作。正如許多作者所知,校對(duì)或批評(píng)自己的著作是非常困難的。也就是說(shuō),在自已的工作中找出缺陷往往是人的心理狀態(tài)所不容的。 以上看法并不意味著程序員不可能測(cè)試自已的程序。不過(guò)相比之下如果由另外?些人來(lái)進(jìn)行程序測(cè)試,就會(huì)更有效、更成功。注意:這個(gè)論斷并不適用于糾錯(cuò)(改正已知錯(cuò)誤),由原來(lái)程序的作者糾錯(cuò)肯定效率更高。 3、程庫(kù)設(shè)計(jì)機(jī)構(gòu)不應(yīng)測(cè)試自己的程序 在許多意義上來(lái)說(shuō),一項(xiàng)工程或一程序設(shè)計(jì)機(jī)構(gòu)是個(gè)有生命的有機(jī)體,它同樣有心理學(xué)問(wèn)題。再者,在大多數(shù)情況下,人們都是以在給定日期內(nèi),以一定代價(jià)編制程序的能力來(lái)衡量程序設(shè)計(jì)機(jī)構(gòu)和項(xiàng)目管理人員的。這祥做的一個(gè)理由是時(shí)間和成本指標(biāo)便于衡量,而程序的可靠性卻很難度量。要程序設(shè)計(jì)機(jī)構(gòu)在測(cè)試自己的程序時(shí)持客觀態(tài)度是困難的,因?yàn)槿绻谜_的定義看待測(cè)試,就不大可能按預(yù)定計(jì)劃完成測(cè)試也不大可能把耗費(fèi)的代價(jià)限制在要求的范圍以?xún)?nèi)。 軟件生產(chǎn)的三個(gè)最重要的因素是:質(zhì)量、進(jìn)度和費(fèi)用。 計(jì)算技術(shù)的進(jìn)步,意味著在經(jīng)濟(jì)領(lǐng)域中信息系統(tǒng)更新的速度更快。新的硬件技術(shù)的發(fā)展,均會(huì)使軟件過(guò)時(shí),系統(tǒng)交付使用的時(shí)間變得日益重要,新產(chǎn)品在其性能和費(fèi)用上被其他產(chǎn)品取代之前的推銷(xiāo)時(shí)間,即市場(chǎng)窗口就已經(jīng)縮小了。 由于費(fèi)用和進(jìn)度的限制,要開(kāi)發(fā)一種高質(zhì)量、快速交付和低成本的軟件產(chǎn)品變得越來(lái)越困難,也就是說(shuō)要同時(shí)達(dá)到三個(gè)目標(biāo)是困難的。因此在軟件產(chǎn)品的開(kāi)發(fā)中就要權(quán)衡它們之間的關(guān)系,使軟件的特性能滿(mǎn)足用戶(hù)的要求,這意味著軟件產(chǎn)品特性的度量和預(yù)計(jì)是必要的。 軟件測(cè)試由獨(dú)立測(cè)試機(jī)構(gòu)承擔(dān)有許多好處。獨(dú)立測(cè)試是指軟件測(cè)試工作由在經(jīng)濟(jì)上和管理上獨(dú)立于開(kāi)發(fā)機(jī)構(gòu)的組織進(jìn)行。獨(dú)立測(cè)試可以避免軟件開(kāi)發(fā)者測(cè)試自己開(kāi)發(fā)的軟件,由于心理學(xué)上的問(wèn)題,軟件開(kāi)發(fā)者難以客觀、有效地測(cè)試自己的軟件,而找出那些因?yàn)閷?duì)問(wèn)題的誤解而產(chǎn)生的錯(cuò)誤就更加困難。獨(dú)立測(cè)試還可以避免軟件開(kāi)發(fā)機(jī)構(gòu)測(cè)試自己的軟件,軟件產(chǎn)品的開(kāi)發(fā)過(guò)程受到時(shí)間、成本和質(zhì)量三者的制約,時(shí)間和成本指標(biāo)便于衡量,而質(zhì)量卻很難度量,因此在軟件開(kāi)發(fā)過(guò)程中,當(dāng)時(shí)間、成本和質(zhì)量三者發(fā)生矛盾時(shí),質(zhì)量最容易被忽視,如果測(cè)試組織與開(kāi)發(fā)組織來(lái)自相同的機(jī)構(gòu),測(cè)試過(guò)程就會(huì)面臨來(lái)自與開(kāi)發(fā)組織同一來(lái)源的管理方面的壓力,使測(cè)試過(guò)程受到干擾。 采用獨(dú)立測(cè)試方式,無(wú)論在技術(shù)上還是管理上,對(duì)提高軟件測(cè)試的有效性都具有重要意義。 ①、客觀性 對(duì)軟件測(cè)試和軟件中的錯(cuò)誤抱著客觀的態(tài)度,這種客觀的態(tài)度可以解決測(cè)試中的心理學(xué)問(wèn)題,既能夠以揭露軟件中錯(cuò)誤的態(tài)度工作,也能不受發(fā)現(xiàn)的錯(cuò)誤的影響。經(jīng)濟(jì)上的獨(dú)立性使其工作有更充分的條件按測(cè)試要求去完成。 、凇(zhuān)業(yè)性 獨(dú)立測(cè)試作為一種專(zhuān)業(yè)工作,在長(zhǎng)期的工作過(guò)程中勢(shì)必能夠積累大量實(shí)踐經(jīng)驗(yàn),形成自己的專(zhuān)業(yè)優(yōu)勢(shì)。同時(shí)軟件測(cè)試也是技術(shù)含量很高的工作,需要有專(zhuān)業(yè)隊(duì)伍加以研究,并進(jìn)行工程實(shí)踐。專(zhuān)業(yè)化分工是提高測(cè)試水平,保證測(cè)試質(zhì)量,充分發(fā)揮測(cè)試效用的必然途徑。 、、權(quán)威性 由于專(zhuān)業(yè)優(yōu)勢(shì),獨(dú)立測(cè)試工作形成的測(cè)試結(jié)果更具信服力,而測(cè)試結(jié)果常常和對(duì)軟件的質(zhì)量評(píng)價(jià)聯(lián)系在一起,由專(zhuān)業(yè)化的獨(dú)立測(cè)試機(jī)構(gòu)的評(píng)價(jià),更客觀、公正和具有權(quán)威性。 、、資源有保證 獨(dú)立測(cè)試機(jī)構(gòu)的主要任務(wù)是進(jìn)行獨(dú)立測(cè)試工作,這使得測(cè)試工作在經(jīng)費(fèi)、人力和計(jì)劃方面更有保證,不會(huì)因?yàn)殚_(kāi)發(fā)的壓力減少對(duì)測(cè)試的投入,降低測(cè)試的有效性,可以避免開(kāi)發(fā)單位側(cè)重軟件開(kāi)發(fā)而對(duì)測(cè)試工作產(chǎn)生不利的影響。 六、好的測(cè)試工程師應(yīng)具備的素質(zhì) 人是測(cè)試工作中最有價(jià)值也是最重要的資源,沒(méi)有一個(gè)合格的、積極的測(cè)試小組,測(cè)試就不可能實(shí)現(xiàn)。然而,在軟件開(kāi)發(fā)產(chǎn)業(yè)中有一種非常普遍習(xí)慣,那就是讓那些經(jīng)驗(yàn)最少的新手、沒(méi)有效率的開(kāi)發(fā)者或不適合干其他工作的人去做測(cè)試工作。這絕對(duì)是一種目光短淺的行為,對(duì)一個(gè)系統(tǒng)進(jìn)行有效的測(cè)試所需要的技能絕對(duì)不比進(jìn)行軟件開(kāi)發(fā)需要的少,事實(shí)上,測(cè)試者將獲得極其廣泛的經(jīng)驗(yàn),他們將遇到許多開(kāi)發(fā)者不可能遇到的問(wèn)題。 、、溝通能力。 一名理想的測(cè)試者必須能夠同測(cè)試涉及到的所有人進(jìn)行溝通,具有與技術(shù)(開(kāi)發(fā)者)和非技術(shù)人員(客戶(hù),管理人員)的交流能力。既要可以和用戶(hù)談得來(lái),又能同開(kāi)發(fā)人員說(shuō)得上話(huà),不幸的是這兩類(lèi)人沒(méi)有共同語(yǔ)言。和用戶(hù)談話(huà)的重點(diǎn)必須放在系統(tǒng)可以正確地處理什么和不可以處理什么上。而和開(kāi)發(fā)者談相同的信息時(shí),就必須將這些活重新組織以另一種方式表達(dá)出來(lái),測(cè)試小組的成員必須能夠同等地同用戶(hù)和開(kāi)發(fā)者溝通。 ②、移情能力。 和系統(tǒng)開(kāi)發(fā)有關(guān)的所有人員都處在一種既關(guān)心又擔(dān)心的狀態(tài)之中。用戶(hù)擔(dān)心將來(lái)使用一個(gè)不符合自己要求的系統(tǒng),開(kāi)發(fā)者則擔(dān)心由于系統(tǒng)要求不正確而使他不得不重新開(kāi)發(fā)整個(gè)系統(tǒng),管理部門(mén)則擔(dān)心這個(gè)系統(tǒng)突然崩潰而使它的聲譽(yù)受損。測(cè)試者必須和每一類(lèi)人打交道,因此需要測(cè)試小組的成員對(duì)他們每個(gè)人都具有足夠的理解和同情,具備了這種能力可以將測(cè)試人員與相關(guān)人員之間的沖突和對(duì)抗減少到最低程度。 、、技術(shù)能力。 就總體言,開(kāi)發(fā)人員對(duì)那些不懂技術(shù)的人持一種輕視的態(tài)度。一旦測(cè)試小組的某個(gè)成員作出了一個(gè)錯(cuò)誤的斷定,那么他們的可信度就會(huì)立刻被傳揚(yáng)了出去。一個(gè)測(cè)試者必須既明白被測(cè)軟件系統(tǒng)的概念又要會(huì)使用工程中的那些工具。要做到這一點(diǎn)需要有幾年以上的編程經(jīng)驗(yàn),前期的開(kāi)發(fā)經(jīng)驗(yàn)可以幫助對(duì)軟件開(kāi)發(fā)過(guò)程有較深入的理解,從開(kāi)發(fā)人員的角度正確的評(píng)價(jià)測(cè)試者,簡(jiǎn)化自動(dòng)測(cè)試工具編程的學(xué)習(xí)曲線(xiàn)。 、、自信心。 開(kāi)發(fā)者指責(zé)測(cè)試者出了錯(cuò)是常有的事,測(cè)試者必須對(duì)自己的觀點(diǎn)有足夠的自信心。如果容許別人對(duì)自己指東指西,就不能完成什么更多的事情了。 、、外交能力。 當(dāng)你告訴某人他出了錯(cuò)時(shí),就必須使用一些外交方法。機(jī)智老練和外交手法有助于維護(hù)與開(kāi)發(fā)人員的協(xié)作關(guān)系,測(cè)試者在告訴開(kāi)發(fā)者他的軟件有錯(cuò)誤時(shí),也同樣需要一定的外交手腕。如果采取的方法過(guò)于強(qiáng)硬,對(duì)測(cè)試者來(lái)說(shuō),在以后和開(kāi)發(fā)部門(mén)的合作方面就相當(dāng)于“贏了戰(zhàn)爭(zhēng)卻輸了戰(zhàn)役”。 、、幽默感。 在遇到狡辯的情況下,一個(gè)幽默的批評(píng)將是很有幫助的。 ⑦、很強(qiáng)的記憶力。 一個(gè)理想的測(cè)試者應(yīng)該有能力將以前曾經(jīng)遇到過(guò)的類(lèi)似的錯(cuò)誤從記憶深處挖掘出來(lái),這一能力在測(cè)試過(guò)程中的價(jià)值是無(wú)法衡量的。因?yàn)樵S多新出現(xiàn)的問(wèn)題和我們已經(jīng)發(fā)現(xiàn)的問(wèn)題相差無(wú)幾。 、、耐心。 一些質(zhì)量保證工作需要難以置信的耐心。有時(shí)你需要花費(fèi)驚人的時(shí)間去分離、識(shí)別和分派一個(gè)錯(cuò)誤。這個(gè)工作是那些坐不住的人無(wú)法完成的。 、帷岩删瘛 可以預(yù)料,開(kāi)發(fā)者會(huì)盡他們最大的努力將所有的錯(cuò)誤解釋過(guò)去。測(cè)式者必須聽(tīng)每個(gè)人的說(shuō)明,但他必須保持懷疑直到他自己看過(guò)以后。 、狻⒆晕叶酱。 干測(cè)試工作很容易使你變得懶散。只有那些具有自我督促能力的人才能夠使自己每天正常地工作。 11、洞察力。 一個(gè)好的測(cè)試工程師具有“測(cè)試是為了破壞”的觀點(diǎn),捕獲用戶(hù)觀點(diǎn)的能力,強(qiáng)烈的質(zhì)量追求,對(duì)細(xì)節(jié)的關(guān)注能力。應(yīng)用的高風(fēng)險(xiǎn)區(qū)的判斷能力以便將有限的測(cè)試針對(duì)重點(diǎn)環(huán)節(jié)。 七、參考文獻(xiàn) (軟件測(cè)試的原則)軟件測(cè)試從不同的角度出發(fā)會(huì)派生出兩種不同的測(cè)試原則,從用戶(hù)的角度出發(fā),就是希望通過(guò)軟件測(cè)試能充分暴露軟件中存在的問(wèn)題和缺陷,從而考慮是否可以接受該產(chǎn)品,從開(kāi)發(fā)者的角度出發(fā),就是希望測(cè)試能表明軟件產(chǎn)品不存在錯(cuò)誤,已經(jīng)正確地實(shí)現(xiàn)了用戶(hù)的需求,確立人們對(duì)軟件質(zhì)量的信心。中國(guó)軟件評(píng)測(cè)中心的測(cè)試原則就是從用戶(hù)和開(kāi)發(fā)者的角度出發(fā)進(jìn)行軟件產(chǎn)品測(cè)試的,通過(guò)我們的測(cè)試,可以為用戶(hù)提供放心的產(chǎn)品,并對(duì)優(yōu)秀的產(chǎn)品進(jìn)行認(rèn)證。 為了達(dá)到上述的原則,那么需要注意以下幾點(diǎn): 1.應(yīng)當(dāng)把“盡早和不斷的測(cè)試”作為開(kāi)發(fā)者的座右銘 2.程序員應(yīng)該避免檢查自己的程序,測(cè)試工作應(yīng)該由獨(dú)立的專(zhuān)業(yè)的軟件測(cè)試機(jī)構(gòu)來(lái)完成。 3.設(shè)計(jì)測(cè)試用例時(shí)應(yīng)該考慮到合法的輸入和不合法的輸入以及各種邊界條件,特殊情況下要制造極端狀態(tài)和意外狀態(tài),比如網(wǎng)絡(luò)異常中斷、電源斷電等情況。 4.一定要注意測(cè)試中的錯(cuò)誤集中發(fā)生現(xiàn)象,這和程序員的編程水平和習(xí)慣有很大的關(guān)系。 5.對(duì)測(cè)試錯(cuò)誤結(jié)果一定要有一個(gè)確認(rèn)的過(guò)程,一般有A測(cè)試出來(lái)的錯(cuò)誤,一定要有一個(gè)B來(lái)確認(rèn),嚴(yán)重的錯(cuò)誤可以召開(kāi)評(píng)審會(huì)進(jìn)行討論和分析。 6.制定嚴(yán)格的測(cè)試計(jì)劃,并把測(cè)試時(shí)間安排的盡量寬松,不要希望在極短的時(shí)間內(nèi)完成一個(gè)高水平的測(cè)試。 7.回歸測(cè)試的關(guān)聯(lián)性一定要引起充分的注意,修改一個(gè)錯(cuò)誤而引起更多的錯(cuò)誤出現(xiàn)的現(xiàn)象并不少見(jiàn)。 8.妥善保存一切測(cè)試過(guò)程文檔,意義是不言而喻的,測(cè)試的重現(xiàn)性往往要靠測(cè)試文檔。 在軟件測(cè)試中如何配置軟件環(huán)境配備測(cè)試環(huán)境是測(cè)試實(shí)施的一個(gè)重要階段,測(cè)試環(huán)境適合與否會(huì)嚴(yán)重影響測(cè)試結(jié)果的真實(shí)性和正確性。測(cè)試環(huán)境包括硬件環(huán)境和軟件環(huán)境,硬件環(huán)境指測(cè)試必需的服務(wù)器、客戶(hù)端、網(wǎng)絡(luò)連接設(shè)備以及打印機(jī)/掃描儀等輔助硬件設(shè)備所構(gòu)成的環(huán)境 ;軟件環(huán)境指被測(cè)軟件運(yùn)行時(shí)的操作系統(tǒng)、數(shù)據(jù)庫(kù)以及其他應(yīng)用軟件構(gòu)成的環(huán)境。在實(shí)際測(cè)試中,軟件環(huán)境又可分為主測(cè)試環(huán)境和輔測(cè)試環(huán)境,主測(cè)試環(huán)境是測(cè)試軟件功能、安全可靠性、性能、易用性等大多數(shù)指標(biāo)的主要環(huán)境,一般來(lái)說(shuō),配置主測(cè)試環(huán)境可遵循下列原則: 1.符合軟件運(yùn)行的最低要求。測(cè)試環(huán)境首先要保證能支撐軟件正常運(yùn)行。 2.選用比較普遍的操作系統(tǒng)和軟件平臺(tái)。例如,一個(gè)軟件若聲稱(chēng)支持“Windows9X/ME/NT Workstation/2000 professional”和“MS OFFICE 97/2000/XP”,一般我們會(huì)采用如“Windows 2000professional+MS OFFICE 2000”的流行環(huán)境。 3.營(yíng)造相對(duì)簡(jiǎn)單、獨(dú)立的測(cè)試環(huán)境。除了操作系統(tǒng),測(cè)試機(jī)上只安裝軟件運(yùn)行和測(cè)試必需的軟件,以免不相關(guān)的軟件影響測(cè)試實(shí)施。 4.無(wú)毒的環(huán)境。利用有效的正版殺毒軟件檢測(cè)軟件環(huán)境,保證測(cè)試環(huán)境中沒(méi)有病毒。 輔測(cè)試環(huán)境常常用來(lái)滿(mǎn)足不同的測(cè)試需求或特殊測(cè)試項(xiàng)目: 兼容性測(cè)試:在滿(mǎn)足軟件運(yùn)行要求的范圍內(nèi),可選擇一些典型的操作系統(tǒng)和常用應(yīng)用軟件對(duì)其安裝卸載和主要功能進(jìn)行驗(yàn)證。 模擬真實(shí)環(huán)境測(cè)試:有些軟件,特別是面向大眾的商品化軟件,在測(cè)試時(shí)常常需要考察在真實(shí)環(huán)境中的表現(xiàn)。如測(cè)試殺毒軟件的掃描速度時(shí),硬盤(pán)上布置的不同類(lèi)型文件的比例要盡量接近真實(shí)環(huán)境,這樣測(cè)試出來(lái)的數(shù)據(jù)才有實(shí)際意義。 橫向?qū)Ρ葴y(cè)試:利用輔測(cè)試環(huán)境“克隆”出完全一致的測(cè)試環(huán)境,從而保證各個(gè)被測(cè)軟件平等對(duì)比。
|
作者:jro2433 | 文章來(lái)源:賽迪網(wǎng) | 更新時(shí)間:2008-3-10 17:29:53
|
|
 |
 |
最新文章 |
|
|
 |