软件测试组织与方法(zt)
上一篇 / 下一篇 2005-01-05 18:31:39 / 个人分类:转贴好文
查看( 4885 ) /
评论( 30 )
随着计算机硬件成本的不断下降,软件在整个计算机系统的成本中占有越来越高的比例,如何提高软件质量是整个计算机软件行业的重大课题。软件测试作为软件开发的一个重要环节,日益受到人们的重视。为了尽可能多地找出程序中的错误,生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。
1Pg%xR'K q vr~.w0 51Testing软件测试网%HYcvYwGa[R`
一、 软件生存周期51Testing软件测试网z3W-w/\$l"H:h
^be^sFt0 一个软件从开始计划起,到废弃不用止,称为软件生存周期。一般来说,软件生存周包括计划、开发、运行三个时期,每一时期又可分为若干更小的阶段。计划时期的主要任务是分析用户要求,分析新系统的主要目标以及开发该系统的可行性。开发时期要完成设计和实现两大任务具体。具体分为需求分析、概要设计、详细设计、编码、测试。其中编码和测试是软件开发期的最后两个阶段。运行时期是软件生存周期的最后一个时期,软件人员在这一时期的工作,主要是做好软件维护。
;H t.`v8x0
[5[vA u;p0 统计表明,开发较大规模的软件,有40%以上的精力是耗费在测试上的,即使富有经验的程序员,也难免在编码中发生错误,何况,有写错误在设计甚至分析阶段早已埋下祸根,无论是早期潜伏下来的错误或编码中新引入的错误,若不及时排除,轻者降低软件的可靠性,重者导致整个系统的失败。为防患于未然,强调软件测试的重要性是必要的。51Testing软件测试网6np?:\,wx4~ B:{
/f6J.gSba0 二、 测试的过程与方法51Testing软件测试网iXWx0hG ^xQ5eD|
C9^8Ony5L*VB0 1、 测试的目的51Testing软件测试网7S/n.b6^ pL$q H
51Testing软件测试网;m;Nm4i`W4G
在G.J.Myers的经典著作《软件测试技巧》中,给出了测试的定义: "程序测试是为了发现错误而执行程序的过程"。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有"破坏性",测试可视为分析、设计和编码3个阶段的"最终复审",在软件质量保证中具有重要地位。为了确保软件的质量,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。51Testing软件测试网"A3ylCk'c;?%hN
J)pd W!z,xE0 2、测试的过程51Testing软件测试网l+VxPt-R9CS
b h%^'mo-DVi'NE(A0 当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。51Testing软件测试网OX-]#Y V9{$i
51Testing软件测试网#m\)nOk_
在实现组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:51Testing软件测试网8I eV1FQ+s
2K4? X1ogu0 (1)首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。
j!H5|9l#Cj0
Sx My8x}5C0 (2)为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收测试。
k6{qxM0 51Testing软件测试网K_9W3EQ$[d$V
(3)代码会审:
PU?dzv0
u7QWQ8P2VS0 代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长,2~3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。51Testing软件测试网9dyk.v O
51Testing软件测试网e'xI!\5kS
(4)单元测试:51Testing软件测试网2c4A4KYT3v&A
W a5s&g.x] V0 单元测试集中在检查软件设计的最小单位-模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。由于模块规模小、功能单一、逻辑简单,测试人员有可能通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,采用结构测试(白盒法)的用例,尽可能达到彻底测试,然后辅之以功能测试(黑盒法)的用例,使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础。51Testing软件测试网 oY1O,b[7se;Y
51Testing软件测试网 rwoLk#L
(5)集成测试:
5]9D'|@"t.[:R5H#x0
X7PRqD7S0 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。
iI K%]\s)J5vXT0 51Testing软件测试网 WPK`2j LG5dQ
(6)验收测试:
A[zu%QR0
3[u#DxD'T~_0 验收测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。51Testing软件测试网2Z(FDN,P
51Testing软件测试网 WX`/e/b
经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束,经验收后,将软件提交用户。51Testing软件测试网 ~:@7MoRq4x4O-a
c$a6MK|}t0 3.测试方法分析51Testing软件测试网W(FL~QkA#g
51Testing软件测试网ag3kU6t;^ij)M"[
集成测试及其后的测试阶段,一般采用黑盒方法。51Testing软件测试网b S-a!C+A9U/V
51Testing软件测试网9ZRLi%`s-}'N6`
(1)用边值分析法和(或)等价分类法提出基本的测试用例;51Testing软件测试网+D j f a*I_g Y
1Pg%xR'K q vr~.w0 51Testing软件测试网%HYcvYwGa[R`
一、 软件生存周期51Testing软件测试网z3W-w/\$l"H:h
^be^sFt0 一个软件从开始计划起,到废弃不用止,称为软件生存周期。一般来说,软件生存周包括计划、开发、运行三个时期,每一时期又可分为若干更小的阶段。计划时期的主要任务是分析用户要求,分析新系统的主要目标以及开发该系统的可行性。开发时期要完成设计和实现两大任务具体。具体分为需求分析、概要设计、详细设计、编码、测试。其中编码和测试是软件开发期的最后两个阶段。运行时期是软件生存周期的最后一个时期,软件人员在这一时期的工作,主要是做好软件维护。
;H t.`v8x0
[5[vA u;p0 统计表明,开发较大规模的软件,有40%以上的精力是耗费在测试上的,即使富有经验的程序员,也难免在编码中发生错误,何况,有写错误在设计甚至分析阶段早已埋下祸根,无论是早期潜伏下来的错误或编码中新引入的错误,若不及时排除,轻者降低软件的可靠性,重者导致整个系统的失败。为防患于未然,强调软件测试的重要性是必要的。51Testing软件测试网6np?:\,wx4~ B:{
/f6J.gSba0 二、 测试的过程与方法51Testing软件测试网iXWx0hG ^xQ5eD|
C9^8Ony5L*VB0 1、 测试的目的51Testing软件测试网7S/n.b6^ pL$q H
51Testing软件测试网;m;Nm4i`W4G
在G.J.Myers的经典著作《软件测试技巧》中,给出了测试的定义: "程序测试是为了发现错误而执行程序的过程"。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有"破坏性",测试可视为分析、设计和编码3个阶段的"最终复审",在软件质量保证中具有重要地位。为了确保软件的质量,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。51Testing软件测试网"A3ylCk'c;?%hN
J)pd W!z,xE0 2、测试的过程51Testing软件测试网l+VxPt-R9CS
b h%^'mo-DVi'NE(A0 当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。51Testing软件测试网OX-]#Y V9{$i
51Testing软件测试网#m\)nOk_
在实现组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:51Testing软件测试网8I eV1FQ+s
2K4? X1ogu0 (1)首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。
j!H5|9l#Cj0
Sx My8x}5C0 (2)为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收测试。
k6{qxM0 51Testing软件测试网K_9W3EQ$[d$V
(3)代码会审:
PU?dzv0
u7QWQ8P2VS0 代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长,2~3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。51Testing软件测试网9dyk.v O
51Testing软件测试网e'xI!\5kS
(4)单元测试:51Testing软件测试网2c4A4KYT3v&A
W a5s&g.x] V0 单元测试集中在检查软件设计的最小单位-模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。由于模块规模小、功能单一、逻辑简单,测试人员有可能通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,采用结构测试(白盒法)的用例,尽可能达到彻底测试,然后辅之以功能测试(黑盒法)的用例,使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础。51Testing软件测试网 oY1O,b[7se;Y
51Testing软件测试网 rwoLk#L
(5)集成测试:
5]9D'|@"t.[:R5H#x0
X7PRqD7S0 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。
iI K%]\s)J5vXT0 51Testing软件测试网 WPK`2j LG5dQ
(6)验收测试:
A[zu%QR0
3[u#DxD'T~_0 验收测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。51Testing软件测试网2Z(FDN,P
51Testing软件测试网 WX`/e/b
经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束,经验收后,将软件提交用户。51Testing软件测试网 ~:@7MoRq4x4O-a
c$a6MK|}t0 3.测试方法分析51Testing软件测试网W(FL~QkA#g
51Testing软件测试网ag3kU6t;^ij)M"[
集成测试及其后的测试阶段,一般采用黑盒方法。51Testing软件测试网b S-a!C+A9U/V
51Testing软件测试网9ZRLi%`s-}'N6`
(1)用边值分析法和(或)等价分类法提出基本的测试用例;51Testing软件测试网+D j f a*I_g Y