中文04中文測(cè)試員5_第1頁
中文04中文測(cè)試員5_第2頁
中文04中文測(cè)試員5_第3頁
中文04中文測(cè)試員5_第4頁
中文04中文測(cè)試員5_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、No.52 0 0 5 . 0 2THE SOFTEWARE TESTING ENGINEERING MAGAZINE 普及&共享&交流&提高2005 年 02 月第五期測(cè)試員電子期刊?本期導(dǎo)讀2第頁歡迎訪問我們的網(wǎng)站 - ?主辦方: 測(cè)試時(shí)代投稿: 主編: http審閱: Seanhe協(xié)作: Aken ? 軟件測(cè)試的新模型 . 通常情況下,一個(gè)軟件模型說明的內(nèi)容主要包括,在測(cè)試過程中你應(yīng)該考慮到哪些問題,如何對(duì)測(cè)試進(jìn)行計(jì)劃,測(cè)試要達(dá)到什么目標(biāo)詳見 P3. ? 嵌入式軟件測(cè)試策略 .在嵌入式領(lǐng)域目標(biāo)系統(tǒng)的應(yīng)用系統(tǒng)日趨復(fù)雜,而由

2、于競(jìng)爭(zhēng)要求產(chǎn)品快速上市,開發(fā)技術(shù)日新月異,同時(shí)硬件發(fā)展的日益穩(wěn)定,而軟件故障卻日益突出詳見 P15.? Rational Clear Quest 技 巧集.收集和整理了 Rational ClearQuest 常見的問題詳見 P20.? Junit 之走馬觀花篇. 我們細(xì)致地研究 JUint 框架并思索如何來構(gòu)造它。我們發(fā)現(xiàn)了許多不同層次上的教訓(xùn)。在本文中, 我們將嘗詳見 P26. ? 利用 Jmeter 測(cè)試 WebSphere 性能.本文描述如何部署 Apache 開放源代碼工具 JMeter , 以基于 IBM WebSphere Application Server 和 WebSphe

3、re Branch Transformation Toolkit( BTT)來測(cè)試中間件解決方案的響應(yīng)性詳見 P43.? 軟件測(cè)試要不要追究 Bug 發(fā)生的原因.軟件測(cè)試到底要不要追究 BUG 發(fā)生的原因呢?這個(gè)問題的爭(zhēng)議很多,有人認(rèn)為尋找 BUG 的原因是開發(fā)的事情,軟件測(cè)試只要能發(fā)現(xiàn) Bug詳見 P52.? 使用 IBM Rational 的測(cè)試?yán)砟畛晒Υ蛟鞙y(cè)試團(tuán)隊(duì).測(cè)試在所有的軟件開發(fā)過程中都是最重要的部分。在軟件開發(fā)過程中,一方面要求我們通過測(cè)試活動(dòng)驗(yàn)證所開發(fā)的軟件詳見 P54.第 3 頁2005 年 02 月第五期測(cè)試員電子期刊一、 軟件測(cè)試的新模型 作者:Brian Marick

4、翻譯:Blueski通常情況下,一個(gè)軟件模型說明的內(nèi)容主要包括,在測(cè)試過程中你應(yīng)該考慮到哪些問題,如何對(duì)測(cè)試進(jìn)行計(jì)劃,測(cè)試要達(dá)到什么目標(biāo),什么時(shí)候開始,在測(cè)試中你要用到哪些信息資源。一個(gè)好的模型可以引導(dǎo)你對(duì)問題進(jìn)行思考,而不好的模型則只能使你誤入歧途。 這里我要宣稱的是,目前的大多數(shù)軟件測(cè)試模型都是不好的模型。這是因?yàn)檫@些測(cè)試模型僅僅是軟件開發(fā)模型的一些裝飾和補(bǔ)充而已。 人們一直在苦苦尋找軟件開發(fā)的模型,在創(chuàng)建了新的模型后,就把測(cè)試作為一個(gè)階段放在模型的后面部分。因此測(cè)試總被作為一種事后行為,測(cè)試總是被開發(fā)所驅(qū)動(dòng)??偟膩碚f, 我們是在檢測(cè)他們的完成品。但是, 作為事后處理的測(cè)試, 其驅(qū)動(dòng)方式是

5、不正確的。實(shí)際上它顯而易見地和開發(fā)過程中各種行為之間有關(guān),測(cè)試沒有起到應(yīng)有的平衡作用。這樣的測(cè)試只是檢測(cè)了開發(fā)人員做了什么,而并沒有檢測(cè)到他們是否按照規(guī)則做了什么, 這樣的做法割裂了本該緊密聯(lián)系的行為, 剩下的只有那些匆忙而草率的想法所帶來的傷害。 而這樣做的結(jié)果就是效果很差的、效率很低的測(cè)試。效果很差的測(cè)試將導(dǎo)致很多bug 沒有被發(fā)現(xiàn),而效率很低的測(cè)試所浪費(fèi)的是成本。 在本文中,我要做 2 件事,其一,我要一個(gè)不好的模型,即 V 模型。我希望通過論述來表明,“單元測(cè)試” 和“ 集成測(cè)試” 這 2 個(gè)詞匯可以從我們的詞匯表中取消了。其二, 我將描述一個(gè)更好的模型。不過首先我認(rèn)為,要真正擁有一個(gè)

6、充分合理的模型還為時(shí)尚早。我僅僅是描述了一些新模型應(yīng)該符合的重要的要求。這些要求將在本文末尾處列舉。 1. V 模型有什么問題呢? 在本文中我要把 V 模型作為不好的模型的典型來進(jìn)行分析。我選擇 V 模型作為分析的典型是因?yàn)?V 模型是最廣為人知的測(cè)試模型。 最典型的 V 模型版本一般會(huì)在其開始部分對(duì)軟件開發(fā)過程進(jìn)行描述,如下圖所示: 歡迎訪問我們的網(wǎng)站 - ? 第 4 頁2005 年 02 月第五期測(cè)試員電子期刊圖 1-V 模型的各級(jí)開發(fā)階段 這是古老的瀑布模型。作為開發(fā)模型,它有很多問題,不過這里不作討論。盡管它的各種狀態(tài)是我們接著要討論的大家最熟悉的 V

