软件测试入门基础
上一篇 / 下一篇 2008-12-02 16:51:45 / 个人分类:测试资料
软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编码和单元测试属于软件生存期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。
^E3xn0sx0
SRT)lr5_;UF0一、软件测试的目的
-FzCI9w0
4}ajz7ou.Q0g1X0 软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。
#]2q8N(P d051Testing软件测试网4f(@nf&_ZB'gl5}N
第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。51Testing软件测试网*XgJ3x4bF,C5e
8HpE/L"L0 第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。
(xR0{_1g)r[0
`/[SuJ4Vr9w0 软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined AS confORMance to requirements, not as “gOODnESs” or “eleGAnce”.)。四、质量也代表着它符合客户的需要(Quality also means “meet cuSTomer needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。
7`jyU?zd0
f,q%fyl!n0 测试人员在软件开发过程中的任务:51Testing软件测试网Z6Bp$AB:bc
|%E7vSJ6X6{0 1、寻找Bug;
)G5T.r^4\6F^.? ^0 2、避免软件开发过程中的缺陷;51Testing软件测试网3G~|H1rG
3、衡量软件的品质;51Testing软件测试网&^1IA![\4V
4、关注用户的需求。
W+hTK3^WT(E`051Testing软件测试网 uPv"ROis]-f
总的目标是:确保软件的质量。
fd%R&AKf;n8L x)B051Testing软件测试网L8s!H}H
二、软件测试的原则
M?j6]Y's1}/r}6j051Testing软件测试网u6^-lX+Jy a-h[
51Testing软件测试网g9r W0L L:n V D:g
软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。
7^?'cE2b051Testing软件测试网g:Wo*Sy/svS D6E.t6m
为了达到上述的原则,那么需要注意以下几点:51Testing软件测试网F"f C8dZ{bL{cZ5ee
1.应当把“尽早和不断的测试”作为开发者的座右铭
$]G2i7t KJ02.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完。51Testing软件测试网0]fEE}(C-[u%Da
3.设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。51Testing软件测试网+w x(T@/?5e M-~r
4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
3b$zQw~j9c$G05.对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
%VUzOZ9aF06.制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。51Testing软件测试网3UgkI][uL&G8v&\
7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。51Testing软件测试网`i"CB^0lK
8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。51Testing软件测试网k~:pjd)[$J-rAw
;r:x1k }-zWm0
O7O.KH@Y[0三、软件测试的对象51Testing软件测试网;}-lJ&Ghm
51Testing软件测试网 qsUQ/U EoB)h
软件测试并不等于程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试的对象。51Testing软件测试网 _;D*u{!j)iepA
)?vF ` m4r$V0 在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来。51Testing软件测试网Q1@OcjO&Q;D
'r._l1SCcg.X051Testing软件测试网0W,l2x,e5dt4CA~8b
四、软件测试方法51Testing软件测试网Ar'?(Y"~5v
51Testing软件测试网%x7sg;\#zG[ [
51Testing软件测试网:x9iU3]@
软件测试的基本方法51Testing软件测试网4w ^qQ v:Y B,D
单元测试的基本方法
fs)R/C m0综合测试的基本方法
?8h zvRo2`0确认测试的基本方法51Testing软件测试网Xbw6GoP
系统测试的基本方法
*O3x1\;dEyo0软件测试的基本方法
NBsyUoT*wJ0e0
)p.XM^%`7Q;c3a0 软件测试的方法和技术是多种多样的。51Testing软件测试网"B1sS"f$pV1sd
对于软件测试技术,可以从不同的角度加以分类:
}d5`tQ ~{051Testing软件测试网.O%B&LeEz;m
从是否需要执行被测软件的角度,可分为静态测试和动态测试。51Testing软件测试网vk*B#Bl%O
从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试;51Testing软件测试网MoBtqZW6~bY
L_J#q"FK[ XVF2X x01、黑盒测试
7K(nS;_LA.}6Q9A051Testing软件测试网8uHY:bv {
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。51Testing软件测试网&@u&|)B3[)~}kKl
;|&eaPn)pr6F02、白盒测试51Testing软件测试网OiemmTfRq
Bf@}v+}Pv5@J0 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
KTP:rr~K9q051Testing软件测试网%z9X+w {'J_J bq)E
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。51Testing软件测试网d8?(Lfn8]p#Q1XY
51Testing软件测试网3}|AlQS;^
3.ALAC(Act-like-a-customer)测试
f#N-i:k2S)N'b)_$E L:Z E051Testing软件测试网L/c'n!a@h%X4Kg
^E3xn0sx0
SRT)lr5_;UF0一、软件测试的目的
-FzCI9w0
4}ajz7ou.Q0g1X0 软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。
#]2q8N(P d051Testing软件测试网4f(@nf&_ZB'gl5}N
第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。51Testing软件测试网*XgJ3x4bF,C5e
8HpE/L"L0 第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。
(xR0{_1g)r[0
`/[SuJ4Vr9w0 软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined AS confORMance to requirements, not as “gOODnESs” or “eleGAnce”.)。四、质量也代表着它符合客户的需要(Quality also means “meet cuSTomer needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。
7`jyU?zd0
f,q%fyl!n0 测试人员在软件开发过程中的任务:51Testing软件测试网Z6Bp$AB:bc
|%E7vSJ6X6{0 1、寻找Bug;
)G5T.r^4\6F^.? ^0 2、避免软件开发过程中的缺陷;51Testing软件测试网3G~|H1rG
3、衡量软件的品质;51Testing软件测试网&^1IA![\4V
4、关注用户的需求。
W+hTK3^WT(E`051Testing软件测试网 uPv"ROis]-f
总的目标是:确保软件的质量。
fd%R&AKf;n8L x)B051Testing软件测试网L8s!H}H
二、软件测试的原则
M?j6]Y's1}/r}6j051Testing软件测试网u6^-lX+Jy a-h[
51Testing软件测试网g9r W0L L:n V D:g
软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。
7^?'cE2b051Testing软件测试网g:Wo*Sy/svS D6E.t6m
为了达到上述的原则,那么需要注意以下几点:51Testing软件测试网F"f C8dZ{bL{cZ5ee
1.应当把“尽早和不断的测试”作为开发者的座右铭
$]G2i7t KJ02.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完。51Testing软件测试网0]fEE}(C-[u%Da
3.设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。51Testing软件测试网+w x(T@/?5e M-~r
4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
3b$zQw~j9c$G05.对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
%VUzOZ9aF06.制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。51Testing软件测试网3UgkI][uL&G8v&\
7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。51Testing软件测试网`i"CB^0lK
8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。51Testing软件测试网k~:pjd)[$J-rAw
;r:x1k }-zWm0
O7O.KH@Y[0三、软件测试的对象51Testing软件测试网;}-lJ&Ghm
51Testing软件测试网 qsUQ/U EoB)h
软件测试并不等于程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试的对象。51Testing软件测试网 _;D*u{!j)iepA
)?vF ` m4r$V0 在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来。51Testing软件测试网Q1@OcjO&Q;D
'r._l1SCcg.X051Testing软件测试网0W,l2x,e5dt4CA~8b
四、软件测试方法51Testing软件测试网Ar'?(Y"~5v
51Testing软件测试网%x7sg;\#zG[ [
51Testing软件测试网:x9iU3]@
软件测试的基本方法51Testing软件测试网4w ^qQ v:Y B,D
单元测试的基本方法
fs)R/C m0综合测试的基本方法
?8h zvRo2`0确认测试的基本方法51Testing软件测试网Xbw6GoP
系统测试的基本方法
*O3x1\;dEyo0软件测试的基本方法
NBsyUoT*wJ0e0
)p.XM^%`7Q;c3a0 软件测试的方法和技术是多种多样的。51Testing软件测试网"B1sS"f$pV1sd
对于软件测试技术,可以从不同的角度加以分类:
}d5`tQ ~{051Testing软件测试网.O%B&LeEz;m
从是否需要执行被测软件的角度,可分为静态测试和动态测试。51Testing软件测试网vk*B#Bl%O
从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试;51Testing软件测试网MoBtqZW6~bY
L_J#q"FK[ XVF2X x01、黑盒测试
7K(nS;_LA.}6Q9A051Testing软件测试网8uHY:bv {
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。51Testing软件测试网&@u&|)B3[)~}kKl
;|&eaPn)pr6F02、白盒测试51Testing软件测试网OiemmTfRq
Bf@}v+}Pv5@J0 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
KTP:rr~K9q051Testing软件测试网%z9X+w {'J_J bq)E
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。51Testing软件测试网d8?(Lfn8]p#Q1XY
51Testing软件测试网3}|AlQS;^
3.ALAC(Act-like-a-customer)测试
f#N-i:k2S)N'b)_$E L:Z E051Testing软件测试网L/c'n!a@h%X4Kg