作为一名出色的测试员可以带来更多的商业价值,起到关键性作用,本文提出了一些成为优秀测试员的实践建议,这些建议源于我对许多掌握专业技术备受尊敬的测试员的观察,这些建议可以帮助你提高效力和效率。你可以选择一些目前可以实施的实践方法来成为优秀的测试员,你在这里可以学到:
一 .针对不同背景的测试
二 .使用启发式模型关注重要的测试特征而不会遗漏核心元素
三 .掌握你所需要的技术和技能来提高你的专业水平
四 .知道有时候一个好问题比正确的答案更重要
测试新手和专家之间的区别在哪里?你的工作中有什么可以为公司带来价值,加快生产速度?本文讲述了如何成为优秀的测试员,企业需要怎样的测试人才。
1.更好的测试基于背景驱动(Context-Driven)
想要把测试做得更好需要思考,你必须考虑怎样才是基于目前情况下最好的测试,而不是简单重复以前的测试或是盲目模仿一些最佳实践,某种情况下最好的测试方法放在其它情况下也许是最糟糕的方法。
2.更好的测试基于模型(Model-Based)
模型可以激发你的灵感来确保对基本元素的最大限度测试覆盖,测试专家都有很好的模型来引导他们很快开始有效的测试,你的测试专业技术很大程度上依赖于你所掌握的测试模型执行能力。
3.更好的测试需要精通测试技术
如果你所拥有的唯一工具是锤子,那么所有的东西看起来都像是钉子。如果选择正确的工具那么工作就会变得容易很多,学习最好的实践就是去精通测试技术。
4.更好的测试需要实践来提高技能
我们的孩子去到球场提高他们的运动技能,没有持续的锻炼他们不能掌握娴熟的技能来提高竞争能力,测试也是如此。没有不断的实践我们不能提高自己的技能,实践是提高技能的有效方法。
5.好的问题有时候比正确的答案更重要
测试中的一个危险就在于我们浪费了太多时间去回答错误的问题,如果有人问你“可以像上次那样测试吗?”,回答“可以”很容易,但是,更好的问题是“我可以比上次做得更好吗?”学会对任何事情提问,至少在你的脑子里这么做。
6.更好的测试不仅仅需要技术和技能
知道了怎样测试还不够,我们是与人和组织一起工作。要想在团队中起到重要作用我们必须提高自己的交流能力和领导才能,学会如何与别人共事可以让你想做的事情办起来更容易。
7.更好的测试结果源于对客户更好的了解
我们如果对客户和行业领域了解得越多,我们就可以更好地确保交付的软件适合他们使用。
8.更好的测试基于背景驱动(Context-Driven)
想要把测试做得更好需要思考,你必须考虑怎样才是基于目前情况下最好的测试,而不是简单重复以前的测试或是盲目模仿一些最佳实践,某种情况下最好的测试方法放在其它情况下也许是最糟糕的方法。如果你要突破普通测试员的境界而成为优秀的测试员,那么背景驱动方法是必须的。你需要考虑资源、技术、时间、目标和人员。如果你的每次测试都用“一成不变”(注:原文是 one-size-fits-all)的方法只会对项目造成损害,大多数“一成不变”的方法都不适合个别化的项目,考虑一下以下内容:
哪个更好?
A.回归测试针对两个不同版本之间的改动
B.最低限度的回归测试获得最少数量的测试用例覆盖
C.回归测试只针对改动部分
哪个更好?
A.自动化测试或者
B.手工的探索测试
哪个更好?
A.正常操作测试(软件可靠性工程)
B.攻击测试
哪个更好?
A.测试完成标准是没有严重缺陷并且所有的低级别缺陷都有相应解决方法,所有的测试用例都执行过并且80%以上成功
B.测试完成标准由团队基于ODC数据,缺陷数据和其它相关信息共同来做出最后决定
每个问题的答案都需要知道基于什么情况,哪种方式的回归测试最好需要了解以下情况:
a).有多少时间来执行测试?
b).都有哪些测试用例?
c).代码改动所涉及的范围和复杂程度是什么?
d).下一次测试什么时候执行?
e).谁会用到测试后的代码?
f).这些代码修改的历史记录是什么?重要性如何?可能会在哪里用到?
没有相关背景很难判断技术、实践和过程的价值。正如 James Bach所说,评定测试活动是好是坏以及成为一名优秀的测试员的关键就是提出背景设置问题,下面是一些背景设置问题的简单样列,这些都是测试中需要考虑的。
a).限制条件有哪些?(人员、预算、资源、技术、进度、过程等)
b).目标、目的和期望是什么?
c).“成功”的含义是什么?
d).“质量”的含义是什么?
e).项目环境是什么?(产品,工具,配置,技术程度、态度、团队等)
f).什么人做这项工作?我要怎样合理利用他们?
g).什么人参与进来?他们的重要性怎样?
h).什么测试过程和技术用起来会最好?
i).有什么可以使用?
j).有什么可以选择?
如果你仔细观察,你可能会对此感到惊讶,我们常常没有经过足够的背景思考就开始测试,同样地,你可能还会产生同样的惊讶,在初期少量的背景设置问题就可以带来更为有效的测试方法。
同时优秀的测试人员还需要具备以下这些品质
软件测试员的目标是找出软件缺陷,尽可能早一些。
软件测试员的一个基本素质是:打破沙锅问到底。
大多数软件测试员应具备的素质:
1.探索精神:软件测试员不会害怕进入陌生环境。 有较强的学习能力,可以用最快的速度成为一个新的行业的专家。
2.故障排除能手:软件测试员善于发现问题的症结,喜欢猜谜。可以迅速的通过事物的表面现象发现事物的本质,能够从琐碎的现象中发现内部的联系和规律。
3.不懈努力:软件测试员总是不停尝试。他们可能会碰到转瞬即逝或者难以重建的软件缺陷;他们不会心存侥幸,而是尽一切可能去寻找。 只要出现过的缺陷,就说明一定是存在的,找不到只能说明没有能够真的重新当时的环境和全部的操作细节。测试人员要能够敏感的察觉到细微的变化,并立即开始在大脑中努力重现之前的整个场景。把残存的瞬间记忆整理在纸上,通过分析,把这些碎片整理起来,最终找到缺陷重现的场景和规律。牢记:在做这样的事情之前给自己制定一个规则,例如只花费N多时间来努力重现这个缺陷,如果超过这个时限还没有找到,那么就把当前的工作整理成一份文档保留下来,然后去按计划继续进行下面的工作,直到再次“偶遇”这个缺陷。
4.创造性:测试显而易见的事实,那不是软件测试员;他们的工作是想出富有创意甚至超常的手段来寻找软件缺陷。 虽然创造性是必需的,但是还是更建议把大多数时间放在熟悉真实用户的工作上,测试的基础是现实中已经存在的场景,在冥思苦想新的场景的时候,先同用户沟通一下,试图发现一些新的场景效率会更高一些。有很多事实并不是那么显而易见。
5.追求完美:他们力求完美,但是知道某些无法企及时,不去苛求,而是尽力接近目标。 做任何事情都应当有一个策略,分配给每项任务一个指标或者一部分资源(也就是说如果这件事情成功,那么它带来的收益值得我们付出的最大成本),当这部分资源耗尽时,就停止这项任务。
6.判断准确:软件测试员要决定测试内容、测试时间,以及看到的问题是否算作真正的缺陷。 要不断的提高自己的专业素养,除了行业知识、测试专业知识以外,还要尽可能的去学习一些软件行业的基础知识,例如操作系统、数据库、程序设计开发、计算机网络等。
7.老练稳重:软件测试员不害怕坏消息。 其实做任何工作、任何事情都一样,人生就是一个不断的发现问题和解决问题的过程,没什么好怕的。
8.说服力:软件测试员要善于表达观点,表明软件缺陷为何必须修复,并通过实际演示力陈观点。 测试工作开展的好坏,很大程度上就靠沟通能力和展示自己工作的能力了。
9.在编程方面受过教育。一个有过开发经历的测试人员,对系统的领悟能力和学习速度同没有开发经历的测试人员是截然不同的。