7、模型的基礎(chǔ)。我的意見同時(shí)也針對(duì)其它的裝飾在一些更好的開發(fā)模型之上的測(cè)試模型, 例如螺旋模型Boehm88。 在 V 模型中,測(cè)試過程被加在開發(fā)過程的后半部分,如下圖所示: 圖 2-V 模型示意圖 單元測(cè)試所檢測(cè)的是,代碼的開發(fā)是否符合詳細(xì)設(shè)計(jì)的要求。集成測(cè)試所檢測(cè)的是, 此前測(cè)試過的各組成部分是否能完好地結(jié)合到一起。系統(tǒng)測(cè)試所檢測(cè)的是, 已集成在一起的產(chǎn)品是否符合系統(tǒng)規(guī)格說明書的要求。而驗(yàn)收測(cè)試則檢測(cè)產(chǎn)品是否符合最終用戶的需求。 對(duì)于測(cè)試設(shè)計(jì),顯而易見的是,V 模型的用戶往往會(huì)把執(zhí)行測(cè)試與測(cè)試設(shè)計(jì)分開對(duì)待。在開發(fā)文檔準(zhǔn)備就緒后, 就可以開始進(jìn)行相關(guān)的測(cè)試設(shè)計(jì)。如下圖所示, 相應(yīng)的測(cè)試設(shè)計(jì)覆蓋在

8、了相關(guān)的開發(fā)過程之上: 歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊圖 3-將測(cè)試設(shè)計(jì)覆蓋了開發(fā)過程后的 V 模型 V 模型有著很吸引人的對(duì)稱外形,并且把很多人都帶入了歧途。本文將集中討論它在單元測(cè)試和集成測(cè)試中引起的問題。 為了說明的方便,這里專門制作了以下圖片,圖中包括一個(gè)單獨(dú)的單元,以及一個(gè)單元組, 我稱之為子系統(tǒng)( subsystem)。 圖 4-一個(gè)假想的子系統(tǒng) 對(duì)于一個(gè)單元應(yīng)該多大才最為合適的問題,已經(jīng)有過很多的討論,究竟一個(gè)單元僅僅是一個(gè)函數(shù),一個(gè)類, 還是相關(guān)的類的集合?這些討論并不影響我在這里所要闡述的觀點(diǎn)。我們權(quán)且認(rèn)為

9、一個(gè)單元就是一個(gè)具有最小程度的代碼塊,開發(fā)人員可以對(duì)進(jìn)行獨(dú)立地討論。 V 模型認(rèn)為人們首先應(yīng)該對(duì)每一個(gè)單元進(jìn)行測(cè)試。當(dāng)子系統(tǒng)中所有的單元都已經(jīng)測(cè)試完畢, 它們將被集中到一起進(jìn)行測(cè)試, 以驗(yàn)證它們是否可以構(gòu)成一個(gè)可運(yùn)行的整體。 那么,如何針對(duì)單元進(jìn)行測(cè)試呢?我們會(huì)查看在詳細(xì)設(shè)計(jì)中對(duì)接口的定義,或者查看源代碼, 或者同時(shí)對(duì)兩者進(jìn)行查看, 找出符合某些測(cè)試設(shè)計(jì)中的有關(guān)準(zhǔn)則的輸入數(shù)據(jù)來進(jìn)行輸入, 然后檢查結(jié)果, 看其是否正確。由于各單元一般來說不能獨(dú)立地運(yùn)行,所以我們不得不另外設(shè)計(jì)樁模塊( Stub)和驅(qū)動(dòng)模塊( Driver),如下圖所示。 5第頁歡迎訪問我們的網(wǎng)站

10、- ?2005 年 02 月第五期測(cè)試員電子期刊圖 5:?jiǎn)卧捌渫獠康尿?qū)動(dòng)模塊和樁模塊 圖中的箭頭代表了測(cè)試的執(zhí)行軌跡。這就是大多數(shù)人所說的“單元測(cè)試” 。我認(rèn)為這樣的方法有時(shí)候是一種不好的方法。 同樣的輸入也可以有同一子系統(tǒng)中的其它單元來提供,這樣,其它的單元既扮演了樁模塊, 又扮演了驅(qū)動(dòng)模塊。如下圖所示: 圖 6-子系統(tǒng)內(nèi)部各單元間的測(cè)試執(zhí)行軌跡 到底選擇哪一種方法,這需要一種折衷和權(quán)衡。設(shè)計(jì)樁模塊和驅(qū)動(dòng)模塊要付出多少代價(jià)?這些模塊如何進(jìn)行維護(hù)? 子系統(tǒng)是否會(huì)由此而掩蓋了一些故障? 在整個(gè)子系統(tǒng)范圍內(nèi)進(jìn)行排錯(cuò)的困難程度有多大? 如果我們的測(cè)試直到集成測(cè)試時(shí)才真正開始, 那么一些 bug 可

11、能較晚才被發(fā)現(xiàn)。由此造成的代價(jià)同設(shè)計(jì)樁模塊和驅(qū)動(dòng)模塊的代價(jià)如何比較? 等等。 V 模型沒有去考慮這些問題,當(dāng)單元開發(fā)完成后就執(zhí)行單元測(cè)試,而當(dāng)自系統(tǒng)被集中在一起后就執(zhí)行集成測(cè)試, 僅此而已。令我奇怪和沮喪的是, 人們從不去做一些權(quán)衡, 他們已經(jīng)受制于他們的模型。 因此,一個(gè)有用的模型應(yīng)該允許測(cè)試人員考慮節(jié)省并推遲測(cè)試的可能性。 一個(gè)測(cè)試,如果要發(fā)現(xiàn)一個(gè)特定的單元中的 bug,最好是在該單元保持獨(dú)立的情況下執(zhí)行, 并且在其外部輔以特定的樁模塊和驅(qū)動(dòng)模塊。而另一種方法則是讓它作為子系統(tǒng)的一部分來進(jìn)行測(cè)試,該測(cè)試的設(shè)計(jì)主要是為了發(fā)現(xiàn)集成的問題。由于一個(gè)子系統(tǒng)本身也需要樁模塊和驅(qū)動(dòng)模塊來模擬該子系統(tǒng)和

12、其它子系統(tǒng)的聯(lián)系,因此, 單元測(cè)試和集成測(cè)試可能被推遲到至少整個(gè)系統(tǒng)已經(jīng)部分集成的時(shí)候。在這種情況下,測(cè)試者可能通過產(chǎn)品的外部接口同時(shí)進(jìn)行單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試,同樣的, 其主要目的還是為了減少總體生命周期的成本,對(duì)測(cè)試成本和延期進(jìn)行測(cè)試及由此造成延期發(fā)現(xiàn) bug 的代價(jià)成本進(jìn)行權(quán)衡。據(jù)此而言, “單元測(cè)試”、“ 集成測(cè)試” 和“ 系統(tǒng)測(cè)試” 的區(qū)別已經(jīng)大大削弱了。其結(jié)果可參考下圖: 6第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊 圖 7-新的方法:在部分階段延遲進(jìn)行單元測(cè)試和集成測(cè)試 在上圖右邊的方塊中, 最好要改成為“執(zhí)行某

