测试的不可或缺--我对测试的认识之路(3)

上一篇 / 下一篇  2012-11-13 09:03:39 / 个人分类:测试经验

L`BF:tC9q2}9A}0  在没到Z公司之前,也没怎么想过这个问题,测试部是否是必须存在的?徐博在分析这个问题时,觉得之所以要成立测试部,是因为要迅速推出产品,就需要有一拨人搞开发,同时有一拨人准备测试,开发完成后,直接就可以开始大规模测试。如果不赶市场的时间点,那么可以不需要测试部,由开发自己测试就可以了。

:t{ws`u `Ne0

~/Y]0h!H2V0Lx0   我当时的看法,觉得开发人员对自己产品做严格的测试,(1)没有动力来驱动,(2)开发的产品很复杂,自己不清楚用户场景。我所知道的,记忆科技他们做 的e管家,类似上网用的猫的设备,他们是从产品调研、到开发、到测试,均是一个人在搞,开发工程师的收入中,会从产品的销售中提成。对比来看,(1)产品 是一种在实际生活中,随处可见的,我们清楚它的应用场景;(2)提成就很有动力来做测试,保证产品的质量; 这些特点都是我们当前做的产品所不具备的。我们对产品的应用场景基本不怎么清楚,而且产品复杂。开发人员去做这件事情并没有什么动力。51Testing软件测试网&@U*A"s QxT

51Testing软件测试网od+]7r$U3p[

   徐博说,有责任心就可以开发出质量高的产品。现在想来,他说的责任心应该是对岗位职责负责。不是指对当前的设计编码负责。只要是按照系统工程师的方案来 设计,编写详细设计文档,按照自己编写的文档来设计代码,就是有责任心。如果自己写的都没有做到,那才叫没有责任心呢。

.d+R G/s"f0

}%LF%JK8m[:cdxq a0  所以,要人对自己的岗位职责负责,实际是对要当前的管理水平提高,调动人的积极性来做这件事情。

~8O$Q,be$wP$e9G0

#\/D i!HX0T8c0  目前的状况是,开发人员严格自测自己的代码,发现问题就是增加自己的工作量。 你发现问题解决问题,领导会觉得这是你分内的事情。所以,公司离职的人里,就有这样感慨的。我在做这个项目时,自己负责的模块非常复杂,为了设计出高质量 的代码,投入了很大的精力做自测,提交的代码基本没有出什么问题,但是也没有任何人提起过,也没有得到任何表扬。让人有些心有不甘。实际上,一般人的认识 是,如果你交测的代码没有什么问题,说明你负责的这个模块功能简单。

H3hS!_Q'X9wR051Testing软件测试网Bsf I{z1yYn

  同时,我们是基于市场的压力来做这件事情的,在流程的前端,主要是开发非常忙碌,需要赶市场的时间点。开发出来后,你还要人家严格自测,我感觉基本不行,人需要喘口气啊。下面的文章,非常清楚的分析了测试的不可或缺性。51Testing软件测试网0_0Mfz8u:c1]P/`

