展望2011

2008年度工作经验总结之其他

上一篇 / 下一篇  2009-04-01 11:32:14 / 不允许评论 / 个人分类:测试经验

2008年度工作经验总结之其他51Testing软件测试网-\1e(d5fDq][

一.     白盒测试

1.白盒测试和黑盒测试51Testing软件测试网1S)VFo:Po&s

以往只用黑盒方法测试的时候,总是对测试结果不放心,万一有些情况没考虑到而且出问题的话就不好了。但是如果经过白盒分析后,对测试结果更有信心了,因为确认测试用例和测试数据基本上已经覆盖到了程序主要语句和边界。对整个内部的处理过程了解之后,所有测试数据所检测到的地方信心更充足,而不仅仅是依赖测试方法理论。51Testing软件测试网}v's @ K

白盒和黑盒的另一个重要区别是,白盒测试人员了解代码设计后,能推断出这个设计本身存在什么逻辑上的漏洞,如果什么情况发生,可能会出现BUG,然后进一步进行确认,但是黑盒就无法从这个角度去发现了。所以静态白盒测试要比动态黑盒测试可能要更容易或更早发现同一个BUG,特别是设计思想正确,而在代码实现上出现了问题这种情况,如果是检查代码很容易发现的。

6y9I$@p,f9\u%x*~4}7xN0

关于不同的等价类,在程序中的体现在ifelseswitch之类的会产生分支的语句,因为不是同一等价类,所以需要进行逻辑处理的语句也就不一样,反之亦可。其实黑盒的等价类划分基本上就等于白盒测试的语句覆盖,有的时候,黑盒的角度看不是同一等价类,也许程序中是视作同一类型,所以处理的语句也是一样的;有的时候,黑盒的角度看是同一等价类,但是程序中是需要区别处理的。所以,黑盒+白盒进行测试用例和测试数据的设计,才是最优的测试方法。51Testing软件测试网L"z3B+U$O5x

2.阅读代码

#~(r \C j0

C文件的阅读,在具体阅读代码之前先画出这个源文件的函数调用关系图。首先找到这个源文件所在的最上层的函数(比如说main),然后找到这个函数里面又调用了哪些函数,以此类推,最后画出函数的相互调用关系图,那么其中的每个函数都是一个单元模块,然后根据这个函数关系图,逐步的去了解每个函数的作用(一般都有函数的注释),这个时候就能知道这个功能内部处理的顺序是什么(细节方面的实现没有了解),这个时候就可以做灰盒测试了,如果还想了解的更深入,则去了解每个函数的具体实现是什么样的,细节到每一个语句,这个时候就可以进行白盒测试了。总之,先画出函数调用关系图,再仔细阅读代码时会更快、更有效率。

