因此,软件测试工程师必须认识到书写软件缺陷报告是测试执行过程的一项重要任务,首先要理解缺陷报告读者的期望,遵照缺陷报告的写作准则,书写内容完备的软件缺陷报告。本文将阐述软件测试缺陷报告的读者,描述软件缺陷报告的主要组成部分和各部分的书写要求,指出某些常见错误和实用改进方法,最后总结了缺陷报告的写作要点。
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 避免常见的错误