又屬于一篇普及文,希望自己在被各種技術(shù)吸引的同時,能時常來整理和總結(jié)軟件測試最基本的知識。 從剛工作時接觸的第一個缺陷管理工具禪道,到redmine、JIRA、bugzilla ,再到現(xiàn)在的QC,當(dāng)然還有其它種的開源的或商業(yè)的缺陷管理工具,它們的本質(zhì)是一樣的,就是來管理缺陷的生命周期。 其實,你理解任意的一款工具,其它的工具也一定能無師自通。這不談某款工具,單把它本質(zhì)的一些東西抽離出來與大家分享。
Bug的屬性
Bug重現(xiàn)環(huán)境 這個應(yīng)該是我們重現(xiàn)bug的一個前提,如果沒有這個前提,我們可能會無法重現(xiàn)問題,或者跟本就無從下手。 操作系統(tǒng) 這個是一般軟件運(yùn)行的一大前提,基本上所有的軟件都依賴于操作系統(tǒng)之上的,對于一個軟件來說,要想在某個操作系統(tǒng)上運(yùn)行,必須要對這個操作系統(tǒng)支持,這就需要有真對性的設(shè)計與開發(fā)。對于不同的操作系統(tǒng),其可能存在差異(如:win xp 與 win 7)或本質(zhì)的區(qū)別(如 win 7 與 CentOS linux ),所以,操作系統(tǒng)環(huán)境是重現(xiàn)問題的一個重要前提。 瀏覽器 對于B/S系統(tǒng),或面向大眾的互聯(lián)網(wǎng)產(chǎn)品(網(wǎng)站,郵箱等),瀏覽器的兼容性也是必須測試的一個重點,對于現(xiàn)在的瀏覽器市場,各式的瀏覽器都有其用戶群,要想使產(chǎn)品大眾化,必須考慮這些產(chǎn)品的兼容性問題。 不同的瀏覽器之間(IE、 firefox、chrome、opera 等),甚至同一系列不同版本(ie6/ie7/ie8/ie9等)都可能存在兼容性問題,所以,對于這類應(yīng)用,瀏覽器環(huán)境重現(xiàn)bug前提條件之一。
其它(這個“其它”非常重要) 對于不同的系統(tǒng)發(fā)現(xiàn)重現(xiàn)問題,都會有其特定的前提,拿我測試的郵箱來說,必須要描述其是在測試線還是現(xiàn)網(wǎng)環(huán)境,而且還要附帶一重現(xiàn)問題的賬號等。 對于c/s軟件,可能還要考慮與其它常用軟的兼容等,例如,是在安裝的某款軟件后,對本軟件的安裝和使用造成影響。這些都是重現(xiàn)問題的必須描述的環(huán)境。
問題類型 根據(jù)JIRA的管理系統(tǒng)的劃分,bug 只是問題的一種,它可以用于跟蹤多種不同類型的問題(其實,他只是將bug做為一子類而已)。 JIRA系統(tǒng)缺省提供的問題類型(大部分的系統(tǒng)都可以自定義類型的,這樣就增加了靈活性。)
當(dāng)然,不同的公司,他們的人員定位與職責(zé)是不太相同的,按照上面的分類,JIRA就不是簡單的缺陷管理系統(tǒng)了,它涵蓋一項目(或產(chǎn)品)所需要處理的任務(wù)、需求與缺陷。
Bug 類型: 這里縮小范圍,單指我們測試人員在測試過程中發(fā)現(xiàn)的缺陷,發(fā)現(xiàn)產(chǎn)品缺陷其實就是測試人員工作的主要目的。當(dāng)然,你要確定一個問題的類型,也需要對項目(或產(chǎn)品)有比較深的理解。是代碼缺陷還是設(shè)計缺陷有時候就不太容易區(qū)分,當(dāng)然,這個劃分,對于開發(fā)定位問題影響很小,但對于問題類型的統(tǒng)計就比較重要了。 下面看一些常見的分類: 劃分方式一: 代碼錯誤 設(shè)計缺陷 界面優(yōu)化 配置相關(guān) 安裝部署 性能問題 標(biāo)準(zhǔn)規(guī)范 測試代碼 其它 劃分方式二: 功能類(function) 性能類(performance) 界面類(UI) 易用性類(usability) 兼容性類(compatibility) 其它(else) 這個分類當(dāng)然是可以自定義的,具我接觸的缺陷管理都是可以自定義的,既然是對問題的管理,那么你當(dāng)然可以拿來做特定環(huán)境下的系統(tǒng)來使用,或我就想用這個系統(tǒng)來指派任務(wù),那么我的自定義類型為前端任務(wù)、后端任務(wù)、測試任務(wù)、配置部署...
缺陷等級 缺陷等級,這個劃分也比較靈活,有分三級或四級,也有分五級的。 致命 一招斃命的缺陷,使你的系統(tǒng)無法運(yùn)行,有造成數(shù)據(jù)泄漏的安全性問題。 嚴(yán)重 可以引起易于糾正的異常情況、可能引起易于修復(fù)的故障或?qū)Ξa(chǎn)品外觀難以接受的缺陷。 一般 指不影響產(chǎn)品的運(yùn)轉(zhuǎn)和運(yùn)行、不會成為故障起因,但對產(chǎn)品外觀和下道工序影響較大的缺陷 輕微 輕微缺陷是指對產(chǎn)品外觀和下道工序可能會有輕微影響的缺陷 建議 增加用戶使用體驗的建議性問題。(一般情況下,建議也為做為缺陷的一種。這個跟系統(tǒng)的類型與需求有關(guān))
缺陷優(yōu)先級(priority) 當(dāng)問題處理人員在面對許多問題需要處理進(jìn),就需要問題進(jìn)行優(yōu)先級排序。我們做事情的安排,操作系統(tǒng)有處理進(jìn)程等都在使用著優(yōu)先級。 優(yōu)先級的劃分: 低——>中——>高——>緊急 延遲處理——>正常排隊——>優(yōu)先處理——>緊急處理 Bug 的嚴(yán)重程度和優(yōu)先級是含義不同但相互聯(lián)系密切的兩個概念,它們從不同的側(cè)面描述了軟件缺陷對軟件質(zhì)量和最終用戶的影響程序和處理方式。 一般地,嚴(yán)重程序高的軟件缺陷具有較高的優(yōu)先級。嚴(yán)重程度高說明缺陷對軟件造成的危害性大,需要優(yōu)先處理,而來嚴(yán)重程序低的缺陷可能只是軟件不太盡善盡美,可以稍后處理。 嚴(yán)重程度高優(yōu)先級不一定高: 如果某個嚴(yán)重的軟件缺陷只在非常極端的條件下產(chǎn)生,則沒有必要馬上處理。 如果某一個軟件缺陷,需要重新修改軟件的整體架構(gòu),可能會產(chǎn)生更多的潛在缺陷,而且軟件由于市場的壓力必須盡快發(fā)布,此時即使缺陷的嚴(yán)重性很高,是否需要修正,需要全盤考慮。 嚴(yán)重程度優(yōu)先級不一定低 如果是軟件名稱或公司名稱的拼寫錯誤,雖然說其屬于界面錯誤,嚴(yán)重程度不高,但其關(guān)系到軟件和公司的市場開解,必須盡快修正。
缺陷狀態(tài) 對于一個問題,其處理過程是一個周期,周期的不同階段,其所處的狀態(tài)也是不一樣的。不同狀態(tài)所對應(yīng)的處理人也是不一樣的。 打開 : 表示問題被提交等待有人處理。 重新指派 : 問題被重新指派給某人處理。 處理 : 問題在處理中,尚未完成。 固定 : 確認(rèn)此問題存在,但暫時不進(jìn)行處理。 回歸 : 對已經(jīng)修復(fù)的問題進(jìn)行回歸確認(rèn)。Reopened : 關(guān)閉 : 問題的最后一個狀態(tài)。
Bug處理流程
下面通過一個比較完整的bug的處理流程圖,更深刻的理解bug的狀態(tài)以一個bug的生命周期。
提交(打開)缺陷 在提交一個缺陷的缺陷,首先盡量描述這個缺陷的屬性。Bug重現(xiàn)環(huán)境,bug類型,bug等級,bug的優(yōu)先級以及詳細(xì)的重現(xiàn)步驟,結(jié)果與期望等。 當(dāng)然,我們在提交一個問題之前首先應(yīng)該保證,這個缺陷是沒有被提過的,以免造成重復(fù)缺陷單。 如果是回歸不通過的缺陷,其狀態(tài)又會變?yōu)榇蜷_狀態(tài)。
分配(轉(zhuǎn)交)缺陷 這一步不是必須的,跟項目模式有關(guān),有些公司測試部門與開發(fā)部門獨立,那么測試人員就不確定自己測試的模塊是由哪位開發(fā)人員負(fù)責(zé)的,在這種情況下,測試人員統(tǒng)一把問題指派給項目組長或經(jīng)理,由項目組長(或經(jīng)理)對問題進(jìn)行確認(rèn)后再次分配給相應(yīng)的開發(fā)人員。 有些測試人員是穿插到不同研發(fā)團(tuán)隊中的,所以對不同的開人發(fā)員負(fù)責(zé)的開發(fā)模塊非常清楚,這個時候就可以將問題直接指派給相應(yīng)的開發(fā)人員。 也有一種情況,本來此問題應(yīng)該由A開發(fā)人員負(fù)責(zé),但由于A開發(fā)人員的調(diào)離或辭職,些問題為轉(zhuǎn)交給其它人員處理。“分配”強(qiáng)調(diào)是上級對下級;“轉(zhuǎn)交”強(qiáng)調(diào)的是平級之間。
確認(rèn)缺陷 當(dāng)開發(fā)人員接到一個缺陷時,首先是對其進(jìn)行分析與重現(xiàn),如果對其進(jìn)行分析發(fā)現(xiàn)不是缺陷(可能由于測試人員不了解需求)或無法對此問題進(jìn)行重現(xiàn),那么就需要將此問題反回給測試人員,并注明原因。如果確認(rèn)為缺陷則需要對其進(jìn)行處理。
推遲處理 在處理問題之后,還需要進(jìn)行一次判斷,是否需要推遲處理,有些需求已經(jīng)確認(rèn)了是問題,由于其可能在極端情況下才會出現(xiàn),或需要對系統(tǒng)架構(gòu)進(jìn)行改動,或其優(yōu)先級非常低,所以暫時不需要對此問題進(jìn)行處理(或到下個版本進(jìn)再進(jìn)行修復(fù))。
固定 對于推遲處理的問題可以暫時進(jìn)行固定(“固定”為QC中的叫法。)一般固定的問題需要經(jīng)過項目經(jīng)理與測試經(jīng)理協(xié)商后才能固定。
處理缺陷 開發(fā)人員在確認(rèn)完一個問題需要處理時,那么就對其進(jìn)行處理工作。(例如,redmine 是支持處理人時時更新問題處理進(jìn)度的,如 已處理30% ,已處理80% 等,當(dāng)然,對于短時間內(nèi)可以修復(fù)的問題就沒必要時時的去更新處理進(jìn)度。)
回歸缺陷 回歸缺陷對于測試人員來說是非常重要的工作,其有三個入口兩個出口。 確認(rèn)非缺陷問題:對于提交的一個缺陷,開人員處理為非問題或無法重現(xiàn),然后直接轉(zhuǎn)交給測試人員回歸。測試人員再次確認(rèn),如果真如開發(fā)人員所說,則將問題關(guān)閉。如果非開發(fā)人員所說,是由于問題描述模糊或其它原因喂重現(xiàn)問題,則再次注明原因轉(zhuǎn)給開發(fā)人員。 確認(rèn)修復(fù)問題:對開發(fā)人員修復(fù)的問題再次進(jìn)行確認(rèn),確認(rèn)能過,則關(guān)閉問題。確認(rèn)不通過,將問題再次打開并轉(zhuǎn)給開發(fā)人員。 確認(rèn)固定問題:有計劃的對固定問題進(jìn)行確認(rèn),有些固定問題隨著時間的推移,版本的更新或已經(jīng)不存在了,對這類問題應(yīng)該及時關(guān)閉。有些固定問題依然存在且變得緊急,對于這類問題應(yīng)該及時打開交給開發(fā)人員處理。
關(guān)閉缺陷 對于已經(jīng)修復(fù)的缺陷進(jìn)行關(guān)閉,這也是一個缺陷的最后一個狀態(tài)。
注1: 文中提到了產(chǎn)品與項目,好多人分不清項目與產(chǎn)品,各自有各自的理解。我個人從用戶群上來劃分。如果面向的是特定客戶的需求,那么稱其為項目,如某醫(yī)院的醫(yī)療系統(tǒng),某公司的管理系統(tǒng)。面向大眾用戶且長期運(yùn)營的需求,稱為產(chǎn)品,如,某網(wǎng)站,某網(wǎng)絡(luò)游戲。 如果小A讓我給他做一個網(wǎng)站呢?對于我來說,小A是我的客戶,這個網(wǎng)站對我來說就是一個項目,對于小A來說,他的網(wǎng)站是面向大眾用戶的,那么對于小A來說,網(wǎng)站就是自己的產(chǎn)品。 富士康帶工蘋果手機(jī)是一樣的道理,富士康接到蘋果的訂單,那么對富士康來說是個項目,完成項目,拿到錢就算項目結(jié)束。蘋果手機(jī)對蘋果公司來說是一個產(chǎn)品,它長期持有這個產(chǎn)品的所有權(quán),并且不段的更新自己的產(chǎn)品。
注2: 本文中用到了 bug、缺陷、問題等三個詞語,用詞比較模糊,本文中表示為一個事物。
|
|