1.軟件缺陷和軟件缺陷種類
1.軟件缺陷的定義:
軟件缺陷,常常又被叫做Bug,從產(chǎn)品內(nèi)部看,缺陷是軟件產(chǎn)品開發(fā)或維護(hù)過程中存在的錯(cuò)誤、毛病等各種問題;從產(chǎn)品外部看,缺陷是系統(tǒng)所需要實(shí)現(xiàn)的某種功能的失效或違背。
來(lái)源:(了解)
格蕾絲·赫柏(Grace Murray Hopper),是一位為美國(guó)海軍工作的電腦專家,也是最早將人類語(yǔ)言融入到電腦程序的人之一。而代表電腦程序出錯(cuò)的“bug” 這名字,正是由赫柏所取的。1947年9月9日,赫柏對(duì)Harvard Mark II設(shè)置好17000個(gè)繼電器進(jìn)行編程后,技術(shù)人員正在進(jìn)行整機(jī)運(yùn)行時(shí),它突然停止了工作。于是他們爬上去找原因,發(fā)現(xiàn)這臺(tái)巨大的計(jì)算機(jī)內(nèi)部一組繼電器的觸點(diǎn)之間有一只飛蛾,這顯然是由于飛蛾受光和熱的吸引,飛到了觸點(diǎn)上,然后被高電壓擊死。所以在報(bào)告中,赫柏用膠條貼上飛蛾,并把“bug”來(lái)表示“一個(gè)在電腦程序里的錯(cuò)誤”,“Bug”這個(gè)說法一直沿用到今天。
2.軟件缺陷的種類劃分
按照軟件缺陷的產(chǎn)生原因,可以將其劃分為不同的缺陷類別:
1、功能不正常
簡(jiǎn)單地說就是所應(yīng)提供的功能,在使用上并不符合產(chǎn)品設(shè)計(jì)規(guī)格說明書中規(guī)定的要求,或是根本無(wú)法使用。這個(gè)錯(cuò)誤常常會(huì)發(fā)生在測(cè)試過程的初期和中期,有許多在設(shè)計(jì)規(guī)格說明書中規(guī)定的功能無(wú)法運(yùn)行,或是運(yùn)行結(jié)果達(dá)不到預(yù)期設(shè)計(jì)。最明顯的例子就是在用戶接口上所提供的選項(xiàng)及動(dòng)作,使用者操作后毫無(wú)反應(yīng)。
2、軟件在使用上感覺不方便
只要是不知如何使用或難以使用的軟件,在產(chǎn)品設(shè)計(jì)上一定是出了問題。所謂好用的軟件,就是使用上盡量方便,使用戶易于操作。如微軟推出的軟件,在用戶接口及使用操作上確實(shí)是下了一番功夫。有許多軟件公司推出的軟件產(chǎn)品,在彼此的接口上完全不同,這樣其實(shí)只會(huì)增加使用者的學(xué)習(xí)難度,另一方面也凸顯了這些軟件公司的集成能力不足。
3、軟件的結(jié)構(gòu)未做良好規(guī)劃
這里主要指軟件是以自頂向下方式開發(fā),還是以自底向上方式開發(fā)。如果是以自頂向下的結(jié)構(gòu)或方法開發(fā)的軟件,在功能的規(guī)劃及組織上比較完整,相反以自底向上的組合式方法開發(fā)處的軟件則功能較為分散,容易出現(xiàn)缺陷。
4、提供的功能不充分
這個(gè)問題與功能不正常不同,這里指的是軟件提供的功能在運(yùn)作上正常,但對(duì)于使用者而言卻不完整。即使軟件的功能運(yùn)作結(jié)果符合設(shè)計(jì)規(guī)格的要求,系統(tǒng)測(cè)試人員在測(cè)試結(jié)果的判斷上,也必須從使用者的角度進(jìn)行思考,這就是所謂的“從用戶體驗(yàn)出發(fā)”。
5、與軟件操作者的互動(dòng)不良
一個(gè)好的軟件必須與操作者之間可以實(shí)現(xiàn)正常互動(dòng)。在操作者使用軟件的過程中,軟件必須很好地響應(yīng)。例如在瀏覽網(wǎng)頁(yè)時(shí),如果操作者在某一網(wǎng)頁(yè)填寫信息,但是輸入的信息不足或有誤。當(dāng)點(diǎn)擊“確定”按鈕后,網(wǎng)頁(yè)此時(shí)提示操作者輸入信息有誤,卻并未指出錯(cuò)誤的哪里,操作者只好回到上一頁(yè)重新填寫,或直接放棄離開。這個(gè)問題就是典型的在軟件對(duì)操作互動(dòng)方面未做完整的設(shè)計(jì)。
6、使用性能不佳
被測(cè)軟件功能正常,但使用性能不佳,這也是一個(gè)問題。此類缺陷通常是由于開發(fā)人員采用了錯(cuò)誤的解決方案,或使用了不恰當(dāng)?shù)乃惴▽?dǎo)致的,在實(shí)際測(cè)試中有很多缺陷都是因?yàn)椴捎昧隋e(cuò)誤的解決方法,需要加以注意!
7、為做好錯(cuò)誤處理
軟件除了避免出錯(cuò)之外,還要做好錯(cuò)誤處理,許多軟件之所以會(huì)產(chǎn)生錯(cuò)誤,就是因?yàn)槌绦虮旧韺?duì)于錯(cuò)誤和異常處理的缺失。例如被測(cè)軟件讀取外部的信息文件并已做了一些分類整理,但剛好所讀取的外部信息文件內(nèi)容已被損毀。當(dāng)程序讀取這個(gè)損毀的信息文件時(shí),程序發(fā)現(xiàn)問題,此時(shí)操作系統(tǒng)不知該如何處理這個(gè)情況,為保護(hù)系統(tǒng)自身只好中斷程序。由此可見設(shè)立錯(cuò)誤和異常處理機(jī)制的重要性!
8、邊界錯(cuò)誤
緩沖區(qū)溢出問題在這幾年已成為網(wǎng)絡(luò)攻擊的常用方式,而這個(gè)缺陷就屬于邊界錯(cuò)誤的一種。簡(jiǎn)單來(lái)說,程序本身無(wú)法處理超越邊界所導(dǎo)致的錯(cuò)誤。而這個(gè)問題,除了編程語(yǔ)言所提供的函數(shù)有問題之外,很多情況下是由于開發(fā)人員在聲明變量或使用邊界范圍時(shí)不小心引起的。
9、計(jì)算錯(cuò)誤
只要是計(jì)算機(jī)程序,就必定包括數(shù)學(xué)計(jì)算。軟件之所以會(huì)出現(xiàn)計(jì)算錯(cuò)誤,大部分出錯(cuò)的原因是由于采用了錯(cuò)誤的數(shù)學(xué)運(yùn)算工時(shí)或未將累加器初始化為0.
10、使用一段時(shí)間所產(chǎn)生的錯(cuò)誤
這類問題是程序開始運(yùn)行正常,但運(yùn)行一段時(shí)間后卻出現(xiàn)了故障。最典型的例子就是數(shù)據(jù)庫(kù)的查找功能。某些軟件在剛開始使用時(shí),所提供的信息查找功能運(yùn)作良好,但在使用一段時(shí)間后發(fā)現(xiàn),進(jìn)行信息查找所需的時(shí)間越來(lái)越長(zhǎng)。經(jīng)分析查明,程序采用的信息查找方式是順序查找,隨著數(shù)據(jù)庫(kù)信息的增加,查找時(shí)間自然會(huì)變長(zhǎng)。這就需要改變解決方案了!
11、控制流程的錯(cuò)誤
控制流程的好壞,在于開發(fā)人員對(duì)軟件開發(fā)的態(tài)度及程序設(shè)計(jì)是否嚴(yán)謹(jǐn)。軟件在狀態(tài)間的轉(zhuǎn)變是否合理,要依據(jù)業(yè)務(wù)流程進(jìn)行控制。例如,用軟件安裝程序解釋這類問題最方便直觀。用戶在進(jìn)行軟件安裝時(shí),輸入用戶名和一些信息后,軟件就直接進(jìn)行了安裝,未提示用戶變更安裝路徑、目的地等。這就是軟件控制流程不完整導(dǎo)致的錯(cuò)誤問題。
12、在大數(shù)據(jù)量壓力下所產(chǎn)生的錯(cuò)誤
程序在處于大數(shù)據(jù)量狀態(tài)下運(yùn)行出現(xiàn)問題,就屬于這類軟件錯(cuò)誤。大數(shù)據(jù)量壓力測(cè)試對(duì)于Server級(jí)的軟件是必須進(jìn)行的一項(xiàng)測(cè)試,因?yàn)榉?wù)器級(jí)的軟件對(duì)穩(wěn)定性的要求遠(yuǎn)比其它軟件要高。通常連續(xù)的大數(shù)據(jù)量壓力測(cè)試是必須實(shí)施的,如讓程序處理超過10萬(wàn)筆數(shù)據(jù)信息,再來(lái)觀察程序運(yùn)行的結(jié)果。
13、在不同硬件環(huán)境下產(chǎn)生的錯(cuò)誤
這類問題的產(chǎn)生與硬件環(huán)境的不同相關(guān)。如果軟件與硬件設(shè)備有直接關(guān)系,這樣的問題就是數(shù)量相當(dāng)多。例如有些軟件在特殊品牌的服務(wù)器上運(yùn)行就會(huì)出錯(cuò),這是由于不同的Server內(nèi)部硬件了不同的處理機(jī)制。
14、版本控制不良導(dǎo)致的錯(cuò)誤
出現(xiàn)這樣的問題屬于項(xiàng)目管理的疏忽,當(dāng)然測(cè)試人員未能盡忠職守也是原因之一。例如一個(gè)軟件被反映有安全上的漏洞,后來(lái)軟件公司也很快將修復(fù)版本提供給用戶。但在一年后他們推出新版本時(shí),卻忘記將這個(gè)已解決的bug-fix加入到新版本中。所以對(duì)用戶來(lái)說,原本的問題已經(jīng)解決了,但想不到新版本升級(jí)之后,問題又出現(xiàn)了。這就是由于版本控制問題,導(dǎo)致不同基線的merge出現(xiàn)誤差,使得產(chǎn)品質(zhì)量也出現(xiàn)了偏差。
15、軟件文檔的錯(cuò)誤
最后這類缺陷是軟件文檔錯(cuò)誤。這里所提及的錯(cuò)誤,除了軟件所附帶的使用手冊(cè)、說明文檔及其它相關(guān)的軟件文檔內(nèi)容錯(cuò)誤之外,還包括軟件使用接口上的錯(cuò)誤文字和錯(cuò)誤用語(yǔ)、產(chǎn)品需求設(shè)計(jì)PD、UI Spec等的錯(cuò)誤。錯(cuò)誤的軟件文檔內(nèi)容除了降低產(chǎn)品質(zhì)量外,最主要的問題是會(huì)誤導(dǎo)用戶!
3.軟件缺陷的屬性:
1.按照嚴(yán)重程度分:
一般分為5個(gè)等級(jí):
系統(tǒng)崩潰,嚴(yán)重,一般,次要,建議
2.按優(yōu)先級(jí)分:
修正優(yōu)先級(jí):高,中,低
Bug定級(jí)示例
1級(jí),系統(tǒng)崩潰
定義:嚴(yán)重阻礙測(cè)試和開發(fā)工作
對(duì)應(yīng)優(yōu)先級(jí):最高
具體可分為:
1.功能完全沒有實(shí)現(xiàn)
2.應(yīng)用閃退/崩潰無(wú)法運(yùn)行
3.應(yīng)用必現(xiàn)安全模式,無(wú)法運(yùn)行
4.其他導(dǎo)致功能無(wú)法測(cè)試的問題
2級(jí),至關(guān)重要
定義:非阻礙用例執(zhí)行的嚴(yán)重問題
對(duì)應(yīng)優(yōu)先級(jí):高
具體可分為:
1.簡(jiǎn)單操作應(yīng)用閃退/崩潰,卡死
2.數(shù)據(jù)丟失
3.嚴(yán)重影響系統(tǒng),自身功能無(wú)法運(yùn)行
4.嚴(yán)重?cái)?shù)值計(jì)算錯(cuò)誤
5.數(shù)據(jù)庫(kù)損壞或無(wú)法保存配置
6.安全性問題(包括數(shù)據(jù)加密等)
3級(jí),主要
定義:功能存在缺陷,但不影響應(yīng)用和系統(tǒng)的穩(wěn)定性
對(duì)應(yīng)優(yōu)先級(jí):中
具體可分為:
1.內(nèi)存泄露(長(zhǎng)時(shí)間不用的對(duì)象需要被回收,不被回收占內(nèi)存)
2.功能實(shí)現(xiàn)邏輯覆蓋不全面
3.非必現(xiàn),但復(fù)現(xiàn)概率超過50%的閃退/崩潰和安全模式
4級(jí),一般
定義:對(duì)應(yīng)用熟悉度高才能感知到的問題,對(duì)應(yīng)用基本功能實(shí)現(xiàn)無(wú)影響
對(duì)應(yīng)優(yōu)先級(jí):中
具體可分為:
1.輕微數(shù)值計(jì)算錯(cuò)誤
2.功能實(shí)現(xiàn)有誤,與產(chǎn)品文檔不完全貼切
3.用戶簡(jiǎn)單操作,即可明顯感知的UI問題
5級(jí),較小
定義:界面,性能缺陷
對(duì)應(yīng)優(yōu)先級(jí):低
具體可分為:
1.操作界面錯(cuò)誤(提示顯示規(guī)則,刷新規(guī)則是否與文檔一致)
2.邊界條件顯示錯(cuò)誤
3.提示信息和界面效果展示錯(cuò)誤(包括未給出信息、信息提示錯(cuò)誤等)
4.復(fù)現(xiàn)率低于5%的閃退/崩潰和安全模式
5.插件兼容和性能未優(yōu)化問題
6.非正常操作導(dǎo)致UI顯示異常
6級(jí),建議
定義:對(duì)于產(chǎn)品的意見或者建議
對(duì)應(yīng)優(yōu)先級(jí):低
具體可分為:
1.對(duì)于產(chǎn)品設(shè)計(jì)方面的意見和建議
2.對(duì)于產(chǎn)品界面優(yōu)化方面的意見和建議
3.對(duì)于產(chǎn)品需要優(yōu)化增強(qiáng)用戶體驗(yàn)方面的意見和建議
3.按照測(cè)試種類分:
邏輯功能類,性能類,界面類,易用性類,安裝,兼容性類
4.按照功能模塊分:
注冊(cè),登錄,購(gòu)物車,分類,訂單,個(gè)人信息
5.軟件缺陷類型:
6.按照解決方案分:
7.按照Bug生命周期:
新建,確認(rèn),解決,重新驗(yàn)證,關(guān)閉,重新打開