在軟件的生命周期內(nèi)所實(shí)施的對軟件本身的評審。
評審本身根據(jù)不同的評審階段,分為需求評審,功能評審,質(zhì)量評審,成本評審,維護(hù)評審等。一般來說,評審(Peer Review)包括下面幾種檢視(Inspection)團(tuán)隊評審(Team Review/Technical Review)走讀(WalkThrough)成對編程(Pair Programming)同行檢查(Peer DeskCheck)特別檢查(Ad hoc Review)評審方法間的區(qū)別(1)評審方法間的區(qū)別(2)。
軟件測試的方法根據(jù)軟件工程的組織和實(shí)現(xiàn)方式,有很大差別,有些是比較技術(shù)化的方法,有些則是工程方法,主要分為:
黑盒測試方法群:等價類劃分、邊界值、因果圖、基路徑法、專家測試法、smoking、場景測試等
白盒測試方法群:同行評審、需求審查、代碼審查、接口測試(調(diào)用測試和返回測試,需要結(jié)合等價類和因果圖方法)等。
當(dāng)在單元層面黑盒而在集成層面白盒時,基本上兩類方法就會有結(jié)合了,就會出現(xiàn)習(xí)慣上說的灰盒測試(說實(shí)話,不做到純產(chǎn)品級開發(fā),基本上都是用的灰盒測試)。
2 需求評審的關(guān)鍵 下文根據(jù)筆者多年參與軟件項目管理的切身體會及經(jīng)驗(yàn),從不同角度對需求評審方法進(jìn)行論述。
2·1 充分準(zhǔn)備評審 好的軟件需求說明書,是進(jìn)行有效需求評審的前提。首先,需求人員在與用戶確認(rèn)需求的過程中,一定不要放過任何一個細(xì)節(jié),仔細(xì)體會用戶的每一個要求。
對于用戶的要求,需求人員需要對其加以梳理:哪些是合理的需求,哪些是不合理的需求,還有一些可能是必要的但是用戶沒想到的需求。軟件需求說明書不應(yīng)該只是用戶意愿的表達(dá),而應(yīng)該是從軟件層面上對用戶需求的總結(jié)。
軟件需求說明書對需求用例的描述一般分為基本流和擴(kuò)展流,基本流是大家很容易想到的主要業(yè)務(wù)流程,而實(shí)際設(shè)計開發(fā)及測試過程中,最耗費(fèi)時間的是實(shí)現(xiàn)擴(kuò)展流的過程。因此不能只注重基本流,好的軟件需求說明書,擴(kuò)展流一定遠(yuǎn)遠(yuǎn)多于基本流,擴(kuò)展流寫得越完善,說明需求人員考慮得越周全。
而實(shí)質(zhì)上,如果擴(kuò)展流寫得不完善,后期的設(shè)計、開發(fā)及測試人員往往在相應(yīng)的細(xì)節(jié)處理上無所適從。2·2分層次評審 用戶的需求是可以分層次的,一般而言分成以下層次:①目標(biāo)性需求,定義整個系統(tǒng)需要達(dá)到的目標(biāo);②功能性需求,定義了整個系統(tǒng)必須完成的任務(wù);③操作性需求,定義了完成每個任務(wù)的具體的人機(jī)交互;目標(biāo)性需求是企業(yè)的高層管理人員所關(guān)注的,功能性需求是企業(yè)的中層管理人員所關(guān)注的,操作性需求是企業(yè)的具體操作人員所關(guān)注的。
對不同層次的需求,其描述形式是有區(qū)別的,參與評審的人員也是不同的。如果讓具體的操作人員去評審目標(biāo)性需求,可能會很容易地導(dǎo)致“撿了芝麻,丟了西瓜”的現(xiàn)象,如果讓高層的管理人員也去評審那些操作性需求,無疑是一種資源的浪費(fèi)。
分層次評審,可以讓不同類型的參與人分別評審他們關(guān)注的內(nèi)容,從不同的角度找到需求的異常,提高評審效率。
1.什么是同行評審
同行評審是一種通過作者的同行(開發(fā)、測試、QA等)來確認(rèn)缺陷和需要變更區(qū)域的檢查方法。
一、計劃階段
1.項目負(fù)責(zé)人指定組織者;作者自檢工作產(chǎn)品;組織者規(guī)劃本次評審,制定Review Plan
2.檢查入口準(zhǔn)則:是否符合文檔標(biāo)準(zhǔn)?是否已用工具檢查?代碼3.準(zhǔn)備評審包:評審?fù)ㄖ獑危淮齊eview產(chǎn)品;參考資料;評審表單(Review Form);評審計劃(Review Plan);
4.確定評審專家3—6人,選取原則: 評審對象所處生命周期上一階段、當(dāng)前階段和后一階段的參與者(就是和評審對象相關(guān)的人)
5.組織者將評審包、評審?fù)ㄖ獑伟l(fā)給相關(guān)人員
二、介紹會議(*可選)
1.不了解流程以及產(chǎn)品技術(shù)難度較高,技術(shù)較新時,由專家提出,作者講解相關(guān)產(chǎn)品及流程
2.時間不超過1小時,30-60分為宜
三、準(zhǔn)備階段(最重要、發(fā)現(xiàn)缺陷最多)
1.評審專家個人獨(dú)立完成工作產(chǎn)品的審視,提出缺陷,填寫評審表單;反饋評審表單給組織者
2.準(zhǔn)備時間大于會議時間,且應(yīng)于會議前2天開始
3.組織者:匯總并檢查評審表單;裁決是否需要增加評審?fù)度耄ㄔ黾訙?zhǔn)備時間;增加評審專家人數(shù);更換評審專家等)
四、Review會議(只提問題,不關(guān)注解決)
1.組織者召開評審會議(不能是作者)
2.講解員講解工作產(chǎn)品(不能是作者或組織者)
3.大家共同確認(rèn)問題(評審表單中記錄的問題;會上發(fā)現(xiàn)的問題),由組織者作裁決
4記錄員記錄所有的問題,并發(fā)給組織者
5.組織者更新評審表單(問題確認(rèn)、問題根源、預(yù)防/修正措施)
五、第三小時會議(*可選)
在Review會議上未解決或有爭議的問題,由作者決定是否召開
六、返工
作者修改工作產(chǎn)品,更新評審表單
七、跟蹤
1.組織評審專家確認(rèn)各缺陷得到了修改,并且沒有引入新的缺陷;
2.協(xié)助組織者確認(rèn)相關(guān)問題得到了正確修改并且沒有引入新的缺陷;
3. 匯總所有需要的數(shù)據(jù)到評審表單發(fā)給相關(guān)評審專家
4.是否重新Re-review
⑴發(fā)現(xiàn)功能、邏輯或?qū)崿F(xiàn)的錯誤
⑵證實(shí)經(jīng)過評審的軟件的確滿足需求
⑶保證軟件的表示符合預(yù)定義的標(biāo)準(zhǔn)
⑷得到一種一致的方式開發(fā)的軟件
⑸使項目更易管理 3-5人參加,不超過2小時,由評審主席、評審者和生產(chǎn)者參加,必須做出下列決定中的一個 :
⑴工作產(chǎn)品可不可以不經(jīng)修改而被接受;
⑵由于嚴(yán)重錯誤而否決工作產(chǎn)品;
⑶暫時接受工作產(chǎn)品。 評審什么?由誰評審?結(jié)論是什么?
評審總結(jié)報告是項目歷史記錄的一部分,標(biāo)識產(chǎn)品中存在問題的區(qū)域,作為行政條目檢查表以指導(dǎo)生產(chǎn)者進(jìn)行改正。 ⑴評審產(chǎn)品,而不是評審生產(chǎn)者。注意客氣地指出錯誤,氣氛輕松。
⑵不要離題,限制爭論。有異議的問題不要爭論但要記錄在案。
⑶對各個問題都發(fā)表見解。問題解決應(yīng)該放到評審會議之后進(jìn)行。
⑷為每個要評審的工作產(chǎn)品建立一個檢查表。應(yīng)為分析、設(shè)計、編碼、測試文檔都建立檢查表。
⑸分配資源和時間。應(yīng)該將評審作為軟件工程任務(wù)加以調(diào)度。
⑹評審以前所做的評審
技術(shù)評審(Technical Review,TR)的目的是盡早地發(fā)現(xiàn)工作成果中的缺陷,并幫助開發(fā)人員及時消除
缺陷,從而有效地提高產(chǎn)品的質(zhì)量。包括有正式技術(shù)評審和非正式技術(shù)評審。
正式技術(shù)評審的原則:
作者答復(fù)評審員的問題,
并與評審員共同查找缺陷、商討缺陷解決方案。評審結(jié)束后,作者應(yīng)當(dāng)及時消除工作成果中的缺陷。
1.要有嚴(yán)格的評審計劃,并遵守日程安排。
2.
評審小組
☆ 評審主持人應(yīng)當(dāng)具備比較高的技術(shù)水平和比較豐富的評審經(jīng)驗(yàn),能夠控制評審會議的進(jìn)程。評審主持人可以是項目內(nèi)的技術(shù)骨干,也可以是項目外的技術(shù)專家。評審主持人本身是一名評審員,評審結(jié)論必須有評審主持人的簽字才能生效。
☆評審員主要來源于項目內(nèi)和項目外的技術(shù)人員,必要時還應(yīng)當(dāng)要求客戶和質(zhì)量保證人員擔(dān)任評審員。
工作成果的作者不能擔(dān)任評審員。
評審員的人選以及分工都由評審主持人來確定。
評審員應(yīng)當(dāng)根據(jù)“檢查表”認(rèn)真地查找工作成果中的缺陷,并和作者共同商討缺陷解決方案。
☆評審小組的總?cè)藬?shù)一般在3~7人之間。
記錄員:由評審主持人指定一位評審員來擔(dān)任記錄員。記錄員如實(shí)地將評審過程記錄在指定的文檔中。
1、按是否查看程序內(nèi)部結(jié)構(gòu)分為:
(1)黑盒測試(black-box testing):只關(guān)心輸入和輸出的結(jié)果
(2)白盒測試(white-box testing):去研究里面的源代碼和程序結(jié)構(gòu)
2、按是否運(yùn)行程序分為:
(1)靜態(tài)測試(static testing):是指不實(shí)際運(yùn)行被測軟件,而只是靜態(tài)地檢查程序代碼、界面或文檔可能存在的錯誤的過程。
靜態(tài)測試包括:
對于代碼測試,主要是測試代碼是否符合相應(yīng)的標(biāo)準(zhǔn)和規(guī)范。
對于界面測試,主要測試軟件的實(shí)際界面與需求中的說明是否相符。
對于文檔測試,主要測試用戶手冊和需求說明是否真正符合用戶的實(shí)際需求。
(5)動態(tài)測試(dynamic testing),是指實(shí)際運(yùn)行被測程序,輸入相應(yīng)的測試數(shù)據(jù),檢查輸出結(jié)果和預(yù)期結(jié)果是否相符的過程
3、按階段劃分:
(1)單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證。
樁模塊(stud)是指模擬被測模塊所調(diào)用的模塊,驅(qū)動模塊(driver)是指模擬被測模塊的上級模塊,驅(qū)動模塊用來接收測試數(shù)據(jù),啟動被測模塊并輸出結(jié)果。
(2)集成測試(integration testing),是單元測試的下一階段,是指將通過測試的單元模塊組裝成系統(tǒng)或子系統(tǒng),再進(jìn)行測試,重點(diǎn)測試不同模塊的接口部門。
集成測試就是用來檢查各個單元模塊結(jié)合到一起能否協(xié)同配合,正常運(yùn)行。
(3)系統(tǒng)測試(system testing),指的是將整個軟件系統(tǒng)看做一個整體進(jìn)行測試,包括對功能、性能,以及軟件所運(yùn)行的軟硬件環(huán)境進(jìn)行測試。
系統(tǒng)測試的主要依據(jù)是《系統(tǒng)需求規(guī)格說明書》文檔。
(4)驗(yàn)收測試(acceptance testing),指的是在系統(tǒng)測試的后期,以用戶測試為主,或有測試人員等質(zhì)量保障人員共同參與的測試,它也是軟件正式交給用戶使用的最后一道工序。
驗(yàn)收測試又分為a測試和beta測試,其中a測試指的是由用戶、測試人員、開發(fā)人員等共同參與的內(nèi)部測試,而beta測試指的是內(nèi)測后的公測,即完全交給最終用戶測試。
4、黑盒測試分為功能測試和性能測試:
1)功能測試(function testing),是黑盒測試的一方面,它檢查實(shí)際軟件的功能是否符合用戶的需求。
包括邏輯功能測試(logic function testing)
界面測試(UI testing)UI=User Interface
易用性測試(usability testing):是指從軟件使用的合理性和方便性等角度對軟件系統(tǒng)進(jìn)行檢查,來發(fā)現(xiàn)軟件中不方便用戶使用的地方。
兼容性測試(compatibility testing):包括硬件兼容性測試和軟件兼容性測試
2)性能測試(performance testing)
軟件的性能主要有時間性能和空間性能兩種
時間性能:主要指軟件的一個具體事務(wù)的響應(yīng)時間(respond time)。
空間性能:主要指軟件運(yùn)行時所消耗的系統(tǒng)資源。
軟件性能測試分為:
一般性能測試:指的是讓被測系統(tǒng)在正常的軟硬件環(huán)境下運(yùn)行,不向其施加任何壓力的性能測試。
穩(wěn)定性測試也叫可靠性測試(reliability testing):是指連續(xù)運(yùn)行被測系統(tǒng)檢查系統(tǒng)運(yùn)行時的穩(wěn)定程度。
負(fù)載測試(load testing):是指讓被測系統(tǒng)在其能忍受的壓力的極限范圍之內(nèi)連續(xù)運(yùn)行,來測試系統(tǒng)的穩(wěn)定性。
壓力測試(stress testing):是指持續(xù)不斷的給被測系統(tǒng)增加壓力,直到將被測系統(tǒng)壓垮為止,用來測試系統(tǒng)所能承受的最大壓力。(Validate the system or software can allowed the biggest stress.)
《全國計算機(jī)等級考試三級教程軟件測試》目錄 第1章 軟件測試的基本概念1.1 軟件質(zhì)量的概念1.1.1 軟件質(zhì)量的定義1.1.2 軟件質(zhì)量的屬性1.1.3 軟件質(zhì)量模型1.1.4 軟件質(zhì)量的度量1.1.5 影響軟件質(zhì)量的主要因素1.2 軟件測試的概念1.2.1 軟件測試的定義與目的1.2.2 軟件測試的原則1.3 軟件的缺陷與錯誤1.3.1 軟件缺陷的定義和類型1.3.2 軟件缺陷的級別1.3.3 軟件缺陷產(chǎn)生的原因1.3.4 軟件缺陷的構(gòu)成第1章 軟件測試的基本概念1.1 軟件質(zhì)量的概念1.1.1 軟件質(zhì)量的定義1.1.2 軟件質(zhì)量的屬性1.1.3 軟件質(zhì)量模型1.1.4 軟件質(zhì)量的度量1.1.5 影響軟件質(zhì)量的主要因素1.2 軟件測試的概念1.2.1 軟件測試的定義與目的1.2.2 軟件測試的原則1.3 軟件的缺陷與錯誤1.3.1 軟件缺陷的定義和類型1.3.2 軟件缺陷的級別1.3.3 軟件缺陷產(chǎn)生的原因1.3.4 軟件缺陷的構(gòu)成1.3.5 修復(fù)軟件缺陷的代價1.4 軟件測試的經(jīng)濟(jì)學(xué)與心理學(xué)1.4.1 軟件測試的心理學(xué)1.4.2 軟件測試的經(jīng)濟(jì)學(xué)1.5 軟件質(zhì)量保證1.5.1 軟件質(zhì)量保證概要1.5.2 軟件質(zhì)量保證活動的實(shí)施1.5.3 軟件的驗(yàn)證與確認(rèn)1.5.4 驗(yàn)證和確認(rèn)任務(wù)分析 本章小結(jié) 第2章 軟件生存周期中測試的實(shí)施2.1 軟件開發(fā)階段2.1.1 軟件生存周期2.1.2 軟件測試的生存周期模型2.1.3 軟件測試過程模型2.1.4 測試信息流2.2 需求獲取與分析階段的測試2.2.1 需求評審的實(shí)施2.2.2 需求規(guī)格說明的評審2.2.3 Wiegers 用例與需求評審表2.2.4 基于原型的測試2.2.5 基于需求的測試覆蓋率評估2.3 設(shè)計階段的測試2.3.1 設(shè)計的測試因素2.3.2 設(shè)計評審的實(shí)施2.3.3 設(shè)計規(guī)格說明的評審2.3.4 設(shè)計元素的覆蓋原則2.4 編程階段的測試2.4.1 白盒測試與黑盒測試2.4.2 源代碼的控制流覆蓋原則2.4.3 源代碼的數(shù)據(jù)流覆蓋原則2.4.4 源代碼的靜態(tài)分析與動態(tài)測試2.5 運(yùn)行和維護(hù)階段的測試2.6 回歸測試2.6.1 回歸測試的概念2.6.2 回歸測試的類型2.6.3 回歸測試的時機(jī)2.6.4 回歸測試的實(shí)施 本章小結(jié) 第3章 代碼檢查、走查與評審3.1 桌上檢查3.1.1 桌上檢查的實(shí)施3.1.2 桌上檢查的檢查表3.2 代碼檢查3.2.1 特定的角色和職責(zé)3.2.2 代碼檢查的實(shí)施3.2.3 用于代碼檢查的檢查表3.3 走查3.3.1 特定的角色和職責(zé)3.3.2 走查的實(shí)施3.3.3 走查中的靜態(tài)分析技術(shù)3.4 同行評審3.4.1 同行評審的角色和職責(zé)3.4.2 同行評審的內(nèi)容3.4.3 評審的方法和技術(shù)3.4.4 評審工作 本章小結(jié) 第4章 白盒測試4.1 覆蓋率的概念4.2 邏輯覆蓋4.2.1 語句覆蓋與塊覆蓋4.2.2 判定覆蓋(分支覆蓋)4.2.3 條件覆蓋4.2.4 條件/判定覆蓋4.2.5 條件組合覆蓋4.2.6 路徑覆蓋4.2.7 ESTCA覆蓋4.2.8 LCSAJ覆蓋4.3 路徑測試4.3.1 分支結(jié)構(gòu)的路徑測試4.3.2 循環(huán)結(jié)構(gòu)的路徑測試4.3.3 圈復(fù)雜度與基本路徑測試4.4 數(shù)據(jù)流測試4.4.1 定義∕使用測試的幾個定義4.4.2 定義∕使用測試舉例4.4.3 定義∕使用路徑測試覆蓋指標(biāo)4.5 基于覆蓋的測試用例選擇4.5.1 覆蓋率的使用4.5.2 使用最少的測試用例來達(dá)到覆蓋4.6 程序插樁技術(shù)4.6.1 程序插樁4.6.2 用于測試覆蓋率的程序插樁4.6.3 用于斷言檢測的程序插樁4.6.4 用于數(shù)據(jù)流異常檢測的程序插樁 本章小結(jié) 第5章 黑盒測試5.1 等價類測試5.1.1 等價類的概念5.1.2 等價類測試的原則5.1.3 等價類方法測試用例設(shè)計舉例5.2 邊界值分析5.2.1 邊界值分析的概念5.2.2 選擇測試用例的原則5.2.3 邊界值方法測試用例設(shè)計舉例5.3 基于判定表的測試5.3.1 判定表的概念5.3.2 基于判定表的測試用例設(shè)計舉例5.4 基于因果圖的測試5.4.1 因果圖的適用范圍5.4.2 用因果圖生成測試用例5.4.3 因果圖法測試用例設(shè)計舉例5.5 基于狀態(tài)圖的測試5.5.1 狀態(tài)圖5.5.2 利用狀態(tài)轉(zhuǎn)換樹生成測試用例5.5.3 利用狀態(tài)轉(zhuǎn)換表生成測試用例5.6 基于功能圖的測試5.6.1 功能圖5.6.2 功能圖法設(shè)計測試用例舉例5.7 基于用例和場景的測試5.7.1 基本流和備選流5.7.2 利用用例和場景設(shè)計測試用例的實(shí)例5.8 基于有向圖的測試用例設(shè)計5.8.1 使用基于有向圖的測試的場合5.8.2 基于事務(wù)流建模設(shè)計測試用例5.8.3 基于控制流建模設(shè)計測試用例5.8.4 基于有向圖設(shè)計測試用例的過程5.9 基于正交實(shí)驗(yàn)設(shè)計法的測試5.9.1 提取功能說明,構(gòu)造因子/ 狀態(tài)表5.9.2 加權(quán)篩選,生成因素分析表5.9.3 利用正交表構(gòu)造測試數(shù)據(jù)集5.10 其他黑盒測試用例設(shè)計技術(shù) 本章小結(jié) 第6章 單元測試和集成測試6.1 單元測試的基本概念6.1.1 單元測試的定義6.1.2 單元測試與集成測試、系統(tǒng)測試的區(qū)別6.1.3 單元測試環(huán)境6.2 單元測試策略6.2.1 自頂向下的單元測試策略6.2.2 自底向上的單元測試策略6.2.3 孤立測試6.2.4 綜合測試6.3 單元測試分析6.3.1 模塊接口6.3.2 局部數(shù)據(jù)結(jié)構(gòu)6.3.3 獨(dú)立路徑6.3.4 出錯處理6.3.5 邊界條件6.4 單元測試的測試用例設(shè)計原則6.4.1 單元測試的測試用例設(shè)計步驟6.4.2 單元測試中的白盒測試與黑盒測試6.5 集成測試的基本概念6.6 集成測試策略6.6.1 基于分解的集成策略6.6.2 基于功能的集成6.6.3 基于路徑的集成6.6.4 基于調(diào)用圖的集成6.7 集成測試分析6.7.1 體系結(jié)構(gòu)分析6.7.2 模塊單元分析6.7.3 接口分析6.7.4 風(fēng)險分析6.7.5 可測試性分析6.7.6 集成測試策略分析6.7.7 常見的集成測試故障6.8 集成測試的測試用例設(shè)計原則6.8.1 集成測試的測試用例設(shè)計步驟6.8.2 場景測試 本章小結(jié) 第7章 系統(tǒng)測試7.1 系統(tǒng)測試概念7.2 系。
聲明:本網(wǎng)站尊重并保護(hù)知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:3.196秒