我谈软件测试-1

上一篇 / 下一篇  2012-10-16 17:28:04 / 个人分类:杂谈

51Testing软件测试网5t;}"JjU+B(H&D

  在做软件测试工程师的这几年,收获了不少,对软件测试这一职业的理解也随着工作经验有这更加深入的了解,在这里写一篇关于“软件测试”的小文,发表一下我个人的一些拙见,供大家探讨学习之用。

;V `5qe/~051Testing软件测试网yItv1mu

  软件测试51Testing软件测试网*ll~8NnZP

*{%D9e$S2M"VV%b0  什么是软件测试?其实现在很多人对软件测试这一职业不是很了解,不知到底什么是软件测试。51Testing软件测试网^!I(ap DR

51Testing软件测试网B,cB"m"Y.rP'Q5z-lC

   关于软件测试的定义有很多种,我个人觉的比较符合的是:“使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清 预期结果与实际结果之间的差别”。由于现在软件发展的十分迅速,软件的复杂度也越来越高,所以软件测试现在也变的原来越重要,软件测试贯穿于整个软件生命 周期,软件测试并不局限于程序测试,它还包括对相关的需求、文档的测试,也包括一些多样化的回归测试、压力测试、性能测试等。51Testing软件测试网^*Fn+at/EX k.c`F

51Testing软件测试网,Wl\$w*N T

  关于软件测试理论知识在很多书中都有详细的描写,这里就不摘抄了。但是根据我的经验,想要做好软件测试,深入了解软件测试的理论知识是必不可少的,很多很多实际遇到的问题,都是由于对软件测试的理论知识的不了解造成的。

M(l4m:G? Z,F051Testing软件测试网8qYPz6Iw/I$n;g-Fy

  测试心理

4NT yJ^3pmvyF051Testing软件测试网 R| l5xzcB

  做好一名软件测试人员,调整好心理是必须的。51Testing软件测试网 a:q%pt nJ3h-B

d }W8}t0  (1)“创造者”与“破坏者”51Testing软件测试网1ET7u|^/\

] ufC\lw$p0  在心理上,软件开发和测试最大的区别在于前者是“创造者”而后者是“破坏者”。51Testing软件测试网 Z F C0| Qn

XENId+^L0  对于“创造者”而言,在心理上是不会对自己“创造”出来的产品进行破坏,就像每个人都会很爱惜自己的手工作品。而对于“破坏者”,心理上应该是属于乐于看到自己测试的系统“崩塌”的场面,就像拿着别人的手工作品摔砸扔来证明那个手工不行一样。

