欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
軟件測試基礎
一、概述
二、軟件測試的目的
三、軟件測試的基本方法
四、軟件測試的復雜性與經(jīng)濟性
五、軟件測試的心理學(xué)問(wèn)題
六、好的測試工程師應具備的素質(zhì)
七、參考文獻
一、概述
信息技術(shù)的飛速發(fā)展,使軟件產(chǎn)品應用到社會(huì )的各個(gè)領(lǐng)域,軟件產(chǎn)品的質(zhì)量自然成為人們共同關(guān)注的焦點(diǎn)。不論軟件的生產(chǎn)者還是軟件的使用者,均生存在競爭的環(huán)境中,軟件開(kāi)發(fā)商為了占有市場(chǎng),必須把產(chǎn)品質(zhì)量作為企業(yè)的重要目標之一,以免在激烈的競爭中被淘汰出局。用戶(hù)為了保證自己業(yè)務(wù)的順利完成,當然希望選用優(yōu)質(zhì)的軟件。質(zhì)量不佳的軟件產(chǎn)品不僅會(huì )使開(kāi)發(fā)商的維護費用和用戶(hù)的使用成本大幅增加,還可能產(chǎn)生其他的責任風(fēng)險,造成公司信譽(yù)下降,繼而沖擊股票市場(chǎng)。在一些關(guān)鍵應用 (如民航訂票系統、銀行結算系統、證券交易系統、自動(dòng)飛行控制軟件、軍事防御和核電站安全控制系統等) 中使用質(zhì)量有問(wèn)題的軟件,還可能造成災難性的后果。
軟件危機曾經(jīng)是軟件界甚至整個(gè)計算機界最熱門(mén)的話(huà)題。為了解決這場(chǎng)危機,軟件從業(yè)人員、專(zhuān)家和學(xué)者做出了大量的努力?,F在人們已經(jīng)逐步認識到所謂的軟件危機實(shí)際上僅是一種狀況,那就是軟件中有錯誤,正是這些錯誤導致了軟件開(kāi)發(fā)在成本、進(jìn)度和質(zhì)量上的失控。有錯是軟件的屬性,而且是無(wú)法改變的,因為軟件是由人來(lái)完成的,所有由人做的工作都不會(huì )是完美無(wú)缺的。問(wèn)題在于我們如何去避免錯誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯誤,使程序中的錯誤密度達到盡可能低的程度。
給軟件帶來(lái)錯誤的原因很多,具體地說(shuō),主要有如下幾點(diǎn):
①、交流不夠、交流上有誤解或者根本不進(jìn)行交流
在應用應該做什么或不應該做什么的細節(應用的需求)不清晰的情況下進(jìn)行開(kāi)發(fā)。
②、軟件復雜性
圖形用戶(hù)界面(GUI),客戶(hù)/服務(wù)器結構,分布式應用,數據通信,超大型關(guān)系型數據庫以及龐大的系統規模,使得軟件及系統的復雜性呈指數增長(cháng),沒(méi)有現代軟件開(kāi)發(fā)經(jīng)驗的人很難理解它。
③、程序設計錯誤
向所有的人一樣,程序員也會(huì )出錯。
④、需求變化
需求變化的影響是多方面的,客戶(hù)可能不了解需求變化帶來(lái)的影響,也可能知道但又不得不那么做。需求變化的后果可能是造成系統的重新設計,設計人員的日程的重新安排,已經(jīng)完成的工作可能要重做或者完全拋棄,對其他項目產(chǎn)生影響,硬件需求可能要因此改變,等等。如果有許多小的改變或者一次大的變化,項目各部分之間已知或未知的依賴(lài)性可能會(huì )相互影響而導致更多問(wèn)題的出現,需求改變帶來(lái)的復雜性可能導致錯誤,還可能影響工程參與者的積極性。
⑤、時(shí)間壓力
軟件項目的日程表很難做到準確,很多時(shí)候需要預計和猜測。當最終期限迫近和關(guān)鍵時(shí)刻到來(lái)之際,錯誤也就跟著(zhù)來(lái)了。
⑥、自負人更喜歡說(shuō):
‘沒(méi)問(wèn)題‘
‘這事情很容易‘
‘幾個(gè)小時(shí)我就能拿出來(lái)‘
太多不切實(shí)際的‘沒(méi)問(wèn)題’,結果只能是引入錯誤。
⑦、代碼文檔貧乏
貧乏或者差勁的文檔使得代碼維護和修改變的異常艱辛,其結果是帶來(lái)許多錯誤。事實(shí)上,在許多機構并不鼓勵其程序員為代碼編寫(xiě)文檔,也不鼓勵程序員將代碼寫(xiě)得清晰和容易理解,相反他們認為少寫(xiě)文檔可以更快的進(jìn)行編碼,無(wú)法理解的代碼更易于工作的保密(“寫(xiě)得艱難必定讀的痛苦”)。
⑧、軟件開(kāi)發(fā)工具
可視化工具,類(lèi)庫,編譯器,腳本工具,等等,它們常常會(huì )將自身的錯誤帶到應用軟件中。就象我們所知道的,沒(méi)有良好的工程化作為基礎,使用面向對象的技術(shù)只會(huì )使項目變得更復雜。
為了更好地解決這些問(wèn)題,軟件界做出了各種各樣的努力。
人們曾經(jīng)認為更好的程序語(yǔ)言可以使我們擺脫這些困擾,這推動(dòng)了程序設計語(yǔ)言的發(fā)展,更多的語(yǔ)言開(kāi)始流行,為了使程序更易于理解開(kāi)發(fā)了結構化程序設計語(yǔ)言,如PL/1,PASCAL等;為了解決實(shí)時(shí)多任務(wù)需求開(kāi)發(fā)了結構化多任務(wù)程序設計語(yǔ)言,如Modula,Ada等;為了提高重用性開(kāi)發(fā)了面向對象的程序設計語(yǔ)言,如Simlasa等;為了避免產(chǎn)生不正確的需求理解,開(kāi)發(fā)形式化描述語(yǔ)言,如HAL/S等,這使得建立基于自然語(yǔ)言的描述成為可能,人們以形式化語(yǔ)言來(lái)描述需求;為了支持大型數據庫應用,開(kāi)發(fā)了可視化工具,如Visual Studio、Power Builder等。程序語(yǔ)言對提高軟件生產(chǎn)效率起到了一定的積極作用,但它對整個(gè)軟件質(zhì)量尤其是可靠性的影響,與其他因素相比作用較小。
可能是因為程序語(yǔ)言基于嚴格的語(yǔ)法和語(yǔ)義規則,人們企圖用形式化證明方法來(lái)證明程序的正確性。將程序當作數學(xué)對象來(lái)看待,從數學(xué)意義上證明程序是正確的是可能的。數學(xué)家對形式化證明方法最有興趣,在論文上談起來(lái)非常吸引人,但實(shí)際價(jià)值卻非常有限,因為形式化證明方法只有在代碼寫(xiě)出來(lái)之后才能使用,這顯然太遲了,而且對于大的程序證明起來(lái)非常困難。
受到其他行業(yè)項目工程化的啟發(fā),軟件工程學(xué)出現了,軟件開(kāi)發(fā)被視為一項工程,以工程化的方法來(lái)進(jìn)行規劃和管理軟件的開(kāi)發(fā)。
針對需求不確定的應用,可以使用漸進(jìn)和迭代類(lèi)的開(kāi)發(fā)模型。還可以采用快速應用程序開(kāi)發(fā)(RAD)和協(xié)同應用程序開(kāi)發(fā)(JAD)技術(shù),由軟件開(kāi)發(fā)者和用戶(hù)代表共同參與開(kāi)發(fā)軟件規范。RAD和JAD的基本思路是開(kāi)發(fā)者和用戶(hù)共同設計系統中的屏幕,開(kāi)發(fā)者迅速地把實(shí)現這些屏幕的最基本功能編寫(xiě)好,然后把它們交給用戶(hù)看,然后用戶(hù)和開(kāi)發(fā)者回顧這些屏幕以確認它們達到了用戶(hù)的要求,這個(gè)周期一直持續到系統的基本部分定義完畢。一旦設計被用戶(hù)接受,開(kāi)發(fā)者將完成完全實(shí)現屏幕需要的代碼。RAD和傳統軟件開(kāi)發(fā)項目之間的一個(gè)基本區別是:應用程序RAD系統是按階段發(fā)布的。傳統項目一般一次發(fā)布,也叫“big bang”。RAD方法使用高效開(kāi)發(fā)工具,開(kāi)發(fā)者能夠非常迅速地設計出系統的基本屏幕,允許用戶(hù)在開(kāi)發(fā)周期中很早就能見(jiàn)識到系統將來(lái)看起來(lái)怎么樣,避免了在傳統開(kāi)發(fā)項目中長(cháng)篇大論并且枯燥難懂的說(shuō)明。
IBM的Dr.Harlan Mills提出了凈室過(guò)程。凈室過(guò)程組合了形式化程序驗證和統計過(guò)程控制(SPC)。在這種方法中,首先用正確性數學(xué)證明預防缺陷發(fā)生,然后用MTBF度量軟件質(zhì)量。凈室過(guò)程是一種相當新的軟件開(kāi)發(fā)方法,它要求軟件開(kāi)發(fā)在管理方式和技術(shù)方法上作重大改變,特別是要求SPC應用到軟件的知識,這影響了其被廣泛的接受。
硬件成本持續降低,可支持CASE工具運行的新的強大的工作站和網(wǎng)絡(luò )已經(jīng)成為軟件工程使用的工作平臺,CASE工具可完成一些特定的軟件開(kāi)發(fā)過(guò)程。這些工具提供給軟件設計者以圖形方式描述軟件設計的能力,這樣就易于維護、易于交叉檢查、易于理解。許多人(尤其是CASE工具供貨商)相信CASE工具扮演了解決軟件危機和拯救軟件工業(yè)的角色,但事實(shí)上我們看到的情形卻是許多公司花了大量的金錢(qián)買(mǎi)回的CASE工具但很少使用,原因在于這些工具執行的過(guò)程與機構的軟件設計過(guò)程不相適用。
在可以借助許多新的技術(shù)和工具進(jìn)行軟件開(kāi)發(fā)的今天,軟件開(kāi)發(fā)過(guò)程的成熟性問(wèn)題開(kāi)始引起人們的重視。這種產(chǎn)品一致性問(wèn)題的主要癥結在于管理,因此人們將目標轉向了管理的改善,一些以改進(jìn)軟件開(kāi)發(fā)過(guò)程為目標的活動(dòng)已經(jīng)展示出積極的結果。
以下是一些比較典型的文本。
SEI SW-CMM
ISO SPICE(Software Process Improvement and Capability dEtermination)
Bootstrap
ISO-9000-3
TickIT
Trillium
事實(shí)上,對于軟件來(lái)講,還沒(méi)有象銀彈那樣的東西。不論采用什么技術(shù)和什么方法,軟件中仍然會(huì )有錯。采用新的語(yǔ)言、先進(jìn)的開(kāi)發(fā)方式、完善的開(kāi)發(fā)過(guò)程,可以減少錯誤的引入,但是不可能完全杜絕軟件中的錯誤,這些引入的錯誤需要測試來(lái)找出,軟件中的錯誤密度也需要測試來(lái)進(jìn)行估計。
測試是所有工程學(xué)科的基本組成單元,是軟件開(kāi)發(fā)的重要部分。自有程序設計的那天起測試就一直伴隨著(zhù)。統計表明,在典型的軟件開(kāi)發(fā)項目中,軟件測試工作量往往占軟件開(kāi)發(fā)總工作量的40%以上。而在軟件開(kāi)發(fā)的總成本中,用在測試上的開(kāi)銷(xiāo)要占30%到50%。如果把維護階段也考慮在內,討論整個(gè)軟件生存期時(shí),測試的成本比例也許會(huì )有所降低,但實(shí)際上維護工作相當于二次開(kāi)發(fā),乃至多次開(kāi)發(fā),其中必定還包含有許多測試工作。因此,測試對于軟件生產(chǎn)來(lái)說(shuō)是必需的,問(wèn)題是我們應該思考“采用什么方法、如何安排測試?”
二、軟件測試的目的
軟件測試的目的決定了如何去組織測試。如果測試的目的是為了盡可能多地找出錯誤,那么測試就應該直接針對軟件比較復雜的部分或是以前出錯比較多的位置。如果測試目的是為了給最終用戶(hù)提供具有一定可信度的質(zhì)量評價(jià),那么測試就應該直接針對在實(shí)際應用中會(huì )經(jīng)常用到的商業(yè)假設。
不同的機構會(huì )有不同的測試目的;相同的機構也可能有不同測試目的,可能是測試不同區域或是對同一區域的不同層次的測試。
在談到軟件測試時(shí),許多人都引用Grenford J. Myers在《The Art of Software Testing》一書(shū)中的觀(guān)點(diǎn):
①、軟件測試是為了發(fā)現錯誤而執行程序的過(guò)程;
②、測試是為了證明程序有錯,而不是證明程序無(wú)錯誤。
③、一個(gè)好的測試用例是在于它能發(fā)現至今未發(fā)現的錯誤;
④、一個(gè)成功的測試是發(fā)現了至今未發(fā)現的錯誤的測試。
這種觀(guān)點(diǎn)可以提醒人們測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀(guān)點(diǎn)可能會(huì )產(chǎn)生誤導,認為發(fā)現錯誤是軟件測試的唯一目,查找不出錯誤的測試就是沒(méi)有價(jià)值的,事實(shí)并非如此。
首先,測試并不僅僅是為了要找出錯誤。通過(guò)分析錯誤產(chǎn)生的原因和錯誤的分布特征,可以幫助項目管理者發(fā)現當前所采用的軟件過(guò)程的缺陷,以便改進(jìn)。同時(shí),這種分析也能幫助我們設計出有針對性地檢測方法,改善測試的有效性。
其次,沒(méi)有發(fā)現錯誤的測試也是有價(jià)值的,完整的測試是評定測試質(zhì)量的一種方法。詳細而嚴謹的可靠性增長(cháng)模型可以證明這一點(diǎn)。例如 Bev Littlewood發(fā)現一個(gè)經(jīng)過(guò)測試而正常運行了n小時(shí)的系統有繼續正常運行n小時(shí)的概率。
三、軟件測試的基本方法
軟件測試的方法和技術(shù)是多種多樣的。
對于軟件測試技術(shù),可以從不同的角度加以分類(lèi):
從是否需要執行被測軟件的角度,可分為靜態(tài)測試和動(dòng)態(tài)測試。
從測試是否針對系統的內部結構和具體實(shí)現算法的角度來(lái)看,可分為白盒測試和黑盒測試;
1、黑盒測試
黑盒測試也稱(chēng)功能測試或數據驅動(dòng)測試,它是在已知產(chǎn)品所應具有的功能,通過(guò)測試來(lái)檢測每個(gè)功能是否都能正常使用,在測試時(shí),把程序看作一個(gè)不能打開(kāi)的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進(jìn)行測試,它只檢查程序功能是否按照需求規格說(shuō)明書(shū)的規定正常使用,程序是否能適當地接收輸入數鋸而產(chǎn)生正確的輸出信息,并且保持外部信息(如數據庫或文件)的完整性。黑盒測試方法主要有等價(jià)類(lèi)劃分、邊值分析、因—果圖、錯誤推測等,主要用于軟件確認測試。
“黑盒”法著(zhù)眼于程序外部結構、不考慮內部邏輯結構、針對軟件界面和軟件功能進(jìn)行測試?!昂诤小狈ㄊ歉F舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實(shí)際上測試情況有無(wú)窮多個(gè),人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進(jìn)行測試。
2、白盒測試
白盒測試也稱(chēng)結構測試或邏輯驅動(dòng)測試,它是知道產(chǎn)品內部工作過(guò)程,可通過(guò)測試來(lái)檢測產(chǎn)品內部動(dòng)作是否按照規格說(shuō)明書(shū)的規定正常進(jìn)行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能,白盒測試的主要方法有邏輯驅動(dòng)、基路測試等,主要用于軟件驗證。
“白盒”法全面了解程序內部邏輯結構、對所有邏輯路徑進(jìn)行測試?!鞍缀小狈ㄊ歉F舉路徑測試。在使用這一方案時(shí),測試者必須檢查程序的內部結構,從檢查程序的邏輯著(zhù)手,得出測試數據。貫穿程序的獨立路徑數是天文數字。但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身是個(gè)錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發(fā)現不了一些與數據相關(guān)的錯誤。
3.ALAC(Act-like-a-customer)測試
ALAC測試是一種基于客戶(hù)使用產(chǎn)品的知識開(kāi)發(fā)出來(lái)的測試方法。ALAC測試是基于復雜的軟件產(chǎn)品有許多錯誤的原則。最大的受益者是用戶(hù),缺陷查找和改正將針對哪些客戶(hù)最容易遇到的錯誤。
四、軟件測試的復雜性與經(jīng)濟性
人們常常以為,開(kāi)發(fā)一個(gè)程序是困難的,測試一個(gè)程序則比較容易。這其實(shí)是誤解。設計測試用例是一項細致并需要高度技巧的工作,稍有不慎就會(huì )顧此失彼,發(fā)生不應有的疏漏。
不論是黑盒測試方法還是白盒測試方法,由于測試情況數量巨大,都不可能進(jìn)行徹底的測試。所謂徹底測試,就是讓被測程序在一切可能的輸入情況下全部執行一遍。通常也稱(chēng)這種測試為“窮舉測試”。 “黑盒”法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實(shí)際上測試情況有無(wú)窮多個(gè),人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進(jìn)行測試。 “白盒”法是窮舉路徑測試,貫穿程序的獨立路徑數是天文數字,但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身是個(gè)錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發(fā)現不了一些與數據相關(guān)的錯誤。E.W.Dijkstra的一句名言對測試的不徹底性作了很好的注解:“程序測試只能證明錯誤的存在,但不能證明錯誤不存在”。
在實(shí)際測試中,窮舉測試工作量太大,實(shí)踐上行不通,這就注定了一切實(shí)際測試都是不徹底的。當然就不能夠保證被測試程序中不存在遺留的錯誤。軟件工程的總目標是充分利用有限的人力和物力資源,高效率、高質(zhì)量地完成測試。為了降低測試成本,選擇測試用例時(shí)應注意遵守“經(jīng)濟性”的原則。第一,要根據程序的重要性和一旦發(fā)生故障將造成的損失來(lái)確定它的測試等級;第二,要認真研究測試策略,以便能使用盡可能少的測試用例,發(fā)現盡可能多的程序錯誤。掌握好測試量是至關(guān)重要的,一位有經(jīng)驗的軟件開(kāi)發(fā)管理人員在談到軟件測試時(shí)曾這樣說(shuō)過(guò):“不充分的測試是愚蠢的,而過(guò)度的測試是一種罪孽”。測試不足意味著(zhù)讓用戶(hù)承擔隱藏錯誤帶來(lái)的危險,過(guò)度測試則會(huì )浪費許多寶貴的資源。
測試是軟件生存期中費用消耗最大的環(huán)節。測試費用除了測試的直接消耗外,還包括其它的相關(guān)費用。能夠決定需要做多少次測試的主要影響因素如下:
①、系統的目的
系統的目的的差別在很大程度上影響所需要進(jìn)行的測試的數量。那些可能產(chǎn)生嚴重后果的系統必須要進(jìn)行更多的測試。一臺在Boeing 757上的系統應該比一個(gè)用于公共圖書(shū)館中檢索資料的系統需要更多的測試。一個(gè)用來(lái)控制密封燃氣管道的系統應該比一個(gè)與有毒爆炸物品無(wú)關(guān)的系統有更高的可信度。一個(gè)安全關(guān)鍵軟件的開(kāi)發(fā)組比一個(gè)游戲軟件開(kāi)發(fā)組要有苛刻得多的查找錯誤方面的要求。
②、潛在的用戶(hù)數量
一個(gè)系統的潛在用戶(hù)數量也在很大程度上影響了測試必要性的程度。這主要是由于用戶(hù)團體在經(jīng)濟方面的影響。一個(gè)在全世界范圍內有幾千個(gè)用戶(hù)的系統肯定比一個(gè)只在辦公室中運行的有兩三個(gè)用戶(hù)的系統需要更多的測試。如果不能使用的話(huà),前一個(gè)系統的經(jīng)濟影響肯定比后一個(gè)系統大。除此而外,在分配處理錯誤的時(shí)候,所花的代價(jià)的差別也很大。如果在內部系統中發(fā)現了一個(gè)嚴重的錯誤,在處理錯誤的時(shí)候的費用就相對少一些,如果要處理一個(gè)遍布全世界的錯誤就需要花費相當大的財力和精力。
③、信息的價(jià)值
在考慮測試的必要性時(shí),還需要將系統中所包含的信息的價(jià)值考慮在內,一個(gè)支持許多家大銀行或眾多證券交易所的客戶(hù)機/服務(wù)器系統中含有經(jīng)濟價(jià)值非常高的內容。很顯然這一系統需要比一個(gè)支持鞋店的系統要進(jìn)行更多的測試。這兩個(gè)系統的用戶(hù)都希望得到高質(zhì)量、無(wú)錯誤的系統,但是前一種系統的影響比后一種要大得多。因此我們應該從經(jīng)濟方面考慮,投入與經(jīng)濟價(jià)值相對應的時(shí)間和金錢(qián)去進(jìn)行測試。
④、開(kāi)發(fā)機構
一個(gè)沒(méi)有標準和缺少經(jīng)驗的開(kāi)發(fā)機構很可能開(kāi)發(fā)出充滿(mǎn)錯誤的系統。在一個(gè)建立了標準和有很多經(jīng)驗的開(kāi)發(fā)機構中開(kāi)發(fā)出來(lái)的系統中的錯誤不會(huì )很多,因此,對于不同的開(kāi)發(fā)機構來(lái)說(shuō),所需要的測試的必要性也就截然的不同。
然而,那些需要進(jìn)行大幅度改善的機構反而不大可能認識到自身的弱點(diǎn)。那些需要更加嚴格的測試過(guò)程的機構往往是最不可能進(jìn)行這一活動(dòng)的,在許多情況下,機構的管理部門(mén)并不能真正地理解開(kāi)發(fā)一個(gè)高質(zhì)量的系統的好處。
⑤、測試的時(shí)機
測試量會(huì )隨時(shí)間的推移發(fā)生改變。在一個(gè)竟爭很激烈的市場(chǎng)里,爭取時(shí)間可能是制勝的關(guān)鍵,開(kāi)始可能不會(huì )在測試上花多少時(shí)間,但幾年后如果市場(chǎng)分配格局已經(jīng)建立起來(lái)了,那么產(chǎn)品的質(zhì)量就變得更重要了,測試量就要加大。測試量應該針對合適的目標進(jìn)行調整。
五、軟件測試的心理學(xué)問(wèn)題
1、程序測試的過(guò)程具有破壞性
人類(lèi)的活動(dòng)具有高度的目的性,建立適當的目標具有重要的心理作用。如果我們的目的是要證明程序中沒(méi)有錯誤,那我們就會(huì )不自覺(jué)地朝這個(gè)方向去做;也就是說(shuō),我們會(huì )傾向于挑選那些使程序出錯的可能性較小的測試數據。另一方面,如果我們的目標是要證明程序中有錯,那就會(huì )選擇一些易于發(fā)現程序所含錯誤的測試數據。而后一種態(tài)度會(huì )比前者給程序增添更多的價(jià)值。
測試的定義意味著(zhù)程序測試的過(guò)程是具有破壞性的,其程度甚至達到了不可容忍的地步。社會(huì )上大多數人的人生觀(guān)是建設性的,而不是破壞性的。人們傾向于創(chuàng )造一個(gè)物品,而不是輕易毀壞—個(gè)物品。因此,程序壞—個(gè)物品。因此,程序測試的破壞性的定義使人們對程序測試工作望而生畏。程序測試定義還隱含著(zhù)如何設計測試情況(測過(guò)數據),以及應該由誰(shuí)和不應由誰(shuí)來(lái)測試一個(gè)給定程序等等觀(guān)點(diǎn)。
心理學(xué)研究還告訴我們,當人在干一件已經(jīng)知道是不合適的或不可能做到的事時(shí),往往做得不好。例如:如果讓一個(gè)人在15分鐘解出一個(gè)刊登在星期曰《紐約時(shí)報》上的交叉填字字謎,10分鐘后我們會(huì )看到這人幾乎沒(méi)一點(diǎn)進(jìn)展,因為他會(huì )感到實(shí)際上不可能做到而放棄自已的努力。然而,如果我們要求花4小時(shí)解出這題,那也許就會(huì )看到他在開(kāi)頭的10分鐘內有較大的進(jìn)展了。把程序測試定義為在程序中找出錯誤的過(guò)程,就使測試成了可以做到的任務(wù),從而克服了心理上存在的問(wèn)題。
另一個(gè)令人煩躁的問(wèn)題是即使程序完成了預期要求,仍可能含有錯誤。也就是說(shuō),如果程序不按要求工作,它顯然有錯,但是如果程序做了不要它做的事,它也有錯。
2、程序員應避免測試自己的程序
開(kāi)發(fā)者被指定測試自己的代碼是一件很糟糕的事。開(kāi)發(fā)和測試生來(lái)就是不同的活動(dòng)。開(kāi)發(fā)是創(chuàng )造或者建立什么東西的行為,一個(gè)模塊或者整個(gè)系統。而測試的唯一目的是證明一個(gè)模塊或者系統工作不正常。這兩個(gè)活動(dòng)之間有著(zhù)本質(zhì)的矛盾。一個(gè)人不太可能把兩個(gè)截然對立的角色都扮演的很好?;谶@個(gè)想法,應該限制開(kāi)發(fā)者在測試中的參與。給他們比較合適的任務(wù)是進(jìn)行有可能的最低層的測試--單元測試。不同當一個(gè)程序員在完成了設計,編寫(xiě)程序的建設性工作后,要一夜之間突然改變他的觀(guān)點(diǎn),設法對程序形成一個(gè)完全否定的態(tài)度,那是非常困難的。許多戶(hù)主都知道,揭掉糊墻紙(破壞性過(guò)程〉是不容易的,若糊墻紙原先是由他而不是別人貼上的,他幾平會(huì )感到難以忍受的沮喪。所以,大部分程序員都由于不能使自己進(jìn)入必要的精神狀態(tài)(不是抱著(zhù)要揭露出自己程序中錯誤的態(tài)度),因而不能有效地測試自己的程序。
除了這個(gè)心理學(xué)問(wèn)題之外,還有一個(gè)重要的問(wèn)題:程序中可能包含由于程序員對問(wèn)題的敘述或說(shuō)明的誤解而產(chǎn)生的錯誤。如果是這種情況,當程序員測試自己的程序時(shí),往往還會(huì )帶著(zhù)同樣的誤解致使問(wèn)題難以發(fā)現。
再者,可以把測試看做是對一篇論文或—本書(shū)作校對,或與寫(xiě)評論相類(lèi)似的工作。正如許多作者所知,校對或批評自己的著(zhù)作是非常困難的。也就是說(shuō),在自已的工作中找出缺陷往往是人的心理狀態(tài)所不容的。
以上看法并不意味著(zhù)程序員不可能測試自已的程序。不過(guò)相比之下如果由另外—些人來(lái)進(jìn)行程序測試,就會(huì )更有效、更成功。注意:這個(gè)論斷并不適用于糾錯(改正已知錯誤),由原來(lái)程序的作者糾錯肯定效率更高。
3、程庫設計機構不應測試自己的程序
在許多意義上來(lái)說(shuō),一項工程或一程序設計機構是個(gè)有生命的有機體,它同樣有心理學(xué)問(wèn)題。再者,在大多數情況下,人們都是以在給定日期內,以一定代價(jià)編制程序的能力來(lái)衡量程序設計機構和項目管理人員的。這祥做的一個(gè)理由是時(shí)間和成本指標便于衡量,而程序的可靠性卻很難度量。要程序設計機構在測試自己的程序時(shí)持客觀(guān)態(tài)度是困難的,因為如果用正確的定義看待測試,就不大可能按預定計劃完成測試也不大可能把耗費的代價(jià)限制在要求的范圍以?xún)取?div style="height:15px;">
計算技術(shù)的進(jìn)步,意味著(zhù)在經(jīng)濟領(lǐng)域中信息系統更新的速度更快。新的硬件技術(shù)的發(fā)展,均會(huì )使軟件過(guò)時(shí),系統交付使用的時(shí)間變得日益重要,新產(chǎn)品在其性能和費用上被其他產(chǎn)品取代之前的推銷(xiāo)時(shí)間,即市場(chǎng)窗口就已經(jīng)縮小了。
由于費用和進(jìn)度的限制,要開(kāi)發(fā)一種高質(zhì)量、快速交付和低成本的軟件產(chǎn)品變得越來(lái)越困難,也就是說(shuō)要同時(shí)達到三個(gè)目標是困難的。因此在軟件產(chǎn)品的開(kāi)發(fā)中就要權衡它們之間的關(guān)系,使軟件的特性能滿(mǎn)足用戶(hù)的要求,這意味著(zhù)軟件產(chǎn)品特性的度量和預計是必要的。
軟件測試由獨立測試機構承擔有許多好處。獨立測試是指軟件測試工作由在經(jīng)濟上和管理上獨立于開(kāi)發(fā)機構的組織進(jìn)行。獨立測試可以避免軟件開(kāi)發(fā)者測試自己開(kāi)發(fā)的軟件,由于心理學(xué)上的問(wèn)題,軟件開(kāi)發(fā)者難以客觀(guān)、有效地測試自己的軟件,而找出那些因為對問(wèn)題的誤解而產(chǎn)生的錯誤就更加困難。獨立測試還可以避免軟件開(kāi)發(fā)機構測試自己的軟件,軟件產(chǎn)品的開(kāi)發(fā)過(guò)程受到時(shí)間、成本和質(zhì)量三者的制約,時(shí)間和成本指標便于衡量,而質(zhì)量卻很難度量,因此在軟件開(kāi)發(fā)過(guò)程中,當時(shí)間、成本和質(zhì)量三者發(fā)生矛盾時(shí),質(zhì)量最容易被忽視,如果測試組織與開(kāi)發(fā)組織來(lái)自相同的機構,測試過(guò)程就會(huì )面臨來(lái)自與開(kāi)發(fā)組織同一來(lái)源的管理方面的壓力,使測試過(guò)程受到干擾。
采用獨立測試方式,無(wú)論在技術(shù)上還是管理上,對提高軟件測試的有效性都具有重要意義。
①、客觀(guān)性
對軟件測試和軟件中的錯誤抱著(zhù)客觀(guān)的態(tài)度,這種客觀(guān)的態(tài)度可以解決測試中的心理學(xué)問(wèn)題,既能夠以揭露軟件中錯誤的態(tài)度工作,也能不受發(fā)現的錯誤的影響。經(jīng)濟上的獨立性使其工作有更充分的條件按測試要求去完成。
②、專(zhuān)業(yè)性
獨立測試作為一種專(zhuān)業(yè)工作,在長(cháng)期的工作過(guò)程中勢必能夠積累大量實(shí)踐經(jīng)驗,形成自己的專(zhuān)業(yè)優(yōu)勢。同時(shí)軟件測試也是技術(shù)含量很高的工作,需要有專(zhuān)業(yè)隊伍加以研究,并進(jìn)行工程實(shí)踐。專(zhuān)業(yè)化分工是提高測試水平,保證測試質(zhì)量,充分發(fā)揮測試效用的必然途徑。
③、權威性
由于專(zhuān)業(yè)優(yōu)勢,獨立測試工作形成的測試結果更具信服力,而測試結果常常和對軟件的質(zhì)量評價(jià)聯(lián)系在一起,由專(zhuān)業(yè)化的獨立測試機構的評價(jià),更客觀(guān)、公正和具有權威性。
④、資源有保證
獨立測試機構的主要任務(wù)是進(jìn)行獨立測試工作,這使得測試工作在經(jīng)費、人力和計劃方面更有保證,不會(huì )因為開(kāi)發(fā)的壓力減少對測試的投入,降低測試的有效性,可以避免開(kāi)發(fā)單位側重軟件開(kāi)發(fā)而對測試工作產(chǎn)生不利的影響。
六、好的測試工程師應具備的素質(zhì)
人是測試工作中最有價(jià)值也是最重要的資源,沒(méi)有一個(gè)合格的、積極的測試小組,測試就不可能實(shí)現。然而,在軟件開(kāi)發(fā)產(chǎn)業(yè)中有一種非常普遍習慣,那就是讓那些經(jīng)驗最少的新手、沒(méi)有效率的開(kāi)發(fā)者或不適合干其他工作的人去做測試工作。這絕對是一種目光短淺的行為,對一個(gè)系統進(jìn)行有效的測試所需要的技能絕對不比進(jìn)行軟件開(kāi)發(fā)需要的少,事實(shí)上,測試者將獲得極其廣泛的經(jīng)驗,他們將遇到許多開(kāi)發(fā)者不可能遇到的問(wèn)題。
①、溝通能力。
一名理想的測試者必須能夠同測試涉及到的所有人進(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)必須放在系統可以正確地處理什么和不可以處理什么上。而和開(kāi)發(fā)者談相同的信息時(shí),就必須將這些活重新組織以另一種方式表達出來(lái),測試小組的成員必須能夠同等地同用戶(hù)和開(kāi)發(fā)者溝通。
②、移情能力。
和系統開(kāi)發(fā)有關(guān)的所有人員都處在一種既關(guān)心又擔心的狀態(tài)之中。用戶(hù)擔心將來(lái)使用一個(gè)不符合自己要求的系統,開(kāi)發(fā)者則擔心由于系統要求不正確而使他不得不重新開(kāi)發(fā)整個(gè)系統,管理部門(mén)則擔心這個(gè)系統突然崩潰而使它的聲譽(yù)受損。測試者必須和每一類(lèi)人打交道,因此需要測試小組的成員對他們每個(gè)人都具有足夠的理解和同情,具備了這種能力可以將測試人員與相關(guān)人員之間的沖突和對抗減少到最低程度。
③、技術(shù)能力。
就總體言,開(kāi)發(fā)人員對那些不懂技術(shù)的人持一種輕視的態(tài)度。一旦測試小組的某個(gè)成員作出了一個(gè)錯誤的斷定,那么他們的可信度就會(huì )立刻被傳揚了出去。一個(gè)測試者必須既明白被測軟件系統的概念又要會(huì )使用工程中的那些工具。要做到這一點(diǎn)需要有幾年以上的編程經(jīng)驗,前期的開(kāi)發(fā)經(jīng)驗可以幫助對軟件開(kāi)發(fā)過(guò)程有較深入的理解,從開(kāi)發(fā)人員的角度正確的評價(jià)測試者,簡(jiǎn)化自動(dòng)測試工具編程的學(xué)習曲線(xiàn)。
④、自信心。
開(kāi)發(fā)者指責測試者出了錯是常有的事,測試者必須對自己的觀(guān)點(diǎn)有足夠的自信心。如果容許別人對自己指東指西,就不能完成什么更多的事情了。
⑤、外交能力。
當你告訴某人他出了錯時(shí),就必須使用一些外交方法。機智老練和外交手法有助于維護與開(kāi)發(fā)人員的協(xié)作關(guān)系,測試者在告訴開(kāi)發(fā)者他的軟件有錯誤時(shí),也同樣需要一定的外交手腕。如果采取的方法過(guò)于強硬,對測試者來(lái)說(shuō),在以后和開(kāi)發(fā)部門(mén)的合作方面就相當于“贏(yíng)了戰爭卻輸了戰役”。
⑥、幽默感。
在遇到狡辯的情況下,一個(gè)幽默的批評將是很有幫助的。
⑦、很強的記憶力。
一個(gè)理想的測試者應該有能力將以前曾經(jīng)遇到過(guò)的類(lèi)似的錯誤從記憶深處挖掘出來(lái),這一能力在測試過(guò)程中的價(jià)值是無(wú)法衡量的。因為許多新出現的問(wèn)題和我們已經(jīng)發(fā)現的問(wèn)題相差無(wú)幾。
⑧、耐心。
一些質(zhì)量保證工作需要難以置信的耐心。有時(shí)你需要花費驚人的時(shí)間去分離、識別和分派一個(gè)錯誤。這個(gè)工作是那些坐不住的人無(wú)法完成的。
⑨、懷疑精神。
可以預料,開(kāi)發(fā)者會(huì )盡他們最大的努力將所有的錯誤解釋過(guò)去。測式者必須聽(tīng)每個(gè)人的說(shuō)明,但他必須保持懷疑直到他自己看過(guò)以后。
⑩、自我督促。
干測試工作很容易使你變得懶散。只有那些具有自我督促能力的人才能夠使自己每天正常地工作。
11、洞察力。
一個(gè)好的測試工程師具有“測試是為了破壞”的觀(guān)點(diǎn),捕獲用戶(hù)觀(guān)點(diǎn)的能力,強烈的質(zhì)量追求,對細節的關(guān)注能力。應用的高風(fēng)險區的判斷能力以便將有限的測試針對重點(diǎn)環(huán)節。
七、參考文獻
1、Grenford J. Myers,《The Art of Software Testing》
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
軟件測試概論
軟件測試基本常識
軟件測試的13項原則
軟件測試
軟件測試基礎理論 · 語(yǔ)雀
淺析如何提升軟件測試質(zhì)量
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久