因此,軟件測試工程師必須認識到書寫軟件缺陷報告是測試執行過程的一項重要任務,首先要理解缺陷報告讀者的期望,遵照缺陷報告的寫作準則,書寫內容完備的軟件缺陷報告。本文將闡述軟件測試缺陷報告的讀者,描述軟件缺陷報告的主要組成部分和各部分的書寫要求,指出某些常見錯誤和實用改進方法,最后總結了缺陷報告的寫作要點。
1. 缺陷報告的讀者對象
在書寫軟件缺陷報告之前,需要明白誰是缺陷報告的讀者對象,知道讀者最希望從缺陷報告中獲得什么信息。通常,缺陷報告的直接讀者是軟件開發人員和質量管理人員,除此之外,來自市場和技術支持等部門的人也可能需要查看缺陷情況。每個閱讀缺陷報告的人都需要理解缺陷針對的產品和使用的技術。另外,他們不是軟件測試人員,可能對于具體軟件測試的細節了解不多。
概括起來,缺陷報告的讀者最希望獲得的信息包括:
軟件測試人員的任務之一就是需要針對讀者的上述要求,書寫良好的軟件缺陷報告。
2. 缺陷報告的寫作準則
書寫清晰、完整的缺陷報告是對保證缺陷正確處理的最佳手段。 它也減少了工程師以及其它質量保證人員的后續工作。
為了書寫更優良的缺陷報告,需要遵守“5C”準則:
3. 缺陷報告的組織結構
盡管不同的軟件測試項目對于缺陷報告的具體組成部分不盡相同,但是基本組織結構都是大同小異的。一個完整的軟件缺陷報告通常由下列幾部分組成:
對于具體測試項目而言,缺陷的基本信息通常是比較固定的,也是很容易描述的。實際書寫軟件缺陷報告容易出現問題的地方就是標題、操作步驟、實際結果、期望結果和注釋部分。下面針對這些“事故多發地帶”具體論述如何提供完整的信息,由于英文是軟件開發的主要語言,以下的軟件缺陷報告的信息都使用英文書寫。
4. 缺陷報告的寫作技術
4.1 標題(Title)
標題應該保持簡短、準確,提供缺陷的本質信息,并且便于讀者搜索查尋。
良好的缺陷標題應該按照下列方式書寫:
請查看下面的表格,該表格列出了有問題的標題,給出了如何改進的示例。
原始描述 | 錯誤原因 | 改進的標題 |
---|---|---|
Hyphenation does not work | 描述太籠統。什么時候不起作用? | Text breaks at line's end, but no hyphen appears |
Incorrect behavior with paragraph alignment | 描述太籠統。不正確的行為是什么? | Justified alignment leaves gaps in text composition when tracking is also applied |
Assert:CmdAssertHereInsertSomethingBad-Happens | 沒有包含原因與結果信息。斷言(Assert)太長。 | Assert, "SomethingBad" when attempting to update linked bitmap stored on server |
After each launch then clicking edit and then copy/paste, there is too much delay | 沒有指明原因與結果,包含了過分詳細的細節信息。 | Performance slows noticeably after ?rst launch and copy/paste |
Quotes appear as symbols when they are imported | 信息沒有充分隔離。所有的引號都如此嗎?什么類型的符號? | Imported smart quotes from Word appear as unrecognized characters |
提示
使用"after","when"或"during"等連結詞有助于描述缺陷的原因和結果,例如:
4.2 復現步驟(Reproducible Steps)
復現步驟包含如何使別人能夠很容易的復現該缺陷的完整步驟。為了達到這個要求,復現步驟的信息必須是完整的、準確的、簡明的、可復現的。
但是實際軟件測試過程中,總是存在一些不良的缺陷報告,主要的問題在于以下三個方面:
為了避免出現這些問題,良好的復現步驟應該包含本質的信息,并按照下列方式書寫:
1. Create text frame.
2. Add text.
可以簡單的合并成一步:
1. Create a new text frame and add text.
需要再次引起注意的是,缺陷報告的讀者對技術有基本的了解,但是對軟件測試的細節可能所知有限。因此,一方面,沒有必要在缺陷報告中告訴啟動產品或者如何打開一個文件等簡單操作方法。另一方面,不要包含軟件測試過分詳細的技術細節,除非這些是缺陷至關重要的信息。
4.3 實際結果(Actual result)
實際結果是執行復現步驟后軟件的現象和產生的行為。
實際結果的描述很像缺陷的標題,是標題信息的再次強調,要列出具體的表現行為,而不是簡單的指出“不正確”或“不起作用”。
如果一個動作產生彼此不同的多個缺陷結果。為了易于閱讀,這些結果應該使用數字列表分隔開來。例如:
Actual result:
1. Assert “CmdLineofCodeHere…”
2. Assert “AlsoBrokenHere…”
有時,一個動作將產生一個結果,而這個結果又產生另一個結果。這種情況可能難以清晰、簡潔地總結。例如:
Actual Result:
1. Assert:“CmdLineofCodeBlahBlah…”
2. When this assert is dismissed, app becomes active but all text is unrecognizable.
3. After selecting the text by dragging the text tool, the text appears normally once again.
對于這些較難處理的情況,有多種使之易于閱讀的解決方法:
4.4 期望結果(Expected result)
期望結果的描述應該與實際結果的描述方式相同。通常需要列出期望結果的應該是什么,并且給出期望結果的原因,可能是引用的規格說明書、前一版本的表現行為、客戶一般需求、排除雜亂信息的需要等等。
為了更清楚地理解良好的期望結果應該包含什么信息,請看下面的例子:
Expected result:
The text that appears should be fully highlighted so that if the user wishes to make changes, they don’t have to manually highlight and then type (as in Mac OS 10.x and Windows behavior.)
為什么說這個例子很好呢?因為它包含了如下內容:
4.5 注釋(Notes)
注釋應該包括復現步驟中可能引起混亂的補充信息,是對操作步驟的進一步描述,這些補充信息是復現缺陷或隔離缺陷的更詳細的內容。
注釋部分可以包含以下各方面的內容:
例如,缺陷的注釋可能包含下面的內容:
Notes:
5. 缺陷報告的寫作注意事項
提高缺陷報告的寫作水平是不斷積累經驗,循序漸進的過程。在正式提交缺陷報告前,請對缺陷報告的內容和格式進行自我檢查,避免很多不必要的錯誤。
5.1 自我檢查和提問
5.2 避免常見的錯誤
原文轉自:http://www.anti-gravitydesign.com