!Zv*o(s3K0

:ICaZ1a0   又如在实际应用中,开发人员会说:“这个功能我测过好几遍了,没有问题了”,但测试软件却还是能在这个功能里挑出很多的问题,原因在于,开发人员测试 时,心理上的关注点放在了“证明这个功能点可行”上,往往会无意识的绕过一些可能会引起问题的操作;而测试人员的关注点放在了“使这个功能点不行”上,会 尝试各种可能造成问题的操作。所以“破坏者”需要利用你所有可知的测试策略与方法,对软件进行不同程度的“破坏”,检查各种状况下,软件的处理方式与系统 的能力。51Testing软件测试网Tny.k7oE*LD!\

2y#V r;E7y1t0  (2)“第三方视角”&“好奇心”

+wj` h9W!}0

b-X _"xlT0  以第三方的眼光看软件产品是 测试人员与开发人员在进行测试时最大的区别。除了“第三方的视角”,测试人员在心理上还要时常保持“好奇心”,随着测试的深入,测试人员应不满足于现有的 测试成果,“好奇心”会让我想知道每次点击操作背后系统正在做些什么,驱使我去找程序员问个究竟或者看他们的代码是怎么写的,看看能否进一步优化系统; “好奇心”会让我想弄清楚究竟多少用户同时操作,系统就会崩溃,能否应付系统上线后的正常使用;“好奇心”会驱使我在想用户如果来使用软件的时候会如何操 作,会遇到什么样的问题,会不会觉得繁琐。有了“好奇心”,才能让系统在上线前就做了更加完备的测试。

"mv:SSyw&f_0

-Xw x,]*W*[0  (3)“兴趣”51Testing软件测试网6m:o%K#J.f"Rh*C

ivp5P+|n$`4X@w0   “兴趣”也是关键,做过软件测试工作的人知道,软件测试有时候是一个很繁琐枯燥的工作。比如测试一个表单填写提交的功能,需要使用不同数据进行填写并提 交,所以非常有可能出现的情况是,这一星期,每天8小时的工作就是坐在电脑前,不停的做着“填写表单并提交”这样的简单机械时劳动,这时,“兴趣”是能让 我摆脱枯燥的方法。兴趣是最好的老师,如果对测试工作真正感兴趣的,就会不断地研究测试相关的理论知识、技能技巧、工具等。就如上面说的“提交表单”测 试,你可以把它当成一种挑战,目标是搞垮它,这时,就可以尝试各种各样测试方法:尝试不同的填写数字、在填数字的地方写英文、在写英文的地方写中文、将必 填处留空提交、在填写框中复制上一篇10W字的文章、上传附件处上传各式各样的格式文件、上传50MB以上的图片文件、使用QTP反 复快速操作、使用QTP Object对象方法篡改页面控件属性提交、使用Loadrunner模拟大量用户同时提交、提交的时候拔掉网线、用Sniffer或HttpWatch 抓包进行观察等等,有太多的方法可以尝试,再使出浑身解数后,发现不知不觉中,已对表单的各种场景进行了模拟测试,提交了大量表单,时间也觉得一个星期都 不够了呢。用一个比喻来说的话,如James A. Whittaker的《How to Break Software》说的,“像小时候我们拿上一个小玩具,可能就是一个陀螺,甚至是一个拖把,我们也会玩上半天也不会感到厌烦。我们会变着花样来玩它,我 们扮演各种角色,把它当成道具,玩得不亦乐乎。现在的测试工作是什么,测试的对象有时候就是个玩具,只不过有些看起来过于严肃而已。如果我们能把软件当成 玩具来玩,那么我们可能不会那么快就认为测试已经可以停止了。因为还有那么多有趣的玩法还没尝试。如果实在是玩腻了,还大可以把玩具狠狠地甩在地上,用脚 踩几下,看它有什么反应。这也是一种测试方法!你是在进行破坏性测试!把你的小脚踏车一边又一边地从斜坡上冲下来,每次装上不同重量的东西,看装上哪一种 东西会最快。哈哈,原来你是在做压力测试!”

4kAJ/DW uVg051Testing软件测试网$`i6aB7b5}`)S

  PS:经常有初入软件测试的人发邮件给我问,说做软件测试是如此的枯燥无味,而且很难在一 个软件中找到更多的BUG了,或是开始抱怨回归测试的无聊时,我都会告诉他,你还没找到软件测试的“兴趣”。非常有幸的,我发现了“它”,它让我工作到现 在仍能在软件测试中找到无限的乐趣与挑战,也是它,迫使我学习更多的知识。

5|*Ef+z j0

Y U oEw0  测试方法

b4z]/\_ {051Testing软件测试网j3V"B4lM'\JR

  测试的方法太多了,不是我一篇小文能够全部概括的,在这里,我就说一些最基础的测试方法。51Testing软件测试网W FA0K.Vw

l%ANf"lq%A0  如测试一个登录界面。有用户名和密码框,确定和重置按钮。用户名和密码长度要求为6-12位。

{:J;c,j Ja-Lu051Testing软件测试网(cNWK1g.j;_ ^

  (1)冒烟测试

#]\m1}K5D1yih*Ak051Testing软件测试网k#X4KO$aB:?.I` O [

  我们测试的时候,最先需要使用正确的账号登录一遍,这叫“冒烟测试”,“冒烟测试”的作用是判断一个功能模块的最基本功能是否实现,如果“冒烟测试”能通过,则继续进行深入的测试,如果不过,则不继续进行测试。51Testing软件测试网%H i-R-h!]!y)n

k] F:|u#l0  冒烟测试是测试的第一步,当发现软件连最基本的功能都无法实现的时候,应立即终止测试,交于开发处理问题,而不是继续测试,放慢了整体研发速度。51Testing软件测试网:rX[ mu{1Jn

51Testing软件测试网 R*|N&Nt6~!ei9C7K_G

  (2)边界值&等价类51Testing软件测试网7g R/Y%q o O q