13、些適當(dāng)?shù)臏y(cè)試并得到相應(yīng)的結(jié)果”。 圖中的左邊會(huì)怎樣? 考慮一下系統(tǒng)測(cè)試設(shè)計(jì),它的主要根據(jù)和信息來源是是規(guī)格說明。假設(shè)你知道有 2 個(gè)單元處在一個(gè)特定的子系統(tǒng)中, 它們?cè)谶\(yùn)行時(shí)相互聯(lián)系, 并且要執(zhí)行規(guī)格說明中的一個(gè)特定的聲明。為什么不在該子系統(tǒng)被集成時(shí)立即對(duì)此規(guī)格說明中的聲明進(jìn)行測(cè)試, 就象是在設(shè)計(jì)完成后立即開始測(cè)試的設(shè)計(jì)一樣呢? 如果該聲明的執(zhí)行和子系統(tǒng)外的子系統(tǒng)沒有任何關(guān)系, 為什么還要等到整個(gè)系統(tǒng)完成以后再測(cè)試呢? 難道越早發(fā)現(xiàn) bug 成本越低不對(duì)嗎? 在上一張圖片中, 我們用了向上指的箭頭( 更有效, 但在時(shí)間上有延遲)。這里還可以把箭頭往下指( 在時(shí)間上提前): 圖 8-新的方法:在

14、不同階段上提前進(jìn)行測(cè)試設(shè)計(jì) 7第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊在這種情況下,左邊的方塊中最好被標(biāo)記為:“在當(dāng)前信息條件和情況下可以做的任何測(cè)試設(shè)計(jì)”。這樣, 當(dāng)測(cè)試設(shè)計(jì)得自于系統(tǒng)中某一個(gè)組件的描述時(shí),模型必須允許這樣的測(cè)試在組件被裝配之前被執(zhí)行。我必須承認(rèn)我的圖片非常難看, 這些箭頭指得到處都是,對(duì)此我有 2 點(diǎn)說明: 1. 我們所討論的事情不是創(chuàng)造美,而是想要發(fā)現(xiàn)盡可能多的嚴(yán)重錯(cuò)誤,同時(shí)盡可能地降低成本。 2. 難看的部分原因也是因?yàn)楸仨毎凑漳承┐涡騺韴?zhí)行的結(jié)果,亦即開發(fā)人員先提供系統(tǒng)描述文檔, 然后測(cè)試和這些文檔進(jìn)行關(guān)

15、聯(lián)。這些文檔就象是堅(jiān)實(shí)的老橡樹,而測(cè)試設(shè)計(jì)則象是細(xì)細(xì)的枝條纏繞在樹上。如果我們采用不同的原理來進(jìn)行組織, 圖片可能就會(huì)變得好看些。但復(fù)雜性仍不可避免, 因?yàn)槲覀円懻摰膯栴}本身就很復(fù)雜。 V 模型失敗的原因是它把系統(tǒng)開發(fā)過程劃分為具有固定邊界的不同階段,這使得人們很難跨過這些邊界來采集測(cè)試所需要的信息。有些測(cè)試應(yīng)該執(zhí)行得更早些, 有些測(cè)試則需要延后進(jìn)行。而且, 它也阻礙了你從系統(tǒng)描述的不同階段中取得信息進(jìn)行綜合。例如, 某些組織有時(shí)執(zhí)行這樣的做法, 即對(duì)完成的工作進(jìn)行簽署。這樣的規(guī)定也擴(kuò)展到系統(tǒng)測(cè)試的設(shè)計(jì)。簽署表示已經(jīng)過評(píng)估,該測(cè)試設(shè)計(jì)工作已經(jīng)完成, 除非對(duì)應(yīng)的設(shè)計(jì)文檔改變, 否則就不會(huì)被修訂

16、。如果同這些測(cè)試相關(guān)的信息后來被重新挖掘和認(rèn)識(shí), 例如, 架構(gòu)設(shè)計(jì)表明有些測(cè)試是多余的, 或者,詳細(xì)設(shè)計(jì)表明有一個(gè)內(nèi)部的邊界可以和已存在的系統(tǒng)測(cè)試組合在一起進(jìn)行測(cè)試的話, 那么實(shí)際上還需要繼續(xù)調(diào)整原來的系統(tǒng)測(cè)試設(shè)計(jì)。 因此,模型必須允許利用不同來源的綜合信息進(jìn)行個(gè)別的測(cè)試設(shè)計(jì)。另外,模型還應(yīng)該允許在新的信息來源出現(xiàn)后重新進(jìn)行測(cè)試的設(shè)計(jì)。 2.一個(gè)不同的模型 讓我們來看本文的第二項(xiàng)內(nèi)容,一個(gè)不同的模型。 很多時(shí)候人們把代碼移交給其他人,并且說:“希望你能接受和喜歡它?!?這不僅發(fā)生在將整個(gè)項(xiàng)目放在一張光盤中交給客戶的時(shí)候, 也發(fā)生在項(xiàng)目?jī)?nèi)部。 例如,一個(gè)小組對(duì)另一個(gè)小組說:“ 我們已經(jīng)完成了為

17、COMM 庫加入了對(duì) 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ù)處理了。 在這些情況下,人們要把代碼移交給其它人,其中有可能會(huì)存在一些影響。測(cè)試人員需要干預(yù)這個(gè)過程。在移交之前,測(cè)試人員應(yīng)執(zhí)行這些代碼,發(fā)現(xiàn)其中的 bug8第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊( 影響),

18、 并且提出問題:“ 你確實(shí)要提交這些嗎?” 由此, 移交的內(nèi)容可能會(huì)被延期, 直到 bug 被修復(fù)好。 盡管你還要做其它的各種測(cè)試,這項(xiàng)測(cè)試仍然是很基本的測(cè)試工作。如果你沒有做這樣的測(cè)試, 就不能算是合格的測(cè)試人員。 我們的測(cè)試模型必須包含這一重要的現(xiàn)實(shí)需要:針對(duì)代碼移交的測(cè)試。由此,測(cè)試模型應(yīng)提示進(jìn)行針對(duì)每一次代碼移交的測(cè)試。 就讓我以支持 XML 的 COMM 庫作為例子。這里存在著一個(gè)小組把代碼移交給 XARG小組以進(jìn)行項(xiàng)目的余下部分。那么誰會(huì)遭受影響? 要將這些支持 XML 的代碼直接進(jìn)行使用的 XARG 小組可能會(huì)立即受到影響; 這可能會(huì)在稍后影響到市場(chǎng)人員,他們要在一個(gè)行業(yè)展示會(huì)議

19、上為“合作伙伴發(fā)行”版本提品演示和宣傳,而 XML 支持是影響他們銷售的重要部分; 還有, 它可能損害采納我們的產(chǎn)品的合作伙伴。 現(xiàn)在我們可以提出一些有趣的關(guān)于測(cè)試計(jì)劃的問題了。最簡(jiǎn)單的可以做的事情是,在移交的時(shí)候立即執(zhí)行 XML 支持的完整測(cè)試。(“ 完整” 的含義是, 為此設(shè)計(jì)盡可能多的測(cè)試)但也許一些 XML 特性并不是 XARG 小組所需要的,因此可以把它們放在合作伙伴版本封版( 下圖中的“ Partner Release”)的測(cè)試中去。這意味著可以把一些 XML 相關(guān)測(cè)試放到稍后的移交過程中去。或者基于其它理由, 例如在近階段有其它的測(cè)試任務(wù)要執(zhí)行。而 XARG 小組則要因 XML

