做社会化的软件测试工程师

上一篇 / 下一篇  2012-08-08 10:16:18 / 个人分类:测试经验

"}e_Wj)ku4zmG0  在四月间,六月间分别在天津和北京参加了软件测试主题沙龙,在会上都讨论了同一个问题:什么是软件测试人员的核心能力?51Testing软件测试网#oG4rm F'f&q r

51Testing软件测试网"o{6U0M V-G0p

  在天津的沙龙上,与会的测试经理和高级测试人员总结了十条,但是,没有写代码。51Testing软件测试网Fh{N2D{!U[&M

9oiAn:gl#S0  在北京的沙龙上,不仅测试人员同意这个观点,一些资深程序员也指出,好的开发人员,他的核心技能不是写代码,而是对需求的把握,对设计的睿智,对品质的追逐。51Testing软件测试网(tz.~N$vd'~,\

51Testing软件测试网"y)o7bD"|

  反过来看我们的测试人员,尤其是那些刚刚参加测试工作两三年,正在经历“迷茫期”的工程师,他们总在问同样的问题:是该学习Java编程吗?学习LoadRunner可以让我加薪吗?既然Google需要使用Python,是该系统的学习Python和Selenium吗?

ld$Nx(k0

Q?,NS Cj$cf:WH0  对这种问题我的回答都是:不,不,不。

K!BZPp E&gaUQ0

Du B y[+GlE0  诚然,有人说“不会做开发的测试不会是最优秀的测试”,但是注意,开发并不只有写代码。乔布斯和首席设计师艾佛不会写Object-C代码,但是他们一样可以“开发”ipad,iphone51Testing软件测试网,\3T)BJm8xH3X!A

51Testing软件测试网7bbrP g+S*l;EK0n

  那么,软件测试工程师需要哪些技能,我们应该如何提高自己?我认为,测试工程应该学习成长为社会化的高级测试人员。51Testing软件测试网&l-z4VB1VZZ5e~

'HD.JA@?(~6Br*v0  测试工程师要像个真正的“人”那样的使用软件、测试软件。因为,除了极少数底层代码,一些自动化控制代码,绝大部分的软件最终用户是人,而人是社会性的动物,所以我们的软件有社会性。我们的程序员和测试人员在做软件时经常忘记这一点。

i_)KiXO2T051Testing软件测试网8Ox^ bE+CZ

  关于软件的社会性,我举两个例子。

@}%a:v}T-R1S9PU0

/w^;lRPC/x#b0   例子1:几年前坐公交时,和旁边的两位美女搭讪,聊起工作。她们开始吐槽自己的职业。原来她们是做银行一个信息中心的表单录入员。她们每天的工作就是把 纸质表单中的数据录入到软件系统中去。她们说:“我们每天早上最大的期待,就是运气,期待挑到一台好电脑”{她们没有固定的电脑设备}。而好电脑的定义 是:用WindowsXP的是好电脑;用Windows 2000的是烂电脑。因为,表单录入软件的某些按钮,在xp下只需要做单次点击,在2000下就要双击。当录入一个表单时这很好,但是她们一天要处理将近 3000个表单,这就意味着用好电脑的人可以早下班,而用烂电脑的那个就要加班。这个问题(注意,严格意义上说,都不能算bug,因为“客户没有明确这个 需求”)对程序员来说,对测试人员来说,真的不算重要,我们只会点几次,看到完成了功能,就声明通过了,但是我们考虑到真的部署以后,给客户带来的痛苦。

#?qXbO9MA(_#V4W051Testing软件测试网!R(Dx;m&c/~q%In|

  例子2:一个听众讲了看病的例子,大夫给母亲开药的电子处方系统没有做限制,某个只能吃三天的药开了五天的量,幸亏在药房被发现,及时更改过来,否则就可能造成人命关天的医疗事故。

v$C"P}}-h?Z051Testing软件测试网4n-U#g @0L

   在可预见的未来,软件的用户还是人,所以对于测试人员来说,我们对软件的社会性考虑的越多,我们和用户贴的越近,我们的测试效果就可能越好。这也是我个 人反对现在的测试人员学习编程的潮流的原因:因为现阶段的计算机语言和编程基本上是“反社会”的:现在的计算机编程语言(哪怕是最新最好的高级脚本语 言),其语法都和人类语言大相径庭;

:e!k%p Z/\:tSM5P051Testing软件测试网h^L&s*I"q7D3]9@

  编程爱好者100%都熟练使用计算机,可以使用一些犄角旮旯的高级技巧(比如在Vim,Emacs 这些基于快捷键和字符命令的软件中上下翻飞),但是绝大部分社会成员不能;

#o5Ec7cqck^051Testing软件测试网 cy AWrvV

  你在编程上花费的时间越多,你花在贴近普通用户上的时间就越少;51Testing软件测试网(T^%S:p3t5Ap4^,f

+Fi/B D K\4z6fXf0  大部分编程者的目的只是构建功能,而非构建品质。51Testing软件测试网tagi~g

51Testing软件测试网5\4c [3K};_

  在今天反过头去看软件业几十年的发展,几乎所有的成功的消费软件产品都是尊重用户的社会性的。例如,苹果公司在十年前就开始构建软件易用性测试的量化模型;微软的Office绝不是效率最高的办公编辑软件,但却是最成功的软件,因为几乎所有人经过简单培训都会使用这个软件。

H1Rc A_1U0

sZ v9t1hE8{d `%ik0  如果把一个软件开发组拆开,需求顾问和项目经理需要考虑客户、预算、进度,程序员和开发经理需要考虑软件的实现,而测试人员则是少数可以真正考虑我们的“社会化”用户需要什么的人。

OMd5ri Q!O0

5~8Ns&l2s'u.{BL0  那么,如何做一个社会化的测试工程师?

X `4Dy8Y051Testing软件测试网5h(Rj4u+S:f_\2H

  第一,不应把测试局限在功能是否实现上,要更多的关注非功能性测试。51Testing软件测试网+C'I/C^7u_C$?

51Testing软件测试网5s'U$s$T6g"k!aD2@ a(\}

  如果看ISO 9126软件产品度量模型,我们就会发现,软件功能性只是评价指标中的一个元素。除此之外,软件质量还由易用性、易学性、可靠性、效率、可维护性、部署特 性等。我们当前的软件开发、设计、测试都过渡的关注功能是否实现,在花费大量的资源给软件堆砌功能以后,我们的软件变成了由树形菜单、和分级目录组成的怪 兽。我们的每个测试用例都需要点击三级按钮才能找到功能页面。但是,我们是走在正确的道路上吗?我们忽视了一个很重要的事实,那就是:用户不会用一个不好 用的软件,即时它的功能100%正常。51Testing软件测试网jD3y&M `|I(l

\g5v9q(Bjjtv0  更不要说,文中第一个例子给用户带来的“伤害”。

u#n&H+sT2y8@G,r051Testing软件测试网? K4lV iF:K$[

  我三岁的孩子和七十多岁的奶奶一样可以用ipad,但是她们都无法在没有我帮助的情况下,从Windows7上找到想要的东西。51Testing软件测试网%O)mEEG1I/w

{_6I4EA8G/E[+rn0  再看树形菜单和分级目录的始作俑者,微软公司,其最新的操作系统、Office、手机操作系统、UI都无一例外的抛弃了树形菜单,转而使用Metro UI。51Testing软件测试网0U az$R1x)I)b$i%b

m!jMq O2S9t4V y0  作为测试工程师,作为研发团队中和“人”最接近的那个人,我们对这些非功能特性的掌握程度,决定着我们未来的发展方向。

cbj g-Fv9i051Testing软件测试网*`"s9VY?lj nin

  从软件研发的历史看,自动化测试、测试工具的发布、测试模式的变化,都没有从根本上改变软件的面貌,它们只是在软件规模越来越庞大的历史里,如 履薄冰的保护着软件的基础质量。由于缺乏易用性、可靠性、易学性等等非功能性测试的量化评估手段,我们对这些测试的研究和实践还停留在表面。51Testing软件测试网0rpYIt3{"I9z:}

51Testing软件测试网Na}7i*{/S~6K

  放眼未来,能在非功能性测试上走的最靠前的软件公司,他们的软件更有可能成功。在ISO组织的软件易用性测试前言的草案中,第一句话就是:当今几乎所有软件公司的软件都面临着易用性问题(苹果公司除外)。纵然这是草案作者们的一个玩笑,但是不也正是软件业的现状吗?

,n,u+e ZK8x$e&RF~051Testing软件测试网b V-y G2d+j~MA

  我想作为测试工程师,如何从测试角度提出对非功能性质量的评估方法,将是未来测试发展的一个重点和热点。

?pEL7s,Y7Vu~0

/n)PW s6]BXP(p3W0  第二,应该投入更多的精力去研究业务知识。51Testing软件测试网(|d;ew7h8j

51Testing软件测试网nej&ML*e] I

  所谓隔行如隔山,作为接收过系统信息技术教育的工程师,我们的IT知识应该说是足够的。但是我们对于用户所在领域的业务了解还远远不够:

4`|We,BLK051Testing软件测试网AHdp SS9z

  做建筑业软件的不懂力学;51Testing软件测试网4aI r.k*|gvo

51Testing软件测试网j*W u9]ly&K

  做医院系统的不懂药学;

\ Q't4n K0

#CiFR/K0  做销售系统的不懂会计学;

(w s$RFH w051Testing软件测试网"U!nY"t)^%W9@%L$m

  做金融系统的不懂金融;

^Axr;MU4|%zKP~051Testing软件测试网I4N(c%Ny?#v

  做互联网的不懂广告、传媒、营销;

X;o a0e!{!V9^A5D&i051Testing软件测试网:F)c.i`*E!tir

  做MIS的不懂管理学。51Testing软件测试网)f@s VP

51Testing软件测试网z#WGM:G/_ mH

  这些现状导致我们的软件还只是“将就着能用”的软件,而不是客户喜欢的软件。在这种情况下,作为测试工程师,与其投入大量的时间去学习 Java,不如学习业务知识。计算机技术作为新工业革命的核心技术,不是革了信息技术的命,而是革了整个工业领域的命,所以我们的软件从多大程度上贴近客 户,决定了我们的行业如何发展。51Testing软件测试网#|2CD9qvL9\a jX y

51Testing软件测试网J9d9^`S8wW)]9b

  第三,培养对软件的嗅觉。作为高级测试人员,验证软件功能是否正常不是我们的主要职责,我们需要像灵敏的猎 犬一样去嗅软件,发现那些被遗忘的风险、经常出问题的点、被忽视的测试,以及竞争对手们的新动态。所以个人一直都有一个观点,那些连新浪weibo都不让 上,工作期间不允许用智能手机登陆移动互联网的软件公司,是无法做出真正一流的软件的,这样的公司只能做些树形菜单和分级目录,并把一些小的Ajax特效 当做革命性创新,全然不顾现在的前端技术已经日新月异。51Testing软件测试网zh9TA/jP*Hm

,zo}s:w2rw0  作为一个软件用户,我使用各种各样的软件,我同时使用ipad,安卓,塞班,Windows,Mac OS,通过不同平台的比对,我可以体会不同软件的优缺点。这些体会和经验对于我做探索性测试很有益处。51Testing软件测试网-^/u ix-vs$izM1N

~)?7W i3k Y2D8T*^0  同时,我也在观察身边的人是如何使用软件的,一个很有趣的发现是,一个背景不同的用户,他/她对网站、软件的使用可能和我完全不同,所以能发现完全新鲜的bug。这些对于我做探索性测试也非常有帮助。

3]{ @gO/d#n051Testing软件测试网1r5Wx"s5nY,S!T

  最后,如果学习社会化测试还有一个益处,那就是这些知识不会像编程技巧那样快速更新。十年前,Java工程 师无论是地位、收入都远远高于Javascript,PHP工程师,但是现在的状态则完全相反。十年前人们就在为Java完全代替C++倒计时,但是今 天,由于苹果公司,C++再度火爆。所以变成语言的潮流变化是很快的,无论你如何学习,都不可能预见到未来的趋势。而业务知识不同,药学、会计学、力学这 些知识,在过去十年中的变化要比编程语言小得多。学习业务知识,其风险也比学习一种语言、一种工具要小得多。

A6k#u7M`6F]051Testing软件测试网r:f-oC#I)^2x X&f

  当然写这篇文章的意思不是说写代码不重要,由于持续集成和敏捷开发的流行,测试团队也需要一些既懂开发又懂测试的工程师,但是我非常赞同测试团队应该有角色划分的做法,我们对于业务背景的测试人员的重视程度现在还不够。

Y#g%_$A-k,Z sq3E051Testing软件测试网+l*PurP5p+F(`

  我们的行业必然需要那些在易用性测试、可靠性测试、客户测试、业务知识上有专长的人,希望未来这些人就是你。51Testing软件测试网5E%\sN-~G


TAG:

jizihappy的测试足迹 引用 删除 jizihappy   /   2012-08-08 15:57:29
3
水清无鱼 引用 删除 lctlee   /   2012-08-08 13:36:45
5
 

评分:0

我来说两句

Open Toolbar