我谈软件测试-1

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

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

51Testing软件测试网v*E5t ~WQ

  软件测试51Testing软件测试网 R5^;_}8f;[VW9U

51Testing软件测试网V4p:@ uMV$eEs

  什么是软件测试?其实现在很多人对软件测试这一职业不是很了解,不知到底什么是软件测试。51Testing软件测试网n w?*I%]Bln

51Testing软件测试网'cGM C i2A)`:]7c;c*C

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

u Pbg"Pl0

c.a$?2W Z E"^0  关于软件测试理论知识在很多书中都有详细的描写,这里就不摘抄了。但是根据我的经验,想要做好软件测试,深入了解软件测试的理论知识是必不可少的,很多很多实际遇到的问题,都是由于对软件测试的理论知识的不了解造成的。51Testing软件测试网$DE5\.ecY4] y

51Testing软件测试网-bA nU5S;Xu

  测试心理

(@ R6u#k@q.Q/G x-m0

5S s-t ` nR"~}P0  做好一名软件测试人员,调整好心理是必须的。

&T^){c8P w0

,g0Nk:w Gof4rbo0  (1)“创造者”与“破坏者”

s*ag vS;m@3f051Testing软件测试网2x.l_3B*Y%Q,{!m+ZH

  在心理上,软件开发和测试最大的区别在于前者是“创造者”而后者是“破坏者”。51Testing软件测试网 v%P;g%D}#Q L5R6Y

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

bi&n;z~5o0~VdQ0

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

51Testing软件测试网\$R)YBw;l*H8N;xk

  (2)“第三方视角”&“好奇心”

1KGJczj3]0

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

3I_da9yM5BE051Testing软件测试网 ~Y$^ @Q%@;s'T}m

  (3)“兴趣”51Testing软件测试网fV&F4L-d+f2O'Q7z

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

_K'K6Z"cs$q G:en0

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

lY8`,Ra![f F0  测试方法

&an| S)?O8m.e051Testing软件测试网3|T9[|8\ fN"i

  测试的方法太多了,不是我一篇小文能够全部概括的,在这里,我就说一些最基础的测试方法。

&f[ fI,kW051Testing软件测试网X*VF kA,J\z\0TD

  如测试一个登录界面。有用户名和密码框,确定和重置按钮。用户名和密码长度要求为6-12位。51Testing软件测试网o9xvHc8|0o3SI;[

H/[De6`o0  (1)冒烟测试51Testing软件测试网gD?h dqSb

'yq,Iw%xaFxzZ0  我们测试的时候,最先需要使用正确的账号登录一遍,这叫“冒烟测试”,“冒烟测试”的作用是判断一个功能模块的最基本功能是否实现,如果“冒烟测试”能通过,则继续进行深入的测试,如果不过,则不继续进行测试。

h]0|vd0

]?$d.MwszA3W0  冒烟测试是测试的第一步,当发现软件连最基本的功能都无法实现的时候,应立即终止测试,交于开发处理问题,而不是继续测试,放慢了整体研发速度。

'y/M#[0|*Ryms4G6_ J%t051Testing软件测试网F/uhI6P6p

  (2)边界值&等价类

0R phqm o6f.x0

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

(W9WPDLJ0

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

-{5Q%m8l@0

?;P6O)yM@:M5t[0  (3)错误猜想

w,ZP;wc B0

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

C/a8W {RaK0  (4)场景法

!l)}jpX Z"Y o}051Testing软件测试网jcwP_7cN

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

:s9O?"t)C7O.L0x/m0

jF,x~K&Z+}Cx0  (5)失败测试51Testing软件测试网V)U j5G`Da

51Testing软件测试网;Qa&`,G2z*k2w]

  纯粹为了破坏而设计和执行的测试用例称为失败测试。可考察系统超出需求范围时的行为。51Testing软件测试网{UIm.A,t(Y

51Testing软件测试网K#n}m\ |!V

  测试方法太多太多,这里就不一一阐述了,但是上面5种,是用的最基础也是用的最多的方法。

Z{U6Ta K:j'e*D051Testing软件测试网wE2QB]G"~

  测试用例51Testing软件测试网hG1s;N+O1q7QT

51Testing软件测试网U L@'PpM"C

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

51Testing软件测试网v{@}q-z0f

  (1)预期结果51Testing软件测试网8j(]a4H"U&bUG6?

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

51Testing软件测试网#t,]VzBQ W*g

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

(Z7| V5Q^5@0

TAG:

 

评分:0

我来说两句

Open Toolbar