走进单元测试:测试需要从哪些方面着手

上一篇 / 下一篇  2012-07-09 09:13:44 / 个人分类:单元测试

51Testing软件测试网 M+O!HvN z|9k6O!Y y

  前言51Testing软件测试网t-wN1l8K\

51Testing软件测试网2pBHJ.I [e

  笼统的来说测试条件无非就是两个方面:① 正向测试,② 反向测试!

6eU#[ ]j\;G0

k4u"KmRB5q:x$i F U0  如果单从这两个方面来思考,肯定出现丢三落四的情况,也就是说不全面,所以应该在上面两种情况的基础上再进行具体划分,那么只要我们能够遵循这些条件基本上就能做到全面(如果能做到,大约80%的问题应该都解决了),于是就出现了下面要说的六个方面内容!

1iQuq.`0

n9y |;r;SdDv3RW0  前辈们把这些测试条件总结为:Right – BICEP51Testing软件测试网4lEqE5Aj@

\0h&a5F%g|9x0  1、Right - 做正确的事,可以说是“正向测试”

%_C3iCW,yd0

l3h-v j$l8^3r2sL0  这种测试前期任务是要准备足够的正确数据(前提是要保证数据的正确性,这个很重要),运行代码后返回的值或产生的影响是要跟自己的预期是一致的!

8S-|Aw5WgBh&x B0

p;Q:X [/x!e0  注意:如果准备的数据太大或容易丢失,建议把它放在数据文件中,然后让单元测试读取这个文件,这种方法会在下一篇会说到!

6s pE"R!DOvV051Testing软件测试网:AY i*e5P/r4i+Z*O3\}

  2、B - 边界条件(Boundary)51Testing软件测试网`2B.lA*w;X?

51Testing软件测试网Fw ZFo9S%Uri

  边界条件是测试里面的重中之重,必须要有足够的认识和重视!51Testing软件测试网U7w2Zmm A

eeT&Dv9v?4Y0  而它又被分为七个方面的子条件,下面就让我们来一一熟悉它!51Testing软件测试网{^0g4^9N

J0X;f\ jen(N v&]i0  ① 一致性(Conformance)51Testing软件测试网 z6k OZ+RW

51Testing软件测试网`:L8f(W9YR&[:@

  数据是否符合我规定的格式(也可以说是非法字符吧)!

h!Q[-l#MF0

h)gPn8K0  案例:比如我传入的参数文件名需要的格式是:文件名 + 日期(yy-mm-dd) + 扩展名,那么我就要写一个测试传入的文件名为 :“sa#$#$#$#”这样的格式!51Testing软件测试网 r8mgo@hq*R

^ig-[3?t0  ② 有序性(Ordering)

#L Xpmd,r"KP\051Testing软件测试网K7w5\mt4I!R

  这方面主要是对涉及到数组和集合的数据,而且对数据的顺序有严格要求的函数,需要对它们里面数据的顺序进行测试!51Testing软件测试网l2A)~MGY

:U8g\*`Ea8U;IO0  比如:点菜系统菜谱中每道菜的顺序,或者去银行办理业务的排队系统等等!

6e[ p5`n;sE \q$n%U051Testing软件测试网n}9p"S nT

  ③ 范围,区间性(Range)

.d!i Z#c ]4`P5C0

cM Kox d#tZ U0  值是否存在于一个最大值和一个最小值之间,主要是对值类型的数据做的测试!

_w?AcoG.ZlJ0

!Y ],rz&j~(Qn0  这里面还有一个重要的测试点是 → 对数组,集合,以及Table,DataSet中的索引值进行测试,比如索引值不能为负,不能超出索引的范围等等情况!

hJ4zHu#{,D;W+T:|&^N0

I `(dG%B0  比如:一个通过ID来搜索信息的函数,应该对这个ID进行最大值和最小值的测试!51Testing软件测试网n3G*|.N mf

iCfu&u'JF`V'J0  ④ 引用,耦合性(Reference)

8~X3zH_A+`051Testing软件测试网i[i,Lb&Q-d8V a0f

  这方面主要是:代码是否引用了一些不受本身代码控制的外部因素(比如:调用第三方接口,调用其它模块的接口等等)!

5x3TEns051Testing软件测试网y H dYj W

  对于这些情况我们是没有办法控制的,所以在测试的时候只能模拟,而在模拟时我们会用到“Mole”技术,让它来帮助我们创建一个模拟环境(下一篇会介绍)!51Testing软件测试网i|8X^:A$z2G

N0Nl:s oi,}#B0  比如:有的项目会调用银行接口,这种情况下只能先创造一个虚拟银行接口,然后再进行测试!51Testing软件测试网A`n9X~+ik.yNs

Z%f+u/z"q0  ⑤ 存在性(Exist)

2R'C LNWmk051Testing软件测试网b%uji9RxbI&v+g

  固定的测试,如Null,Empty,非零等等,这些都是必须考虑的!51Testing软件测试网bTd E9GD%I:B'h:B

\CeQ.y0  ⑥ 基数性(Cardinality)

.r0TMb m8F;a(h([051Testing软件测试网Y-o7w.mR&^+w

  对于这个测试说起来还是蛮难理解,这个测试只有在特定的场合下才会去考虑它!

w~1DX B%[@`0

kR4}2M8xsQoc)Y0  它遵循一个原则:“0-1-N”!

UXZ;Soe051Testing软件测试网 LY@ H [bR

  ⑦ 时间性(Timer)

6M(O*n"b.Fj0s(z0

?p}k&] oMe2S0  对时间比较有依赖的软件或系统应该在这个方面着重测试!

s.m,V8NL9Z0

`awv;R8p U%}.Xr0  主要考虑:事情是否按时间的顺序执行,是否在正确的时间执行,是否出现执行事情延误了!51Testing软件测试网.Cg U7p"JQl3TO

51Testing软件测试网DPQ f'n`$Q

  相对时间:网站超时,数据更新超时等等!51Testing软件测试网"o&N6F&] q

g0WV3uG"X[;v0  绝对时间:不同的client间的时间是否同步!

h_EK,IJx1A1v4pa051Testing软件测试网#{{;bcXu"p0D

  并发问题在时间性测试中比较重要!51Testing软件测试网{m*`I!O;J4k$w |*f

a/qm7ym0 3、I - 反向关联(Inversion)

'no'cL${o oJ051Testing软件测试网 ~;A(LJR|&v

  在准备数据或者验证数据时的一种反向思维,涉及到个人的思维方式问题了!

j QU;P"@A1T0

d/[b5k#M&TL2x N0  比如:有个函数对数据库进行了操作,但是它没任何返回值也没有任何提示,如果你是对正确的数据进行了测试,那么你要怎么知道测试结果跟你的预期一致呢,这里你就应该去查找数据库,看数据库里面的数据是否有真的改动,这就是一种反向的思维方式!51Testing软件测试网 N;_5K_)p p

8d(m v4NiX^0  4、C - 交叉检查(Cross)51Testing软件测试网sQg%n P+?

%a#N[ Ze!e(}L^ n0  用一种数量检查另一种数量(需要考虑的情况不是很多)!51Testing软件测试网 X|&xOH#E+yk%]7QO,lLb

51Testing软件测试网D2Z,|t6D.|%y0[)]:r

  5、E - 强制产生错误(Error)

{0M!amI J0

#YwMErMM$p(b0  通过代码强制产生软件在运行过程中出现的特殊情况!

1GA.[2m0Dsue,\051Testing软件测试网?cV+_)s3u/t,e

  可以参考下面几种测试方面:内存耗光,磁盘用满,断电,正在执行更新数据时出现断网现象,网络负载严重导致瘫痪,系统时间出现导致和国际时间不一致等等一些情况!51Testing软件测试网^5j"z)@K7x4d

!{:I1k s"T0  6、P - 性能特性(Property)

"M | p;i3m{}^_(J0

lW)_"L4p }6m0  性能测试工具的使用,没具体研究过性能测试工具,知道的朋友可以说下你们的经验!

$a+C1y@2J@Kz#n051Testing软件测试网W"W_3to'BU

  进行压力测试,一点一点的加大数据量,10000条,100000条,1000000条这样进行压力测试!

+].PR:@/Aa$JB2K^1V0

\%o QWTZa0  总结:本人对反向关联和交叉检查这两个测试条件不是很理解,知道的朋友可以留言给我,我会把它补充到文章中去!51Testing软件测试网i@'n3t4p2I,p%| t'FS

51Testing软件测试网e%Q-\RuX4U/c g

  最后:下面是我对测试条件的小小总结,比较简陋!

!y%kb`6yf0

51Testing软件测试网LPYL1F4Z


TAG:

 

评分:0

我来说两句

Open Toolbar