o\{GTJ*t ]:@({7g2l I0

系统函数调用和程序逻辑结构可以自己摸索,但至于为什么逻辑要设计成这样,就得去理解程序人员的算法了。比如说程序中创建一个子进程,子进程实现的每一步骤都能理解,但创建子进程的目的到底是什么,如果无法从子进程代码实现中了解到,只能去问程序人员了。

[4Zs \3q.},c:p`BO0

做任何事情最重要的就是坚持,阅读代码文件也是如此。在开始看某个陌生C文件时会很迷惑,比如说有些对象(暂且把所有变量、内存、共享内存、文件都叫做对象)不明白为什么需要,但还是要坚持下去,越看到后面越能理解为什么这么设计,因为在对象使用的过程中,它的作用就慢慢浮现出来了,从代码中思考它的设计意图,层层剥析,其实无非就是一堆变量、共享内存、文件、网络接口中数据的操作。总之,坚持下来,一定会有收获的。51Testing软件测试网U m)Li.J \3x3X

3.设计用例

8Yr6PM x)m0

当黑盒测试时,设计的有效测试用例或测试数据组合情况太多时,可以用白盒方法对组合情况进行筛选。去了解程序处理这些条件的顺序是如何的,比如说有AB2个条件,程序中发现是先处理A再处理B,而且他们之间基本上没有关系(数据的传递),那么组合情况只要考虑ABAB2种组合情况就不用考虑了。51Testing软件测试网Fp${+D3v0s [$f

4.驱动模块51Testing软件测试网G~1G&Wc0`+xfi(Q

无论是使用编写的驱动模块还是使用正常的上层模块,你所测试的模块的测试需求是一样的,每个测试用例的测试目的也是一样的,只是测试用例的操作步骤上有些不同。从定位的角度看,使用驱动模块能准确定位到一定是被测模块的问题。从用户角度看,使用正常的上层模块测试通过才是真正的没问题,用户不关心是你所测试的模块的问题还是上层模块的问题。使用正常的上层模块测试会更快捷而且更有效些,但是使用编写的驱动模块可以测试到上层模块无法发送测试数据的某些失败测试用例。如果正常的上层模块没有开发完成的情况下,可以使用驱动模块去测试,测试时间可以提前。总之,无论使用驱动模块还是上层模块,各有利弊,在适当的时机下选择最适合的方式就行。

g5R1u%bk2xa3@0

 51Testing软件测试网 g*S)M(efs"H{(v0E5a

二.     合作与沟通

先理解,而表达

TKJ;cmT0

先去理解对方的观点和情况,并予以肯定,表示你已经明白了对方所要表达的意思,然后表达自己的想法,而且以询问的方式征求对方的意见,如果对方觉得你说得对,自然会接受你的想法,如果对方觉得你说的不对而且有不同的观点,正好大家可以讨论一番,因为有不同观点才会有新的收获嘛,真理往往越辩越明,而且印象深刻。总之,想了解对方才能更好的进行沟通。51Testing软件测试网lk:U!~)hd6zs

当彼此的观点和想法有很多不同的地方,而且不能立刻接受的时候,是保留意见,还是直接提出来?如果没有权威性的理论支持,我相信很难使相反意见的人接受,这个时候最好是先理解对方的观点,然后保留自己的想法,再在实践中思考,要么发现自己的观点的确错误,要么找出权威性的理由证明自己的观点正确。所以不要完全接受对方的观点,也不要完全否定对方的观点,需要一段时间的思考。51Testing软件测试网9|P6y b r7a*F^

关于BUG的沟通

N^6Ize"K1l.k^7m#O0

一个人要去做一件事情,一般来说是按照自己的意愿去做的,如果不是自己想做而是被要求这么做的话,心里一定会留下点不愉快,特别是那种有自信有自己主见的人,比如说开发人员,当测试人员发现一个BUG,然后告知开发人员后,开发人员之所以会去修改BUG,是因为他自己认为的确需要修改,而不是因为你提到要改他才改的,所以当他认为不需要修改的时候,肯定是有自己的想法和理由,不妨理解下他们,合理的就可以接受,不合理的话,也不要强制的让他去修改,试着解释给他听,让他心甘情愿的去修改,这才不会让他心里产生不愉快的情绪,开发人员和测试人员彼此间的关系才不会弄得很紧张,如果强制性的让他修改多次的发生,那么开发人员会对测试人员慢慢的产生成见,这样就不好沟通了。51Testing软件测试网_r&Qj*V4W

有时候也许是描述BUG时的语言表达有问题,或者是开发人员的理解能力有问题,描述BUG一遍后,开发人员可能还会有不明白的地方,需要再次沟通,如果当场演示就比较容易理解了。可能我们都没有问题,只是根据自己所知道的信息和对方所知道的有所误差,有些共识还需要互相确认,所以提交BUG时不仅仅是简单的描述一次,而是多次的沟通和确认。51Testing软件测试网}r4wc j

开发人员和测试人员的合作51Testing软件测试网 N/l*D"K-T

其实我不怕测试的结果是好是坏,漏测也是好事,可以总结出经验,又能更进步一些,我最怕的是开发人员失去对我的信任感,一旦开发人员对测试人员失去信任感,合作就会变得异常艰难,而不得不承认,测试的效果依赖与开发人员的态度和配合。怎么样建立信任感?一方面是提高自己的能力,自己帮忙定位BUG,反复验证BUG,需求理解更深入些,测试更深入些。另一方面是放低自己的姿态,不要想着地位、平等这些虚幻的东西,摆好自己的位置,测试人员更多的时候是辅助开发人员,让他们更快更准确的修改好严重的BUG,更多的思考,怎么做才能给开发人员带来更多的帮助呢?这样的话,开发人员会感觉到测试人员的确是在真心的帮助他们,而且确实帮助不小,信任感自然就递增了,合作自然也变得非常顺畅了。51Testing软件测试网&t%F Q4h:N

难免会遇到不好沟通的开发人员。比如,当我描述一个问题给开发人员时,他首先会想到我的操作有问题,然后立刻问我是不是如何如何才导致这样的问题出现的,但是这个如何如何所犯的操作错误也许非常的幼稚,给人的感觉是,他认为首先一定是测试人员的操作有问题,程序应该没问题。其实我也不是说一定就是他的程序有问题,我基本上都是以提问的方式问他为什么会这样,如果他认为不是问题,那么他给我一个合理的解释就行,如果他的解释和我理解的不一样,然后我会把我的根据说出来,让他理解我的依据,最后判定到底是不是BUG。其实真理是越说越明了的,不一定非要争个谁对谁错,只要最后能达成共识就行。

1wMH {p0c9^0

三.学习经验

我的学习经验,简单点说就是:自问自答,不逃避困难,不放弃,坚持,不断总结。51Testing软件测试网1z aN%s j{

1.找到适合自己的学习方法

(?j'T+v~.MMz0

   观察身边的同事的学习方法然后发现,有的人喜欢去问人,有的人喜欢自己查资料,有的人喜欢讲解给别人听来考验自己是否真的明白了,有的人喜欢动手去实际操作一把来验证,其实每个人的学习方式不同,最好不要以己之心来度他人,认为自己需要通过学习方法A才能学会的东西,因为对方没有使用你这个方法A而认为对方没有学会,这种思维方式是不正确的。所以说,找到适合自己的学习方法,同时也不要以自己的学习方法来推测别人的学习能力。

6S0\ a)\Vm5z L0

2.求知欲51Testing软件测试网,u {7[ F!M8[;Iyx ^

“求知欲”是一种非常好的学习心态。自己去发现要比别人直接告诉你要有趣的多,因为前者是自己主观上想要知道,而后者是被动的接受,当然前者更让人有“成就感”,同时满足了自己的“求知欲”。但不能否认的是,别人告诉你的一般来说比较权威并且正确性高,但反过来看,如果自己发现的即使是错误的,这也是一次经验教训,并不是坏事。

r)Hw:W`]K0

3.学习意识不可少

-`*E*AJJe1q \} ^0

一个人想要成长,不能对周围的人有太多的依赖思想,俗话说“师傅领进门,修行靠个人”,你自己也要有非常强烈的学习意识,这样才能更快更好的进步,即使师傅手把手的较会了你一些东西,如果你自己没有理解透彻,没有总结自己的学习方法,那么师傅不教你的其他东西,你永远也学不会。

_%X\ G#T:H0

4.培训

*A.U0t#J^ A0

参加任何一个培训时,先不要怀疑培训是否对自己有帮助,有可能培训的内容大部分都是你已经掌握的东西,但是在培训过程中,将心放空,把讲师所讲的内容当作新东西来学习,理解这次培训内容的整个知识体系,最好是边听边记笔记。如果你有已经有些基础了,可以对某些不了解或有疑问的地方提出问题,让讲师给你解答,还有某些完全没有接触过的新概念,更是要认真听讲师讲解了,同样,不明白的地方,或是立刻提出来,或是培训外的时间请教讲师,还可以去网上查询相关资料,找到答案后,记录到“归类文档”中去。方便以后的查阅学习。总之,把这次培训的内容全部理解清楚,这才到达了参加培训的目的。51Testing软件测试网wu Q'xE5A-^"X

5.持久战51Testing软件测试网6tu2s(i] _f"]6O

如果某个方面的知识点学习的不够透彻,而且有段时间不接触,就很容易忘记当时似乎已经学会的知识。本以为对某个知识点已经掌握的差不多了,结果某天再次遇到相关问题,需要动手解决时,发现曾经掌握的东西已经忘记的差不多了,所以不得不再重温下当时记录的学习笔记,再摸索一番。所以,学习某个知识点不是学一次就能成功的,需要不断的积累和总结,慢慢深入学习。51Testing软件测试网!}"R6G2Xt z8B4d

看书也是如此。看第一遍的时候,如果某一章有很多看不懂的地方时,可以先硬看过去,理解那些可以理解的地方,等这个章节看完之后,再重新看一遍该章节(当然是边看代码边理解书中的解释),也许就找到学习该章的方法了。同样的道理,一本书上如果有很多不懂的地方,先跳过,等看完整本书后,再去看一遍书。书不是看一遍就能消化的。51Testing软件测试网S3xoeT n]x

有的时候,计划学习的内容由于没有坚持下来,而前功尽弃,开始时雄心勃勃,但由于客观原因,被其他的事情(更紧急)给中断了一段时间(也许是一个星期),等忙完了其他的事情,突然对计划的学习内容已经没有了热情,觉得好像也不是那么重要了,最后只好作罢。最重要的原因是人天生的惰性在作怪,所以做任何事情都要铭记这句话“贵在坚持”,如果做任何事情都有头无尾,半途而废,这样你就永远在原地踏步,无法获得进步。

"U-A%~sE0

 51Testing软件测试网e GEkNV1a:q0ch


TAG:

 

评分:0

我来说两句

Open Toolbar