20、中的 bug 修復(fù)而延遲一小段時(shí)間。 我們的測(cè)試計(jì)劃所表示的進(jìn)度可以通過在開發(fā)的時(shí)間線上進(jìn)行注解的方式來表現(xiàn),如下圖所示: 圖 9: 添加在開發(fā)計(jì)劃之上的測(cè)試計(jì)劃 我們應(yīng)嚴(yán)格地圍繞在 XML 支持的功能交接的時(shí)段里進(jìn)行測(cè)試。測(cè)試設(shè)計(jì)和測(cè)試支持工作要早于測(cè)試執(zhí)行。而另外的 XML 測(cè)試則要延遲到基于整個(gè)項(xiàng)目范圍的“ 代碼第頁9歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊完成”( 圖中的“ Code Complete” 里程碑),或者要等到全部的子系統(tǒng)被集中在一起,而且整個(gè)產(chǎn)品為了行業(yè)會(huì)議而在經(jīng)過穩(wěn)定化處理后創(chuàng)建了版本( 圖中的“ Partn

21、er Release” 里程碑)。 顯然, 有兩項(xiàng)內(nèi)容沒有包含在代碼完成里程碑中: 還有大量其它的測(cè)試工作( 包括設(shè)計(jì)、工具選用)。這些工作可能因?yàn)?COMM 以外的子系統(tǒng)的交接而延期。而且, 還有用于完成里程碑中所規(guī)定的某些風(fēng)險(xiǎn)的測(cè)試, 例如, 可能還有一組用于運(yùn)行市場(chǎng)人員的演示 Demo 腳本的測(cè)試, 包括她可能在無意中引起的偏離。其目的是要避免這樣的情況, 即當(dāng)她站在1000 人的觀眾面前時(shí), 她還僅僅是第一次以某種特定的順序來輸入數(shù)據(jù)。 一些首次交接時(shí)進(jìn)行的 XML 測(cè)試需要在代碼完成里程碑上再次執(zhí)行。 我的觀點(diǎn)是,測(cè)試計(jì)劃是由很多困難的決定所組成,這些決定包括人員組織安排、機(jī)器資源配

22、置、測(cè)試設(shè)計(jì)的時(shí)間定位、測(cè)試支持代碼的數(shù)量、哪些測(cè)試要做自動(dòng)化, 等等。這些決定應(yīng)根據(jù)單獨(dú)的交接中的內(nèi)容信息來作出。如果僅有一次交接, 那么你可以更順利一些。測(cè)試計(jì)劃還應(yīng)繼續(xù)考慮以下問題: 1. 風(fēng)險(xiǎn)分析, 誰會(huì)因此受到損害, 以什么方式? 2. 選定一種測(cè)試途徑來定位特定的風(fēng)險(xiǎn)。 3. 對(duì)測(cè)試設(shè)計(jì)和執(zhí)行的周期和成本進(jìn)行估計(jì)。 4. 在項(xiàng)目進(jìn)度上的特定位置, 將計(jì)劃納入執(zhí)行的行動(dòng): A. 開始對(duì)測(cè)試進(jìn)行設(shè)計(jì) B. 同時(shí)設(shè)計(jì)和創(chuàng)建一些支持測(cè)試的代碼 C. 在全部測(cè)試完成以前就執(zhí)行部分的測(cè)試, 因?yàn)榭赡艽嬖诓恢灰淮蔚慕唤?,在每一次交接的測(cè)試規(guī)劃中, 可能存在一些潛在的復(fù)雜的相互影響。工作安排不得不

23、進(jìn)行一些調(diào)整以達(dá)到相互間的平衡。測(cè)試支持代碼和工具需要在各項(xiàng)任務(wù)中得到共享。你還必須考慮到在什么程度上讓那些為早先的交接所設(shè)計(jì)的測(cè)試在以后重新執(zhí)行, 等等。 這看起來很復(fù)雜??瓷先ニ坪跤刑嗟膬?nèi)容需要跟蹤,而且太多的內(nèi)容可能被忽略。也許你認(rèn)為我是在要求你要對(duì)每一次交接來執(zhí)行 IEEE 829 IEEE98中關(guān)于測(cè)試計(jì)劃的要求, 然后把它們合并為一份貫穿整個(gè)項(xiàng)目的針對(duì)交接進(jìn)行測(cè)試的測(cè)試計(jì)劃。 是, 也不是。思考問題總是要占用時(shí)間的。太多的計(jì)劃可能會(huì)減少結(jié)果的產(chǎn)出。在有些時(shí)候,你需要做的是停止計(jì)劃并開始行動(dòng)。例如,你無法思考并描述每一個(gè)bug 修復(fù), 盡管 bug 修復(fù)也是一種交接。 但是 bug

24、 修復(fù)是實(shí)際工作中現(xiàn)實(shí)存在的問題??傮w項(xiàng)目計(jì)劃中應(yīng)該包含 bug 修復(fù)。10第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊需要強(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í)我們鼓勵(lì)對(duì)特定的交接執(zhí)行剛剛夠的檢查, 對(duì)于風(fēng)險(xiǎn)越小的交接, 就越可以采用機(jī)械式的測(cè)試行為。 一個(gè)明確考慮

25、到基本的測(cè)試現(xiàn)實(shí)的模型肯定會(huì)比忽略這些現(xiàn)實(shí)或者把你的工作復(fù)雜性完全抽象化的模型做得更好。文檔則是另一個(gè)例子。 我還沒有提到需求及規(guī)格說明書,或者設(shè)計(jì)文檔。某個(gè)交接中產(chǎn)生的一系列變化會(huì)引起很多爭(zhēng)議。這些文檔所扮演的角色是什么呢?它們常常是這么被使用的: 圖 10:測(cè)試中對(duì)開發(fā)文檔的利用 文檔可以指導(dǎo)你在一個(gè)交接變化時(shí)如何做出反應(yīng)。如果你有一份很好的需求文檔, 它可能是產(chǎn)品所解決的問題的描述, 盡管也許不是很直接。它可以幫助你對(duì)風(fēng)險(xiǎn)進(jìn)行分析。一份好的規(guī)格說明應(yīng)對(duì)系統(tǒng)的行為進(jìn)行描述。這將幫助你把測(cè)試方法轉(zhuǎn)化為具體的測(cè)試。一份好的架構(gòu)設(shè)計(jì)則可以幫助你理解變化可能引起的幾種不同的情況: 系統(tǒng)的其它部分會(huì)