51Testing软件测试网$z[8a2E%L upay

  世间万物皆为测试对象。测试本身并不是在创造什么东西,而是由确认、验证、保证、评估、审核、报告等动作组成的统一体。

5_P#@-w K051Testing软件测试网W3I]3Y:ej

  测试有两个主要作用,第一是确认我们在做一个正确的东西。正确当然需要有标准,对软件测试来说,软件特性说明书就是测试的标准。当说明书有遗漏或忽略时,标准应该来源于大家的约定俗成或者高层人士的判断。

}"h/jKyd:POi sy051Testing软件测试网"y;[Yhs/V b m

   /*对于芯片测试来说,标准来自用户需求说明书和系统方案;基于这两个来源,我们形成测试需求和需求的通过准则。如果用户说明书或这系统方案有遗漏或忽 略,标准应该来自于系统工程师的补充或用户对测试疑问的确认或者大家的约定俗称(这里隐式说明了静态测试的执行)。测试需求是测试活动的源头。*/51Testing软件测试网AZ?r#o)~E9c

mi.K`9eVu5D0  测试的第二个作用,就是确保开发活动的方向是正确的。同时为了保证开发活动方向的正确,我们通过各种测试报告提供有用的数据和事实来帮助项目管理者作出正确的决定。

~.\|mJ0

_Z9ei{ o^0  /*这一作用,明确了动态测试的目的。总结的非常恰当。*/51Testing软件测试网,yw KNa,X-}2Buu)\h

'B3E}{j V0  测试的不可或缺的生动解释:51Testing软件测试网.p*{5@s4A(q3^

51Testing软件测试网wa/r[ ZV,RL'g7?

  为什么说世间万物都可作为测试的对象呢?51Testing软件测试网4W@X,q kj

| vE+Y%H0   只要是有形的东西,就会有BUG存在。拿衣食住行来说吧:衣服可能会不合身,食物有可能不健康,住的房子肯能会开裂,出行时的车辆肯能会抛锚。所以在做 任何东西的时候,不能不进行测试。生活中初级的测试是朦胧和无意的,比如裁缝做好衣服之后会在模特身上比一比,饭馆里厨师做菜总是要尝一尝,这都是初级朦 胧的测试,这种测试的动力通常来源于客户的挑剔和由此吃过的苦头。51Testing软件测试网bjkWyr2g S

1S-x4Fr1@Z(JR0  “奥,原来测试已经渗透到生活的方方面面了,可是我们居然没有意识到。”

q?G7u}o/Yfw,H0

3^k j:@(O XHNl0   /*可以再发散一下,比如管理的效果,流程的实施,计划的跟进等,这些应该都是测试;对管理效果的调查(如员工敬业度调查,主要是对基层管理的调查), 对流程是否执行到位的跟进(这应该是QA跟进吧),文档是否符合要求,研发过程是否基于配置库开发(这应该是CM跟进吧),对计划的进度跟进(项目经理跟 进整个项目的进度,测试经理跟进测试的进度,师傅跟进徒弟的进度),这些都是测试。测试就要有正确的标准,如QA的标准就是要有规范的流程,CM的标准就 是要有规范的文档。但是对管理效果的测试是比较难的,因为调查问卷即使是匿名填写,多数也很难会填写真是的感受。这里涉及到心理学,出于自我保护等的目 的。*/51Testing软件测试网@\ `+}Jw

51Testing软件测试网G-sT7m9p1KD

  厨师和裁缝可以意识不到,但对于复杂度高的软件产品来说,产生错误的概率是成几何级数增长的,测试在这种时候就成为了必须的要求。51Testing软件测试网 ^8]7R2SD3Y.B4C

