免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
軟件測試:針對代碼移交的測試
很多時(shí)候人們把代碼移交給其他人,并且說:“希望你能接受和喜歡它。”這不僅發(fā)生在將整個(gè)項(xiàng)目放在一張光盤中交給客戶的時(shí)候,也發(fā)生在項(xiàng)目內(nèi)部。

例如,一個(gè)小組對另一個(gè)小組說:“我們已經(jīng)完成了為COMM庫加入對XML的支持。源代碼現(xiàn)在已經(jīng)放在master庫中,可執(zhí)行庫則已經(jīng)加入到集成與創(chuàng)建的環(huán)境中。XARG小組的工作已經(jīng)沒有什么阻礙了,隨時(shí)去取吧。”

某個(gè)程序員檢查了bug的修改并且發(fā)出郵件:“我已經(jīng)修改了Bug列表中的那個(gè)Bug,很抱歉!”至此,早先受該問題影響的其它代碼就可以繼續(xù)處理了。

在這些情況下,人們要把代碼移交給其它人,其中有可能會存在一些影響。測試人員需要干預(yù)這個(gè)過程。在移交之前,測試人員應(yīng)執(zhí)行這些代碼,發(fā)現(xiàn)其中的bug(影響),并且提出問題:“你確實(shí)要提交這些嗎?”由此,移交的內(nèi)容可能會被延期,直到bug被修復(fù)好。

盡管你還要做其它的各種測試,這項(xiàng)測試仍然是很基本的測試工作。如果你沒有做這樣的測試,就不能算是合格的測試人員。

我們的測試模型必須包含這一重要的現(xiàn)實(shí)需要:針對代碼移交的測試。由此,測試模型應(yīng)提示進(jìn)行針對每一次代碼移交的測試。

就讓我以支持XML的COMM庫作為例子。這里存在著一個(gè)小組把代碼移交給XARG小組以進(jìn)行項(xiàng)目的余下部分。那么誰會遭受影響?

· 要將這些支持XML的代碼直接進(jìn)行使用的XARG小組可能會立即受到影響;

· 這可能會在稍后影響到市場人員,他們要在一個(gè)行業(yè)展示會議上為“合作伙伴發(fā)行”版本提供產(chǎn)品演示和宣傳,而XML支持是影響他們銷售的重要部分;

· 還有,它可能損害采納我們的產(chǎn)品的合作伙伴。

現(xiàn)在我們可以提出一些有趣的關(guān)于測試計(jì)劃的問題了??梢宰龅淖詈唵蔚氖虑槭牵谝平坏臅r(shí)候立即執(zhí)行XML支持的完整測試。(“完整”的含義是,為此設(shè)計(jì)盡可能多的測試)但也許一些XML特性并不是XARG小組所需要的,因此可以把它們放在合作伙伴版本封版(下圖中的“Partner Release”)的測試中去。這意味著可以把一些XML相關(guān)測試放到稍后的移交過程中去。或者基于其它理由,例如在近階段有其它的測試任務(wù)要執(zhí)行。而XARG小組則要因XML中的bug修復(fù)而延遲一小段時(shí)間。

我們的測試計(jì)劃所表示的進(jìn)度可以通過在開發(fā)的時(shí)間線上進(jìn)行注解的方式來表現(xiàn),如下圖所示:

我們應(yīng)嚴(yán)格地圍繞在XML支持的功能交接的時(shí)段里進(jìn)行測試。測試設(shè)計(jì)和測試支持工作要早于測試執(zhí)行。而另外的XML測試則要延遲到基于整個(gè)項(xiàng)目范圍的“代碼完成”(圖中的“Code Complete”里程碑),或者要等到全部的子系統(tǒng)被集中在一起,而且整個(gè)產(chǎn)品為了行業(yè)會議而在經(jīng)過穩(wěn)定化處理后創(chuàng)建了版本(圖中的“Partner Release”里程碑)。

顯然,有兩項(xiàng)內(nèi)容沒有包含在代碼完成里程碑中:

還有大量其它的測試工作(包括設(shè)計(jì)、工具選用)。這些工作可能因?yàn)镃OMM以外的子系統(tǒng)的交接而延期。

而且,還有用于完成里程碑中所規(guī)定的某些風(fēng)險(xiǎn)的測試,例如,可能還有一組用于運(yùn)行市場人員的演示Demo腳本的測試,包括她可能在無意中引起的偏離。其目的是要避免這樣的情況,即當(dāng)她站在1000人的觀眾面前時(shí),她還僅僅是第一次以某種特定的順序來輸入數(shù)據(jù)。