26、受到怎樣的影響? 什么測(cè)試需要再次進(jìn)行? 我并不是經(jīng)常能看到好的文檔。需求文檔常常象是市場(chǎng)銷售用的系統(tǒng)特性列表。規(guī)格說明書有時(shí)就象是在代碼完成后提交的用戶手冊(cè)文件。而設(shè)計(jì)文檔經(jīng)常不存在。 好了,通過針對(duì)交接所引起的變化的集中討論,我已把測(cè)試過程和軟件開發(fā)過程相對(duì)地分離開了。如果文檔中關(guān)于“ XML 支持功能加入到 COMM” 的描述很薄弱的話, 我會(huì)盡自己所知來進(jìn)行盡可能好的測(cè)試設(shè)計(jì)。然后, 假如在項(xiàng)目后期, XML 相關(guān)的 用戶文檔出來了, 我就可以對(duì)后來再次提交的交接增加相關(guān)的測(cè)試。假如市場(chǎng)需求改變了, 她們經(jīng)常會(huì)這么做, 我還會(huì)在此后增加或者去除一些測(cè)試。所有這一切看起來是這樣的: 11

27、第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊 圖 11-在文檔不完整的條件下進(jìn)行測(cè)試,并在后期補(bǔ)充測(cè)試 這樣,雖然項(xiàng)目文檔總是不到位,而且經(jīng)常延遲提交,測(cè)試的效果也因此常常被降低, 我們還是要避免測(cè)試受到項(xiàng)目文檔的制約。 頭腦靈活的測(cè)試人員并不過于相信文檔。畢竟,總是人在犯錯(cuò)誤。那么,難道不是人在寫這些文檔嗎? 由于“ 正式的” 文檔是很薄弱的,測(cè)試模型必須明確地鼓勵(lì)在測(cè)試過程中使用項(xiàng)目文檔之外的各種不同信息來源。 測(cè)試人員必須和程序員、用戶、市場(chǎng)人員、技術(shù)作者以及任何的可能為實(shí)現(xiàn)更好測(cè)試提供線索的人進(jìn)行交流。測(cè)試人員還應(yīng)該努力把自己

28、沉浸在某些技術(shù)所構(gòu)建的氛圍中。例如, 我希望測(cè)試人員在做 XML 測(cè)試工作時(shí)常去訪問 W3 組織的 XML 地址( /XML/)以及其它 XML 站點(diǎn)、郵件列表,甚至包括比較特別的 如 Dave Winer 的 DaveNet/腳本新聞( /)。這些資源并不是所謂的“ 輔助通道” ,而是可以被列入計(jì)劃和進(jìn)度日程的資源。 另外,所執(zhí)行的測(cè)試本身也是一種有用的信息的資源。好的測(cè)試人員會(huì)仔細(xì)閱讀bug 報(bào)告, 因?yàn)檫@些報(bào)告講授了系統(tǒng)所存在的薄弱之處。特別地, 這些報(bào)告還暗示了一些正式的架構(gòu)設(shè)計(jì)所沒有提供的架構(gòu)上的策略。執(zhí)行

29、測(cè)試的行為應(yīng)該產(chǎn)生一些新的測(cè)試想法。如果模型沒有考慮到這些, 那么它就是一個(gè)落后的模型。 因此,測(cè)試模型應(yīng)該包含反饋的循環(huán),讓測(cè)試設(shè)計(jì)可以考慮到,在運(yùn)行測(cè)試時(shí)還可以繼續(xù)發(fā)現(xiàn)到更多的測(cè)試內(nèi)容。 在我們的工作中,真正的復(fù)雜性來自于所有計(jì)劃的執(zhí)行都處于一個(gè)不確定的、容易忽略的環(huán)境里。代碼并不是唯一在不斷變化的東西。而計(jì)劃日程也在改變。新的功能擴(kuò)充會(huì)帶來新的里程碑。某些功能會(huì)從當(dāng)前版本中去除。在開發(fā)過程中, 所有人-市場(chǎng)人員、開發(fā)人員和測(cè)試人員, 都會(huì)逐漸對(duì)諸如“ 產(chǎn)品究竟提供什么” 這樣12第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊的問題

30、有越來越清晰的了解。在這些情形下, 我們?cè)趺茨苷f測(cè)試計(jì)劃的第一個(gè)版本會(huì)是完全正確的呢? 因此,模型應(yīng)該要求測(cè)試計(jì)劃人制定明確的規(guī)定,對(duì)已交接的交接內(nèi)容,新的交接, 以及交接內(nèi)容的變更進(jìn)行負(fù)責(zé)。 3. 總結(jié) V 模型有以下的缺陷, 其它模型實(shí)際上也與此相似: 1. 忽略了這樣的事實(shí)情況, 即軟件開發(fā)是由一系列的交接所組成, 每一次交接內(nèi)容都改變了前一次交接的行為。 2. 依賴于開發(fā)文檔的存在, 及文檔的精確性、完整性, 并且沒有對(duì)時(shí)間進(jìn)行限制。 3. 認(rèn)定一種測(cè)試的設(shè)計(jì)是依據(jù)某一個(gè)單獨(dú)的文檔,而不包括根據(jù)其前后階段的文檔的修改而作相應(yīng)修改。 4. 認(rèn)定這些依賴于某個(gè)單獨(dú)文檔的測(cè)試一定要在一起執(zhí)行

31、。 我大致描述了一個(gè)替代模型, 但還不夠精細(xì)。它考慮到了代碼的交接和里程碑。對(duì)測(cè)試成本控制作了以下明確描述: 測(cè)試設(shè)計(jì)的目標(biāo)是定義好可能發(fā)現(xiàn) bug 的測(cè)試輸入,而測(cè)試執(zhí)行的目標(biāo)是以各種方式加入這些數(shù)據(jù), 并檢驗(yàn)結(jié)果,由此來降低整個(gè)生命周期的成本。 我們的模型假設(shè)軟件產(chǎn)品總是不完美的,開發(fā)過程中有很多變更,而且對(duì)產(chǎn)品的測(cè)試也是一個(gè)不斷學(xué)習(xí)的過程。 過去, 我很少考慮到模型。表面上我一直還在用 V 模型。雖然我按此制訂計(jì)劃, 但我總是還要花費(fèi)很多額外的精力和時(shí)間來考慮模型中沒有提到的方面。換言之, 模型造成了一些阻礙, 因此我有必要對(duì)此進(jìn)行研究。 對(duì)一個(gè)新的模型來說,對(duì)模型所提出的要求必須非常明

