他山之石,可以攻玉——说说软件测试方法

上一篇 / 下一篇  2012-04-05 09:13:04 / 个人分类:杂谈

他山之石,可以攻玉”这一富有哲理的成语很多人耳熟能详,但出处及全诗最初意义估计会被现在的释义转换了。其最初便出自于诗经·小雅·鹤鸣,而原诗并不意在阐释哲理,而是赞颂园林池沼的美丽。本篇说的也不是阐释哲理,也不赞颂园林之美,只是借用一下表述一下软件测试方法,我们知道同样是一头牛,疱丁解的和我们解的就会不一样,原因无他,方法正确,结构熟悉,那么软件测试的方法又有哪些呢?

~ T RNP:A0  测试的基本方法有两种:白盒子和黑盒子测试方法,现在来说还有白加黑的测试,即灰盒测试。那何为白盒,又何为黑盒呢,灰盒又是什么?51Testing软件测试网 y"PrC-e!["Unb

2G8j9lo(v'mP0  1、白盒子51Testing软件测试网/wl^!y6Gu~5]] epS

'Y_}:E{0  白盒子测试就是一种透明测试方法,测试者必须完全了解功能或特性实现的内部结构和细节。针对软件测试,白盒子测试就是通过阅读所测试软件的原代码,掌握程序所要求的参数、初始数据,设计CASE, 使测试能遍历所有路径(分支)和满足各种条件。

!S3k {%a?q"JI{0

7`n7o+Kol aGjv0  白盒子测试的要点是:51Testing软件测试网CM(]1cP lN9g

51Testing软件测试网V)z5Y2| W

  ● 确定代码测试的控制点51Testing软件测试网 Bl wwkft

b*R6E$[+X5^9t0  ● 要求了解主要变量、每个函数和类、对象的作用

qZ LpP-m3rc:V051Testing软件测试网n*r)t9V8b2bu wL8}FB

  ● 逻辑驱动能力

| i a \6d5L&g4@x051Testing软件测试网c(l(E-xI;B$Sb |+h E

  ● 编写手工测试程序51Testing软件测试网*o5m\2Tb]

51Testing软件测试网yp3UH FQ(t v

  ● 对过程性细节做检查51Testing软件测试网.C3d%Y W*CC

[W3[au0  ● 对程序所有逻辑路径进行测试

0o.Ur^&G"U(MAQ051Testing软件测试网/tAl"uyw/a'|+c

  白盒测试最关键是代码的覆盖面,包括:51Testing软件测试网Z|7n$].['UTJoB

@Lg%?u:y)i0  ● 有选择地执行程序中某些最具有代表性的通路

@G#[z2WOqA/LOlW051Testing软件测试网7T9KZ[%nB

  ● 语句覆盖:使程序中每个语句至少执行一次,51Testing软件测试网Ly^H1}]

2{u5Ts;iM5_B4N Un+lU0  ● 条件覆盖:每个判断的每个条件的可能取值至少执行一次51Testing软件测试网#M~ ` e.NE V

51Testing软件测试网SXv$E0A*l%fZ

  ● 条件组合覆盖:使得每个判定表达始终条件的各种组合都至少出现一次

+q8DtTwMT051Testing软件测试网BTBU3E'p

  ● 路径覆盖:使程序的每条可能路径都至少执行一次

-@;r3`&c ZYA0

}?!ci9{6u} b/{0  2、黑盒子

&Ee!m0LN MJ4K:E051Testing软件测试网Y"D9d8bY%MJ/Bt

  黑盒子测试就是不要了解功能或特性实现的内部结构和细节,把程序、模块或产品看成一个黑盒子,检查是否符合功能说明,适当地接受输入,产生输出,并保持外部信息完成性,要清楚系统或模块要达到的目的或期望值(输入/输出结果)。

}\3t1?sV~G4s3L0

Gy,qb6IK-Le h0  测试者只关心系统应该做些什么,而不管它是怎样实现的。这种方法要点是:51Testing软件测试网)u,ZEr IIHz

x]:j!_@0  ● 自动创建51Testing软件测试网P\d3@E\([ Pv'B,u

p5v9a"G`2Mm7U0  ● 类、对象和函数知识的限制51Testing软件测试网(qS k7S&|D!gf'z

'G-Th a} D0  ● 规范所特定的Case Table51Testing软件测试网 RR"J Hs2gO pU

1Z ?:irD/S0  ● 数据驱动51Testing软件测试网~f1qoL*u HZ

O5gc5S!s7` Y/FW0  黑盒子测试的一些具体方法有:

;l"a `*ia?051Testing软件测试网!H+B0ECI[Ft

  ● 等价类划分黑盒测试,等价类是子集,其中的数据对于揭露程序中的错误是等效的。划分等价类是根据经验和探索性的工作,设计测试用例,使其尽可能多地覆盖有效等价类,直到所有有效等价类被覆盖

)K UnB3oI _2Z051Testing软件测试网 O)ZV"C%jcw

  ● 边界值分析黑盒测试,它是对等价类划分的补充,不是从等价类中随便选一个数据作为代表,而是选几个特定值测之等于、刚刚大于、刚刚小于边界值。51Testing软件测试网2Yz,z%V'q)EN'S8b sr

51Testing软件测试网!M0p1iO5I-k9z-s

错误推测法,靠经验和直觉推测程序中可能存在的错误,从而针对性的编写例子51Testing软件测试网_,B}I P`%mVc

&ZCHN L1DF0  ● 因果图,适合检查输入条件的各种组合情况

:K5df'j}v.BbK051Testing软件测试网^wK6j%@.])t9PH+uB

  ● 功能图,形式化地表示程序的功能说明,从而生成测试用例

9l|"YlaU4\0

,BCv G~+c rv?8V0  3、灰盒

PM.?aE!@ Y0

$^Y8J!R#g:o0  灰盒测试定义为将根据需求规范说明语言(RSL)产生的基于测试用例的要求(RBTC),用测试单元的接口参数加到受测单元,检验软件在测试执行环境控制下的执行情况。灰盒测试法的目的是验证软件满足外部指标要求以及软件的所有通道都进行了检验。通过该程序的所有路径都进行了检验和验证后,就得到了全面的验证。完成功能和结构验证后,就可随机地一次变化一行来验证软件测试用例在软件遇到违背原先验证的不利变化时软件的可靠性。灰盒测试法是在功能上验证嵌入式系统软件的一种10步骤法。

%ZH _c4HL0

n:Iix J!~9X0  一般来说,单元测试采用白盒子方法,有效性测试采用黑盒子方法,集成测试采用混合方法51Testing软件测试网'l%wC|+c

51Testing软件测试网6Y$B*l.X$].M

  4、其它测试技术和方法51Testing软件测试网,`!yb|$^Qi

51Testing软件测试网5H&_2` K3lGa

  ● 回归测试 (Regression testing)── 每当软件经过了整理、修改、或者其环境发生变化,都重复进行测试。很难说需要进行多少次回归测试,特别是是到了开发周期的最后阶段。进行此种测试,特别适于使用自动测试工具。51Testing软件测试网H,MgJ-N;aW

;~*N\&BB%O0  ● 压力测试 (Stress testing)──这种测试是用来检查系统在大负荷条件下系统运行的情况:在非正常的巨大负荷下、某些动作和输入大量重复、输入大数、对数据库进行非常复杂的查询等等,如测试一个网站在不同负荷情况下的状况,以确定在什么情况下系统响应速度下降或是出现故障。也可称性能测试 (performance testing),理想的“性能测试”(也包括其他任何类型的测试) 都应在质量保障和测试计划的文档终予以规定。51Testing软件测试网#s Vf6w?B D;ica}

DZV$`+C0n#s9g8zf|0  ● 恢复测试 (Recovery testing)── 在系统崩溃、硬件故障、或者其他灾难发生之后,重新恢复系统的情况。

C4A1X#_,b t051Testing软件测试网c NQ_K1xF3q3N

  ● 安全测试 (Security testing)── 测试系统在应付非授权的内部/外部访问、故意的损坏时的防护情况。

+t8c_wY)y$iMX4v|$N0