一些首次交接時(shí)進(jìn)行的XML測試需要在代碼完成里程碑上再次執(zhí)行。

我的觀點(diǎn)是,測試計(jì)劃是由很多困難的決定所組成,這些決定包括人員組織安排、機(jī)器資源配置、測試設(shè)計(jì)的時(shí)間定位、測試支持代碼的數(shù)量、哪些測試要做自動化,等等。這些決定應(yīng)根據(jù)單獨(dú)的交接中的內(nèi)容信息來作出。如果僅有一次交接,那么你可以更順利一些。測試計(jì)劃還應(yīng)繼續(xù)考慮以下問題:

1. 風(fēng)險(xiǎn)分析,誰會因此受到損害,以什么方式?

2. 選定一種測試途徑來定位特定的風(fēng)險(xiǎn)。

3. 對測試設(shè)計(jì)和執(zhí)行的周期和成本進(jìn)行估計(jì)。

4. 在項(xiàng)目進(jìn)度上的特定位置,將計(jì)劃納入執(zhí)行的行動:

A. 開始對測試進(jìn)行設(shè)計(jì)…

B. … 同時(shí)設(shè)計(jì)和創(chuàng)建一些支持測試的代碼…

C. … 在全部測試完成以前就執(zhí)行部分的測試,因?yàn)榭赡艽嬖诓恢灰淮蔚慕唤?,在每一次交接的測試規(guī)劃中,可能存在一些潛在的復(fù)雜的相互影響。工作安排不得不進(jìn)行一些調(diào)整以達(dá)到相互間的平衡。測試支持代碼和工具需要在各項(xiàng)任務(wù)中得到共享。你還必須考慮到在什么程度上讓那些為早先的交接所設(shè)計(jì)的測試在以后重新執(zhí)行,等等。

這看起來很復(fù)雜??瓷先ニ坪跤刑嗟膬?nèi)容需要跟蹤,而且太多的內(nèi)容可能被忽略。也許你認(rèn)為我是在要求你要對每一次交接來執(zhí)行IEEE 829 [IEEE98]中關(guān)于測試計(jì)劃的要求,然后把它們合并為一份貫穿整個(gè)項(xiàng)目的針對交接進(jìn)行測試的測試計(jì)劃。

是,也不是。思考問題總是要占用時(shí)間的。太多的計(jì)劃可能會減少結(jié)果的產(chǎn)出。在有些時(shí)候,你需要做的是停止計(jì)劃并開始行動。例如,你無法思考并描述每一個(gè)bug修復(fù),盡管bug修復(fù)也是一種交接。

但是bug修復(fù)是實(shí)際工作中現(xiàn)實(shí)存在的問題??傮w項(xiàng)目計(jì)劃中應(yīng)該包含bug修復(fù)。需要強(qiáng)調(diào)的是,你應(yīng)該有一個(gè)默認(rèn)的bug修改處理的標(biāo)準(zhǔn)過程,該過程應(yīng)包括運(yùn)行于每一個(gè)提交的bug修復(fù)的驗(yàn)證過程。你還需要努力地去思考問題。很多時(shí)候,各項(xiàng)驗(yàn)證是被放在一起同時(shí)進(jìn)行并完成的。

比較現(xiàn)實(shí)地來說,一個(gè)模型應(yīng)該允許一些機(jī)械式行為,例如,“不管是哪一個(gè)X類型的交接,都要執(zhí)行下列操作”。同時(shí)我們鼓勵對特定的交接執(zhí)行剛剛夠的檢查,對于風(fēng)險(xiǎn)越小的交接,就越可以采用機(jī)械式的測試行為。

一個(gè)明確考慮到基本的測試現(xiàn)實(shí)的模型肯定會比忽略這些現(xiàn)實(shí)或者把你的工作復(fù)雜性完全抽象化的模型做得更好。文檔則是另一個(gè)例子。

我還沒有提到需求及規(guī)格說明書,或者設(shè)計(jì)文檔。某個(gè)交接中產(chǎn)生的一系列變化會引起很多爭議。這些文檔所扮演的角色是什么呢?它們常常是這么被使用的:



文檔可以指導(dǎo)你在一個(gè)交接變化時(shí)如何作出反應(yīng)。如果你有一份很好的需求文檔,它可能是產(chǎn)品所解決的問題的描述,盡管也許不是很直接。它可以幫助你對風(fēng)險(xiǎn)進(jìn)行分析。一份好的規(guī)格說明應(yīng)對系統(tǒng)的行為進(jìn)行描述。這將幫助你把測試方法轉(zhuǎn)化為具體的測試。一份好的架構(gòu)設(shè)計(jì)則可以幫助你理解變化可能引起的幾種不同的情況:系統(tǒng)的其它部分會受到怎樣的影響?什么測試需要再次進(jìn)行?