32、確,這就象業(yè)務(wù)需求對(duì)產(chǎn)品開發(fā)非常重要一樣。我希望自己對(duì)本文中所提倡的模型的要求的描述能夠和 V 模型中的描述一樣精確, 并具有同樣的指導(dǎo)意義。 理想的測(cè)試模型應(yīng)該包括下列要求: 1. 使測(cè)試對(duì)項(xiàng)目中的每一次代碼交接有所反應(yīng)。 2. 要求測(cè)試計(jì)劃人制定明確的規(guī)定,對(duì)已交接的交接內(nèi)容,新的交接,以及交接內(nèi)容的變更進(jìn)行負(fù)責(zé)。 13第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊3. 在測(cè)試設(shè)計(jì)中,除了使用項(xiàng)目文檔外,還應(yīng)明確鼓勵(lì)使用其它各種信息,這些信息有不同來源。 4. 事實(shí)上項(xiàng)目文檔總是不到位,而且經(jīng)常延遲提交,測(cè)試的效果也因此常常被降低。

33、但我們還是要盡量避免測(cè)試受到項(xiàng)目文檔的制約。 5. 允許根據(jù)多種來源提供的綜合信息來設(shè)計(jì)一些獨(dú)立的測(cè)試。 6. 讓測(cè)試被重新設(shè)計(jì), 以新的信息形式進(jìn)行表現(xiàn)。 7. 包含反饋的循環(huán),讓測(cè)試設(shè)計(jì)可以考慮到,在運(yùn)行測(cè)試時(shí)還可以繼續(xù)發(fā)現(xiàn)到更多的測(cè)試內(nèi)容。 8. 讓測(cè)試人員認(rèn)識(shí)到, 避免測(cè)試的延遲可以節(jié)省成本。 9. 在組件被組裝到程序中去之前對(duì)組件的執(zhí)行進(jìn)行測(cè)試。 感謝 是 James Bach 最早讓我認(rèn)識(shí)到,在測(cè)試計(jì)劃中應(yīng)考慮到交接。Noel Nyman 和 Johanna Rothman 在一份草案中提供了一些有幫助的評(píng)論。Kamesh Pemmaraju 和 Carol Stollmeyer

34、使我終于沒有放棄對(duì)原理的辯解和闡述, 不僅是在細(xì)節(jié)方面, 也在實(shí)際生活中, 以及每一個(gè)實(shí)際項(xiàng)目中。他們給了我很大的促進(jìn), 使我去地思考問題。 參考Boehm88Barry W. Boehm, “A Spiral Model of Software Development and Enhancement,” IEEE Computer, 1988 年 5 月IEEE98IEEE Standard for Software Test Documentation, IEEE 標(biāo)準(zhǔn) 829-1998, 電子和電氣工程師學(xué)會(huì), 1998Marick98Brian Marick, “When Should

