軟件開(kāi)發(fā)心得總結(jié)
有感于網(wǎng)盤開(kāi)發(fā)過(guò)程
有感于網(wǎng)盤開(kāi)發(fā)過(guò)程..............................................................................................................................1一、軟件開(kāi)發(fā)個(gè)人體會(huì):.................................................................................................................2二、做軟件開(kāi)發(fā)我覺(jué)得要明白:.....................................................................................................2三、在開(kāi)發(fā)中遇到問(wèn)題應(yīng)該怎么去解決?......................................................................................2四、怎么樣才能提高自身的能力?..................................................................................................2五、怎么樣才能做好軟件開(kāi)發(fā)?.....................................................................................................2六、文檔的重要性.............................................................................................................................3七、我的收獲.....................................................................................................................................3八、網(wǎng)盤項(xiàng)目開(kāi)發(fā)的最大體會(huì).........................................................................................................4九、軟件測(cè)試(單體測(cè)試和連接測(cè)試)..........................................................................................4
常熟理工學(xué)院SIG小組3/28/20
一、軟件開(kāi)發(fā)個(gè)人體會(huì):
1.軟件領(lǐng)域中的知識(shí)在于積累。
2.做軟件開(kāi)發(fā),就類似算數(shù)學(xué)題和世界杯足球賽一樣:重在結(jié)果,而不在乎過(guò)程。3.軟件服務(wù)于人類,軟件是在解決一些生活中的問(wèn)題和錯(cuò)誤,問(wèn)題決定解決方案。
二、做軟件開(kāi)發(fā)我覺(jué)得要明白:
1.職業(yè)的樂(lè)趣:
(A)用自己的智慧去創(chuàng)建新事物的快樂(lè)(B)開(kāi)發(fā)對(duì)別人有用的東西(C)不斷學(xué)習(xí)來(lái)充實(shí)自己2.職業(yè)的苦惱:(A)總是追求完美
(B)所有要實(shí)現(xiàn)的功能由他人而定
(C)概念設(shè)計(jì)計(jì)是有趣的,但找Bug總是很苦惱的
三、在開(kāi)發(fā)中遇到問(wèn)題應(yīng)該怎么去解決?
1.2.3.4.
不明白就多問(wèn),不要自已一直去琢磨。
一個(gè)問(wèn)題如果30分鐘還沒(méi)有解決就應(yīng)該考慮是不是問(wèn)問(wèn)別人。一個(gè)問(wèn)題在沒(méi)有用過(guò)3種以上的方法解決過(guò)就不要去問(wèn)別人。解決問(wèn)題思路是關(guān)鍵:
相信問(wèn)題總歸有解決的辦法,就算連技術(shù)上都沒(méi)法實(shí)現(xiàn)的問(wèn)題,相信通過(guò)良好的溝通終究也會(huì)有解決的方法。
5.解決問(wèn)題的前提是:理解別人的意思,理解別人的需求,多溝通,及時(shí)給客戶反饋信息。
四、怎么樣才能提高自身的能力?
1.程序員怎么樣進(jìn)步最快?-理論結(jié)合實(shí)踐
2.不要怕出錯(cuò),不怕遇到錯(cuò)誤,有錯(cuò)誤就有挑戰(zhàn),這樣才可以進(jìn)步,但不要讓同一個(gè)石頭
把你絆倒2次。
五、怎么樣才能做好軟件開(kāi)發(fā)?
1.首先要明白解決的問(wèn)題是什么,理解問(wèn)題,其次再?zèng)Q定怎么解決這個(gè)問(wèn)題2.碰到很復(fù)雜的問(wèn)題,我們就簡(jiǎn)單想,把問(wèn)題簡(jiǎn)單化,細(xì)化到能夠?qū)崿F(xiàn)為止
常熟理工學(xué)院SIG小組3/28/20
3.出了問(wèn)題,我們要先分析問(wèn)題,然后知道引起問(wèn)題的原因,最后并想出問(wèn)題的解決辦法4.我們應(yīng)該從2個(gè)方面去把握一個(gè)項(xiàng)目:從業(yè)務(wù)角度和項(xiàng)目的關(guān)鍵問(wèn)題上去把握一個(gè)項(xiàng)目
(A)從不同的系統(tǒng)場(chǎng)景
(B)從不同的用戶角色(充當(dāng)什么角色)(C)從不同的系統(tǒng)使用角度(擁有那些權(quán)限)
5.其實(shí)我覺(jué)得開(kāi)發(fā)人員說(shuō)實(shí)在應(yīng)該要比使用系統(tǒng)的人更了解系統(tǒng)需求,只有真正徹底的了
解了項(xiàng)目的業(yè)務(wù)需求,我們才能做真的做好這個(gè)項(xiàng)目
六、文檔的重要性
記得我當(dāng)初剛開(kāi)發(fā)項(xiàng)目的時(shí)候都是寫(xiě)個(gè)大致的需求說(shuō)明書(shū),做一個(gè)E-R圖,畫(huà)幾個(gè)大致的數(shù)據(jù)流程圖,然后建立數(shù)據(jù)字典和表結(jié)構(gòu)關(guān)系。再接著搭建一個(gè)開(kāi)發(fā)環(huán)境,配置幾臺(tái)服務(wù)器,劃分一下模塊,分工,我們就可以Coding了,一直到項(xiàng)目結(jié)束了,也沒(méi)有完整的設(shè)計(jì)文檔,更沒(méi)有完整的測(cè)試文檔,雖然這樣的確是很快的完成了Coding工作,感覺(jué)上好像節(jié)省了好多成本和開(kāi)發(fā)時(shí)間,但后期的維護(hù)和Bug就是經(jīng)常出現(xiàn)的事。
小項(xiàng)目沒(méi)有文檔關(guān)系不大,但如果遇到一個(gè)大項(xiàng)目的時(shí)候,那這樣的開(kāi)發(fā)方式就很有問(wèn)題很危險(xiǎn)的。
大項(xiàng)目沒(méi)有文檔:首先維護(hù)就很麻煩,也很亂,寫(xiě)的代碼,過(guò)幾天都不知道它是完成什么功能的了,其次系統(tǒng)的穩(wěn)定性和可靠性也讓人懷疑,擴(kuò)展性就不用說(shuō)了。
七、我的收獲
A.程序員大多都不喜歡寫(xiě)文檔,我們以前也是特討厭,記得以前都是系統(tǒng)開(kāi)發(fā)完了,為了應(yīng)付項(xiàng)目驗(yàn)收,就匆匆忙忙的一組人在那里補(bǔ)文檔。在我們的思想里,所謂的文檔就是一些廢話,一句話硬是用十句話來(lái)代替的無(wú)聊透頂。B.代碼風(fēng)格要規(guī)范
以前做項(xiàng)目,我們都是不怎么去注意代碼風(fēng)格和寫(xiě)代碼的規(guī)范,都是稍微想一下就直接開(kāi)始寫(xiě)代碼了。注釋也很少用,總感覺(jué)我們自己寫(xiě)的代碼,我們?cè)趺磿?huì)不知道它做了些什么事呢?總覺(jué)得我們自己寫(xiě)的代碼我們?cè)趺磿?huì)不知道它是用來(lái)做什么的呢。一直都不相信這是個(gè)事實(shí),但事實(shí)上,項(xiàng)目驗(yàn)收后,系統(tǒng)剛開(kāi)始使用的人少,也就不會(huì)出現(xiàn)潛在的錯(cuò)誤,隨著時(shí)間的增加,久而久之,當(dāng)大量用戶并發(fā)訪問(wèn)的時(shí)候,系統(tǒng)的Bug就暴漏出來(lái)了,那時(shí)你再用熟悉的Eclipse打開(kāi)整個(gè)項(xiàng)目的源碼時(shí),再去看自己寫(xiě)的代碼的時(shí)候,真的發(fā)現(xiàn),我們定義的這個(gè)變量名是什么意思啊?我們的這個(gè)Flag是用來(lái)判斷什么的。课覀兊膇f()中條件不知道是判斷什么?Function()也忘記是什么功能了?想想好可怕啊。難道真的都忘記了嗎?回答是肯定的:真的忘了。C.心得體會(huì):
通過(guò)做該網(wǎng)盤項(xiàng)目,在這2年的鍛煉中,我們才真的體會(huì)到,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),一個(gè)好的程序是先寫(xiě)好設(shè)計(jì)文檔再進(jìn)行編程的,在設(shè)計(jì)文檔的指導(dǎo)下,才能寫(xiě)出安全的代碼。如果你不寫(xiě)文檔,一開(kāi)始就寫(xiě)程序,這樣你就不會(huì)按已設(shè)計(jì)好的路線走,而是想到哪寫(xiě)到哪。小功能還好說(shuō),要是大功能,就容易混亂.
常熟理工學(xué)院SIG小組3/28/20
剛開(kāi)始我們還很不習(xí)慣這一系列的編程風(fēng)格,很多的規(guī)范,尤其是命名,方法和注釋,都有這著很多限制,讓我們覺(jué)得真羅唆,寫(xiě)個(gè)程序完成功能不就可以了嗎,明明1小時(shí)做完的事情非得讓人用3、4個(gè)小時(shí)去做,我們現(xiàn)在真的明白這樣做的好處了,我們已經(jīng)習(xí)慣這樣的編程風(fēng)格了,這也養(yǎng)成了我們的一個(gè)編程習(xí)慣了,深有體會(huì)啊。
最忙的時(shí)候就是我們成長(zhǎng)和收獲最多的時(shí)候。
八、網(wǎng)盤項(xiàng)目開(kāi)發(fā)的最大體會(huì)
我們覺(jué)得項(xiàng)目開(kāi)發(fā)的開(kāi)始時(shí)候,應(yīng)該由項(xiàng)目負(fù)責(zé)人很好的對(duì)項(xiàng)目是什么項(xiàng)目,具體大概做什么事情,是誰(shuí)提出來(lái)的,目的是解決什么問(wèn)題,以及里面用到的很多專有名詞做個(gè)細(xì)致的說(shuō)明,而不是從一開(kāi)始就分幾本式樣書(shū),給個(gè)靜態(tài)Html的Demo看看,然后搭建好開(kāi)發(fā)環(huán)境就按照式樣設(shè)計(jì)書(shū)來(lái)開(kāi)發(fā)。
九、軟件測(cè)試(單體測(cè)試和連接測(cè)試)
我們首先認(rèn)為,編寫(xiě)程序的時(shí)候不要想出了問(wèn)題再解決,而是要想如何不會(huì)出現(xiàn)問(wèn)題,要根據(jù)經(jīng)驗(yàn)來(lái)預(yù)測(cè)可能出現(xiàn)的問(wèn)題,然后避免出現(xiàn)。測(cè)試,說(shuō)的直接點(diǎn)就是給軟件找錯(cuò)誤。
很多人認(rèn)為發(fā)現(xiàn)錯(cuò)誤是軟件測(cè)試的唯一目的,查找不出錯(cuò)誤的測(cè)試就是沒(méi)有價(jià)值的測(cè)試,實(shí)際上我們不這么認(rèn)為。
我們覺(jué)得對(duì)開(kāi)發(fā)人員來(lái)說(shuō),我們要把測(cè)試出來(lái)的Bug都應(yīng)該做個(gè)分析,知道錯(cuò)的原因之后,我們就應(yīng)該在下個(gè)項(xiàng)目中防止類似的錯(cuò)誤發(fā)生,而真正來(lái)提高我們開(kāi)發(fā)的效率。
常熟理工學(xué)院SIG小組3/28/20
擴(kuò)展閱讀:軟件開(kāi)發(fā)心得(設(shè)計(jì)篇)
論文題目:軟件測(cè)試
摘要..................................................................................................................................................2第一章介紹.....................................................................................................................................3
1.1軟件測(cè)試簡(jiǎn)介....................................................................................................................3
1.1.1軟件測(cè)試的概念.....................................................................................................31.1.2軟件測(cè)試的原則.....................................................................................................31.2軟件測(cè)試的心理學(xué)............................................................................................................51.3軟件測(cè)試的內(nèi)容................................................................................................................71.4軟件測(cè)試的分類................................................................................................................81.5軟件測(cè)試模型..................................................................................................................131.6軟件測(cè)試職業(yè)發(fā)展前景..................................................................................................171.7軟件測(cè)試的誤區(qū)..............................................................................................................181.8軟件測(cè)試的前景..............................................................................................................20第二章軟件測(cè)試工作的經(jīng)驗(yàn)和心得...........................................................................................21
2.1軟件測(cè)試用例的規(guī)范......................................................................................................212.2自動(dòng)化測(cè)試......................................................................................................................252.3測(cè)試中的問(wèn)題..................................................................................................................28
2.3.1測(cè)試運(yùn)用的是認(rèn)識(shí)論...........................................................................................282.3.2測(cè)試無(wú)法發(fā)現(xiàn)所有的程序問(wèn)題...........................................................................28
參考資料.........................................................................................................................................29論文信息.........................................................................................................................................摘要
隨著軟件產(chǎn)業(yè)的發(fā)展,軟件產(chǎn)品的質(zhì)量控制與質(zhì)量管理正逐漸成為軟件企業(yè)生存與發(fā)展的核心。幾乎每個(gè)大中型IT企業(yè)的軟件產(chǎn)品在發(fā)布前都需要大量的質(zhì)量控制、測(cè)試和文檔工作,而這些工作必須依靠擁有嫻熟技術(shù)的專業(yè)軟件人才來(lái)完成。軟件測(cè)試工程師就是這樣的一個(gè)企業(yè)重頭角色。目前的現(xiàn)狀是:一方面企業(yè)對(duì)高質(zhì)量的測(cè)試工程師需求量越來(lái)越大越大,另一方面國(guó)內(nèi)原來(lái)對(duì)測(cè)試工程師的職業(yè)重視程度不夠,使許多人不了解測(cè)試工程師具體是從事什么工作。故寫(xiě)此論文,對(duì)軟件測(cè)試的概念、理念、方法、技術(shù)等進(jìn)行一下表述,并總結(jié)一個(gè)多月中軟件測(cè)試工作的心得和經(jīng)驗(yàn)。
論文主要分兩個(gè)部分講述了軟件測(cè)試:
第一章,從理論上介紹軟件測(cè)試的定義、理念等。
第二章,從一個(gè)多月的軟件測(cè)試工作中獲得的經(jīng)驗(yàn)和心得。第一章介紹
1.1軟件測(cè)試簡(jiǎn)介
軟件測(cè)試就是利用測(cè)試工具按照測(cè)試方案和流程對(duì)產(chǎn)品進(jìn)行功能和性能測(cè)試,甚至根據(jù)需要編寫(xiě)不同的測(cè)試工具,設(shè)計(jì)和維護(hù)測(cè)試系統(tǒng),對(duì)測(cè)試方案可能出現(xiàn)的問(wèn)題進(jìn)行分析和評(píng)估。執(zhí)行測(cè)試用例后,需要跟蹤故障,以確保開(kāi)發(fā)的產(chǎn)品適合需求。
1.1.1軟件測(cè)試的概念
使用人工或者自動(dòng)手段來(lái)運(yùn)行或測(cè)試某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別.
它是幫助識(shí)別開(kāi)發(fā)完成(中間或最終的版本)的計(jì)算機(jī)軟件(整體或部分)的正確度(correctness)、完全度(completeness)和質(zhì)量(quality)的軟件過(guò)程;是SQA(softwarequalityassurance)的重要子域。
軟件測(cè)試工程師GrenfordJ.Myers曾對(duì)軟件測(cè)試的目的提出過(guò)以下觀點(diǎn):(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程;
(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
然而,這種觀點(diǎn)指出測(cè)試是以查找錯(cuò)誤為中心,而不是為了演示軟件的正確功能.但是只從字面意思理解,可能會(huì)產(chǎn)生誤導(dǎo),認(rèn)為發(fā)現(xiàn)錯(cuò)誤是軟件測(cè)試的唯一目的,查找不出錯(cuò)誤的測(cè)試就是沒(méi)有價(jià)值的測(cè)試,實(shí)際上并非如此!
(1)測(cè)試并不僅僅是為了找出錯(cuò)誤.通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢(shì),可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開(kāi)發(fā)過(guò)程中的缺陷,以便及時(shí)改進(jìn);
(2)這種分析也能幫助測(cè)試人員設(shè)計(jì)出有針對(duì)性的測(cè)試方法,改善測(cè)試的效率和有效性;(3)沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定軟件質(zhì)量的一種方法
1.1.2軟件測(cè)試的原則
軟件測(cè)試的幾大原則:
1.軟件開(kāi)發(fā)人員即程序員應(yīng)當(dāng)避免測(cè)試自己的程序
不管是程序員還是開(kāi)發(fā)小組都應(yīng)當(dāng)避免測(cè)試自己的程序或者本組開(kāi)發(fā)的功能模塊。若條件允許,應(yīng)當(dāng)由獨(dú)立于開(kāi)發(fā)組和客戶的第三方測(cè)試組或測(cè)試機(jī)構(gòu)來(lái)進(jìn)行軟件測(cè)試。但這并不是說(shuō)程序員不能測(cè)試自己的程序,而且更加鼓勵(lì)程序員進(jìn)行調(diào)試,因?yàn)闇y(cè)試由別人來(lái)進(jìn)行可能會(huì)會(huì)更加有效、客觀,并且容易成功,而允許程序員自己調(diào)試也會(huì)更加有效和針對(duì)性。
2.應(yīng)盡早地和不斷地進(jìn)行軟件測(cè)試
應(yīng)當(dāng)把軟件測(cè)試貫穿到整個(gè)軟件開(kāi)發(fā)的過(guò)程中,而不應(yīng)該把軟件測(cè)試看作是其過(guò)程中的一個(gè)獨(dú)立階段。因?yàn)樵谲浖_(kāi)發(fā)的每一環(huán)節(jié)都有可能產(chǎn)生意想不到的問(wèn)題,其影響因素有很多,比如軟件本身的抽象性和復(fù)雜性、軟件所涉及問(wèn)題的復(fù)雜性、軟件開(kāi)發(fā)各個(gè)階段工作的多樣性,以及各層次工作人員的配合關(guān)系等。所以要堅(jiān)持軟件開(kāi)發(fā)各階段的技術(shù)評(píng)審,把錯(cuò)誤克服在早期,從而減少成本,提高軟件質(zhì)量。
3.對(duì)測(cè)試用例要有正確的態(tài)度:第一,測(cè)試用例應(yīng)當(dāng)由測(cè)試輸入數(shù)據(jù)和預(yù)期輸出結(jié)果這兩部分組成;第二,在設(shè)計(jì)測(cè)試用例時(shí),不僅要考慮合理的輸入條件,更要注意不合理的輸入條件。因?yàn)檐浖度雽?shí)際運(yùn)行中,往往不遵守正常的使用方法,卻進(jìn)行了一些甚至大量的意外輸入導(dǎo)致軟件一時(shí)半時(shí)不能做出適當(dāng)?shù)姆磻?yīng),就很容易產(chǎn)生一系列的問(wèn)題,輕則輸出錯(cuò)誤的結(jié)果,重則癱瘓失效!因此常用一些不合理的輸入條件來(lái)發(fā)現(xiàn)更多的鮮為人知的軟件缺陷。
4.人以群分,物以類聚,軟件測(cè)試也不例外,一定要充分注意軟件測(cè)試中的群集現(xiàn)象。不要以為發(fā)現(xiàn)幾個(gè)錯(cuò)誤并且解決這些問(wèn)題之后,就不需要測(cè)試了。反而這里是錯(cuò)誤群集的地方,對(duì)這段程序要重點(diǎn)測(cè)試,以提高測(cè)試投資的效益。
5.嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性,以避免發(fā)生疏漏或者重復(fù)無(wú)效的工作。6.應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果進(jìn)行全面檢查。一定要全面地、仔細(xì)地檢查測(cè)試結(jié)果,但常常被人們忽略,導(dǎo)致許多錯(cuò)誤被遺漏。
7.妥善保存測(cè)試用例、測(cè)試計(jì)劃、測(cè)試報(bào)告和最終分析報(bào)告,以備回歸測(cè)試及維護(hù)之用。
在遵守以上原則的基礎(chǔ)上進(jìn)行軟件測(cè)試,可以以最少的時(shí)間和人力找出軟件中的各種缺陷,從而達(dá)到保證軟件質(zhì)量的目的。
1.2軟件測(cè)試的心理學(xué)
人類行為具有高度目標(biāo)性,確立一個(gè)正確的目標(biāo)有著重要的心理學(xué)影響。軟件測(cè)試的心理學(xué)問(wèn)題就是如何擺正測(cè)試的兩個(gè)目標(biāo)的關(guān)系,使得測(cè)試活動(dòng)更加富有成效。
1.程序測(cè)試的過(guò)程具有破壞性
每當(dāng)測(cè)試一個(gè)程序時(shí),人們總希望為程序增加一些價(jià)值。利用測(cè)試來(lái)增加程序的價(jià)值,是指通過(guò)測(cè)試,找出并修改盡可能多的程序缺陷,從而提高程序的可靠性或質(zhì)量。
因此,不要只是為了證明程序能夠正確運(yùn)行而去測(cè)試程序。相反,應(yīng)該一開(kāi)始就假設(shè)程序中隱藏著錯(cuò)誤(這種假設(shè)幾乎對(duì)所有的程序都成立),然后測(cè)試程序,發(fā)現(xiàn)盡可能多的錯(cuò)誤。
事實(shí)上,如果把測(cè)試目標(biāo)定位于要證明程序中沒(méi)有缺陷,那么就會(huì)在潛意識(shí)中傾向于實(shí)現(xiàn)這個(gè)目標(biāo)。也就是說(shuō),測(cè)試人員會(huì)傾向于挑選那些使程序失效的可能性較小的測(cè)試數(shù)據(jù)。另一方面,如果把測(cè)試目標(biāo)定位于要證明程序中存在缺陷,那么就會(huì)選擇一些容易發(fā)現(xiàn)程序缺陷的測(cè)試數(shù)據(jù)。而后一種態(tài)度會(huì)比前者給程序增加更多的價(jià)值。
因此,大多數(shù)測(cè)試專業(yè)人員都贊同Myers對(duì)測(cè)試的定義:—測(cè)試是為發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的錯(cuò)誤!@個(gè)定義意味著程序測(cè)試的過(guò)程是具有破壞性的,甚至是一個(gè)—施虐‖過(guò)程。開(kāi)發(fā)人員可能不愿意這么做,因?yàn)槿藗兛偸莾A向于建設(shè)而不是破壞。這個(gè)定義還暗示了對(duì)于一個(gè)特定的程序,應(yīng)該如何設(shè)計(jì)測(cè)試用例(測(cè)試數(shù)據(jù))、哪些人應(yīng)該而哪些人又不應(yīng)該執(zhí)行測(cè)試。
事實(shí)上,如果在測(cè)試某個(gè)程序段時(shí)發(fā)現(xiàn)了可以糾正的缺陷,或者測(cè)試最終確定在沒(méi)有其他缺陷,則應(yīng)將這次合理設(shè)計(jì)并得到有效執(zhí)行的測(cè)試稱作是—成功的‖。而所謂—不成功的‖測(cè)試,僅指未能適當(dāng)?shù)貙?duì)程序進(jìn)行檢查,未能找出程序中潛藏缺陷的測(cè)試。因?yàn)檐浖胁豢赡軟](méi)有缺陷,沒(méi)有找出它們,當(dāng)然測(cè)試是—不成功的‖。
—軟件測(cè)試就是證明軟件不存在錯(cuò)誤的過(guò)程‖。對(duì)幾乎所有的程序而言,甚至是非常小的程序,這個(gè)目標(biāo)實(shí)際上是無(wú)法達(dá)到的。因?yàn)榧词钩绦蛲耆珜?shí)現(xiàn)預(yù)期要求,仍可能包含有缺陷。也就是說(shuō),如果程序不按要求工作,它顯然有缺陷,但如果程序做了不要它做的事,它也有缺陷。
心理學(xué)研究告訴我們,當(dāng)人們?cè)诟梢患呀?jīng)知道是不合適的或不可能做到的事時(shí),往往他們的表現(xiàn)就相當(dāng)糟糕。把程序測(cè)試定義為在程序中找出錯(cuò)誤的過(guò)程,就使測(cè)試成了可以做到的任務(wù),從而克服了心理上存在的問(wèn)題。雖然這看起來(lái)像是個(gè)微妙的文字游戲,但對(duì)成功地進(jìn)行軟件測(cè)試有很大的影響。
總之,軟件測(cè)試更適宜被視為試圖發(fā)現(xiàn)程序中錯(cuò)誤(假設(shè)其存在)的破壞性的過(guò)程。一個(gè)成功的測(cè)試,通過(guò)誘發(fā)程序發(fā)生錯(cuò)誤,可以在這個(gè)方向上促進(jìn)軟件質(zhì)量的改進(jìn)。當(dāng)然最終人們還是要通過(guò)軟件測(cè)試來(lái)建立某種程度的信心:軟件做了其應(yīng)該做的,而沒(méi)有做其不應(yīng)該做的。
2.程序員應(yīng)避免測(cè)試自己的程序
由開(kāi)發(fā)人員來(lái)測(cè)試自己的代碼是一件很不妥當(dāng)?shù)氖虑。開(kāi)發(fā)和測(cè)試生來(lái)就是不同的活動(dòng)。開(kāi)發(fā)是創(chuàng)造或者建立某種事物的行為,如一個(gè)功能模塊或整個(gè)系統(tǒng)。而測(cè)試的重要目的是證實(shí)一個(gè)模塊或者一個(gè)系統(tǒng)工作不正常。這兩個(gè)活動(dòng)之間有著本質(zhì)的矛盾。一個(gè)人不太可能把兩個(gè)截然對(duì)立的角色都扮演地很好,因此應(yīng)當(dāng)限制開(kāi)發(fā)人員在測(cè)試中的參與,給他們比較合適的任務(wù)是進(jìn)行最底層的測(cè)試單元測(cè)試。
當(dāng)一個(gè)程序員完成了設(shè)計(jì)與編寫(xiě)程序的建設(shè)性工作后,要一夜之間突然改變他的觀點(diǎn),設(shè)法對(duì)程序形成一個(gè)完全否定的態(tài)度,那是非常困難的。所以,大部分程序員都由于不能使自己進(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)。
3.程序設(shè)計(jì)組織不應(yīng)測(cè)試自己的程序在宏觀意義上,一個(gè)程序設(shè)計(jì)組織或一個(gè)工程項(xiàng)目是個(gè)有生命的有機(jī)體,它同樣有心理學(xué)問(wèn)題。在大多數(shù)情況下,人們都以—在給定日期內(nèi),以一定代價(jià)完成程序編制任務(wù)的能力‖來(lái)衡量程序設(shè)計(jì)組織和項(xiàng)目管理人員的。這樣做的理由是時(shí)間和成本指標(biāo)便于衡量,而程序的質(zhì)量很難度量。要程序設(shè)計(jì)組織在測(cè)試自己的程序時(shí)持客觀態(tài)度是很困難的,因?yàn)槿绻谜_的定義看待測(cè)試,就不大可能按預(yù)定計(jì)劃完成測(cè)試,也不大可能把耗費(fèi)的代價(jià)限制在要求的范圍以內(nèi)。
軟件生產(chǎn)的三個(gè)最重要的因素是:質(zhì)量、進(jìn)度和費(fèi)用。由于費(fèi)用和進(jìn)度的限制,要開(kāi)發(fā)一種高質(zhì)量、快速交付和低成本的軟件產(chǎn)品并不容易。也就是說(shuō)要同時(shí)達(dá)到三個(gè)目標(biāo)是困難的。因此在軟件產(chǎn)品的開(kāi)發(fā)中要權(quán)衡它們之間的關(guān)系,是軟件的特性能滿足用戶的要求,這意味著軟件產(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ì)量三者的制約,在軟件開(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è)試有更充分的條件按測(cè)試要求去完成。
專業(yè)性獨(dú)立測(cè)試作為一種專業(yè)工作,在長(zhǎng)期的工作過(guò)程中勢(shì)必能夠積累大量實(shí)踐經(jīng)驗(yàn),形成自己的專業(yè)知識(shí)。同時(shí)軟件測(cè)試也是技術(shù)含量很高的工作,需要有專業(yè)隊(duì)伍加以研究,并進(jìn)行工程實(shí)踐。專業(yè)化分工是提高測(cè)試水平、保證測(cè)試質(zhì)量、充分發(fā)揮測(cè)試效應(yīng)的必然途徑。
權(quán)威性由于專業(yè)優(yōu)勢(shì),獨(dú)立測(cè)試工作形成的測(cè)試結(jié)果更具信服力,而測(cè)試結(jié)果常常和對(duì)軟件的質(zhì)量評(píng)價(jià)聯(liá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)生不利的影響。
1.3軟件測(cè)試的內(nèi)容
軟件測(cè)試主要工作內(nèi)容是驗(yàn)證(verification)和確認(rèn)(validation),下面分別給出其概念:
驗(yàn)證(verification)是保證軟件正確地實(shí)現(xiàn)了一些特定功能的一系列活動(dòng),即保證軟件做了你所期望的事情。(Dotherightthing)
1.確定軟件生存周期中的一個(gè)給定階段的產(chǎn)品是否達(dá)到前階段確立的需求的過(guò)程;2.程序正確性的形式證明,即采用形式理論證明程序符合設(shè)計(jì)規(guī)約規(guī)定的過(guò)程;3.評(píng)市、審查、測(cè)試、檢查、審計(jì)等各類活動(dòng),或?qū)δ承╉?xiàng)處理、服務(wù)或文件等是否和規(guī)定的需求相一致進(jìn)行判斷和提出報(bào)告。
確認(rèn)(validation)是一系列的活動(dòng)和過(guò)程,目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的邏輯正確性。即保證軟件以正確的方式來(lái)做了這個(gè)事件(Doitright)
1.靜態(tài)確認(rèn),不在計(jì)算機(jī)上實(shí)際執(zhí)行程序,通過(guò)人工或程序分析來(lái)證明軟件的正確性;
2.動(dòng)態(tài)確認(rèn),通過(guò)執(zhí)行程序做分析,測(cè)試程序的動(dòng)態(tài)行為,以證實(shí)軟件是否存在問(wèn)題。
軟件測(cè)試的對(duì)象不僅僅是程序測(cè)試,軟件測(cè)試應(yīng)該包括整個(gè)軟件開(kāi)發(fā)期間各個(gè)階段所產(chǎn)生的文檔,如需求規(guī)格說(shuō)明、概要設(shè)計(jì)文檔、詳細(xì)設(shè)計(jì)文檔,當(dāng)然軟件測(cè)試的主要對(duì)象還是源程序。
1.4軟件測(cè)試的分類
從是否關(guān)心軟件內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)的角度劃分
A.白盒測(cè)試B.黑盒測(cè)試C.灰盒測(cè)試
從是否執(zhí)行程序的角度
A.靜態(tài)測(cè)試B.動(dòng)態(tài)測(cè)試。
從軟件開(kāi)發(fā)的過(guò)程按階段劃分有
A.單元測(cè)試B.集成測(cè)試C.確認(rèn)測(cè)試D.系統(tǒng)測(cè)試E.驗(yàn)收測(cè)試
*測(cè)試過(guò)程按4個(gè)步驟進(jìn)行,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試及發(fā)版測(cè)試。*開(kāi)始是單元測(cè)試,集中對(duì)用源代碼實(shí)現(xiàn)的每一個(gè)程序單元進(jìn)行測(cè)試,檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。
*集成測(cè)試把已測(cè)試過(guò)的模塊組裝起來(lái),主要對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測(cè)試。
*確認(rèn)測(cè)試則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說(shuō)明中確定了的各種需求,以及軟件配置是否完全、正確。
*系統(tǒng)測(cè)試把已經(jīng)經(jīng)過(guò)確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測(cè)試。
單元測(cè)試(UnitTesting)
*單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位─程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。
*單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。
1.單元測(cè)試的內(nèi)容
*在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。
(1)模塊接口測(cè)試
*在單元測(cè)試的開(kāi)始,應(yīng)對(duì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。測(cè)試項(xiàng)目包括:調(diào)用本模塊的輸入?yún)?shù)是否正確;
本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確;全局量的定義在各模塊中是否一致;*在做內(nèi)外存交換時(shí)要考慮:文件屬性是否正確;
OPEN與CLOSE語(yǔ)句是否正確;緩沖區(qū)容量與記錄長(zhǎng)度是否匹配;在進(jìn)行讀寫(xiě)操作之前是否打開(kāi)了文件;在結(jié)束文件處理時(shí)是否關(guān)閉了文件;正文書(shū)寫(xiě)/輸入錯(cuò)誤,
I/O錯(cuò)誤是否檢查并做了處理。(2)局部數(shù)據(jù)結(jié)構(gòu)測(cè)試
*不正確或不一致的數(shù)據(jù)類型說(shuō)明*使用尚未賦值或尚未初始化的變量*錯(cuò)誤的初始值或錯(cuò)誤的缺省值*變量名拼寫(xiě)錯(cuò)或書(shū)寫(xiě)錯(cuò)*不一致的數(shù)據(jù)類型*全局?jǐn)?shù)據(jù)對(duì)模塊的影響(3)路徑測(cè)試
*選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。*應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤。
*對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤。(4)錯(cuò)誤處理測(cè)試
*出錯(cuò)的描述是否難以理解
*出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位*顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符*對(duì)錯(cuò)誤條件的處理正確與否
*在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等(5)邊界測(cè)試
*注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。
*如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。
2.單元測(cè)試的步驟
*模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其它模塊。
驅(qū)動(dòng)模塊(driver)
樁模塊(stub)──存根模塊*如果一個(gè)模塊要完成多種功能,可以將這個(gè)模塊看成由幾個(gè)小程序組成。必須對(duì)其中的每個(gè)小程序先進(jìn)行單元測(cè)試要做的工作,對(duì)關(guān)鍵模塊還要做性能測(cè)試。
*對(duì)支持某些標(biāo)準(zhǔn)規(guī)程的程序,更要著手進(jìn)行互聯(lián)測(cè)試。有人把這種情況特別稱為模塊測(cè)試,以區(qū)別單元測(cè)試。
集成測(cè)試(IntegratedTesting)*集成測(cè)試(集成測(cè)試、聯(lián)合測(cè)試)
*通常,在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問(wèn)題是:
在把各個(gè)模塊連接起來(lái)的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)期要求的父功能;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題;單個(gè)模塊的誤差累積起來(lái),是否會(huì)放大,從而達(dá)到不能接受的程度。在單元測(cè)試的同時(shí)可進(jìn)行集成測(cè)試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問(wèn)題,最終構(gòu)成要求的軟件系統(tǒng)。*子系統(tǒng)的集成測(cè)試特別稱為部件測(cè)試,它所做的工作是要找出集成后的子系統(tǒng)與系統(tǒng)需求規(guī)格說(shuō)明之間的不一致。
*通常,把模塊集成成為系統(tǒng)的方式有兩種一次性集成方式增殖式集成方式
1.一次性集成方式(bigbang)
*它是一種非增殖式組裝方式。也叫做整體拼裝。*使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求的軟件系統(tǒng)。
2.增殖式集成方式
*這種集成方式又稱漸增式集成
*首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng)*在集成的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題*通過(guò)增殖逐步組裝成為要求的軟件系統(tǒng)。(1)自頂向下的增殖方式
*這種集成方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。*自頂向下的增殖方式在測(cè)試過(guò)程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。*選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能。(2)自底向上的增殖方式
*這種集成的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開(kāi)始集成和測(cè)試。
*因?yàn)槟K是自底向上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經(jīng)組裝并測(cè)試完成,所以不再需要樁模塊。在模塊的測(cè)試過(guò)程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到。
*自頂向下增殖的方式和自底向上增殖的方式各有優(yōu)缺點(diǎn)。*一般來(lái)講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)。(3)混合增殖式測(cè)試
*衍變的自頂向下的增殖測(cè)試
首先對(duì)輸入/輸出模塊和引入新算法模塊進(jìn)行測(cè)試;再自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng);然后由主模塊開(kāi)始自頂向下進(jìn)行增殖測(cè)試。*自底向上-自頂向下的增殖測(cè)試
首先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測(cè)試;然后對(duì)含寫(xiě)操作的子系統(tǒng)做自頂向下的組裝與測(cè)試。*回歸測(cè)試
這種方式采取自頂向下的方式測(cè)試被修改的模塊及其子模塊;然后將這一部分視為子系統(tǒng),再自底向上測(cè)試。關(guān)鍵模塊問(wèn)題
*在組裝測(cè)試時(shí),應(yīng)當(dāng)確定關(guān)鍵模塊,對(duì)這些關(guān)鍵模塊及早進(jìn)行測(cè)試。*關(guān)鍵模塊的特征:①滿足某些軟件需求;②在程序的模塊結(jié)構(gòu)中位于較高的層次(高層控制模塊);③較復(fù)雜、較易發(fā)生錯(cuò)誤;④有明確定義的性能要求。確認(rèn)測(cè)試(ValidationTesting)*確認(rèn)測(cè)試又稱有效性測(cè)試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。
*對(duì)軟件的功能和性能要求在軟件需求規(guī)格說(shuō)明書(shū)中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測(cè)試的基礎(chǔ)。
1.進(jìn)行有效性測(cè)試(黑盒測(cè)試)
*有效性測(cè)試是在模擬的環(huán)境(可能就是開(kāi)發(fā)的環(huán)境)下,運(yùn)用黑盒測(cè)試的方法,驗(yàn)證被測(cè)軟件是否滿足需求規(guī)格說(shuō)明書(shū)列出的需求。
*首先制定測(cè)試計(jì)劃,規(guī)定要做測(cè)試的種類。還需要制定一組測(cè)試步驟,描述具體的測(cè)試用例。
*通過(guò)實(shí)施預(yù)定的測(cè)試計(jì)劃和測(cè)試步驟,確定軟件的特性是否與需求相符;所有的文檔都是正確且便于使用;
同時(shí),對(duì)其它軟件需求,例如可移植性、兼容性、出錯(cuò)自動(dòng)恢復(fù)、可維護(hù)性等,也都要進(jìn)行測(cè)試
*在全部軟件測(cè)試的測(cè)試用例運(yùn)行完后,所有的測(cè)試結(jié)果可以分為兩類:測(cè)試結(jié)果與預(yù)期的結(jié)果相符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明書(shū)相符合,從而這部分程序被接受。
測(cè)試結(jié)果與預(yù)期的結(jié)果不符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明不一致,因此要為它提交一份問(wèn)題報(bào)告。
2.軟件配置復(fù)查
n軟件配置復(fù)查的目的是保證u軟件配置的所有成分都齊全;u各方面的質(zhì)量都符合要求;u具有維護(hù)階段所必需的細(xì)節(jié);u而且已經(jīng)編排好分類的目錄。
n應(yīng)當(dāng)嚴(yán)格遵守用戶手冊(cè)和操作手冊(cè)中規(guī)定的使用步驟,以便檢查這些文檔資料的完整性和正確性。
驗(yàn)收測(cè)試(AcceptanceTesting)
*在通過(guò)了系統(tǒng)的有效性測(cè)試及軟件配置審查之后,就應(yīng)開(kāi)始系統(tǒng)的驗(yàn)收測(cè)試。*驗(yàn)收測(cè)試是以用戶為主的測(cè)試。軟件開(kāi)發(fā)人員和QA(質(zhì)量保證)人員也應(yīng)參加。*由用戶參加設(shè)計(jì)測(cè)試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測(cè)試。
*在測(cè)試過(guò)程中,除了考慮軟件的功能和性能外,還應(yīng)對(duì)軟件的可移植性、兼容性、可維護(hù)性、錯(cuò)誤的恢復(fù)功能等進(jìn)行確認(rèn)。
*確認(rèn)測(cè)試應(yīng)交付的文檔有:確認(rèn)測(cè)試分析報(bào)告
最終的用戶手冊(cè)和操作手冊(cè)項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告。
系統(tǒng)測(cè)試(SystemTesting)
*系統(tǒng)測(cè)試,是將通過(guò)確認(rèn)測(cè)試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。
*系統(tǒng)測(cè)試的目的在于通過(guò)與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。
1.5軟件測(cè)試模型
軟件測(cè)試若使用經(jīng)典的V模型階段可以分為
單元測(cè)試集成測(cè)試系統(tǒng)測(cè)試
V模型是最具有代表意義的測(cè)試模型。
V模型是軟件開(kāi)發(fā)瀑布模型的變種,它反映了測(cè)試活動(dòng)與分析和設(shè)計(jì)的關(guān)系。從左到右,描述了基本的開(kāi)發(fā)過(guò)程和測(cè)試行為,非常明確地標(biāo)明了測(cè)試過(guò)程中存在的不同級(jí)別,并且清楚地描述了這些測(cè)試階段和開(kāi)發(fā)過(guò)程期間各階段的對(duì)應(yīng)關(guān)系。
左邊依次下降的是開(kāi)發(fā)過(guò)程各階段,與此相對(duì)應(yīng)的是右邊依次上升的部分,即各測(cè)試過(guò)程的各個(gè)階段。
用戶需求驗(yàn)收測(cè)試
需求分析和系統(tǒng)設(shè)計(jì)確認(rèn)測(cè)試和系統(tǒng)測(cè)試概要設(shè)計(jì)集成測(cè)試詳細(xì)設(shè)計(jì)單元測(cè)試編碼
V模型問(wèn)題:
1.測(cè)試是開(kāi)發(fā)之后的一個(gè)階段。2.測(cè)試的對(duì)象就是程序本身。
3.實(shí)際應(yīng)用中容易導(dǎo)致需求階段的錯(cuò)誤一直到最后系統(tǒng)測(cè)試階段才被發(fā)現(xiàn)。4.整個(gè)軟件產(chǎn)品的過(guò)程質(zhì)量保證完全依賴于開(kāi)發(fā)人員的能力和對(duì)工作的責(zé)任心,而且上一步的結(jié)果必須是充分和正確的,如果任何一個(gè)環(huán)節(jié)出了問(wèn)題,則必將嚴(yán)重的影響整個(gè)工程的質(zhì)量和預(yù)期進(jìn)度
W模型
W模型由Evolutif公司公司提出,相對(duì)于V模型,W模型增加了軟件各開(kāi)發(fā)階段中應(yīng)同步進(jìn)行的驗(yàn)證和確認(rèn)活動(dòng)。W模型由兩個(gè)V字型模型組成,分別代表測(cè)試與開(kāi)發(fā)過(guò)程,圖中明確表示出了測(cè)試與開(kāi)發(fā)的并行關(guān)系。W模型強(qiáng)調(diào):測(cè)試伴隨著整個(gè)軟件開(kāi)發(fā)周期,而且測(cè)試的對(duì)象不僅僅是程序,需求、設(shè)計(jì)等同樣要測(cè)試,也就是說(shuō),測(cè)試與開(kāi)發(fā)是同步進(jìn)行的。W模型有利于盡早地全面的發(fā)現(xiàn)問(wèn)題。例如,需求分析完成后,測(cè)試人員就應(yīng)該參與到對(duì)需求的驗(yàn)證和確認(rèn)活動(dòng)中,以盡早地找出缺陷所在。同時(shí),對(duì)需求的測(cè)試也有利于及時(shí)了解項(xiàng)目難度和測(cè)試風(fēng)險(xiǎn),及早制定應(yīng)對(duì)措施,這將顯著減少總體測(cè)試時(shí)間,加快項(xiàng)目進(jìn)度。但W模型也存在局限性。在W模型中,需求、設(shè)計(jì)、編碼等活動(dòng)被視為串行的,同時(shí),測(cè)試和開(kāi)發(fā)活動(dòng)也保持著一種線性的前后關(guān)系,上一階段完全結(jié)束,才可正式開(kāi)始下一個(gè)階段工作。這樣就無(wú)法支持迭代的開(kāi)發(fā)模型。對(duì)于當(dāng)前軟件開(kāi)發(fā)復(fù)雜多變的情況,W模型并不能解除測(cè)試管理面臨著困惑。
H模型
H模型中,軟件測(cè)試過(guò)程活動(dòng)完全獨(dú)立,貫穿于整個(gè)產(chǎn)品的周期,與其他流程并發(fā)地進(jìn)行,某個(gè)測(cè)試點(diǎn)準(zhǔn)備就緒時(shí),就可以從測(cè)試準(zhǔn)備階段進(jìn)行到測(cè)試執(zhí)行階段。軟件測(cè)試可以盡早的進(jìn)行,并且可以根據(jù)被測(cè)物的不同而分層次進(jìn)行。
這個(gè)示意圖演示了在整個(gè)生產(chǎn)周期中某個(gè)層次上的一次測(cè)試—微循環(huán)‖。圖中標(biāo)注的其它流程可以是任意的開(kāi)發(fā)流程,例如設(shè)計(jì)流程或者編碼流程。也就是說(shuō),只要測(cè)試條件成熟了,測(cè)試準(zhǔn)備活動(dòng)完成了,測(cè)試執(zhí)行活動(dòng)就可以進(jìn)行了。
H模型揭示了一個(gè)原理:軟件測(cè)試是一個(gè)獨(dú)立的流程,貫穿產(chǎn)品整個(gè)生命周期,與其他流程并發(fā)地進(jìn)行。H模型指出軟件測(cè)試要盡早準(zhǔn)備,盡早執(zhí)行。不同的測(cè)試活動(dòng)可以是按照某個(gè)次序先后進(jìn)行的,但也可能是反復(fù)的,只要某個(gè)測(cè)試達(dá)到準(zhǔn)備就緒點(diǎn),測(cè)試執(zhí)行活動(dòng)就可以開(kāi)展。
X模型
X模型也是對(duì)V模型的改進(jìn),X模型提出針對(duì)單獨(dú)的程序片段進(jìn)行相互分離的編碼和測(cè)試,此后通過(guò)頻繁的交接,通過(guò)集成最終合成為可執(zhí)行的程序。X模型的左邊描述的是針對(duì)單獨(dú)程序片段所進(jìn)行的相互分離的編碼和測(cè)試,此后將進(jìn)行頻繁的交接,通過(guò)集成最終成為可執(zhí)行的程序,然后再對(duì)這些可執(zhí)行程序進(jìn)行測(cè)試。己通過(guò)集成測(cè)試的成品可以進(jìn)行封裝并提交給用戶,也可以作為更大規(guī)模和范圍內(nèi)集成的一部分。多根并行的曲線表示變更可以在各個(gè)部分發(fā)生。由圖中可見(jiàn),X模型還定位了探索性測(cè)試,這是不進(jìn)行事先計(jì)劃的特殊類型的測(cè)試,這一方式往往能幫助有經(jīng)驗(yàn)的測(cè)試人員在測(cè)試計(jì)劃之外發(fā)現(xiàn)更多的軟件錯(cuò)誤。但這樣可能對(duì)測(cè)試造成人力、物力和財(cái)力的浪費(fèi),對(duì)測(cè)試員的熟練程度要求比較高。
1.6軟件測(cè)試職業(yè)發(fā)展前景
隨著我國(guó)軟件業(yè)的發(fā)展,專業(yè)的軟件測(cè)試人員成為了眾多知名公司追逐的對(duì)象,軟件測(cè)試有著廣闊的發(fā)展前景,具體可以分為:
初級(jí)測(cè)試工程師:初級(jí)職位,開(kāi)發(fā)測(cè)試腳本,執(zhí)行測(cè)試測(cè)試工程師/程序分析員:編寫(xiě)自動(dòng)測(cè)試腳本程序
高級(jí)測(cè)試工程師/程序分析員:確定測(cè)試過(guò)程并指導(dǎo)初級(jí)測(cè)試工程師測(cè)試組負(fù)責(zé)人:監(jiān)管1-3人工作,負(fù)責(zé)規(guī)模/成本估算
測(cè)試/編程負(fù)責(zé)人:監(jiān)管4-8人,安排和領(lǐng)導(dǎo)任務(wù)完成,提出技術(shù)方法
測(cè)試/質(zhì)量保證/項(xiàng)目經(jīng)理:負(fù)責(zé)8名以上人員的一個(gè)或多個(gè)項(xiàng)目,負(fù)責(zé)全生存期業(yè)務(wù)/產(chǎn)品經(jīng)理:負(fù)責(zé)多個(gè)項(xiàng)目的人員管理,負(fù)責(zé)項(xiàng)目方向和業(yè)務(wù)盈虧1.7軟件測(cè)試的誤區(qū)
市場(chǎng)對(duì)軟件質(zhì)量重要性的認(rèn)識(shí)逐漸增強(qiáng)。所以,軟件測(cè)試在軟件項(xiàng)目實(shí)施過(guò)程中的重要性日益突出。但是,現(xiàn)實(shí)情況是,與軟件編程比較,軟件測(cè)試的地位和作用,還沒(méi)有真正受到重視,對(duì)于很多人(甚至是軟件項(xiàng)目組的技術(shù)人員)還存在對(duì)軟件測(cè)試的認(rèn)識(shí)誤區(qū),這進(jìn)一步影響了軟件測(cè)試活動(dòng)開(kāi)展和真正提高軟件測(cè)試質(zhì)量。
(1)誤區(qū)之一:軟件開(kāi)發(fā)完成后進(jìn)行軟件測(cè)試
人們一般認(rèn)為,軟件項(xiàng)目要經(jīng)過(guò)以下幾個(gè)階段:需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),軟件編碼,軟件測(cè)試,軟件發(fā)布。據(jù)此,認(rèn)為軟件測(cè)試只是軟件編碼后的一個(gè)過(guò)程。這是不了解軟件測(cè)試周期的錯(cuò)誤認(rèn)識(shí)。軟件測(cè)試是一個(gè)系列過(guò)程活動(dòng),包括軟件測(cè)試需求分析,測(cè)試計(jì)劃設(shè)計(jì),測(cè)試用例設(shè)計(jì),執(zhí)行測(cè)試。因此,軟件測(cè)試貫穿于軟件項(xiàng)目的整個(gè)生命過(guò)程。在軟件項(xiàng)目的每一個(gè)階段都要進(jìn)行不同目的和內(nèi)容的測(cè)試活動(dòng),以保證各個(gè)階段的正確性。軟件測(cè)試的對(duì)象不僅僅是軟件代碼,還包括軟件需求文檔和設(shè)計(jì)文檔。軟件開(kāi)發(fā)與軟件測(cè)試應(yīng)該是交互進(jìn)行的,例如,單元編碼需要單元測(cè)試,模塊組合階段需要集成測(cè)試。如果等到軟件編碼結(jié)束后才進(jìn)行測(cè)試,那么,測(cè)試的時(shí)間將會(huì)很短,測(cè)試的覆蓋面將很不全面,測(cè)試的效果也將大打折扣。更嚴(yán)重的是如果此時(shí)發(fā)現(xiàn)了軟件需求階段或概要設(shè)計(jì)階段的錯(cuò)誤,如果要修復(fù)該類錯(cuò)誤,將會(huì)耗費(fèi)大量的時(shí)間和人力。
(2)誤區(qū)之二:軟件發(fā)布后如果發(fā)現(xiàn)質(zhì)量問(wèn)題,那是軟件測(cè)試人員的錯(cuò)
這種認(rèn)識(shí)很打擊軟件測(cè)試人員的積極性。軟件中的錯(cuò)誤可能來(lái)自軟件項(xiàng)目中的各個(gè)過(guò)程,軟件測(cè)試只能確認(rèn)軟件存在錯(cuò)誤,不能保證軟件沒(méi)有錯(cuò)誤,因?yàn)閺母旧现v,軟件測(cè)試不可能發(fā)現(xiàn)全部的錯(cuò)誤。從軟件開(kāi)發(fā)的角度看,軟件的高質(zhì)量不是軟件測(cè)試人員測(cè)出來(lái)的,是靠軟件生命周期的各個(gè)過(guò)程中設(shè)計(jì)出來(lái)的。出現(xiàn)軟件錯(cuò)誤,不能簡(jiǎn)單地歸結(jié)為某一個(gè)人的責(zé)任,有些錯(cuò)誤的產(chǎn)生可能不是技術(shù)原因,可能來(lái)自于混亂的項(xiàng)目管理。應(yīng)該分析軟件項(xiàng)目的各個(gè)過(guò)程,從過(guò)程改進(jìn)方面尋找產(chǎn)生錯(cuò)誤的原因和改進(jìn)的措施。
(3)誤區(qū)之三:軟件測(cè)試要求不高,隨便找個(gè)人多都行
很多人都認(rèn)為軟件測(cè)試就是安裝和運(yùn)行程序,點(diǎn)點(diǎn)鼠標(biāo),按按鍵盤的工作。這是由于不了解軟件測(cè)試的具體技術(shù)和方法造成的。隨之軟件工程學(xué)的發(fā)展和軟件項(xiàng)目管理經(jīng)驗(yàn)的提高,軟件測(cè)試已經(jīng)形成了一個(gè)獨(dú)立的技術(shù)學(xué)科,演變成一個(gè)具有巨大市場(chǎng)需求的行業(yè)。軟件測(cè)試技術(shù)不斷更新和完善,新工具,新流程,新測(cè)試設(shè)計(jì)方法都在不斷更新,需要掌握和學(xué)習(xí)很多測(cè)試知識(shí)。所以,具有編程經(jīng)驗(yàn)的程序員不一定是一名優(yōu)秀的測(cè)試工程師。軟件測(cè)試包括測(cè)試技術(shù)和管理兩個(gè)方面,完全掌握這兩個(gè)方面的內(nèi)容,需要很多測(cè)試實(shí)踐經(jīng)驗(yàn)和不斷學(xué)習(xí)精神。
(4)誤區(qū)之四:軟件測(cè)試是測(cè)試人員的事情,與程序員無(wú)關(guān)開(kāi)發(fā)和測(cè)試是相輔相成的過(guò)程
需要軟件測(cè)試人員、程序員和系統(tǒng)分析師等保持密切的聯(lián)系,需要更多的交流和協(xié)調(diào),以便提高測(cè)試效率。另外,對(duì)于單元測(cè)試主要應(yīng)該由程序員完成,必要時(shí)測(cè)試人員可以幫助設(shè)計(jì)測(cè)試樣例。對(duì)于測(cè)試中發(fā)現(xiàn)的軟件錯(cuò)誤,很多需要程序員通過(guò)修改編碼才能修復(fù)。程序員可以通過(guò)有目的的分析軟件錯(cuò)誤的類型、數(shù)量,找出產(chǎn)生錯(cuò)誤的位置和原因,以便在今后的編程中避免同樣的錯(cuò)誤,積累編程經(jīng)驗(yàn),提高編程能力。
(5)誤區(qū)之五:項(xiàng)目進(jìn)度吃緊時(shí)少做些測(cè)試,時(shí)間富裕時(shí)多做測(cè)試這是不重視軟件測(cè)試的表現(xiàn),也是軟件項(xiàng)目過(guò)程管理混亂的表現(xiàn),必然會(huì)降低軟件測(cè)試的質(zhì)量。一個(gè)軟件項(xiàng)目的順利實(shí)現(xiàn)需要有合理的項(xiàng)目進(jìn)度計(jì)劃,其中包括合理的測(cè)試計(jì)劃,對(duì)項(xiàng)目實(shí)施過(guò)程中的任何問(wèn)題,都要有風(fēng)險(xiǎn)分析和相應(yīng)的對(duì)策,不要因?yàn)殚_(kāi)發(fā)進(jìn)度的延期而簡(jiǎn)單的縮短測(cè)試時(shí)間、人力和資源。因?yàn)榭s短測(cè)試時(shí)間帶來(lái)的測(cè)試不完整,對(duì)項(xiàng)目質(zhì)量的下降引起的潛在風(fēng)險(xiǎn),往往造成更大的浪費(fèi)?朔@種現(xiàn)象的最好辦法是加強(qiáng)軟件過(guò)程的計(jì)劃和控制,包括軟件測(cè)試計(jì)劃、測(cè)試設(shè)計(jì)、測(cè)試執(zhí)行、測(cè)試度量和測(cè)試控制。
(6)誤區(qū)之六:軟件測(cè)試是沒(méi)有前途的工作,只有程序員才是軟件高手由于我國(guó)軟件整體開(kāi)發(fā)能力比較低,軟件過(guò)程很不規(guī)范,很多軟件項(xiàng)目的開(kāi)發(fā)都還停留在—作坊式‖和—壘雞窩‖階段。項(xiàng)目的成功往往靠個(gè)別全能程序員決定,他們負(fù)責(zé)總體設(shè)計(jì)和程序詳細(xì)設(shè)計(jì),認(rèn)為軟件開(kāi)發(fā)就是編寫(xiě)代碼,給人的印象往往是程序員是真正的牛人,具有很高的地位和待遇。因此,在這種環(huán)境下,軟件測(cè)試很不受重視,軟件測(cè)試人員的地位和待遇自然就很低了,甚至軟件測(cè)試變得可有可無(wú)。隨著市場(chǎng)對(duì)軟件質(zhì)量的不斷提高,軟件測(cè)試將變得越來(lái)越重要,相應(yīng)的軟件測(cè)試人員的地位和待遇將會(huì)逐漸提高。在微軟等軟件過(guò)程比較規(guī)范的大公司,軟件測(cè)試人員的數(shù)量和待遇與程序員沒(méi)有多大差別,優(yōu)秀測(cè)試人員的待遇甚至比程序員還要高。軟件測(cè)試將會(huì)成為一個(gè)具有很大發(fā)展前景的行業(yè),軟件測(cè)試大有前途,市場(chǎng)需要更多具有豐富測(cè)試技術(shù)和管理經(jīng)驗(yàn)的測(cè)試人員,他們同樣是軟件專家。這兩年來(lái)國(guó)內(nèi)軟件測(cè)試人員的需求不斷增大,越來(lái)越多的IT企業(yè)認(rèn)識(shí)到了軟件測(cè)試的重要性,這種可喜的現(xiàn)狀與發(fā)展趨勢(shì)讓筆者對(duì)我國(guó)軟件業(yè)的發(fā)展重新抱有較大的希望。
盡管這是一門嶄新的學(xué)科,目前在國(guó)內(nèi)的發(fā)展仍處于"嬰兒"階段,但看到越來(lái)越多的軟件公司為軟件測(cè)試招兵買馬,看到越來(lái)越多的技術(shù)人員投入到軟件測(cè)試中,我就情不自禁地感嘆:機(jī)會(huì)來(lái)了!這機(jī)會(huì)不僅僅是某一個(gè)人的,而是所有人的,它對(duì)每個(gè)人都是公平的,學(xué)的領(lǐng)域需要新的理論新的工具新的方法,由于國(guó)內(nèi)的軟件測(cè)試還處在一個(gè)比較初級(jí)的階段,沒(méi)有人確切地知道它需要什么樣的基礎(chǔ),也沒(méi)有人確切地知道它應(yīng)該怎樣發(fā)展,因此這個(gè)領(lǐng)域需要大家來(lái)共同革命,以促進(jìn)它的深入發(fā)展。1.8軟件測(cè)試的前景
隨著軟件產(chǎn)業(yè)的發(fā)展,軟件產(chǎn)品的質(zhì)量控制與質(zhì)量管理正逐漸成為軟件企業(yè)生存與發(fā)展的核心。幾乎每個(gè)大中型IT企業(yè)的軟件產(chǎn)品在發(fā)布前都需要大量的質(zhì)量控制、測(cè)試和文檔工作,而這些工作必須依靠擁有嫻熟技術(shù)的專業(yè)軟件人才來(lái)完成。軟件測(cè)試工程師就是這樣的一個(gè)企業(yè)重頭角色。業(yè)內(nèi)人士分析,該類職位的需求主要集中在沿海發(fā)達(dá)城市,其中北京和上海的需求量分別占去33%和29%。民企需求量最大,占19%,外商獨(dú)資歐美類企業(yè)需求排列第二,占15%。然而,目前的現(xiàn)狀是:一方面企業(yè)對(duì)高質(zhì)量的測(cè)試工程師需求量越來(lái)越大越大,另一方面國(guó)內(nèi)原來(lái)對(duì)測(cè)試工程師的職業(yè)重視程度不夠,使許多人不了解測(cè)試工程師具體是從事什么工作。這使得許多IT公司只能通過(guò)在實(shí)際工作中進(jìn)行淘汰的方式對(duì)測(cè)試工程師進(jìn)行篩選,因此國(guó)內(nèi)在短期將出現(xiàn)測(cè)試工程師嚴(yán)重短缺的現(xiàn)象。根據(jù)對(duì)近期網(wǎng)絡(luò)招聘IT人才情況的了解,許多正在招聘軟件測(cè)試工程師的企業(yè)
很少能夠在招聘會(huì)上順利招到合適的人才。在具體工作過(guò)程中,測(cè)試工程師的工作是利用測(cè)試工具按照測(cè)試方案和流程對(duì)產(chǎn)品進(jìn)行功能和性能測(cè)試,甚至根據(jù)需要編寫(xiě)不同的測(cè)試用例,設(shè)計(jì)和維護(hù)測(cè)試系統(tǒng),對(duì)測(cè)試方案可能出現(xiàn)的問(wèn)題進(jìn)行分析和評(píng)估。對(duì)軟件測(cè)試工程師而言,必須具有高度的工作責(zé)任心和自信心。任何嚴(yán)格的測(cè)試必須是一種實(shí)事求是的測(cè)試,因?yàn)樗P(guān)系到一個(gè)產(chǎn)品的質(zhì)量問(wèn)題,而測(cè)試工程師則是產(chǎn)品出貨前的把關(guān)人,所以,沒(méi)有專業(yè)的技術(shù)水準(zhǔn)是無(wú)法勝任這項(xiàng)工作的。同時(shí),由于測(cè)試工作一般由多個(gè)測(cè)試工程師共同完成,并且測(cè)試部門一般要與其他部門的人員進(jìn)行較多的溝通,所以要求測(cè)試工程師不但要有較強(qiáng)的技術(shù)能力而且要有較強(qiáng)的溝通能力。第二章軟件測(cè)試工作的經(jīng)驗(yàn)和心得
2.1軟件測(cè)試用例的規(guī)范
一個(gè)好的測(cè)試用例,是測(cè)試人員能夠迅速、準(zhǔn)確找出程序中潛在問(wèn)題的良好開(kāi)端。此所謂:工欲善其事,必先利其器。只有一個(gè)好的測(cè)試用例,才能使測(cè)試人員在測(cè)試過(guò)程中少走歪路,在最短的時(shí)限內(nèi),找出程序中潛在的Bug;只有一個(gè)好的測(cè)試用例,才能使測(cè)試人員更準(zhǔn)確、更有效地找出Bug。下面是我在對(duì)郵件服務(wù)系統(tǒng)進(jìn)行測(cè)試時(shí),縮寫(xiě)的測(cè)試用例表(包含測(cè)試的場(chǎng)景/條件、測(cè)試的方法/操作、預(yù)期結(jié)果、實(shí)際結(jié)果和備注說(shuō)明)
測(cè)試用例示例
正如前面所說(shuō)的,好的測(cè)試用例左右了測(cè)試的過(guò)程。那是否一個(gè)好的測(cè)試用例能適合所有的測(cè)試對(duì)象呢?
答案是否定的,就從我對(duì)軟件測(cè)試接觸和實(shí)踐,個(gè)人認(rèn)為:“沒(méi)有最好的測(cè)試用例,只有最合適的測(cè)試用例”;就好比我們無(wú)法用“漏勺”去取“水”一樣,一個(gè)程序的測(cè)試用例,我們往往無(wú)法運(yùn)用到另一個(gè)程序上,即便兩個(gè)程序十分相似,也不能保證一個(gè)測(cè)試用例能夠覆蓋兩個(gè)程序中的所有場(chǎng)景。遺漏場(chǎng)景就意味著測(cè)試工作尚未完成用錯(cuò)了工具,“水”永遠(yuǎn)也取不上來(lái)。下面就給出了,一個(gè)與上面用例完全不同的測(cè)試用例。這個(gè)測(cè)試用例,是我在測(cè)試WebService方法時(shí)所用的用例之一,使用了自動(dòng)化測(cè)試的方法(關(guān)于自動(dòng)化測(cè)試,詳見(jiàn)下一節(jié))。這個(gè)WebService方法有一個(gè)參數(shù),名叫“rightNumber”,此處,我為這個(gè)方法寫(xiě)了3組用例,case001和case003分別是兩組參數(shù)正確的用例條件,而case002則使用了一組無(wú)效數(shù)據(jù)。(一般用例都要考慮空數(shù)據(jù),但此處因?yàn)槭钦{(diào)用WebService方法,方法參數(shù)填寫(xiě)為空不具備任何意思,故不作考慮)
根據(jù)以上測(cè)試用例,我調(diào)用了自己編寫(xiě)的名為WebServiceTest的測(cè)試小工具,先進(jìn)行測(cè)試用例的加載,分析測(cè)試用例格式的合法性。格式合法,則可進(jìn)行測(cè)試(測(cè)試過(guò)程自動(dòng))。
結(jié)果如下圖:
圖2.1.1
圖2.1.2
結(jié)果分析:
圖2.1.1為WebService方法GetRightByNumber正確數(shù)據(jù)的結(jié)果圖,圖中標(biāo)簽下的為該方法返回結(jié)果類型,標(biāo)簽下的標(biāo)簽為返回值的各項(xiàng)數(shù)據(jù)。
圖2.1.2為WebService方法GetRightByNumber無(wú)效數(shù)據(jù)的結(jié)果圖,圖中的標(biāo)簽說(shuō)明該項(xiàng)測(cè)試條件有誤,并顯示詳細(xì)的錯(cuò)誤信息:
下圖為Bug表單的示例
圖2.1.3
通常來(lái)說(shuō)測(cè)試用例完成后,測(cè)試人員根據(jù)已有的測(cè)試用例對(duì)目標(biāo)項(xiàng)目進(jìn)行包含以下步驟的測(cè)試:
1.新的缺陷被測(cè)試人員提交;
2.項(xiàng)目經(jīng)理確定該缺陷的優(yōu)先級(jí)、分配開(kāi)發(fā)人員來(lái)修復(fù);3.開(kāi)發(fā)人員根據(jù)缺陷的優(yōu)先級(jí)去修復(fù)缺陷,使該缺陷被修復(fù);4.開(kāi)發(fā)人員發(fā)布一個(gè)新的內(nèi)部版本;
5.測(cè)試人員確認(rèn)這個(gè)新版本中的被修復(fù)缺陷;
6.被修復(fù)的缺陷被關(guān)閉;沒(méi)有被修復(fù)缺陷被再次打開(kāi),返回1。
2.2自動(dòng)化測(cè)試
概念:利用軟件測(cè)試工具自動(dòng)實(shí)現(xiàn)全部或部分測(cè)試,自動(dòng)測(cè)試是軟件測(cè)試的一個(gè)重要組成部分,它能完成許多手工測(cè)試無(wú)法實(shí)現(xiàn)或難以實(shí)現(xiàn)的測(cè)試。正確、合理的實(shí)施自動(dòng)測(cè)試,能夠快速、全面的對(duì)軟件進(jìn)行測(cè)試,從而提高軟件質(zhì)量,節(jié)省經(jīng)費(fèi),縮短軟件發(fā)布周期
自動(dòng)化測(cè)試的優(yōu)點(diǎn):
(1)改進(jìn)所有的測(cè)試領(lǐng)域
a)測(cè)試用例設(shè)計(jì)改進(jìn)b)性能測(cè)試改進(jìn)c)壓力測(cè)試改進(jìn)
d)質(zhì)量度量與測(cè)試優(yōu)化
(2)改進(jìn)測(cè)試工作質(zhì)量
a)BVT測(cè)試改進(jìn)b)回歸測(cè)試改進(jìn)
c)多平臺(tái)兼容性測(cè)試改進(jìn)d)軟件配置測(cè)試改進(jìn)e)普通測(cè)試執(zhí)行改進(jìn)
f)集中于高級(jí)測(cè)試問(wèn)題改進(jìn)g)執(zhí)行手工測(cè)試無(wú)法完成的測(cè)試h)定時(shí)啟動(dòng)測(cè)試
(3)減輕測(cè)試工作量并加快測(cè)試進(jìn)度
階段測(cè)試計(jì)劃測(cè)試設(shè)計(jì)測(cè)試執(zhí)行測(cè)試結(jié)果分析缺陷監(jiān)控測(cè)試報(bào)告生成總體
自動(dòng)化軟件測(cè)試的優(yōu)勢(shì)已經(jīng)十分明顯了,那么,是否所有的工作都能進(jìn)行自動(dòng)化測(cè)試呢?
答案也是否定的。因?yàn)橛悬c(diǎn)時(shí)候,我們沒(méi)有辦法實(shí)現(xiàn)自動(dòng)化或不合適使用自動(dòng)化測(cè)試。以下是自動(dòng)化測(cè)試的適用范圍
工作量增加減少減少減少減少減少減少(1)(2)(3)(4)執(zhí)行回歸測(cè)試
執(zhí)行手工很難達(dá)到或手工無(wú)法完成的測(cè)試枯燥乏味的重復(fù)性工作一致的,可重復(fù)的測(cè)試
自動(dòng)測(cè)試常見(jiàn)的錯(cuò)誤
(1)實(shí)施一項(xiàng)測(cè)試設(shè)計(jì)時(shí),不遵循任何設(shè)計(jì)標(biāo)準(zhǔn),結(jié)果產(chǎn)生了不可重復(fù)的測(cè)試腳本,
因而不可重用
(2)試圖將測(cè)試需求100%自動(dòng)化(3)使用錯(cuò)誤的工具
(4)在應(yīng)用程序開(kāi)發(fā)周期中啟用測(cè)試工具太晚(5)測(cè)試工程師參與應(yīng)用開(kāi)發(fā)生存周期太晚,導(dǎo)致不能很好的了解應(yīng)用和系統(tǒng)設(shè)計(jì),
因而無(wú)法完成測(cè)試
在上一節(jié)中,我在測(cè)試WebService方法時(shí)就使用了自動(dòng)化測(cè)試,下面進(jìn)行詳細(xì)的說(shuō)明測(cè)試中,我使用了多個(gè)測(cè)試用例同時(shí)加載,并挨個(gè)進(jìn)行測(cè)試的方法,對(duì)所有的WebService方法進(jìn)行了測(cè)試。
雖然網(wǎng)上也提供了現(xiàn)成的WebService方法測(cè)試工具。但這種工具只能一次測(cè)試一個(gè)WebService方法的一組數(shù)據(jù),無(wú)法進(jìn)行批量測(cè)試,效率不高。所以,我自己寫(xiě)了一個(gè)小工具,提供了批量測(cè)試的可能。這一點(diǎn)也符合自動(dòng)化測(cè)試靈活、合理實(shí)施的理念。
下面是批量測(cè)試時(shí)測(cè)試用例文件。
圖2.2.1
測(cè)試時(shí),先將該文件夾下的所有用例文件進(jìn)行加載,然后進(jìn)行測(cè)試。下面是測(cè)試結(jié)果安放文件夾
圖2.2.2
根據(jù)分析以上測(cè)試結(jié)果,將問(wèn)題及時(shí)反饋給開(kāi)發(fā)人員。
2.3測(cè)試中的問(wèn)題2.3.1測(cè)試運(yùn)用的是認(rèn)識(shí)論
認(rèn)識(shí)論是探討人類認(rèn)識(shí)的本質(zhì)、結(jié)構(gòu),認(rèn)識(shí)與客觀實(shí)在的關(guān)系,認(rèn)識(shí)的前提和基礎(chǔ),認(rèn)識(shí)發(fā)生、發(fā)展的過(guò)程及其規(guī)律,認(rèn)識(shí)的真理標(biāo)準(zhǔn)等問(wèn)題的哲學(xué)學(xué)說(shuō)。又稱知識(shí)論。根據(jù)認(rèn)識(shí)論的運(yùn)用我們可以給軟件測(cè)試提出以下問(wèn)題:
(1)怎么知道軟件足夠好?
(2)如果軟件并不是足夠好,怎樣才能知道?(3)怎么知道已經(jīng)完成了足夠的測(cè)試?
這些看似簡(jiǎn)單的問(wèn)題,都是科學(xué)家,心理學(xué)家的通過(guò)研究認(rèn)識(shí)論才總結(jié)出來(lái)的,對(duì)我們測(cè)試提供了重要的指導(dǎo)思想。
2.3.2測(cè)試無(wú)法發(fā)現(xiàn)所有的程序問(wèn)題
測(cè)試人員的任務(wù)是找出并報(bào)告重要的程序問(wèn)題,但是不會(huì)發(fā)現(xiàn)所有的程序問(wèn)題。為了發(fā)現(xiàn)全部程序錯(cuò)誤,測(cè)試人員必須檢查所有可能有問(wèn)題的地方,而事實(shí)上是不可能做到的。如果測(cè)試人員認(rèn)為自動(dòng)能夠做到,要么產(chǎn)品太簡(jiǎn)單,要么是測(cè)試人員的想象力太差。因此,測(cè)試人員只能發(fā)現(xiàn)軟件存在問(wèn)題,卻無(wú)法確定軟件不存在問(wèn)題。參考資料
【1】百度知道【2】測(cè)試用例設(shè)計(jì)【3】《軟件測(cè)試經(jīng)驗(yàn)與教訓(xùn)》,作者:CemKaner、JamesBach、BretPettichord【4】《硅谷的測(cè)試在中國(guó)》【5】《軟件開(kāi)發(fā)的科學(xué)和藝術(shù)》節(jié)選,撰文/陳宏剛【6】其他網(wǎng)絡(luò)資料論文信息
論文作者:姚斌
撰寫(xiě)時(shí)間:201*-11-29
撰寫(xiě)目的:對(duì)軟件測(cè)試的心得和經(jīng)驗(yàn)的總結(jié)
友情提示:本文中關(guān)于《軟件開(kāi)發(fā)心得總結(jié)》給出的范例僅供您參考拓展思維使用,軟件開(kāi)發(fā)心得總結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。