我并不是經(jīng)常能看到好的文檔。需求文檔常常象是市場銷售用的系統(tǒng)特性列表。規(guī)格說明書有時(shí)就象是在代碼完成后提交的用戶手冊文件。而設(shè)計(jì)文檔經(jīng)常不存在。

好了,通過針對交接所引起的變化的集中討論,我已把測試過程和軟件開發(fā)過程相對地分離開了。如果文檔中關(guān)于“XML支持功能加入到COMM”的描述很薄弱的話,我會盡自己所知來進(jìn)行盡可能好的測試設(shè)計(jì)。然后,假如在項(xiàng)目后期,XML相關(guān)的用戶文檔出來了,我就可以對后來再次提交的交接增加相關(guān)的測試。假如市場需求改變了,她們經(jīng)常會這么做,我還會在此后增加或者去除一些測試。所有這一切看起來是這樣的:

這樣,雖然項(xiàng)目文檔總是不到位,而且經(jīng)常延遲提交,測試的效果也因此常常被降低,我們還是要避免測試受到項(xiàng)目文檔的制約。

頭腦靈活的測試人員并不過于相信文檔。畢竟,總是人在犯錯誤。那么,難道不是人在寫這些文檔嗎?

由于“正式的”文檔是很薄弱的,測試模型必須明確地鼓勵在測試過程中使用項(xiàng)目文檔之外的各種不同信息來源。

測試人員必須和程序員、用戶、市場人員、技術(shù)作者以及任何的可能為實(shí)現(xiàn)更好測試提供線索的人進(jìn)行交流。測試人員還應(yīng)該努力把自己沉浸在某些技術(shù)所構(gòu)建的氛圍中。例如,我希望測試人員在做XML測試工作時(shí)常去訪問W3組織的XML地址(http://www.w3.org/XML/)以及其它XML站點(diǎn)、郵件列表,甚至包括比較特別的 如Dave Winer的DaveNet/腳本新聞(http://www.scripting.com/)。這些資源并不是所謂的“輔助通道”,而是可以被列入計(jì)劃和進(jìn)度日程的資源。

另外,所執(zhí)行的測試本身也是一種有用的信息的資源。好的測試人員會仔細(xì)閱讀bug報(bào)告,因?yàn)檫@些報(bào)告講授了系統(tǒng)所存在的薄弱之處。特別地,這些報(bào)告還暗示了一些正式的架構(gòu)設(shè)計(jì)所沒有提供的架構(gòu)上的策略。執(zhí)行測試的行為應(yīng)該產(chǎn)生一些新的測試想法。如果模型沒有考慮到這些,那么它就是一個(gè)落后的模型。

因此,測試模型應(yīng)該包含反饋的循環(huán),讓測試設(shè)計(jì)可以考慮到,在運(yùn)行測試時(shí)還可以繼續(xù)發(fā)現(xiàn)到更多的測試內(nèi)容。

在我們的工作中,真正的復(fù)雜性來自于所有計(jì)劃的執(zhí)行都處于一個(gè)不確定的、容易忽略的環(huán)境里。代碼并不是唯一在不斷變化的東西。而計(jì)劃日程也在改變。新的功能擴(kuò)充會帶來新的里程碑。某些功能會從當(dāng)前版本中去除。在開發(fā)過程中,所有人——市場人員、開發(fā)人員和測試人員,都會逐漸對諸如“產(chǎn)品究竟提供什么”這樣的問題有越來越清晰的了解。在這些情形下,我們怎么能說測試計(jì)劃的第一個(gè)版本會是完全正確的呢?

因此,模型應(yīng)該要求測試計(jì)劃人制定明確的規(guī)定,對已交接的交接內(nèi)容,新的交接,以及交接內(nèi)容的變更進(jìn)行負(fù)責(zé)。

總結(jié)



V模型有以下致命的缺陷,其它模型實(shí)際上也與此相似:

1. 忽略了這樣的事實(shí)情況,即軟件開發(fā)是由一系列的交接所組成,每一次交接內(nèi)容都改變了前一次交接的行為。

2. 依賴于開發(fā)文檔的存在,及文檔的精確性、完整性,并且沒有對時(shí)間進(jìn)行限制。