35、 a Test be Automated?” 國(guó)際質(zhì)量(/pub/papers/automate.pdf),1998 年 5 月14第頁歡迎訪問我們的網(wǎng)站 - ? 北京慧靈科技有限公司依托測(cè)試時(shí)代資源,推出面向?qū)嵺`的軟件測(cè)試專業(yè)課程,由國(guó)內(nèi)著名軟件企業(yè)的一線技術(shù)專家主講,為您的企業(yè)解 決實(shí)踐中的關(guān)鍵問題。如果您培訓(xùn)的目的不是拿一個(gè)證書,而是想學(xué)習(xí) 軟件測(cè)試的最佳實(shí)踐,那我們會(huì)是您一個(gè)不錯(cuò)的選擇。 詳情請(qǐng)登陸公司網(wǎng)站: 2005 年 02 月第五期測(cè)試員電子期刊二、嵌入式軟件測(cè)試策略作者: a

36、dmin在嵌入式領(lǐng)域目標(biāo)系統(tǒng)的應(yīng)用系統(tǒng)日趨復(fù)雜,而由于競(jìng)爭(zhēng)要求產(chǎn)品快速上市,開發(fā)技術(shù)日新月異,同時(shí)硬件發(fā)展的日益穩(wěn)定,而軟件故障卻日益突出,軟件的重要性逐漸引起人們的重視,越來越多的人認(rèn)識(shí)到嵌入式系統(tǒng)的測(cè)試勢(shì)在必行。提到嵌入式軟件測(cè)試,首先要簡(jiǎn)單介紹一些軟件工程的一些觀點(diǎn),現(xiàn)在,被普遍接受的軟件的定義是:軟件(software)是計(jì)算機(jī)系統(tǒng)中與硬件(hardware)相互依存的另一部分,它包括程序(program)、相關(guān)數(shù)據(jù)(data)及其說明文檔(document)。其中程序是按照事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是是程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)維護(hù)和使用有關(guān)的各

37、種圖文資料。 對(duì)于一般商用軟件的測(cè)試,嵌入式軟件測(cè)試有其自身的特點(diǎn)和測(cè)試?yán)щy。 由于嵌入式系統(tǒng)的自身特點(diǎn),如實(shí)時(shí)性(Real-timing),內(nèi)存不豐富,I / O 通道少,開發(fā)工具昂貴,并且與硬件緊密相關(guān) CPU 種類繁多,等等。嵌入式軟件的開發(fā)和測(cè)試也就與一般商用軟件的開發(fā)和測(cè)試策略有了很大的不同,可以說嵌入式軟件是最難測(cè)試的一種軟件。 嵌入式軟件測(cè)試使用有效的測(cè)試策略是唯一的出路,它可以使開發(fā)的效率最大化,避免目標(biāo)系統(tǒng)的瓶頸,使用在線仿真器節(jié)省昂貴的目標(biāo)資源。自從出現(xiàn)高級(jí)語言,開發(fā)環(huán)境與最終運(yùn)行環(huán)境通常都是存在差異的,嵌入式系統(tǒng)更是如此。開發(fā)環(huán)境被認(rèn)為是主機(jī)平臺(tái),軟件運(yùn)行環(huán)境為目標(biāo)平臺(tái)。

38、相應(yīng)的測(cè)試為 host-target 測(cè)試或 cross-testing。 討論嵌入式軟件測(cè)試首先就會(huì)遇到一個(gè)問題:為什么不把所有測(cè)試都放在目標(biāo)上進(jìn)行呢?因?yàn)槿羲袦y(cè)試都放在目標(biāo)平臺(tái)上有很多不利的因素: 1)測(cè)試軟件,可能會(huì)造成與開發(fā)者爭(zhēng)奪時(shí)間的瓶頸,避免它只有提供更多的目標(biāo)環(huán)境。 2)目標(biāo)環(huán)境可能還不可行。 3)比起主機(jī)平臺(tái)環(huán)境,目標(biāo)環(huán)境通常是不精密的和不方便的。 4)提供給開發(fā)者的目標(biāo)環(huán)境和聯(lián)合開發(fā)環(huán)境通常是很昂貴的。 5)開發(fā)和測(cè)試工作可能會(huì)妨礙目標(biāo)環(huán)境已存在持續(xù)的應(yīng)用 從經(jīng)濟(jì)上和開發(fā)效率上考慮,軟件開發(fā)周期中盡可能大的比例在主機(jī)系統(tǒng)環(huán)境中進(jìn)行, 其中包括測(cè)試。 15第頁www.ltes

39、歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊 確定 host-target 測(cè)試環(huán)境后,開發(fā)測(cè)試人員又會(huì)遇到以下的問題: 1)多少開發(fā)人員會(huì)卷入測(cè)試工作(單元測(cè)試,軟件集成,系統(tǒng)測(cè)試)? 2)多少軟件應(yīng)該測(cè)試,測(cè)試會(huì)花費(fèi)多長(zhǎng)時(shí)間? 3)在主機(jī)環(huán)境和目標(biāo)環(huán)境有哪些軟件工具,價(jià)格怎樣,適合怎樣? 4)多少目標(biāo)環(huán)境可以提供給開發(fā)者,什么時(shí)候? 5)主機(jī)和目標(biāo)機(jī)之間的連接怎樣? 6)被測(cè)軟件下載到目標(biāo)機(jī)有多快? 7)使用主機(jī)與目標(biāo)環(huán)境之間有什么限制(如軟件安全標(biāo)準(zhǔn))? 任何人或組織進(jìn)行嵌入式軟件的測(cè)試都應(yīng)深入考慮以上問題,結(jié)合自身實(shí)際情況,選定合理測(cè)試策略和方案

40、。 對(duì)于嵌入式軟件測(cè)試或叫交叉測(cè)試(cross-test),在測(cè)試的各個(gè)階段有著通用的策略: 1單元測(cè)試: 所有單元級(jí)測(cè)試都可以在主機(jī)環(huán)境上進(jìn)行,除非少數(shù)情況,特別具體指定了單元測(cè)試直接在目標(biāo)環(huán)境進(jìn)行。最大化在主機(jī)環(huán)境進(jìn)行軟件測(cè)試的比例,通過盡可能小的目標(biāo)單元訪問所有目標(biāo)指定的界面。 在主機(jī)平臺(tái)上運(yùn)行測(cè)試速度比在目標(biāo)平臺(tái)上快的多,當(dāng)在主機(jī)平成測(cè)試,可以在目標(biāo)環(huán)境上重復(fù)作一簡(jiǎn)單的確認(rèn)測(cè)試,確認(rèn)測(cè)試結(jié)果在主機(jī)和目標(biāo)機(jī)上沒有被他們的不同影響。在目標(biāo)環(huán)境上進(jìn)行確認(rèn)測(cè)試將確定一些未知的,未預(yù)料到的,未說明的主機(jī)與目標(biāo)機(jī)的不同。例如,目標(biāo)編譯器可能有 bug,但在主機(jī)編譯器上沒有。 2集成測(cè)試: 軟件集成

41、也可在主機(jī)環(huán)境上完成,在主機(jī)平臺(tái)上模擬目標(biāo)環(huán)境運(yùn)行,當(dāng)然在目標(biāo)環(huán)境上重復(fù)測(cè)試也是必須的,在此級(jí)別上的確認(rèn)測(cè)試將確定一些環(huán)境上的問題,比如內(nèi)存定位和分配上的一些錯(cuò)誤。 在主機(jī)環(huán)境上的集成測(cè)試的使用,依賴于目標(biāo)系統(tǒng)的具體功能有多少。有些嵌入式系統(tǒng)與目標(biāo)環(huán)境耦合的非常緊密,若在主機(jī)環(huán)境做集成是不切實(shí)際的。一個(gè)大型軟件的開發(fā)可以分幾個(gè)級(jí)別的集成。別的軟件集成在主機(jī)平臺(tái)上完成有很大優(yōu)勢(shì),越往后的集成越依賴于目標(biāo)環(huán)境。 16第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊3系統(tǒng)測(cè)試和確認(rèn)測(cè)試 所有的系統(tǒng)測(cè)試和確認(rèn)測(cè)試必須在目標(biāo)環(huán)境下執(zhí)行。當(dāng)然在主機(jī)上

42、開發(fā)和執(zhí)行系統(tǒng)測(cè)試,然后移植到目標(biāo)環(huán)境重復(fù)執(zhí)行是很方便的。對(duì)目標(biāo)系統(tǒng)的依賴性會(huì)妨礙將主機(jī)環(huán)境上的系統(tǒng)測(cè)試移植到目標(biāo)系統(tǒng)上,況且只有少數(shù)開發(fā)者會(huì)卷入系統(tǒng)測(cè)試,所以有時(shí)放棄在主機(jī)環(huán)境上執(zhí)行系統(tǒng)測(cè)試可能更方便。 確認(rèn)測(cè)試最終的實(shí)施舞臺(tái)必須在目標(biāo)環(huán)境中,系統(tǒng)的確認(rèn)必須在真實(shí)系統(tǒng)之下測(cè)試,而不能在主機(jī)環(huán)境下模擬。這關(guān)系到嵌入式軟件的最終使用。 包括恢復(fù)測(cè)試、安全測(cè)試、強(qiáng)度測(cè)試、性能測(cè)試,已超出了軟件測(cè)試的范疇,本文暫不討論。 使用有效的 cross-test 測(cè)試策略可極大的提高嵌入式軟件開發(fā)測(cè)試的水平和效率,當(dāng)然正確的測(cè)試工具使用也是必不可少的: 總結(jié)一下,應(yīng)用以上測(cè)試工具進(jìn)行.Cross-test

43、時(shí)的策略: A) 使用測(cè)試工具的插裝功能(主機(jī)環(huán)境)執(zhí)行靜態(tài)測(cè)試分析,并且為動(dòng)態(tài)覆蓋測(cè)試準(zhǔn)備好一插裝好的軟件代碼。 B) 使用源碼在主機(jī)環(huán)境執(zhí)行功能測(cè)試,修正軟件的錯(cuò)誤和測(cè)試腳本中的錯(cuò)誤。 C) 使用插裝后的軟件代碼執(zhí)行覆蓋率測(cè)試,添加測(cè)試用例或修正軟件的錯(cuò)誤,保證達(dá)到所要求的覆蓋率目標(biāo)。 D) 在目標(biāo)環(huán)境下重復(fù)(B),確認(rèn)軟件在目標(biāo)環(huán)境中執(zhí)行測(cè)試的正確性。 E) 若測(cè)試需要達(dá)到的完整性,最好在目標(biāo)系統(tǒng)上重復(fù)(C),確定軟件的覆蓋率沒有改變。 通常在主機(jī)環(huán)境執(zhí)行多數(shù)的測(cè)試,只是在最終確定測(cè)試結(jié)果和最后的系統(tǒng)測(cè)試才移植到目標(biāo)環(huán)境,這樣可以避免發(fā)生訪問目標(biāo)系統(tǒng)資源上的瓶頸,也可以減少在昂貴資源如在

44、線仿真器上的費(fèi)用。另外,若目標(biāo)系統(tǒng)的硬件由于某種原因而不能使用時(shí),最后的確認(rèn)測(cè)試可以推遲直到目標(biāo)硬件可用,這為嵌入式軟件的開發(fā)測(cè)試提供了彈性。設(shè)計(jì)軟件的可移植性是成功進(jìn)行 cross-test 的先決條件,它通??梢蕴岣哕浖馁|(zhì)量,并且度軟件的維護(hù)大有益處。以上所提到的測(cè)試工具,都可以通過各自的方式提供測(cè)試在主機(jī)與目標(biāo)之間的移植,從而使嵌入式軟件的測(cè)試得以方便的執(zhí)行。 使用有效的 cross-test 測(cè)試策略可極大的提高嵌入式軟件開發(fā)測(cè)試的水平和效率,提高嵌入式軟件的質(zhì)量。 17第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊附錄: 1

45、). HOST-TARGET 的連接方法簡(jiǎn)介: 圖 1- 直接連接 圖 2 - 通過仿真器連接 18第頁歡迎訪問我們的網(wǎng)站 - ? 2005 年 02 月第五期測(cè)試員電子期刊 圖 3 - 使用介質(zhì)進(jìn)行間接連接 圖 4 - 使用 PROM 等傳遞被測(cè)軟件 圖 5 - 測(cè)試的交互界面19第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊圖 6 - 無交互界面的連接-三、Rational ClearQuest 技巧集 作者: pyp & http 前提: Rational ClearQuest 的版本為 2002.

46、05.00 問題一: 給某些字段設(shè)置使用權(quán)限, 只有相關(guān)人員才能看到某些字段而進(jìn)行填寫,對(duì)于一般人員使它變?yōu)椴灰姡?我該如何設(shè)置呢? 解答提示:一個(gè)比較簡(jiǎn)單的方法可以讓別人看不到你設(shè)置的字段:設(shè)置一個(gè)新的組,把想看新字段的人加到這個(gè)組中,在 Designer 中,設(shè)置 Forms 的時(shí)候,加一個(gè) Tab頁, 把只想讓一部分人看到的字段都加到這個(gè)頁中, 鼠標(biāo)右擊這個(gè)字段,在屬性頁中, 有“ User Group Access” 這個(gè)選擇, 選擇你想要看的組加到列表中就可以了。在使用的過程中, 只有相關(guān)的組成員才能看到這個(gè) tab 頁, 也就間接的等于別人看不到這些字段了。 問題二:在 Web 端

47、訪問的時(shí)候,只能看到提示“ Restricted Query Not Defined” 。 解答提示:一般是因?yàn)闆]有注冊(cè)的緣故,使用 CQ 的過程中,必須對(duì) Web 服務(wù)器進(jìn)行License 注冊(cè)。 問題三: 如何讓一些 Database 不顯示在客戶端和 Web 端的使用列表中。 20第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 02 月第五期測(cè)試員電子期刊解答提示: 在使用 CQ 的過程中, 必須選擇 Database 才可以進(jìn)入客戶端或 Web 端。而 Database 的內(nèi)容, 與選擇的 Schema Repository(s)有關(guān),下面就是如何讓部分Da

48、tabase 不顯示在列表中。 在 Designer 中, 選擇菜單中的 Database-Update User Database Properties,選擇不需要顯示的 Logical Database Name, 點(diǎn)擊“ Properties” 按鈕,進(jìn)入配置頁面。在配置頁面中, 把“ Production Database”選擇為“ Test Database” , 點(diǎn)擊“ Update” , 則此 Database 將不會(huì)顯示在列表中。如果將來想要恢復(fù), 只要把“ Test Database” 再選擇成“ Production Database”即可。 問題四: 在 project

49、的 Forms 下, 我為項(xiàng)目經(jīng)理設(shè)計(jì)了一個(gè)下拉列表框, 請(qǐng)問: 如何將 users 下面的 field:login_name、fullname 下面的記錄值自動(dòng)在這個(gè)下拉列表框里顯示。格式就是: login_name(fullname)。 解答提示: 這個(gè)我并不清楚你要做什么, 是在下拉框中顯示所有用戶的登陸名和全稱, 還是顯示一個(gè)組的, 或者是顯示當(dāng)前登陸用戶的? 如 果 顯示 當(dāng)前 用 戶的 ,則 比 較 的簡(jiǎn) 單。 直接login_name=session.GetUserLoginName,full_name=login_name.fullname,把login_name 和 full

50、_name 拼成一個(gè)字符串顯示出來就可以了。 如 果是 在 組 中的,你 可以查看安裝 目 錄 ClearQuestapihelpindex.htm中Session Object,User Object,Group Object,Groups Object 幾章。我的想法是:在 field 的 Choice List 中, 使用程序進(jìn)行列表內(nèi)容的控制, 建立一個(gè) session,使用 session.GetUserGroups 取到用戶組, 再 for each user in 用戶組,在里面choices.additem(user),但是我試驗(yàn)了一個(gè)上午,不知道什么原因,一直都沒有成功過,你

51、不妨再仔細(xì)的看看 Rational ClearQuest API Reference 里面的東西吧。如果能解決, 最好告訴我解決的辦法, 我也學(xué)習(xí)學(xué)習(xí)。 問題五: 對(duì)于特定的字段, 強(qiáng)制要求用戶每次 Action 的時(shí)候, 都必須填寫。 解答提示: 在字段的 Permission 中,用下面的代碼控制: SetFieldvalue Field1, 把字段的值設(shè)置為空 Field_Permission=AD_MANDATORY 讓字段必填 在 Behaviors 中把需要必填的字段狀態(tài)設(shè)置成 Hook 就可以了。 21第頁歡迎訪問我們的網(wǎng)站 - ?2005 年 0

52、2 月第五期測(cè)試員電子期刊 問題六:在 Clearquest Designer 里設(shè)置 Field 時(shí)那些 Type 都代表什么意思? 比如, Type 里的 REFERENCE,REFERENCE_LIST 都是什么類型, 設(shè)置成這個(gè)類型后, 會(huì)出現(xiàn)什么結(jié)果? 您能給我詳細(xì)說一下嗎? 解答提示:在 ClearQuest Designer Help 中的 Selecting a field data type 中有相應(yīng)的說明。 ClearQuest supports the following field data types: Data Description/Comments ATTACH

53、MENT_LIST: Allows records to store files related to the record. DATE_TIME: SQL date and time. INT: SQL integer. MULTILINE_STRING: A variable-length string of unlimited size. REFERENCE: A reference to a unique key in a record type.For REFERENCE type fields, you must select a state-based or stateless record type to refer to. You can also enter

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論