偶然性不可重現BUG怎麼處理?

    在軟件工程論壇上,kasad“問偶然性不可重現BUG怎麼處理?”我和一些網友進行了討論,下面就是整理的一些記錄,主要是me的。原帖參看:http://community.csdn.net/Expert/TopicView3.asp?id=3867252

 

一、一定要提交!!

1. 記得有這麼個缺陷,以後再遇到的時候可能就會了解發生的原因。

2. 盡力去查找出錯的原因,比如有什麼特別的操作,或者一些操作環境等。

3. 程序員對程序比測試人員熟悉的多,也許你提交了,即使無法重新,程序員也會了解問題所在。

4. 無法重現的問題再次出現後,可以直接叫程序員來看看問題。

5. 對於測試人員來說,沒有操作錯誤這條.既然遇到,就是問題。即使真的操作錯了,也要推到程序員那裏,既然測試人員犯錯誤,用戶也可能會犯同樣的錯誤。錯誤發生的時候,Tester最大。

 

二、程序不是測試人員寫的,出問題也不是測試人員的原因。

至於無法重現,可能的原因很多,因爲測試人員看到的只是程序的外部,無法深入程序內部,所以把責任推給測試人員是不對的。

測試人員的任務只是盡力重現問題,而不是必須重現!!

 

三、下次再遇到的時候,拉他們來看就可以了。

因爲問題如果無論如何無法重現,程序員確實也沒有什麼好的解決方法。

而且此類問題即使程序員說修改了,測試員也沒有好的方法去驗證是不是。 : )

 

四、你可以告訴程序員,測試過程是沒有錯誤的。

測試人員只是檢查程序中可能存在的問題,雖然測試人員使用一定的手段方法努力去覆蓋所有的情況,但這些都是理論的推測。在實際中,可能因爲人員、環境、配置等種種原因出現各種各樣的問題,在測試人員這裏發現問題是公司內部的事情,程序發到外面可就是公司的形象問題了。

需要讓程序員理解,測試人員是幫助他們的,不是害他們的。

客戶那裏發現問題比測試員發現問題結果要嚴重的多。

 

五、測試部門是獨立與開發部門的呀,真的打交道,也是經理對經理。

在我們這裏,工作上面的事情,和程序員相互只能商議解決,並沒有誰高誰低。

問題無法重現,也要提出,程序員那裏可以回覆無法再現。問題放在那裏,等到再次出現的時候,就立刻叫程序員過來查看。

實在沒有再次出現,最後可以寫到報告中,說出現了什麼現象,但無法再現(比較嚴重的問題才如此處理,小問題經理之間商量商量可能就算了)。

至於測試人員必須重現bug,你殺了我好了,我每次測試項目都有無法重現的問題,很多我能找到大概的原因,有些根本無法重現(僅僅出現一次)。

這種事情是無法避免的,並不能說測試人員無法重現問題,就是工作不到位(哼,程序有bug,是否可以說程序員工作不到位的呀)。

 

六、測試部門要獨立,最好不受開發的制約。其實真正要重視,就應該有否決的權利。

我們公司就是項目承包,要拿最後的項目尾款,就要測試部簽字通過,這樣就避免了很多的問題。

其實只要自己盡到心就可以了,管別人怎麼說呢。

 

七、我們使用的狀態有:

程序員處理的狀態(由測試員提交的Action):等待處理的,再次出現的。

測試員處理的狀態(由程序員提交的Action):已經修改的,暫不修改的,系統限制的,使用錯誤的,無法再現的。測試員可以修改記錄。

經理處理的狀態(由測試員提交Action):管理員處理的。經理還可以刪除記錄。

按照比較標準的說法,其實對於缺陷還應該有“等待確認的”、“已經確認的”和“重複提交的”的狀態,我們爲了省事,統一使用了“等待處理的”。

最後結項的時候,缺陷的狀態對我們來說有兩種,“已經關閉的”(由測試員或經理確認)和“暫不修改的”(比如下一個版本處理等)。

呵呵,狀態多,有些煩瑣,特別是程序員很多的時候都不清楚應該回復什麼狀態,但我個人覺得對測試人員來說,這些狀態比較清晰明瞭,容易處理。

 

 

八、一個叫doer_ljy(可戰)的網友回覆了一些內容,我個人認爲不很妥當,就回復了一些內容,綠顏色的是doer_ljy(可戰)的內容:

 

關於“無法重現”我看是有這麼個問題存在。

首先如果你在測試之前有嚴格的測試計劃,就很難出現“無法重現”這種現象。“無法重現”的意思是不知道怎麼操作才能再次看見這個BUG。那麼這個BUG多半是“計劃外”的。

-----------無---敵---分---割---線------------

不 清楚你是否是測試人員。“計劃外”這個詞,對測試員來說應該不存在。測試用例的粒度一直是個在討論中的問題,測試人員很難有時間和精力寫出包含內容、數 據、步驟等等全部操作一切的測試用例(說白了,只要一個長手識字的人,按照測試單做,就能發現所有的問題,呵呵,有軟件藍領的感覺了)。即使真的有,意義 也不大,測試很多的時候,是發散性的思維,帶點創造性,想事先考慮完全,很難。所以更多時候,是在測試過程中逐步對用例等進行完善,所以說“計劃外”最好 不要提。

說 說我現在測試的一個項目,有一個業務,首先查詢出人員,有個“全選”按鈕,“全選”後,再用鼠標一個一個取消選擇,這個時候進行業務辦理的時候,就會提示 “沒有選擇人員”,至今爲止一切都正常,但是這個時候再次點選人員進行業務處理,仍然會提示“沒有選擇人員”,這就是一個缺陷了。這個問題我想一般人都不 會在測試用例中考慮到吧,因爲發生的條件很苛刻:不用“全選”按鈕的時候不會發生;全選後點擊“取消全選”按鈕再辦理業務不會發生;全選全消後,先點擊人 員再辦理業務也不會發生。

 