51Testing软件测试网8[&^ T&U:j&[j?IM

  没有测试可以吗?

3u"^h.H!]#v0

g{9qX$M0Q W0  前面说测试就是一些确认、验证、保证、评估、审核、报告等动作组成的统一体,那不就是说,测试只是监工的角色吗?而且还说测试不是创造什么,那是不是说没有测试也可以呢?难道不能完全依赖于开发人员的技能、良知和自我完善设计出高质量的软件产品吗?51Testing软件测试网1f e0y'D0t

51Testing软件测试网;c[ QMT(y6j5E

  无数事实证明,专业的测试必须要由无利害关系、独立的人或团队来进行。原因是多方面的:第一,开发人员编写的程序,就好比父母对待自己的子女一 样,都是凝聚了心血的成果,所以审视的目光通常不会客观;第二,有的时候设计和开发人员本身的理解可能有误,陷在错误的圈子而不能自拔,这时候必须由它山 之石来引入全新的思维才可能跳出这个圈子;第三个理由可能比较阴暗了,对开发人员来讲,发现了BUG是一种痛苦,因为意味着自己要投入更多的时间,加班甚 至牺牲周末,而且领导不会领这种情;谁让你编的代码有问题呢?可是测试人员则没有这层顾虑,他们非但不会因为BUG的发现而损失什么,反之还有可能立功受 奖,以产品质量的维护者自居,于公于私有利无弊,所以,由这些人进行的测试一定是很有动力的。项目干多了,你会发现,这第三个理由是更直观站得住脚的,尽 管它无情地披露了大家灵魂里的阴暗面。51Testing软件测试网9[1|4j0t+{t!E

f @9}Z-oH$y0  而且公司要直面市场的压力,人在长时间的重压下必然要选择逃避和释放,这是人的本能反应,与责任心无关。如果你以为开发人员会自己主动地毫不留情地测试自己编写的程序,你真的是太天真了,即使有这种可能,那他也一定是别有用心,比如以此获得老板的青睐。

3^;y%Ow/s|Z"K/z,s051Testing软件测试网4H rcq|b(f k!tq

  测试的第二个作用,确保我们开发活动的方向是正确的。这听起来有点神了,但是光靠测试能够做的吗?51Testing软件测试网{lq%hp|

51Testing软件测试网J3DqJ*g3T(o^

  这是一个宏大的命题,应该是项目所有的参与者共同努力的方向,产品的大方向不能说是由测试在独自把握着。不过在此过程中测试可以起到很大的作用。51Testing软件测试网YJ WHm#]

51Testing软件测试网2Vl0_7Rs OT5A

  软件研发团队的成长和小孩子刚学走路是一个逻辑,是无知和自负的(经验不足的研发团队,某种程度上也是无知和自负的。)。正常情况下,无知 --->碰壁--->吸取教训,这是一个很好的成长过程,吃一堑长一智嘛。但是市场和用户没有父母那么慈爱,他们不会因为你年轻就温良恭俭让 了。在他们的强大压力下,研发团队比小孩子的选择还要少,他们只能硬着头皮向着未知的领域冲,而且不能犯错,很多时候犯了错误碰了壁就意味着Game over。

3|Xs#H%Ue"D-mo0EQ*{051Testing软件测试网8x|J ?(M5OhH

  那岂不是没有办法了?51Testing软件测试网El [3yw&G qD{

3QU"_Ivx"ye0  办法总是有的。如果小孩子学习走路,耐心的父母可以尝试着预测他行走的路线,清除掉他前行的障碍,随时注意他走路的姿势,确保他的每一步都踏在 预测的路线上,这样就能制止他走到危险的地方,从而很大程度上保证了他的安全。这其实就是软件项目中测试的作用。在设计阶段参与,预测项目行进的方向,预 测项目的风险并及时排除;在项目执行过程中,注意监督每一步都是按照事先确定的方向和时间在走,如果偏离或延迟能及时发现并纠正,项目就会始终健康地进行 下去了。说起来容易,但真正实施起来会有各种各样的挑战。开发项目中究竟会遇到那些障碍,事先我们是无法一一看清楚的。这时就需要项目管理者的经验和洞察 力了。测试在这个时候能起的作用就是提供数据和事实来帮助项目管理者做出正确的决定。

4P$_Xy/s&ue.A051Testing软件测试网7M w+V;Y k7e!{*nC

  测试中都能提供那些数据和事实能起到这样的作用呢?51Testing软件测试网9{ |X4M*jxR

51Testing软件测试网,tq6TlG

  软件测试报告的主要内容:

Cj3~)p,avFu7S'X051Testing软件测试网Q(y\ BV'ixa3V

  (1)软件成熟度的定量评估(总体来说和问题的严重性、数量、出现频率、新模块的数量和规模等等因素相关);

S[_v z0

|x|&h\8pH0  (2)测试用例通过率和不通过率(最简单一目了然的方式来了解当前软件的状况,通过率越高不通过率越低,软件越稳定。但缺点就是无法与那些测试用例意外的问题相匹配);

4K$EK#? A8[ P0

7BCA u'c$@6l y6X0  (3)软件成熟度变化趋势(通过变化趋势,我们能够看出软件变成熟的速率,可以帮助管理者预测项目还需要运行多久);51Testing软件测试网-}K/c#gC2v4yYv8K

51Testing软件测试网*w)_0\3iv6yT }

  (4)今后可能的问题和成熟度走向(与变化趋势相关的信息,尤其适用于当开发进行中,一些新的不稳定模块即将加入到软件基线中,那么在可预测的将来这些模块会带来新的问题,从而影响软件的成熟度);

zhL%PF9o-t}051Testing软件测试网\g f*v6_

  (5)严重问题列表(最实际地反应当前软件的风险在何处,尤其当讨论产品是否可以上市的时候,这一内容尤为重要。管理者需要这一数据来判断上市的风险是否可以容忍);

w8},^ E"_051Testing软件测试网LTj um

  (6)一些关键问题的风险评估(有问题不一定严重,问题严重但用户不见得关心,这些信息需要借助测试人员的经验和判断,管理者也会参考这些信息做出正确的决定);51Testing软件测试网iG"p p(a^1yg2OqY f

51Testing软件测试网8kW)L,C6t+V

  有了这些素材,项目的管理者能够对项目的过去、现在和未来大体有一个判断,这就相当于提供了项目的行进方向,比起单纯地发现问题来说,这种帮助更为宏观和具有战略性,是测试的更大价值所在。

KJ"T&Adk%Pf0

H#@#|SDZ0相关链接:51Testing软件测试网pJ/oqks

'R5l.V|X%mGW0遭遇测试概念--我与测试之z公司(1)51Testing软件测试网/^&S$A]|No`8z

51Testing软件测试网;{"[,{8qQ`#Ye

我对测试的认识之路--我与测试之z公司(2)51Testing软件测试网5|4i[M1Q


TAG:

T_ifk的个人空间 引用 删除 T_ifk   /   2012-11-13 16:41:03
5
 

评分:0

我来说两句

Open Toolbar