![《現(xiàn)代軟件工程》課件_第1頁](http://file4.renrendoc.com/view/7cb1bc65b1cc3513061331f96e3e3c25/7cb1bc65b1cc3513061331f96e3e3c251.gif)
![《現(xiàn)代軟件工程》課件_第2頁](http://file4.renrendoc.com/view/7cb1bc65b1cc3513061331f96e3e3c25/7cb1bc65b1cc3513061331f96e3e3c252.gif)
![《現(xiàn)代軟件工程》課件_第3頁](http://file4.renrendoc.com/view/7cb1bc65b1cc3513061331f96e3e3c25/7cb1bc65b1cc3513061331f96e3e3c253.gif)
![《現(xiàn)代軟件工程》課件_第4頁](http://file4.renrendoc.com/view/7cb1bc65b1cc3513061331f96e3e3c25/7cb1bc65b1cc3513061331f96e3e3c254.gif)
![《現(xiàn)代軟件工程》課件_第5頁](http://file4.renrendoc.com/view/7cb1bc65b1cc3513061331f96e3e3c25/7cb1bc65b1cc3513061331f96e3e3c255.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、現(xiàn)代軟件工程第七部分現(xiàn)代軟件工程的質(zhì)量保證 現(xiàn)代軟件工程的質(zhì)量保證過程-1軟件測試組織與管理-2質(zhì)量評審與軟件可靠性設(shè)計-3配置管理方法與實踐-4第七部分 現(xiàn)代軟件工程的質(zhì)量保證第二章 軟件測試組織與管理 軟件測試的方法選擇和運用-2.1軟件測試的組織與計劃-2.2軟件測試活動的過程管理-2.3軟件測試結(jié)果評價與應(yīng)用-2.4 第七部分 現(xiàn)代軟件工程的質(zhì)量保證四、軟件測試軟件開發(fā)過程必須伴有質(zhì)量保證活動。 軟件測試是軟件質(zhì)量保證的關(guān)鍵元素,代表了規(guī)約、設(shè)計和編碼的最終檢查。 軟件產(chǎn)品最大的成本是檢測軟件錯誤、修正軟件錯誤的成本。 在整個軟件開發(fā)中,測試工作量 一般占 30%40%,甚至50%。
2、在人命關(guān)天的軟件(如飛機控制、核反應(yīng)堆等)測試所花費的時間往往是其它軟件工程活動時間之和的三到五倍軟件測試背景軟件是人編的所以不完美實例:1994-1995,迪斯尼的獅子王系統(tǒng)不支持問題Intel 的 pentium 處理器1994 年浮點除法缺陷2000 年 8 月 28 日,1.13 MHZ 處理器一個可能導(dǎo)致運行程序被掛起的執(zhí)行指令問題1999年12月3日,美國航天局火星極地登陸飛船失蹤1991年愛國者導(dǎo)彈防御系統(tǒng)系統(tǒng)時鐘錯誤積累造成跟蹤系統(tǒng)失去精確度千年蟲,世界各地解決2000年錯誤超過數(shù)億美元測試模仿測試與開發(fā)前期工作的關(guān)系測試過程:依相反順序安排的自底向上、逐步集成的過程。軟件測試
3、的重要性及其工作步驟測試是保證軟件質(zhì)量,提高軟件可靠性的關(guān)鍵測試階段工作步驟單元測試: 檢驗每個模塊能否單獨工作.集成測試: 檢驗概要設(shè)計中模塊接口設(shè)計問題確認測試: 以需求規(guī)格說明書為檢驗尺度系統(tǒng)測試: 綜合檢驗 測試可視為分析、設(shè)計、編碼三個階段的最終復(fù)審,以保證軟件質(zhì)量.測試原則(9條)所有的測試都應(yīng)追溯到用戶需求概要設(shè)計時應(yīng)完成測試計劃pareto原則:測試發(fā)現(xiàn)的錯誤中80%很可能起源于20%的模塊中。應(yīng)孤立這些疑點模塊重點測試。窮舉測試是不可能的。應(yīng)由獨立的第三方構(gòu)造測試(開發(fā)和測試隊伍分別建立)。測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩部分組成.兼顧合理的輸入和不合理的輸入數(shù)據(jù)程序修
4、改后要回歸測試應(yīng)長期保留測試用例,直至系統(tǒng)廢棄。測試的方法與技術(shù)軟件測試的策略和方法靜態(tài)測試方法動態(tài)測試方法人工測試方法計算機輔助靜態(tài)分析方法白盒測試方法黑盒測試方法靜態(tài)測試約可找出3070%的邏輯設(shè)計錯誤.動態(tài)黑盒測試 閉著眼睛測試軟件軟件輸入 不深入代碼細節(jié)的測試方法稱為動態(tài)黑盒測試。軟件測試員充當客戶來使用它。輸出動態(tài)白盒測試 帶上X光眼鏡測試軟件?3581322.293419985680302829734315250*(1+0.015)*(1+0.015)360-1)/0.015250*(1+0.015)*(1+0.015)360-1)/0.015 假如知道一個盒子包含一臺計算機,而另
5、一個盒子是人用紙筆計算,就會選擇不同的測試用例了解軟件的運作方式會影響測試手段黑盒測試與白盒測試比較黑盒測試:功能測試、 數(shù)據(jù)驅(qū)動測試、 基于規(guī)格說明書的測試 是從用戶觀點,按規(guī)格說明書要求的輸入數(shù)據(jù) 與輸出數(shù)據(jù)的對應(yīng)關(guān)系設(shè)計測試用例,是根據(jù)程序外部特征進行測試。白盒測試:開盒測試 結(jié)構(gòu)測試 玻璃盒測試 基于覆蓋的測試. 是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)進行測試黑盒測試與白盒測試優(yōu)缺點比較黑盒測試 白盒測試 優(yōu)點缺點性質(zhì)適用于各階段測試從產(chǎn)品功能角度測試容易入手生成測試數(shù)據(jù)可構(gòu)成測試數(shù)據(jù)使特定程 序部分得到測試有一定的充分性度量手段可或較多工具支持某些代碼得不到測試如果規(guī)格說明有誤, 則無法發(fā)現(xiàn)不易進行
6、充分性測試不易生成測試數(shù)據(jù)(通常)無法對未實現(xiàn)規(guī)格說明的 部分進行測試工作量大,通常只用于單 元測試,有應(yīng)用局限是一種確認技術(shù),回答“我們在構(gòu)造一個正確 的系統(tǒng)嗎?”是一種驗證技術(shù),回答“我們在正確 地構(gòu)造一個系 統(tǒng)嗎?”自頂向下和自底向上的測試區(qū)別 自頂向下 自底向上優(yōu)點 可在測試早期 實現(xiàn)并驗證系 設(shè)計測試用例容易 統(tǒng)主要功能 缺點 不需驅(qū)動模塊 不需樁模塊 需樁模塊 只有到最后程序才 能作為一個整體混合集成測試方法一般對軟件結(jié)構(gòu)的上層使用自頂向下結(jié)合的方法;對下層使用自底向上結(jié)合的方法;測試避免 軟件測試不等于程序測試 軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間; 據(jù)美國一家公司統(tǒng)計,查出
7、的軟件錯誤中,屬于需求分析和軟件設(shè)計的錯誤約占 64%,屬于程序編寫的錯誤僅占 36%。程序編寫的許多錯誤是“先天的”。 不論黑盒還是白盒測試都不能進行窮盡測試, 所以軟件測試不可能發(fā)現(xiàn)程序中存在的所有錯誤, 因此需精心設(shè)計測試方案,力爭盡可能少的次數(shù),測出盡可能多的錯誤課程設(shè)計提交文檔: 可行性研究報告 項目開發(fā)計劃 需求規(guī)格說明書 概要設(shè)計說明書 詳細設(shè)計說明書 數(shù)據(jù)庫設(shè)計說明書 測試計劃 測試分析報告 項目總結(jié)報告操作手冊用戶手冊開發(fā)進度周報目錄1. 測試的常識與道理 2. 測試的分類與比較3. 測試人員的組織4. 企業(yè)的測試策略5. 測試規(guī)范6. 軟件產(chǎn)品的主要測試內(nèi)容及技術(shù)世上不存在
8、沒有缺陷的軟件1. 測試的常識與道理1.1 你真的懂測試嗎 編程大師說:沒有錯誤的程序世間難求。 (編程之道)你在學(xué)校里學(xué)過測試嗎?(讀到博士可能也不懂測試)你所在的企業(yè)重視測試嗎? (小公司程序員的技能更加全面)臨時抱佛腳行嗎?你以為有文檔模板就會測試了嗎? 如果不懂得有效地進行測試,你不僅得不到功勞,也沒人欣賞你的苦勞,你擁有最多的將只是疲勞。 職業(yè)軟件工程師應(yīng)當掌握需求開發(fā)、系統(tǒng)設(shè)計、編程、測試、維護 所有技能。1.2 測試的目的是什么測試的目的是為了發(fā)現(xiàn)盡可能多的缺陷,不是為了說明軟件中沒有缺陷。 推論:成功的測試在于發(fā)現(xiàn)了迄今尚未發(fā)現(xiàn)的缺陷。所以測試人員的職責是設(shè)計這樣的測試用例,它
9、能有效地揭示潛伏在軟件里的缺陷。 千萬不要將“測試”與“演示”混為一談。例如科研鑒定會。如果產(chǎn)品通過了嚴格的測試,大家不要不吭氣,應(yīng)當好好地宣傳一把 。1. 測試的常識與道理1.3 一些常識和經(jīng)驗之談測試能提高軟件的質(zhì)量,但是提高質(zhì)量不能依賴測試。 測試只能證明缺陷存在,不能證明缺陷不存在?!皬氐椎販y試”難以成為現(xiàn)實,要考慮時間、費用等限制,不允許無休止地測試。我們應(yīng)當祈禱:軟件的缺陷在產(chǎn)品被淘汰之前一直沒有機會發(fā)作。 測試的主要困難是不知道如何進行有效地測試,也不知道什么時候可以放心地結(jié)束測試。 每個開發(fā)人員應(yīng)當測試自己的程序(份內(nèi)之事),但是不能作為該程序已經(jīng)通過測試的依據(jù)(所以項目需要獨
10、立測試人員)。 80-20原則:80的缺陷聚集在20的模塊中,經(jīng)常出錯的模塊改錯后還會經(jīng)常出錯測試應(yīng)當循序漸進,不要企圖一次性干完,注意“欲速則不達”。 2. 測試的分類與比較2.1 測試方式白盒測試:關(guān)心軟件內(nèi)部設(shè)計和程序?qū)崿F(xiàn),主要測試依據(jù)是設(shè)計文檔黑盒測試:不關(guān)心軟件內(nèi)部,只關(guān)心輸入輸出,主要測試依據(jù)是需求文檔2.2 測試階段單元測試、集成測試、系統(tǒng)測試、驗收測試。是“從小到大”、“由內(nèi)至外”、“循序漸進”的測試過程,體現(xiàn)了“分而治之”的思想。 單元測試的粒度最小,一般由開發(fā)小組采用白盒方式來測試,主要測試單元是否符合“設(shè)計”。 集成測試界于單元測試和系統(tǒng)測試之間,起到“橋梁作用”,一般由
11、開發(fā)小組采用白盒加黑盒的方式來測試,既要驗證“設(shè)計”又要驗證“需求”。 系統(tǒng)測試的粒度最大,一般由獨立測試小組采用黑盒方式來測試,主要測試系統(tǒng)是否符合“需求規(guī)格說明書”。 驗收測試與系統(tǒng)測試非常相似,主要區(qū)別是測試人員不同,驗收測試由用戶執(zhí)行。 2. 測試的分類與比較2.3 開發(fā)與測試的 V 型關(guān)系如果軟件開發(fā)過程采用嚴格的瀑布模型,那么開發(fā)與測試有“V”型的對應(yīng)關(guān)系 。需求開發(fā)高層設(shè)計詳細設(shè)計編程單元測試集成測試系統(tǒng)測試驗收測試2. 測試的分類與比較2.4 測試內(nèi)容接口與路徑測試。 功能測試、健壯性測試、性能測試、用戶界面測試、安全性測試、壓力測試、可靠性測試、安裝/反安裝測試 測試階段 主
12、要依據(jù) 測試人員、測試方式 主要測試內(nèi)容 單元測試系統(tǒng)設(shè)計文檔由開發(fā)小組執(zhí)行白盒測試 接口測試、路徑測試 集成測試系統(tǒng)設(shè)計文檔需求文檔由開發(fā)小組執(zhí)行白盒測試和黑盒測試 接口測試、路徑測試功能測試、性能測試 系統(tǒng)測試需求文檔由獨立測試小組執(zhí)行黑盒測試 功能測試、健壯性測試、性能測試、用戶界面測試、安全性測試、壓力測試、可靠性測試、安裝/反安裝測試 驗收測試需求文檔由用戶執(zhí)行黑盒測試 2. 測試的分類與比較2.5 問題問題1:有了“黑盒”測試為什么還要“白盒”測試?黑盒測試只能觀察軟件的外部表現(xiàn),即使軟件的輸入輸出都是正確的,卻并不能說明軟件就是正確的。因為程序有可能用錯誤的運算方式得出正確的結(jié)果
13、,例如“負負得正,錯錯得對”,只有白盒測試才能發(fā)現(xiàn)真正的原因。白盒測試能發(fā)現(xiàn)程序里的隱患,象內(nèi)存泄漏、誤差累計問題。在這方面,黑盒測試存在嚴重的不足。 問題2:由于單元測試要寫測試驅(qū)動程序,非常麻煩,能否等到整個系統(tǒng)全部開發(fā)完后,再集中精力進行一次性地單元測試呢? 如果這樣做,在開發(fā)過程中,缺陷會越積越多并且分布得更廣、隱藏得更深,反而導(dǎo)致測試與改錯的代價大大增加。最糟糕的是無法估計測試與改錯的工作量,使進度失去控制。因此為圖眼前省事而省略單元測試或者“偷工減料”,是“得不償失”的做法。 問題3:如果每個單元都通過了測試,把它們集成一起難道會有什么不妥嗎?集成測試是否多此一舉?要把N個單元集成
14、一起肯定靠接口耦合,這時可能會產(chǎn)生在單元測試中無法發(fā)現(xiàn)的問題。例如:數(shù)據(jù)通過不同的接口時可能出錯;幾個函數(shù)關(guān)聯(lián)在一起時可能達不到預(yù)期的功能;在某個單元里可以接受的誤差可能在集成后被擴大到無法接受的程度。所以集成測試是必要的,不是多此一舉。2. 測試的分類與比較2.5 問題問題4:在集成測試的時候,已經(jīng)對一些子系統(tǒng)進行了功能測試、性能測試等等,那么在系統(tǒng)測試時能否跳過相同內(nèi)容的測試? 不能!因為集成測試是在仿真環(huán)境中開展的,那不是真正的目標系統(tǒng)。再者,單元測試和集成測試通常由開發(fā)小組執(zhí)行。根據(jù)測試心理學(xué)的分析,開發(fā)人員測試自己的工作成果雖然是必要的,但不能作為成果已經(jīng)通過測試的依據(jù)。 問題5:既
15、然系統(tǒng)測試與驗收測試的內(nèi)容幾乎是相同的,為什么還要驗收測試?首先是“信任”問題。對于合同項目而言,如果測試小組是開發(fā)方的人員,客戶怎么能夠輕易相信“別人”呢? 所以當項目進行系統(tǒng)測試之后,客戶再進行驗收測試是情理之中的事。否則,那是客戶失職。 不論是合同項目還是非合同項目,軟件的最終用戶各色各樣(如受教育程度不同、使用習(xí)慣不同等等)。測試小組至多能夠模仿小部分用戶的行為,但并不具有普遍的代表性。 問題6:能否將系統(tǒng)測試和驗收測試“合二為一”? 系統(tǒng)測試不是一會兒就能做完的,比較長時間的用戶測試很難組織。用戶還有自己的事情要做,他們?yōu)槭裁匆獮閯e人測試呢?即使用戶愿意做系統(tǒng)測試,他們消耗的時間、花
16、費的金錢大多比測試小組的高。系統(tǒng)測試時會找出相當多的軟件缺陷,軟件需要反反復(fù)復(fù)地改錯。如果讓用戶發(fā)現(xiàn)“內(nèi)幕”,一是丟臉,二是會嚇跑買主。所以還是關(guān)起門來,先讓測試小組做完系統(tǒng)測試的好。 3. 測試人員的組織3.1 了解開發(fā)人員的測試心理測試的目的是找出盡可能多的缺陷。所以測試是“破壞性”的,而開發(fā)卻是“建設(shè)性”的。開發(fā)人員總是喜歡欣賞程序的成功之處,而不愿看到失敗之處。讓開發(fā)者去做“蓄意破壞”的測試,就象殺自己的孩子一樣難以接受。 開發(fā)者對自己的程序印象深刻,并總以為是正確的(自信是應(yīng)該的)。倘若在設(shè)計時就存在理解錯誤,或因不良的編程習(xí)慣而流下了隱患,他本人很難發(fā)現(xiàn)這類錯誤.開發(fā)者對自己的程序
17、的功能、接口十分熟悉,他自己幾乎不可能因為使用不當而引發(fā)錯誤,這與大眾用戶的情況不太相似,所以測試自己的程序不具備典型性。 結(jié)論:開發(fā)人員應(yīng)當測試自己的程序,這是他分內(nèi)的工作。但是開發(fā)人員在測試自己的程序時,很難做到客觀、公正,所以自我測試不具有說服力。 3.2 如何組織測試人員:應(yīng)當視企業(yè)的人力資源而定條件特別好的公司,可以為每一個開發(fā)人員分配一名獨立的測試人員。這樣的測試人員職業(yè)化程度很高,可以完成單元測試、集成測試和系統(tǒng)測試工作,能夠?qū)崿F(xiàn)開發(fā)與測試同步進行。條件比較好的公司,可以設(shè)置一個獨立的測試小組,該測試小組輪流參加各個項目的系統(tǒng)測試。而單元測試、集成測試工作由項目的開發(fā)小組承擔。
18、條件一般的公司,養(yǎng)不起獨立的測試小組。單元測試、集成測試工作由項目開發(fā)小組承擔。當項目進展到系統(tǒng)測試階段,可以從項目外抽調(diào)一些人員,加上開發(fā)人員,臨時組織系統(tǒng)測試小組。 條件比較差的公司,也許只有一個項目和為數(shù)不多的一些開發(fā)人員。那么就讓開發(fā)人員一直兼任測試人員的角色,相互測試對方的程序。如果人員實在太少了,只好讓開發(fā)者測試自己的程序,有測試總比沒有測試好吧! 3. 測試人員的組織3.3 避免開發(fā)人員與測試人員產(chǎn)生矛盾開發(fā)人員的注意事項: 不要敵視測試人員。要理解測試的目的就是發(fā)現(xiàn)缺陷,是測試人員的工作職責。不要以為測試人員吃飽了沒事干,存心找茬。 不要輕視測試人員,別說人家技術(shù)水平差,不配搞
19、開發(fā)只好搞測試。 測試人員的注意事項: 發(fā)現(xiàn)缺陷時不要嘲笑開發(fā)人員,別說他的程序真臭、到處是Bug。 在開發(fā)人員壓力太大時或心情不好時不要火上澆油,發(fā)現(xiàn)缺陷時別大聲嚷嚷。 請留意另一種極端:如果測試人員與開發(fā)人員的關(guān)系非常好,可能會導(dǎo)致在測試的時候“手下留情”,這對項目也是一種傷害。 4. 企業(yè)的測試策略4.1 理念:企業(yè)的主要目的是獲取利潤,降低測試成本也是盈利的一種方式。 用較低的代價實現(xiàn)有效的測試,不應(yīng)為了追求完美的測試而不失一切代價。4.2 如何合理地減少測試工作量減少冗余的測試白盒測試與黑盒測試的方式雖然不同,但往往有“異曲同工”之妙。在很多地方,白盒測試與黑盒測試會產(chǎn)生一模一樣的效
20、果(或者能推理出來),這樣的測試是冗余的。在集成測試、系統(tǒng)測試階段,可能要執(zhí)行多次“回歸測試”。每一次“回歸測試”都會存在不少的冗余,應(yīng)當設(shè)法剔除不必要的重復(fù)測試工作。 減少無價值的測試無價值的測試通常是由于不懂得測試技術(shù)引起的。例如功能測試,在等價區(qū)間之中,本來只要測試一個典型的輸入就行了,如果有人在此區(qū)間測試了100次,那么其中99次就是無價值的。 如何“偷工減料” 有一些“短、平、快”的項目,經(jīng)費本來就少,用戶對質(zhì)量要求也馬馬虎虎。為了能多掙一點錢,開發(fā)方不得不采用“偷工減料”的方式來降低測試代價。偷工減料的途徑無非就是減少測試的內(nèi)容和頻度。但不能砍得太狠,否則軟件拿不出手?;痉椒ㄊ钦?/p>
21、出軟件中需要優(yōu)先測試的部分(見下表),其它次要部分可以忽略或?qū)碓贉y試。 4. 企業(yè)的測試策略“偷工減料”方法的測試優(yōu)先級:哪些功能是軟件的特色? 哪些功能是用戶最常用的? 如果系統(tǒng)可以分塊賣的話,哪些功能塊在銷售時最昂貴? 哪些功能出錯將導(dǎo)致用戶不滿或索賠?哪些程序是最復(fù)雜、最容易出錯的?哪些程序是相對獨立,應(yīng)當提前測試的?哪些程序最容易擴散錯誤?哪些程序是全系統(tǒng)的性能瓶頸所在?哪些程序是開發(fā)者最沒有信心的? 4.3 測試何時結(jié)束基于測試用例的規(guī)則 基于“測試期缺陷密度”的規(guī)則基于“運行期缺陷密度”的規(guī)則4.4 測試獎勵機制根據(jù)缺陷的危害程度,把獎金分等級。每個新缺陷對應(yīng)一份獎金,把獎金發(fā)給
22、第一個發(fā)現(xiàn)該缺陷的人。獎金額要適當,太低了人們不感興趣,太高了會讓項目破產(chǎn)的。 5. 測試規(guī)范5.1 測試流程第一步:制定測試計劃。該計劃被批準后轉(zhuǎn)向第二步。 第二步:設(shè)計測試用例。該用例被批準后轉(zhuǎn)向第三步。 第三步:如果滿足“啟動準則” ,那么執(zhí)行測試。 第四步:撰寫測試報告。 第五步:消除軟件缺陷。如果滿足“完成準則”,那么正常結(jié)束測試。制定測試計劃設(shè)計測試用例執(zhí)行測試撰寫測試報告消除軟件缺陷審批審批回歸測試完成測試完成準則啟動準則5. 測試規(guī)范5.2 測試啟動準則同時滿足以下條件,允許開始測試:(1)測試計劃已經(jīng)制定并且通過了審批;(2)測試用例已經(jīng)設(shè)計并且通過了審批;(3)被測試對象已
23、經(jīng)開發(fā)完畢并等待測試。 5.3 測試完成準則對于非嚴格系統(tǒng)可以采用“基于測試用例”的準則。同時滿足以下條件允許結(jié)束測試:(1)功能性測試用例通過率達到100;(2)非功能性測試用例通過率達到90時。對于嚴格系統(tǒng),應(yīng)當補充“基于測試期缺陷密度”的規(guī)則:(3)相鄰n個CPU小時內(nèi)“測試期缺陷密度”全部低于某個值m。例如n大于10,m小于等于1。 5.4 測試文檔模板測試計劃參考模板 測試用例參考模板測試報告參考模板5.5 測試計劃的參考模板5.6 測試用例5.7 測試報告的參考模板6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.1 接口與路徑測試6.2 功能測試6.3 健壯性測試6.4 性能測試6.5 用戶
24、界面測試6.6 信息安全測試6.7 壓力測試6.8 可靠性測試6.9 安裝/反安裝測試6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.1 接口與路徑測試數(shù)據(jù)一般通過接口輸入和輸出,所以接口測試是白盒測試的第一步。每個接口可能有多個輸入?yún)?shù),每個參數(shù)有“典型值”、“邊界值”、“異常值”之分,所以輸入的組合數(shù)可能并不少。根據(jù)接口的定義,可以推斷某種輸入應(yīng)當產(chǎn)生什么樣的輸出。輸出包括函數(shù)的返回值和輸出參數(shù)。如果實際輸出與期望的輸出不一致,那么說明程序有錯誤。白盒方式的接口測試和黑盒方式的功能測試,其方法十分相似。 一個函數(shù)體內(nèi)的語句可能只有十幾條,但邏輯路徑可能有成千上萬條。想遍歷測試幾乎是不可能的,不測試或
25、者胡亂找?guī)讞l路徑測試卻又不行。 對于非嚴格系統(tǒng)而言,在分析路徑方面化費很多精力是不值得的。我認為在構(gòu)造接口測試的同時已經(jīng)建立了測試路徑。因為每一種輸入將產(chǎn)生唯一的輸出,輸入與輸出之間的路徑也是唯一的。由于接口測試中的輸入是有代表性的,因此相應(yīng)的路徑也具有代表性,不用得著費煞苦心地去找測試路徑。路徑測試的檢查表數(shù)據(jù)類型、變量值、邏輯判斷、循環(huán)、內(nèi)存管理、文件I/O、錯誤處理 由于接口測試是枚舉的,有可能漏掉某些狀況,導(dǎo)致一些重要的路徑?jīng)]有被測試。預(yù)防措施有:觀察是否有程序語句從來沒有被執(zhí)行過。如果發(fā)生在這種情況,要么是程序有錯誤,存在無用的代碼;要么是接口測試不充分,漏掉了一些路徑。要特別留意函
26、數(shù)體內(nèi)的錯誤處理程序塊(如果存在的話),這是最易被人疏忽的路徑,隱患最多。 6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)接口與路徑測試用例的參考模板6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.2 功能測試功能測試的基本方法是構(gòu)造一些合理輸入(在需求范圍之內(nèi)),檢查輸出是否與期望的相同。如果兩者不一致,即表明功能有誤。也有例外的情況,如需求規(guī)格說明書中的某個功能寫錯了,而實際上軟件的功能卻是正確的,這時要更改的是需求規(guī)格說明書。 功能測試看起來比較簡單,只要看得懂需求規(guī)格說明書,誰都會做。難點在于如何構(gòu)造有效的輸入。由于輸入空間通常是無限的,窮舉測試顯然行不通。那么隨便輸入一些東西,碰運氣行不行? 功能測試有兩
27、種比較好的測試方法:等價劃分法和邊界值分析法。 等價劃分是指把輸入空間劃分為幾個“等價區(qū)間”,在每個“等價區(qū)間”中只需要測試一個典型值就可以了。等價劃分法來源于人們的直覺與經(jīng)驗,可令測試事半功倍。 “缺陷遺漏在角落里,聚集在邊界上”。邊界值測試法是對等價劃分法的補充。如果A和B是輸入空間的邊界值,那么除了典型值外還要用A和B作為測試用例。 例如測試函數(shù)。憑直覺,等價區(qū)間應(yīng)是(0, 1)和(1, +)??扇〉湫椭祒=0.5以及x=2.0進行“等價劃分”測試。再取 x=0以及x=1進行“邊界值”測試。 6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)功能測試用例的參考模板6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.3
28、 健壯性測試健壯性是指在異常情況下,軟件還能正常運行的能力。健壯性有兩層含義:一是容錯能力,二是恢復(fù)能力。 容錯性測試通常構(gòu)造一些不合理的輸入來引誘軟件出錯,例如:(1)輸入錯誤的數(shù)據(jù)類型。如“猴”年“馬”月。(2)輸入定義域之外的數(shù)值。如上海人常說的“十三點”粗暴一些方式俗稱“大猩猩”測試法。除了不能拳打腳踢嘴咬外,什么招術(shù)都可以使出來。例如在測試客戶機服務(wù)器模式的軟件時,把網(wǎng)絡(luò)線拔掉,造成通信異常中斷。 恢復(fù)測試重點考察一下幾項:(1)系統(tǒng)能否重新運行;(2)有無重要的數(shù)據(jù)丟失;(3)是否毀壞了其它相關(guān)的軟件硬件。 6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)健壯性測試用例的參考模板6. 軟件系統(tǒng)的
29、主要測試內(nèi)容及技術(shù)6.4 性能測試性能測試即測試軟件處理事務(wù)的速度,一是為了檢驗性能是否符合需求,二是為了得到某些性能數(shù)據(jù)供人們參考(例如用于宣傳)。 有時人們關(guān)心測試的“絕對值”,如數(shù)據(jù)送輸速率是每秒多少比特。有時人們關(guān)心測試的“相對值”,如某個軟件比另一個軟件快多少倍。在獲取測試的“絕對值”時,我們要充分考慮并記錄運行環(huán)境對測試的影響。例如網(wǎng)絡(luò)環(huán)境、計算機主頻,總線結(jié)構(gòu)和外部設(shè)備都可能影響軟件的運行速度。 性能測試的一些注意事項:不要試圖讓人拿著鐘表去測時間,應(yīng)當編寫一段程序用于計算時間以及相關(guān)數(shù)據(jù)。 應(yīng)當測試軟件在標準配置和最低配置下的性能。 為了排除干擾,應(yīng)當關(guān)閉那些消耗內(nèi)存、占用CP
30、U的其它應(yīng)用軟件(如殺毒軟件)。 不同的輸入情況會得到不同的性能數(shù)據(jù),應(yīng)當分檔記錄。例如傳輸文件的容量從100K到1M可以分成若干等級。 由于環(huán)境的波動,同一種輸入情況在不同的時間可能得到不同的性能數(shù)據(jù),可以取其平均值。 6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)性能測試用例的參考模板6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.5 用戶界面測試絕大多數(shù)軟件擁有圖形用戶界面。圖形用戶界面的測試重點是正確性、易用性和視覺效果。在評價易用性和視覺效果時,主觀性非常強,應(yīng)當考慮多個人的觀點。用戶界面測試用例的參考模板: 6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.6 信息安全測試信息安全性(security)是指防止系統(tǒng)
31、被非法入侵的能力,既屬于技術(shù)問題又屬于管理問題。信息安全性測試有如下步驟:(1)為非法入侵設(shè)立目標,例如“盜竊某個文件”或“更改數(shù)據(jù)庫記錄”等。(2)邀請(或懸賞)一些人扮演黑客,讓他們想盡辦法入侵系統(tǒng),實現(xiàn)“目標”。(3)如果有人成功了,請他詳述入侵的過程。別忘了給予獎勵。 信息安全性測試用例的參考模板6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.7 壓力測試壓力測試也叫負荷測試,即獲取系統(tǒng)能正常運行的極限狀態(tài)。了解“極限”是很有價值的,例如潛艇下潛極限深度。 壓力測試的主要任務(wù)是:構(gòu)造正確的輸入,使勁折騰系統(tǒng)卻讓它剛好不癱瘓。 壓力測試的一個變種是敏感測試。在某種情況下,微小的輸入變動會導(dǎo)致系統(tǒng)的
32、表現(xiàn)(如性能)發(fā)生急劇的變化。敏感測試目的是發(fā)現(xiàn)什么樣的輸入可能會引發(fā)不穩(wěn)定現(xiàn)象。 壓力測試用例的參考模板6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)6.8 可靠性測試可靠性是指在一定的環(huán)境下、在給定的時間內(nèi)、系統(tǒng)不發(fā)生故障的概率。由于軟件不像硬件那樣可以“加速老化”,按此定義,軟件可靠性測試可能會花費很長時間。 比較實用的辦法是,讓用戶使用該系統(tǒng),記錄每一次發(fā)生故障的時刻。計算出相鄰故障的時間間隔,注意要去掉非工作時間。這樣我們可以方便地統(tǒng)計出不發(fā)生故障的“最小時間間隔”、“最大時間間隔”和“平均時間間隔”。其中“平均時間間隔”會讓人們大體了解到系統(tǒng)“可靠”的程度。 6. 軟件系統(tǒng)的主要測試內(nèi)容及技術(shù)
33、6.9 安裝 / 反安裝測試安裝 / 反安裝測試的目的:避免“大風(fēng)浪都挺過來了,卻在陰溝里翻了船” 目前市面上有非常流行的、專門制作安裝/反安裝程序的一些工具,如Install Shelled。制作安裝/反安裝程序不再是件難事,關(guān)鍵是不要麻痹大意。主要測試工作: (1)至少在標準配置和最低配置兩種環(huán)境下測試;(2)如果有安裝界面,應(yīng)當嘗試各種選項,如選擇“全部”、“部分”、“升級”等。 單元測試 單元測試的內(nèi)容主要是: 算法邏輯、數(shù)據(jù)定義的理解和使用、接口、各種CASE路徑、邊界條件、錯誤處理等。 單元測試的目的通常是: 在開發(fā)環(huán)境中,程序設(shè)計工程師為了檢查單元程序模塊內(nèi)部的邏輯、算法和數(shù)據(jù)處
34、理結(jié)果的正確性等。單元測試通常由負責編碼的工程師自己在代碼完成后測試,也有在項目組內(nèi),由工程師相互交叉測試。 調(diào)試與測試的最大的不同點是二者的目的和視角的區(qū)別: 調(diào)試包括查找BUG、定位BUG、修改并最終確認BUG已經(jīng)被修復(fù)的軟件故障排除過程。 測試是在一個相對獨立的環(huán)境下(測試應(yīng)盡可能地模擬運行環(huán)境,調(diào)試是在開發(fā)環(huán)境),運行系統(tǒng)單元,觀察和記錄運行結(jié)果,對結(jié)果進行獨立評價的過程。 單元測試(模塊測試) 實際上,在單元測試級,一般項目組很難做到把調(diào)試與測試分開。因為二者的工作內(nèi)容比較接近,擔負人常常是一個人,環(huán)境區(qū)別并不大或者重新搭建環(huán)境在時間、成本和人力上,都比較困難。這些都是一般項目組并沒
35、有獨立的單元測試的原因。 將單元測試與模塊調(diào)試合并可能帶來的問題是:(1)單元測試沒有任何記錄和文檔。少有筆頭勤快的工程師,會把他每天測了什么、改了什么,記錄下來。軟件工程師要的就是沒有BUG的程序,任何中間結(jié)果都是垃圾。(2)由于調(diào)試的目標是獲得沒有故障的程序,因此,與功能無關(guān)的程序?qū)傩酝缓雎?,或者要到集成測試、確認測試時才被發(fā)現(xiàn)。例如:命名標準、程序形式規(guī)范等。 不論怎么說,現(xiàn)實情況,單元測試與模塊調(diào)試經(jīng)常是混為一談的,要想改變,也不太容易。 由于單元測試在項目組中,常常由編碼工程師完成,項目經(jīng)理的管理一般并不深入到單元測試層。 集成測試(子系統(tǒng)測試)集成測試又稱組裝測試,它是在單元測
36、試完成后,組裝為一個子系統(tǒng)后,對下列只有組裝后才能發(fā)生和測試到的問題,進行檢查:(1)組裝后一個模塊對一個模塊的影響;(2)合并功能是否是預(yù)期的;(3)獨立的誤差在合并后的變化,是擴大還是減小,是否在可接受的范圍內(nèi);(4)實際的接口測試;包括:模塊之間對實際銜接的標準、時序(實時性)、應(yīng)答響應(yīng)、容錯與錯誤處理等;(5)模塊間的資源競爭等。 集成測試也很重視集成的階段性。最壞的情況是系統(tǒng)只有一次集成,就是系統(tǒng)全部模塊完成后進行集成。實際上,這就像一部汽車,直到要出廠時,才來一次總測試。而當你每天生產(chǎn)一部完全不同規(guī)格、型號的汽車時,這個時候的測試,可能是非常要命的。 比較好的辦法是通常采用的增量組
37、裝法,包括自頂向下或自低向上的增量組裝。分階段的增量組裝測試,可以解決一次集成,問題的隔離和區(qū)分不易的困難。 確認測試(系統(tǒng)測試) 確認測試的目的是按照與用戶確認的軟件需求規(guī)格說明書的要求,檢查系統(tǒng)的需求實現(xiàn)。確認需求的測試依據(jù)是需求階段產(chǎn)生的測試腳本(測試用例)。 國內(nèi)項目組的現(xiàn)實情況有以下幾種:(1)沒有確認測試;(2)沒有獨立的確認測試,測試與設(shè)計、編碼不分離;(3)有獨立的確認測試,但測試用例是設(shè)計和編碼人員寫的,因此,獨立測試人員相當于按設(shè)計和編碼人員的設(shè)計思路再測一遍。 上述這些情況,就喪失了確認測試的大部分意義。正確的確認測試是獨立的測試組中,具有相應(yīng)知識的測試設(shè)計師,根據(jù)需求規(guī)
38、格說明書,并依據(jù)該軟件在用戶方面將會是在什么環(huán)境下,用戶將如何使用該軟件,來設(shè)計測試方案和測試用例,安排測試人員進行測試。很顯然,現(xiàn)實離理想的距離還比較遙遠。 確認測試還包括軟件經(jīng)修改后的再測試(回歸測試)?;貧w測試是對已測試并發(fā)現(xiàn)故障的部分,修改后進行再測試?;貧w測試不應(yīng)修改測試程序、測試內(nèi)容或測試標準。它與正常測試不同的僅是:它可能并不需要再完整地走一遍所有的確認測試,而是小心地選擇部分確認測試程序,選擇的標準是不減低原標準的整體要求。 測試和測試 為了實際檢驗軟件的功能和性能,有時,常邀請?zhí)囟ǖ挠脩魩椭囉茫y試)系統(tǒng)正式發(fā)布前的版本,請用戶對系統(tǒng)進行評價。這就是通常所說的測試和測試。測
39、試是由一個用戶在開發(fā)者的場所,在開發(fā)者指導(dǎo)下進行的測試。開發(fā)者記錄下問題和錯誤,是在開發(fā)者“控制”下的測試。測試是用戶的環(huán)境中,開發(fā)者可能并不在現(xiàn)場,由用戶“活用”系統(tǒng)情況下的測試。用戶記錄下問題,報告給開發(fā)者。在商用套裝軟件中,這種情況比較多見,在行業(yè)應(yīng)用系統(tǒng)中,由于現(xiàn)實環(huán)境并不允許不成功的軟件直接投入使用,用戶也沒有參與測試義務(wù)、時間和資源的投入和配合的積極性,因此,這種測試很少發(fā)生。 驗收測試在行業(yè)應(yīng)用軟件環(huán)境中,驗收測試是項目過程非常重要的一環(huán),也是項目經(jīng)理非常關(guān)注的一項工作。驗收測試與確認測試非常相似,所不同的是,確認測試是項目組或組織內(nèi)部的測試,驗收測試是用戶主導(dǎo)、現(xiàn)場參與、現(xiàn)場環(huán)
40、境下的測試。驗收測試通常由項目組先提出測試大綱,定義測試目的、范圍、方法、測試用例、預(yù)期結(jié)果、驗收標準等。經(jīng)用戶同意批準,可能包括用戶的修改、增加后,確定測試時間,開始進入驗收測試。用戶在完成按測試用例的測試后,在測試記錄上逐條確認、簽字,最后,在測試報告上簽字,完成驗收測試。一般地、驗收測試報告是項目初驗、終驗的依據(jù)和主要驗收形式。 單元測試與驗收測試 單元測試和驗收測試沒有什么區(qū)別?單元測試可以類比為一個建筑的質(zhì)檢人員對建筑進行的檢測, 他關(guān)注的重點是建筑的內(nèi)部結(jié)構(gòu)、地基、框架以及墻壁是否垂直等。他的檢測是要保證建筑的各個部分是正常的、安全的,換句話說,就是要保證施工滿足建筑上面的質(zhì)量標準
41、。驗收測試可以類比為建筑的使用者來對建筑進行的檢測。他關(guān)心建筑的外觀是否美觀、各個房間的大小是否合適,窗戶的位置是否合適,是否能夠滿足家庭的需要等。這里,建筑的使用者執(zhí)行的就是驗收測試,他是從用戶的角度出發(fā)的。正是這種角度的不同決定了單元測試和驗收測試之間的區(qū)別。它們是對系統(tǒng)的不同的方面進行的測試,二者是互相補充的。不管我們在系統(tǒng)的構(gòu)建中使用了多么聰明的方法,不管我們的系統(tǒng)是多么的靈活,但是首先我們的產(chǎn)品必須是可用的,否則我們所做的就是浪費時間,從這一點上來說驗收測試要比單元測試顯得更加重要。 測試方法測試所處的階段不同,方法也不同:白盒測試在單元測試階段,由于測試者對被測對象的內(nèi)部結(jié)構(gòu)、邏輯
42、思路、接口關(guān)系等比較熟悉,一般采取白盒測試的方法,它是根據(jù)模塊的內(nèi)部邏輯,進行測試設(shè)計的方法。有些集成測試也采用白盒方法,關(guān)鍵看集成階段的劃分。黑盒測試在集成測試以至此后的各階段,測試設(shè)計和測試人員,對被測對象的內(nèi)部結(jié)構(gòu)不了解也不需要了解,他的目的是按需求功能進行確認。因此,黑盒測試是嚴格按軟件需求進行測試設(shè)計的方法。代碼走查 測試類型在不同階段,測試的類型也不相同,常有的測試類型是:(1)功能測試:軟件實現(xiàn)的功能是否符合需求規(guī)格說明書中定義的功能;(2)性能測試:軟件在規(guī)定配置下的性能是否符合需求規(guī)定;(3)算法測試:確認實現(xiàn)的算法的正確性;(4)正向測試:按照用戶正常的理解、操作方式、思維
43、和使用習(xí)慣使用軟件,得到的結(jié)果是否與需求一致。(5)逆向測試:如果不按用戶正常的理解、操作發(fā)生、思維和使用習(xí)慣使用軟件,軟件是否能正確地進行處理。如:無效操作、錯誤的數(shù)據(jù)輸入處理、非法進入等。(6)邊界測試:按軟件的限制、假設(shè)條件的邊界輸入,進行測試。(7)配置測試:對軟件環(huán)境進行配置變化,軟件需求實現(xiàn),特別是性能實現(xiàn)是否能符合需求規(guī)定要求。(8)負載測試:在業(yè)務(wù)處理量、數(shù)據(jù)負載量、通訊負載量達到何種情況,系統(tǒng)的性能變化和承載能力情況。測試計劃測試估計在擬定測試計劃時,首先需要對以下情況,做出估計:(1) 完成測試設(shè)計所需要的工作量:(2) 完成測試設(shè)計所需要的工作時間:(3) 完成測試所需要
44、的時間:根據(jù)以上三個部分的結(jié)果,我們已經(jīng)知道了測試的范圍、內(nèi)容、任務(wù)分配、時間等,這樣,項目經(jīng)理可以能比較充分地規(guī)劃資源,制訂出一份比較全面和切實的測試工作計劃。測試分配測試計劃確定了測試的范圍、內(nèi)容和估計時間,根據(jù)WBS方法,測試計劃還應(yīng)說明具體測試任務(wù)的分解和測試工作的分配。測試組的成員根據(jù)分工,各自完成一部分測試任務(wù)。測試組與項目開發(fā)組還需要保持一定的同步,使測試與開發(fā)、修改在協(xié)調(diào)的步驟下進行,以節(jié)約寶貴的項目總時間。測試確認測試用例名稱工號權(quán)限被測子系統(tǒng)名卡/號資源管理測試用例來源 公司測試組 內(nèi)部測試抽查參考文檔序號測試用例描述XWYY001測試目的能否正確識別合法的操作員進入應(yīng)用系
45、統(tǒng)測試步驟1.啟動“卡/號資源管理”應(yīng)用程序。2. 輸入系統(tǒng)中不存在的工號1000,再輸入密碼12345,檢查能否進入系統(tǒng)。3.輸入系統(tǒng)中存在的工號nj001和正確的密碼,檢查能否進入系統(tǒng)。4. 輸入系統(tǒng)中存在的工號yd002和正確的密碼,檢查能否進入系統(tǒng)。輸入數(shù)據(jù)描述1、工號1000根本不是系統(tǒng)合法的工號。2、工號nj001是前臺營業(yè)受理的工號,不能進行卡號資源管理系統(tǒng)。3、工號yd002是卡號資源管理系統(tǒng)的工號。期望的結(jié)果1. 工號1000無論如何進入不了系統(tǒng),系統(tǒng)提示無此員工2. 工號nj001也不能進入系統(tǒng),系統(tǒng)提示該操作員無權(quán)執(zhí)行卡號資源管理系統(tǒng)3工號yd002可以進入系統(tǒng),并能打開
46、所有的功能菜單測試結(jié)果描述相符測試人員測試日期2003-03-08復(fù)測人員復(fù)測日期備注測試用例: 測試用例由誰設(shè)計? 設(shè)計測試用例的依據(jù)是什么? 測試設(shè)計的重點是什么? 測試報告: 收集齊上述的所有測試用例,構(gòu)成了測試報告的基本要件。 測試報告是對所有測試用例測試過程的總結(jié)。 在測試報告中,應(yīng)反映: (1)測試中出現(xiàn)問題的統(tǒng)計匯總和分析; (2)未解決問題的匯總和解決方案建議; (3)回歸測試的統(tǒng)計和分析(度量) ; (4)對測試計劃的總結(jié)或修改。以一個獨立的測試小組為例,測試過程一般如下:(1)測試準備:制定人員、環(huán)境、工具、培訓(xùn)和外部支持計劃。(2)測試計劃:確定測試策略、建立測試計劃。(
47、3)測試用例:建立測試順序樹、確定測試的優(yōu)先級、詳細 列出測試程序和測試數(shù)據(jù),設(shè)計測試用例。(4)測試環(huán)境:了解需求、搭建環(huán)境、安裝備份和恢復(fù)程序, 記錄初始環(huán)境、測試環(huán)境、恢復(fù)環(huán)境等。(5)測試執(zhí)行:從測試計劃復(fù)審測試計劃進度表、恢復(fù)測試執(zhí) 行環(huán)境。(6)結(jié)果分析:執(zhí)行結(jié)果分析、度量。(7)測試報告:錯誤趨勢圖、測試變動指示、產(chǎn)品檢查點建議。測試過程組織PART I :軟件質(zhì)量保證的基本方法一、評審 A: 軟件窮舉測試不現(xiàn)實。 B:結(jié)構(gòu)化走查和審查是比單純測試更有效的缺陷排除手段。 C:評審能早期清除缺陷,很大程度上減低了成本。二、測試 作為評審的有力補充來保證軟件的質(zhì)量。 軟件缺陷分布評審
48、是軟件質(zhì)量管理的最重要手段如果一個軟件未經(jīng)評審或評審不充分是否實施評審項目其開發(fā)成本比較 PART II:軟件測試組織配置(人員)其它公司的軟件測試組織配置(人員)上海愛立信通訊軟件研發(fā)中心 開發(fā)人員:測試人員=4:1 測試工作:確認測試、系統(tǒng)測試杭州東方通信 開發(fā)人員:測試人員=4:1(不包括兼職測試人員) 測試工作:確認測試廣東電信科學(xué)技術(shù)研究院 開發(fā)人員:測試人員=5:1 測試工作:確認測試南京欣網(wǎng)視訊科技股份有限公司 開發(fā)人員:測試人員=?:?我們公司的定位 我們的軟件質(zhì)量 軟件測試組織配置(成本)軟件類型開發(fā)成本按階段百分比分布需求與設(shè)計實現(xiàn)測試控制軟件462034航空航天軟件342
49、046操作系統(tǒng)331750科技計算軟件442630商業(yè)應(yīng)用軟件442828PART III:測試管理在工程化的軟件研制過程中,軟件測試活動作為質(zhì)量管理的一部分,貫穿了整個軟件項目的生存周期;要求建立獨立的軟件測試組織,實現(xiàn)第三方測試,并始終與設(shè)計/實現(xiàn)/維護組織并行工作;軟件測試涉及的人/物/時間甚至可能超過軟件項目總消耗的一半以上。因此,軟件測試本身就是軟件工程中值得專門計劃和管理的一項子工程。軟件工程體系 測試組織與開發(fā)組織的界面 I軟件測試組織與軟件開發(fā)組織的界面指:軟件開發(fā)組織完成編碼、調(diào)試、集成后通過軟件配置管理組織移交給軟件測試組織的軟件成分的層次,簡稱“軟件測試界面”。對低于軟件
50、測試界面的軟件成分進行的排錯的過程一般被稱為“軟件調(diào)試”;而對高于軟件測試界面的軟件成分進行的找錯的過程被稱為“軟件測試”,應(yīng)軟件測試而進行開發(fā)修改的過程被稱為“軟件更動”。 測試組織與開發(fā)組織的界面 II一旦軟件成分被提交到配置管理庫中,則對其的修改就必須遵循軟件更動控制規(guī)范,將涉及不少人員,媒體轉(zhuǎn)移較頻繁,軟件修改周期也較長。為了減少整個軟件測試過程(發(fā)現(xiàn)問題改動軟件)的人力/物力/時間的消耗,測試組織與開發(fā)組織應(yīng)達成共識:盡可能提高軟件測試界面。定義較高的軟件測試界面的益處還在于:有利于開發(fā)組織更加主動關(guān)注其軟件開發(fā)過程的質(zhì)量控制;同時,還有利于測試組織集中時間和資源來執(zhí)行軟件高層測試(
51、功能/性能的確認)。測試組織與開發(fā)組織的界面 III由于軟件更動控制與軟件回歸測試的內(nèi)在聯(lián)系緊密,因此測試組織應(yīng)參與制訂軟件更動控制規(guī)范,以使該規(guī)范能在適用于系統(tǒng)的前提下更節(jié)省軟件研制的總消耗。軟件測試結(jié)果通過軟件配置管理組織返回給軟件開發(fā)組織;測試結(jié)果是軟件質(zhì)量控制的數(shù)據(jù)來源之一。規(guī)范的軟件項目文檔進行一個軟件第三方測試應(yīng)具備的條件應(yīng)確保得到以下資源:需求說明書;(強調(diào)需求的可測試性、穩(wěn)定性)設(shè)計說明書;(如果需求說明書足夠清楚則可以不用)項目開發(fā)者所進行的測試報告;運行環(huán)境及配置說明;遵循的相關(guān)標準; (測試評估的標準也在里面體現(xiàn))可能需要相關(guān)的工具;預(yù)算、人員、時間要求等。不滿足這些條件
52、進行測試是沒有意義的。一個測試結(jié)束后應(yīng)形成相關(guān)的文檔測試計劃;測試用例;測試報告;沒有形成相關(guān)文檔的測試過程是不完整的。軟件測試的層次結(jié)構(gòu)類型方法階段舉例:功能算法正向反向可用性邊界驗收測試確認測試集成測試單元測試白盒黑盒自頂向下自底向上模擬用戶操作需求分析概要設(shè)計詳細設(shè)計編碼模塊測試集成測試確認測試系統(tǒng)測試決定軟件與系統(tǒng)的配合關(guān)系測試與開發(fā)前期工作的關(guān)系(I)需求分析設(shè)計編碼確認組裝單元修正修正修正通過通過通過1. 測試步驟 (集成)測試與開發(fā)前期工作的關(guān)系(II)測試活動測試階段的信息流測試階段與方法測試階段目的執(zhí)行者測試方法單元測試查找獨立模塊中邏輯錯誤、數(shù)據(jù)錯誤和算法錯誤開發(fā)人員白盒測
53、試集成測試查找模塊之間接口錯誤開發(fā)人員白盒測試、自頂向下或自底向上確認測試確認軟件是否滿足軟件需求測試人員黑盒測試模擬用戶操作系統(tǒng)測試對系統(tǒng)中各個組成部分進行綜合性檢驗測試人員黑盒測試模擬用戶操作回歸測試確認軟件變更后是否仍滿足軟件需求測試人員黑盒測試模擬用戶操作 測試用戶黑盒測試模擬用戶操作驗收測試確認軟件是否滿足用戶需求用戶測試人員黑盒測試模擬用戶操作測試的經(jīng)濟學(xué)-重要的是何時停止測試缺陷數(shù)量測試費用過量現(xiàn)代軟件工程 軟件測試的定義 軟件測試基礎(chǔ) 軟件測試用例設(shè)計 軟件測試策略第七部分 軟件測試 軟件測試的定義 軟件測試基礎(chǔ) 軟件測試用例設(shè)計 軟件測試策略軟件測試是在軟件投入運行前,對軟件
54、需求分析,設(shè)計規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。如果下定義:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程?;蛘哒f軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例,并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤的過程。軟件測試的定義軟件測試的基礎(chǔ)軟件測試的目的軟件測試的原則測試與軟件開發(fā)各階段的關(guān)系軟件測試的目的基于不同的立場,存在著兩種完全不同的測試目的。從用戶的角度出發(fā),普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,以考慮是否可接受該產(chǎn)品。從軟件開發(fā)者的角度出發(fā),則希望測試成為表明軟件產(chǎn)品中不存在錯誤的過程,驗證該軟件已正確地實現(xiàn)了用戶的要求,確立人們
55、對軟件質(zhì)量的信心。Myers軟件測試目的(1) 測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;(2) 一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;(3) 一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。換言之,測試的目的是系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷。 能夠證明軟件的功能和性能與需求說明相符合。測試不能表明軟件中不存在錯誤,它只能說明軟件中存在錯誤。軟件測試的原則1. 應(yīng)當把“盡早地和不斷地進行軟件測試”作為軟件開發(fā)者的座右銘。2. 測試用例應(yīng)由測試輸入數(shù)據(jù)和對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。3. 程序員應(yīng)避免檢查自己的程序。4. 在設(shè)計測試用例時,應(yīng)當包括合理的輸入條件和不合理的輸入條件。5.
56、 充分注意測試中的群集現(xiàn)象。經(jīng)驗表明,測試后程序中殘存的錯誤數(shù)目與該程序中已發(fā)現(xiàn)的錯誤數(shù)目成正比。6. 嚴格執(zhí)行測試計劃,排除測試的隨意性。7. 應(yīng)當對每一個測試結(jié)果做全面檢查。8. 妥善保存測試計劃,測試用例,出錯統(tǒng)計和最終分析報告,為維護提供方便。測試與軟件開發(fā)各階段的關(guān)系軟件開發(fā)過程是一個自頂向下,逐步細化的過程軟件計劃階段定義軟件作用域軟件需求分析建立軟件信息域、功能和性能需求、約束等軟件設(shè)計把設(shè)計用某種程序設(shè)計語言轉(zhuǎn)換成程序代碼測試過程是依相反順序安排的自底向上,逐步集成的過程。軟件測試用例設(shè)計兩種常用的測試方法 黑盒測試 白盒測試黑盒測試這種方法是把測試對象看做一個黑盒子,測試人員
57、完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。黑盒測試又叫做功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試方法是在程序接口上進行測試,主要是為了發(fā)現(xiàn)以下錯誤: 是否有不正確或遺漏了的功能? 在接口上,輸入能否正確地接受? 能否輸出正確的結(jié)果? 是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤? 性能上是否能夠滿足要求? 是否有初始化或終止性錯誤?用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的輸出。但這是不可能的。假設(shè)一個程序P有輸入量X和Y及輸出量Z。在字長為32位的計算機上運行。若X、
58、Y取整數(shù),按黑盒方法進行窮舉測試:可能采用的 測試數(shù)據(jù)組: 232232 264 如果測試一 組數(shù)據(jù)需要1毫秒,一年工作365 24小時,完成所有測試需5億年。白盒測試此方法把測試對象看做一個透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。軟件人員使用白盒測試方法,主要想對程序模塊進行如下的檢查: 對程序模塊的所有獨立的執(zhí)行路徑至少測試一次; 對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次; 在循環(huán)的邊界和運行界限內(nèi)
59、執(zhí)行循環(huán)體; 測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等。對一個具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。給出一個小程序的流程圖,它包括了一個執(zhí)行20次的循環(huán)。包含的不同執(zhí)行路徑數(shù)達520條,對每一條路徑進行測試需要1毫秒,假定一年工作365 24小時,要想把所有路徑測試完,需3170年。邏輯覆蓋 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋。邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。它屬白盒測試。白盒測試的測試用例設(shè)計舉例:所有路徑為:L1(a-c-e) ,L2(a-b-d), L3(a-b-e), L4(a-c-d)依據(jù)以上推導(dǎo)出來的結(jié)果就可以設(shè)計
60、滿足要求的測試用例。測試用例的設(shè)計格式如下【輸入的(A, B, X),輸出的(A, B, X)】為圖例設(shè)計滿足語句覆蓋的測試用例是:【(2, 0, 4),(2, 0, 3)】 覆蓋 ace【L1】語句覆蓋語句覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。在圖例中,正好所有的可執(zhí)行語句都在路徑L1上,所以選擇路徑 L1設(shè)計測試用例,就可以覆蓋所有的可執(zhí)行語句。 判定覆蓋判定覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。對于圖例,如果選擇路徑L1和L2,就可得滿足要求的測試用例:【(2, 0, 4)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境風(fēng)險管理在建筑設(shè)計中的體現(xiàn)
- 物流配送網(wǎng)絡(luò)優(yōu)化策略在電子商務(wù)中的應(yīng)用
- 校園內(nèi)科學(xué)教育課程的深度探索
- 校園金融知識普及新生的理財觀念培養(yǎng)
- 游戲化營銷電子游戲在商業(yè)推廣中的應(yīng)用
- 員工滿意度方案
- 構(gòu)建多元科普模式促進科學(xué)素質(zhì)提高研究
- 2024-2025學(xué)年高中生物 第6章 生態(tài)環(huán)境的保護 第1節(jié) 人口增長對生態(tài)環(huán)境的影響說課稿 新人教版必修3
- 2023八年級數(shù)學(xué)上冊 第15章 軸對稱圖形與等腰三角形15.1 軸對稱圖形第1課時 軸對稱圖形說課稿 (新版)滬科版
- Unit5 Colours(說課稿)-2024-2025學(xué)年人教新起點版英語一年級上冊
- 蘇州2025年江蘇蘇州太倉市高新區(qū)(科教新城婁東街道陸渡街道)招聘司法協(xié)理員(編外用工)10人筆試歷年參考題庫附帶答案詳解
- 搞笑小品劇本《大城小事》臺詞完整版
- 物業(yè)服務(wù)和后勤運輸保障服務(wù)總體服務(wù)方案
- 《大模型原理與技術(shù)》全套教學(xué)課件
- 鐵嶺衛(wèi)生職業(yè)學(xué)院單招參考試題庫(含答案)
- 三位數(shù)減三位數(shù)的減法計算題 200道
- 米粉項目可行性研究報告
- 蛇年元宵節(jié)燈謎大全(附答案)
- 第2章第1節(jié)有機化學(xué)反應(yīng)類型課件高二下學(xué)期化學(xué)魯科版選擇性必修3
- 生物質(zhì)能利用原理與技術(shù) - 第二章生物質(zhì)能資源與植物
- 栽植土檢驗批質(zhì)量驗收記錄
評論
0/150
提交評論