3. 認(rèn)定一種測試的設(shè)計(jì)是依據(jù)某一個(gè)單獨(dú)的文檔,而不包括根據(jù)其前后階段的文檔的修改而作相應(yīng)修改。

4. 認(rèn)定這些依賴于某個(gè)單獨(dú)文檔的測試一定要在一起執(zhí)行。

我大致描述了一個(gè)替代模型,但還不夠精細(xì)。它考慮到了代碼的交接和里程碑。對測試成本控制作了以下明確描述:

測試設(shè)計(jì)的目標(biāo)是定義好可能發(fā)現(xiàn)bug的測試輸入,而測試執(zhí)行的目標(biāo)是以各種方式加入這些數(shù)據(jù),并檢驗(yàn)結(jié)果,由此來降低整個(gè)生命周期的成本。

我們的模型假設(shè)軟件產(chǎn)品總是不完美的,開發(fā)過程中有很多變更,而且對產(chǎn)品的測試也是一個(gè)不斷學(xué)習(xí)的過程。

過去,我很少考慮到模型。表面上我一直還在用V模型。雖然我按此制訂計(jì)劃,但我總是還要花費(fèi)很多額外的精力和時(shí)間來考慮模型中沒有提到的方面。換言之,模型造成了一些阻礙,因此我有必要對此進(jìn)行研究。

對一個(gè)新的模型來說,對模型所提出的要求必須非常明確,這就象業(yè)務(wù)需求對產(chǎn)品開發(fā)非常重要一樣。我希望自己對本文中所提倡的模型的要求的描述能夠和V模型中的描述一樣精確,并具有同樣的指導(dǎo)意義。

理想的測試模型應(yīng)該包括下列要求:

1. 使測試對項(xiàng)目中的每一次代碼交接有所反應(yīng)。

2. 要求測試計(jì)劃人制定明確的規(guī)定,對已交接的交接內(nèi)容,新的交接,以及交接內(nèi)容的變更進(jìn)行負(fù)責(zé)。

3. 在測試設(shè)計(jì)中,除了使用項(xiàng)目文檔外,還應(yīng)明確鼓勵使用其它各種信息,這些信息有不同來源。

4. 事實(shí)上項(xiàng)目文檔總是不到位,而且經(jīng)常延遲提交,測試的效果也因此常常被降低。但我們還是要盡量避免測試受到項(xiàng)目文檔的制約。

5. 允許根據(jù)多種來源提供的綜合信息來設(shè)計(jì)一些獨(dú)立的測試。

6. 讓測試被重新設(shè)計(jì),以新的信息形式進(jìn)行表現(xiàn)。

7. 包含反饋的循環(huán),讓測試設(shè)計(jì)可以考慮到,在運(yùn)行測試時(shí)還可以繼續(xù)發(fā)現(xiàn)到更多的測試內(nèi)容。

8. 讓測試人員認(rèn)識到,避免測試的延遲可以節(jié)省成本。

9. 在組件被組裝到程序中去之前對組件的執(zhí)行進(jìn)行測試。

感謝

是James Bach最早讓我認(rèn)識到,在測試計(jì)劃中應(yīng)考慮到交接。Noel

Nyman和Johanna Rothman在一份草案中提供了一些有幫助的評論。Kamesh Pemmaraju和Carol Stollmeyer使我終于沒有放棄對原理的辯解和闡述,不僅是在細(xì)節(jié)方面,也在實(shí)際生活中,以及每一個(gè)實(shí)際項(xiàng)目中。他們給了我很大的促進(jìn),使我去反復(fù)地思考問題。

參考

[Boehm88]

Barry W. Boehm, “A Spiral Model of Software Development and Enhancement,” IEEE Computer, 1988年5月

[IEEE98]

"IEEE Standard for Software Test Documentation," IEEE標(biāo)準(zhǔn)829-1998, 電子和電氣工程師學(xué)會, 1998

[Marick98]

Brian Marick, “When Should a Test be Automated?” 國際質(zhì)量周刊,1998年5月(ftp://ftp.rstcorp.com/pub/papers/automate.pdf)

 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
軟件測試
接口測試實(shí)戰(zhàn)項(xiàng)目02:根據(jù)接口文檔測試
淺談測試驅(qū)動開發(fā)(TDD)
Java 中的 XML: 數(shù)據(jù)綁定,第 2 部分:性能
一位程序員的辭職交接工作曝光,同行的人看完若有所思……
論項(xiàng)目執(zhí)行過程中的跟蹤控制管理"金三角"(4)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服