4u R4M4@`3t'r4v.s&N L0  当“冒烟测试”过了,则可以进一步进行测试了。这里需要用到“边界值”和“等价类”的测试思想。何为“边界值”?边界值的概念是输入稍高于其边 界值及稍低于其边界值的一种测试方法。往往会在边界值的地方发生错误或与需求文档要求的不符合。如例子中,假设限定用户名长度只能为6-12位,则我们需 要分别对长度为5位、6位、7位、11位、12位、13位这6种长度进行测试,这就是“边界值”法。何为“等价类”?等价类是一种数学上的概念,在这里是 将一个测试点划分为多种类的集合,如:还是长度只能为6-12位的问题,使用等价类的方法可以划分为三类:1是小于6位的情况,2是6-12位的情况,3 是大于12位的情况。测试的时候,需要在这三类情况中各举出一套测试数据进行测试。这就是“等价类”。

P]|yub Ni8p/e0

Wa _)o$Io,@M"A0  从概念上来看,边界值和等价类的方法很好理解,这是软件测试中,最最基础的测试方法,但能真正活用于测试项目中的的确不多。从不少的来信中看 到,其实还是有很多很多的测试人员不知道这两种测试方法,更不用说活用。但如电影中最厉害的大招往往是最基础的招式,小说中最厉害的人往往只是扫地僧,烹 饪中最能看出能力的往往是炒蛋炒饭一样。看一个测试人员的基础和能力,看他写的测试用例就知道了。能活用与最简单的测试方法,才是最有效高效的测试。

U'r|%ClV}051Testing软件测试网ky1X,}|qP

  (3)错误猜想51Testing软件测试网 {f^+H2qQ.HThm

\JrT0T[%e1r{0  猜,这也是一种测试方法,这也是用的最多的一种测试方法。当然,不是胡猜,而是有依据的猜。往往经验丰富的测试人员能“猜”到更多有可能产生问 题的情况,写出更加有效的测试用例。刚刚的登录例子,可以“猜”在能正常登陆的账号前或后加个空格,看看是否能正常登录;可以“猜”输入空的用户名和密码 进行登录的情况;可以“猜”在登录框中粘贴进大于保存用户名变量类型的字符个数;可以“猜”在注册一些带有奇怪字符或是超出字库范围的文字后能否正常登 录;可以“猜”登录瞬间关掉页面检查Sever上Session是否释放等等,能猜的内容很多很多,随着经验的增长和对系统越发的熟悉,会“猜”到更多测 试方案。51Testing软件测试网 Ci#T;w/[p

-c7e%NYaZM+@1D0  (4)场景法51Testing软件测试网6erJw U:x QeR

;Ihj5nF0  这也是在平时用的比较多的方法,定义不同的场景,进行有规律的测试。主要用于检查流程等,可使用在有较多分支流程中进行测试。

4u9hz!?+V]m051Testing软件测试网,B{%v)S$D0J*Rh[

  (5)失败测试51Testing软件测试网W6jm2nJo-sZ

51Testing软件测试网9jO B-QtU/g

  纯粹为了破坏而设计和执行的测试用例称为失败测试。可考察系统超出需求范围时的行为。51Testing软件测试网&} E!l/o9K

SlTh t:E\ cc ?0  测试方法太多太多,这里就不一一阐述了,但是上面5种,是用的最基础也是用的最多的方法。51Testing软件测试网+AGj[{)[k

51Testing软件测试网a PK8H6n q~)i

  测试用例51Testing软件测试网`H(Y{,V4Q

51Testing软件测试网E bWda E].s

  测试用例的重要性不用多了,能规范化测试,记录所有可能出现的问题,随着对测试用例的扩充,能越来越达到完备的测试。关于测试用例,我想说的是两点,“预期结果”与“测试数据”。51Testing软件测试网3^({ f-f(l6l;m ]v

51Testing软件测试网 l%d5fd/xw/{y

  (1)预期结果

s[l hsrX[0

#r0ej-WshIzw0  测试用例中必须要写的中,最重要的一项是预期结果,我在指导一些网友写的测试用例的时候,发现这点很难有做的很好的。往往刚接触测试的人员会在 预期结果一栏中写入诸如“登录正确”、“提交失败”等这样简单的预期结果。殊不知这样的写法和没写是差不多的,因为当另一个测试人员进行测试的时候,完全 不知道“登录正确”时的表现形式,应写明页面上显示了些什么,那个角落会有什么样的显示,数据是否真正写到了数据库中而“提交失败”需写明失败提示到底是 什么,是否有弹出框,是有错误图标等等的详细内容。51Testing软件测试网N7A:lEBz,M@%hN

H)L?t.j t}GX0  在预期结果中不要出现如“查看弹出框中内容是否有图片”这样的有两层意思的句子,即不要出现“是否”。因为这样的书写,在别人看来是“查看弹出框中内容是有图片”是预期结果还是“查看弹出框中内容没有图片”是预期结果,这个看来只有写这条测试用例的人自己知道了。

%f/EC5_7sP n0

TAG:

 

评分:0

我来说两句

Open Toolbar