m JCB a6W @T0  ● 兼容性测试 (Compatibility testing)── 测试在特殊的硬件/软件/操作系统/网络环境下的软件表现。51Testing软件测试网Y1e\*q4e Kug

'v7O ZdGG7r_0  5、自动测试工具的作用51Testing软件测试网Y:z"N3x/u/l3em

51Testing软件测试网M;B"C%wjl'C

  利用自动测试工具可以进行大量的重复性测试,减少劳动强度,而且可以进行那些手工不能实现的负载/性能测试案例,如大量的并发用户操作、成千上万条数据库纪录的操作等。除此之外,还可以进行:

u Q(j3o v!}3A051Testing软件测试网 kO qg V L

  ● 代码分析:监视代码的复杂程度,坚持标准,等等。51Testing软件测试网8h7R7VB@AfT

0t3`-D]VV$U0  ● 覆盖分析:这种工具指出哪些代码已经经过测试,可以针对代码语句覆盖、条件覆盖、和路径覆盖等。51Testing软件测试网(Y:p%V(c%Sx"\2`M

,v'Cd8E,QlM0  ● 存储分析:例如边界测试和泄漏检查 (bounds-checkers and leak detectors)51Testing软件测试网+~g6K(^+_MF x C

51Testing软件测试网8q+L'O"`"V\7HG c

  ● Web测试──检查链接是否有效、HTML 代码是否正确,检查客户端和服务器端的工作、web 站点的交互功能是否安全。

qq}^C051Testing软件测试网7Wpu-oCo

  ● 其他工具──用于测试案例管理、错误报告、以及结构管理。

B yoEX\![sx0

I%zyQL_0  6、软件可靠性和程序证明技术51Testing软件测试网mW3X;a/js$Iq0o

51Testing软件测试网 Pm7b m#e:e&s

  测试可以发现错误,并不能表明程序的正确性。因为:不论黑盒、白盒都不能实现穷举测试。对一些关键程序,如导弹发射软件,则需要考虑利用数学归纳法或谓词演算等进行证明。其基本思想是对程序功能做严格数学说明,然后根据代码,利用数学归纳法或谓词演算证明它确实能实现它的功能说明。也可以利用测试数据,建立软件可靠性模型。51Testing软件测试网.L5hFOS%Ikg

51Testing软件测试网'DdTD-k5b0kL,t3\

  正确性证明不能取代测试,证明程序功能正确,动态特征无法证明,证明过程有可能出错。目前正确性证明还不实用,工作量太大,将来可能研制出自动证明系统。51Testing软件测试网N7h I Sf{dn


TAG:

 

评分:0

我来说两句

Open Toolbar