软件系统测试规范
-
上海兴汉科技公司
软件测试规范
目
录
一
.
概述
.
..................................................
..................................................
....................................1
二
软件测试理论
................................................ .................................................. .........................2
1.
什么是软件测试
...............................
..................................................
..................................2
2.<
/p>
软件测试的目标
......................
..................................................
...........................................2
三
.
软件测试流程
..
..................................................
..................................................
.....................3
1.
软件测
试流程图
...................................
..................................................
..............................3
2.
软件测试流程细则
......
..................................................
..................................................
.....3
3.
软件测试注意事项
..................................................
..................................................
...........4
四
.
软件
测试类型
..................................
..................................................
.......................................5
1.
模块测试
..........
..................................................
..................................................
...............5
2.
子系统测试
...........................................
..................................................
.............................5
3.
系统测试
..........
..................................................
..................................................
...............5
4.
验收测试
..........
..................................................
..................................................
...............5
五
.
黑盒测试方法
..............................
..................................................
...........................................6
1.
等价类划分
...............
..................................................
..................................................
.......6
2.
因果图
...
..................................................
..................................................
..........................7
3.
边值分析法
................................
..................................................
........................................7
< br>4.
猜错法
....................
..................................................
..................................................
.........7
5.
随机数法
..................................................
.............................................
错误!未定义书签。
七
.
测试错误类型
....................
..................................................
..................................................
...8
八
.
测试标准
..................................................
..................................................
..............................9
附录一
单元测试报告
..............................................
..................................................
..................
1
0
附录二
附录三
附录四
附录五
集成测试报告
..............................................
..................................................
.................. 11
测试大纲
..
..................................................
.........................................
错误!未定义书签。
测试大纲附录
.................................................
..................................................
...............
1
3
测试计划
.................................
..................................................
..........
错误!未定义书签。
附录六
程序错误报告
..............................................
..................................................
..................
1
4
附录七
测试分析报告
..............................................
..................................................
..................
1
5
软件测试规范
概述
一
.
概述
<
/p>
本规范是对项目软件测试的一份指导性文件,对软件测试过程中所涉及到的测试理论、测试
类
型、测试方法、测试标准、测试流程以及软件产品开发单位所承担的职责进行总体规范
,以有效保
证软件产品的质量。
- 1 -
软件测试规范
软件测试理论
二
软件测试理论
1.
什么是软件测试
无论怎样强调软件测试的重要性和它对软件可靠性的影
响都不过分。在开发大型软件系统的漫
长过程中,面对着极其错综复杂的问题,人的主观
认识不可能完全符合客观现实,与工程密切相关
的各类人员之间的通信和配合也不可能完
美无缺,因此,在软件生命周期的每个阶段都不可避免地
会产生差错。我们力求在每个阶
段结束之前通过严格的技术审查,尽可能早地发现并纠正差错;但
是,经验表明审查并不
能发现所有差错,此外在编码过程中还不可避免地会引入新的错误。如果在
软件投入生产
性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中
暴露
出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。测试的目的就是在
软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关
< p>键步骤,
它是对软件规格说明、
设计和编码的最后
复审。
软件测试在软件生命周期中横跨两个阶段。
通常在编写出
每个模块之后就对它做必要的测试
(
称为单元测试
)
,模块的编写者和测试者是同一个
人,编码和单元
测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进
行各种
综合测试,
这是软件生命周期中的另一个独立的阶段,
通常由专
门的测试人员承担这项工作。
大量统计资料表明,软件测试的
工作量往往占软件开发总工作量的
40
%以上,在极端情况,测
试那
种关系人的生命安全的软件所花费的成本,
可能相当于软件
工程其他开发步骤总成本的三倍到五倍。
因此,
必须高度重视软
件测试工作,
绝不要以为写出程序之后软件开发工作就接近完成了,
实际上,
大约还有同样多的开发工作量需要完成。仅就测试而言,它的目标是发现软
件中的错误,但是,发
现错误并不是我们的最终日的。软件工程的根本目标是开发出高质
量的完全符合用户需要的软件。
2.
软件测试的目标
下面这些规则也可以看作是测试的目标或定义:
(1)
测试是为了发现程序中的错误而执行程序的过程;
(2)
好的测试方案是极可能发现迄今为止尚未发现的
错误的测试方案;
(3)
成功的测试是发现了至今为止尚未发现的错误的测试。
从上述规则可以看出,
测试的正确定义是
“为了发现程序中的错误而执行程序的过程”
。
这和某些人<
/p>
通常想象的“测试是为了表明程序是正确的”
,
< br>“成功的测试是没有发现错误的测试”等等是完全相
反的。正确认识测试的目标是
十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是
正确的而进行测试,
就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的
错误,就会
力求设计出最能暴露错误的测试方案。
由于测试的目标是暴露
程序中的错误,
从心理学角度看,
由程序的编写者自己进行测试
是不恰当的。
因此,在综合测试阶段通常由其他人员组成测试小组来完成测试工作。此外
,应该认识到测试决不
能证明程序是正确的。
即使经过了最严格
的测试之后,
仍然可能还有没被发现的错误潜藏在程序中。
测试
只能查找出程序中的错误,不能证明程序中没有错误。
- 2 -
软件测试规范
软件测试流程
三
.
软件测试流程
1.
软件测试流程图
编写
《测试用例》
参与需求分析,了解项目需求内容
了解需求变更
制定《测试计划
》
No
Y
es
填写
《错误报告》
Y
编写
《测试总结报告》
执行测试用例
回归测试
提交
bug
,项目组进行修改
提交
《测试总结报告》
2.
软件测试流程细则
需求阶段:
测试人员了解项目需求收
集结果包括项目需求规格说明、功能结构及模块划分等。
测试人员了解项目需求变更。
测试人
员会同项目主管根据软件需求制定并确认《测试计划》
(附录五)
。
设计编码阶段:
测试人员制定《测试用例》
(附录三、附录四)
。<
/p>
项目开发组对完成的功能模块进行单元测试
< br>所有单元测试及相应的修改完成后,项目开发组组织进行集成测试
测试阶段:
项目开发组完成集成测试
后,
提交测试所要求的待测软件及各种文档、
手册、
前期测试报告
(
《需
求分
析》
、
《软件设计规范》
。
测试组安排和协调测试设备、环境等准备工作。
测试组按测试计划、测试用例的要求对被测系统进行系统测试。
填写《错误报告》
对修改后的情况进行回归测试。
测试
结束后,测试人员对测试结果进行汇总;测试主管审核测试结果,得出测试结论;测试组
进行测试分析和评估,编写《测试总结报告》
- 3 -
软件测试规范
软件测试流程
提交《测试总结报告》
。
对测试未通过的待测软件,测试人员汇总并向项目开发组提交测试错误报告。
项目开发组对测试错误报告进行确认,对有争议的问题可由上一级技术负责人确认和
仲裁;项
目开发组针对测试错误报告进行逐项修改,修改完成后再将待测软件及错误修改
情况提交及测试组
进行回归测试。
待测软件测试通过后,项目测评结束。
3.
软件测试注意事项
根据《软件开发规范》仔细检查软件的界面是否合乎要求。
(每一个子界面也
应如此)
其中,
应注意提示信息和
软件开发商信息是否正确。小的图标是否合乎要求。检查菜单当中的各项功能和
功能按钮
是否能正确使用。
根据《软件开发规范》和《用户需求》及《
软件详细设计》设计测试用例(以边界值法、等价
类划分法为主)
。
对功能界面要求注意与功能相关的信息显示及显示位置是否正确。
< br>数据输入界面应
注意文字格式及数字和文字的区别。是否能够正确保存信息。数据
查询(显示)界面应注意显示信
息是否正确和完整。
是否能正确
查询。
对打印功能要求注意打印出的报表是否正确。
(包括报表
各项
信息、数据信息和报表字体等)
。
这一项测试主要是对软件的错误处理功能进行测试。就是进行错误的操作或输入错误的数
据,
检查软件对这些情况是否能做出判断并予以提示。
特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大
的关系。
对测试错误结果一定要有一个确认的过程。
一般有
A
测试出来的错误,
一定要有一个
B
来确认,
严重的错
误可以召开评审会进行讨论和分析。
制定严格的测试计划,并
把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水
平的测试。
回归测试的关联性一定要引起充分的注意,
修
改一个错误而引起更多错误出现的现象并不少见。
妥善保存一
切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
- 4 -
软件测试规范
软件测试类型
四
.
软件测试类型
除非是测试一个
小程序,否则一开始就把整个系统作为一个单独的实体来测试是不现实的。与
开发过程类
似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系
统
通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试基本上由
< br>下述几个步骤组成:
1.
模块测试
在设计得好的软件系统中,每个模块完成一个清晰定义的子功能,而且这个子功能和同级其他
< br>模块的功能之间没有相互依赖关系。因此,有可能把每个模块作为一个单独的实体来测试,而且通
常比较容易设计检验模块正确性的测试方案。模块测试的目的是保证每个模块作为一个单元能正确
运行,所以模块测试通常又称为单元测试。在这个测试步骤中所发现的往往是编码和详细
设计的错
误。
2.
子系统测试
子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。模块相互间的协调和通
信是这个测试过程中的主要问题,因此这个步骤着重测试模块的接口。
3.
系统测试
系统测试是把经过测试的于系统装配成一个完整的系统来测试。在这个过程中不仅应该发现设
< br>计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符
合预定要求。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。
不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。
p>
4.
验收测试
验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但是它是
在用
户积极参与下进行的,而且可能主要使用实际数据
(
系统将来要处理的信息
)
进行测试。验收测试
的
目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说
明书中的错
误。
- 5 -
软件测试规范
黑盒测试方法
五
.
黑盒测试方法
黑盒测试
(black
—
box testing)
又称功能测试、
数据驱动测试或基于规范的测试。用这种方法
进行测试时,
被测
程序被当作看不见内部的黑盒。
在完全不考虑程序内部结构和内部特性的情况下,
测试者仅依据程序功能的需求规范考虑确定测试用例和推断测试结果的正确性。因此黑盒测试是
从
用户观点出发的测试,黑盒测试直观的想法就是既然程序被规定做某些事,那我们就看
看它是不是
在任何情况下都做的对。完整的“任何情况”是无法验证的,为此黑盒测试也
有一套产生测试用例
的方法,
以产生有限的测试用例而覆盖足够
多的
“任何情况”
。
由于黑盒测试不需
要了解程序内部结
构,所以许多高层的测试如确认测试、系统测试、验收测试都采用黑盒
测试。
黑盒测试首先是程序通常的功能性测试。要求:
每个软件特性必须被一个测试用例或一个被认可的异常所覆盖。
用数据类型和数据值的最小集测试。
用一系列真实的数据类型和数据值运行,测试超负荷、饱和及其他“最坏情况”的结果;
用假想的数据类型和数据值运行,测试排斥不规则输入的能力;
对影响性能的关键模块,如基本算法、应测试单元性能
(
包括精度、时间、容量等
)
。
不仅要考核“程序应该做什么
?
”还要考察“程序是否做了不该做的
2
”同时还要考察程序
在其
他一些情况下是否正常。
这些情况包括数据类型和数据值的
异常等等。
下述几种方法:
(a)
等价
类划
分,
(b)
因果图方法,
(c)
边值分析法,
(d)
猜错法,
(e)
随机数法,就是从更广泛的角度来进行黑盒
测试。每一个方法都力图能涵盖更多的“任何情况”
,但又各有
长处,综合使用这些方法,会得到一
个较好的测试用例集。
1.
等价类划分
等价类划分是一种典型的黑盒测试方法。等价类是指某
个输入域的集合。它表示对揭露程序中
的错误来说,
集合中的每
个输入条件是等效的。
因此我们只要在一个集合中选取一个测试数据即可。
等价类划分的办法是把程序的输入域划分成若干等价类,然后从每个部分中选取少数代表性数据当
p>
作测试用例。这样就可使用少数测试用例检验程序在一大类情况下的反映。
< br>
在考虑等价类时,应该注意区别以下两种不同的情况:
有效等价类:有效等价类指的是对程序的规范是有意义的、合理的输入数据所构成的集合。在具
体
问题中,有效等价类可以是一个,也可以是多个。
无效等价类:无效等价类指对程序的规范是不合理的或无意义的输入数据所构成的集合。对于具体
的问题,无效等价类至少应有一个,也可能有多个。
确定等价类有以下几条原则:
如果输
入条件规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。例如,程
序的规范中提到的输入条包括“„„项数可以从
1
到
999
„„”
,则可取有效等价类为“
l
考项数<
999
”<
/p>
,无效等价类为“项数<
l
,
,及“项数>
999
”
。
输入条件规定了输入值的集合,或是规定了“必须如何”的条
件,则可确定一个有效等价类和一个
无效等价类。如某程序涉及标识符,其输入条件规定
“标识符应以字母开头„„”则“以字母开头
者”作为有效等价类,
“以非字母开头”作为无效等价类。
如果我们确知,已划
分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划
分成更小等
价类。
输入条件
< br>。
。
。
。
。
。
。
。
。
。
。
。
p>
有效等价类
。
。
。
。
。
p>
。
。
。
。
。
。
。
无效等价类
。
。
。
。
。
。
。
。
< br>。
。
。
。
根据已列出的等价类表,按以下步骤确定测试用例:
为每个等价类规定一个唯一的编号;
设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效
- 6 -
软件测试规范
黑盒测试方法
等价类均被测试用例所覆盖;
设计一
个新的测试用例,使其只覆盖一个无效等价类。重复这一步,使所有无效等价类均被覆盖。
这里强调每次只覆盖一个无效等价类。这是因为一个测试用例中如果含有多个缺陷,有可能在测试
中只发现其中的一个,另一些被忽视。等价类划分法能够全面、系统地考虑黑盒测试的测试用例设
p>
计问题,但是没有注意选用一些“高效的”
、
“有针对性的”测试用例。后面介绍的边值分析法可以
弥补这一缺点。
2.
因果图
等价类划分法并没有考虑到输入情况的各种组合。这样虽然各个输入条件单独可能出错的情况
已经看到了,但多个输入情况组合起来可能出错的情况却被忽略。采用因果图方法能帮助我们按一
定步骤选择一组高效的测试用例,同时,还能为我们指出程序规范的描述中存在什么问题
。
利用因果图导出测试用例需要经过以下几个步骤:
分析程序规范的描述中哪些是原因,
哪些是结果。
原因常常是输入条件或是输入条件的等价类。
结果是输出条件。
分析程序规范的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”
。
由于语法或环境的限制,有些原因
和结果的组合情况是不可能出现的。为表明这些特定的情况,在
因果图上使用持殊的符号
标明约束条件。把因果图转换成判定表。把判定表的每一列写成一个测试
用例。
3.
边值分析法
边值分析法是列出单元功能、输入、状态及控制的合法
边界值和非法边界值,设计测试用例,
包含全部边界值的方法。典型地包括
IF
语句中的判别值,定义域、值域边界,空或畸形输入,末受
控状态等。边值分析法不是一类找一个例子的方法,而是以边界情况的处理作为主要目标专门设计
p>
测试用例的方法。另外,边值分析不仅考查输入的边值,也要考虑输出的边值。这是从人们的
经验
得出的一种有效方法。人们发现许多软件错误只是在下标、数据结构和标量值的边界
值及其上、下
出现,运行这个区域的测试用例发现错误的概率很高。
用边值分析法设计测试用例时,有以下几条原则:
p>
如果输入条件规定了取值范围,或是规定了值的个数,则应以该范围的边界内及刚刚超出范围
的边界外的值,
或是分别对最大、
最小
及稍小于最小、
稍大于最大个数作为测试用例。
如有规范
“某
文件可包含
l
至
255
”个记录„„“,则测试用例可选
1
和
255
及
0
和
256
等。
针对规范的每个输出条件使用原则〔
a
< br>〕
。
如果程序规范中提到的输
入或输出域是个有序的集合
(
如顺序文件、表格等
)
就应注意选取有序
集的第一个和最后一个元素作为
测试用例。
分析规范,尽可能找出可能的边界条件。一个典型
的边值分析例子是三角形分类程序。选取
a
,
< br>b
,
c
构成三角形三边,
“任意两边之和大于第三边”为边界条件。边值分析相等价类划分侧重不同,
< br>对等价类划分是一个补充。如上述三角形问题,选取
a
=
3
,
b
=
p>
4
,
c
=
5
,
a
=
2
,
b
=
< br>4
,
c
=
7
则覆盖
有效和无效等价类。如果能在等价类划分中注入边值
分析的思想。在每个等价类中不只选取一个覆
盖用例,而是进而选取该等价类的边界值等
价类划分法将更有效,最后可以用边值分析法再补充一
些测试用例。
4.
猜错法
猜错法在很大程度上是凭经验进行的,是凭人们对过去
所作的测试工作结果的分析,对所揭示
的缺陷的规律性作直觉的推测来发现缺陷的。
p>
猜错法充分发挥人的经验,在一个测试小组中集思广益,方便实用
,特别在软件测试基础较差
的情况下,很好地组织测试小组
(
也可以有外来人员
)
进行错误猜测,是
有效的测试方法。
- 7 -