其次,成熟的測試人員及時無法再現BUG,也能準確的描述出BUG發生之前幾個步驟的操作方法,測試用例情況。這些對開發人員分析BUG原因很重要。所謂的BUG發現環境。

-------我--又--出--來--了-------

呵 呵,看來我不是成熟的測試人員。手工測試,比較熟練的時候,和打字可以說差不多,應該進行到哪裏,心中是有數的,但讓我完全從頭到尾的重複,不容易呀。寫 測試缺陷報告單的時候,也只是說明操作步驟和發生的現象。其實無法重現的問題,既然說“無法重現”,也就是測試人員已經對這個現象進行了多次的驗證,一般 從程序外部來說,測試人員的操作比程序員要熟練的。

 

最後,我不同意測試人員不假思索把發現的“問題”直接推給編碼人員的做法。畢竟是大家合作,目標是一致的。測試人員總是處在BUG發生的第一現場,應該幫助分析出現問題的原因。確認是不是自己的此時Miss.

---------還-----是-----我--------

測 試人員提交任何一個問題,都會經過反覆的驗證,如果容易重現,早就提出來了。絕對不是在推脫責任,還是那句話,對程序的結構,做的人當然比不做的人要清 楚。另外,除非程序員詢問,否則我不會給程序員提出修改分析和建議!!測試人員的任務是發現問題,解決問題是程序員的事情。這麼做可能會影響程序員思考問 題的思路;而且測試人員做的多了,程序員不但不感激,可能反而會反感(好像程序員對測試人員有好印象的不多)。

再 說兩個我這兩天遇到的問題。第一個就是我們的程序有一個鎖定數據的功能。鎖定後,在其它的業務,此數據將不能再使用。我當時發現這個功能無效,而且經過了 幾次的驗證都不行,我當然就提出了。但是程序員那裏說此功能好使,我再驗證的時候,就沒有問題了,這個問題當時可以重現(但是我不可能遇到問題就拉程序員 來看吧),後來卻沒有了,只能放在那裏,最後關閉掉。第二個就是在一個界面中,錄入有順序要求,必須先選擇一個ListBox(必填)再進行Edit的錄入,但一次操作我沒有選擇 ListBox就錄入的Edit,也正常保存了。後來無論我怎麼操作此問題都沒有出現(不夠成熟呀),我就放棄了,也沒有提交記錄(爲了避免麻煩)。

測試人員的時間是有限的,進度給的都很少,一般連用例都沒有時間寫,還要去花很多時間驗證“無法重現”的問題?反正10分鐘如果試驗不出來,我就會放棄。嚴重的就提交,不影響的就當不知道。

 

 

下面是其它一些人的觀點:

 

doublefalse (散諸懷抱):如果不能重現的bug確實比較麻煩,但最好在測試過程中注意乾淨環境、正確的操作、相同的數據源,只要真的有問題,一定能否復現的。呵呵, 多試試!!!我們以前一直有客戶反映入庫的數據經常有無關數據,但在家裏測試沒有問題,後來才發現是漢字編碼錯位,這樣同樣的字,錯位後就變成另外的東西 了。

 

liuxiaoyuzhou(蟀哥):遇到過同樣的問題!主要是記住BUG出現的環境!測試的時候這是關鍵!在我們這裏不能從現的BUG,是測試人員的工作不到位!我們這裏程序員比測試人員說話有力度!鬱悶呀!

 

ericzhangali (另一個空間):首先一定要提交bug;其次不要企圖RD一定去解這個bug;某些時候還得關閉這個bug。如果RD認爲是測試錯誤,(不明白什麼叫測試 錯誤,是不是說他從測時要告訴你千萬不要怎麼怎麼做,否則後果自負啊,)那也沒什麼辦法,如果溝通解決不了,愛咋認爲就咋認爲吧。

 

darkcat_c (錯了重來):沒有bug是不可以重現的,bug本事是建立在標準的規程上所出現的異常,如果你按testcase步驟做的話不太可能出現此類bug。作 爲測試人員一定要具備良好的記憶能力,一旦出現一些不知如何產生的bug,至少你要知道剛纔你大致進行了那些操作。良好的分析能力,儘管你只是測試,但你 應該全面的瞭解程序的架構,和一些重要的內部細節,不然你這個測試就是不合格的。定位bug是開發的事情,而重現一個bug是測試的本職工作,不要把所有 的事情推給開發,不然你的確比開發要低一等。(編者按:這種話,不願意去辯駁,標準開發人員的看法,也許應該讓他們也來做做測試)

 

liyan_1014(雁子):我覺得應該是這麼處理:

1、一定提交bug,必須由負責bug的tester詳細描述測試操作步驟,bug發生的症狀,並將bug發生的具體環境也描述清楚;這樣對於再次重現也有一定的參考性。

2、測試和開發之間是需要良好溝通的,如果得到的回覆是操作錯誤,那麼請開發人員解釋,爲什麼會允許存在操作錯誤,一般來說,對於錯誤控制,開發那邊應該能很好的把握。

3、溝通方面是需要方式的,開發人員對於自己完成的程序有一種滿足感,一般來說是不允許別人來破壞他的這種感覺,如果溝通的時候儘可能是一種建議的形式,讓開發人員自己指出自己的程序缺陷,這樣對於開發人員來說是可以接受。

以上僅是個人工作中的經驗,呵呵~~~~
發佈了22 篇原創文章 · 獲贊 2 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章