在软件测试领域工作10年中,我曾有幸直接见证这个领域在相对短时间内跨越性的改变。在我刚进入这个领域的时候,除去软件开发周期里面所说的,大家刚开始真正意识到软件测试的重要性和把它从“应该做”提升到“必须做”。
在过去,由于会产生额外的成本,软件测试从来没有被真正重视。为了进行测试活动,人们需要被雇佣和培训,时间表必须被延长以包含测试时间,必须购买和维护更多的机器和软件;并且,也许在增加这些成本后,只会让软件运行得更好和让顾客更加开心。为了保持“质量成本”,到底有多少固定成本需要增加,并且增加到多少能到达平衡点而我们开始会看到好处?
同时,人们对于“你测试这个软件仅仅是因为你不能写代码”的误解使得人们并不仅仅只瞄准软件测试,进而降低了软件测试概念的地位。我需要承认,这个情况在很多场景中是真实的。从一流学位毕业的软件工程师进入工作环境时拥有非常少、甚至没有编程技能,因此选择软件测试职位。这些测试人员会继续变得对自己的空间感到安逸,并不再努力去学习和提升。他们详细他们所知道的并且到目前为止所做的工作已经足够。他们觉得这样就足够了。他们变得自满。
在测试人员看不到的地方,消费市场仍在进化——人们的集中力持续时间变短,快速部署得需求变得更重要,技术的迅速变化使得难以持续保持某个标签(keep tabs on)。业界要求用更少的时间完成更多的事情。敏捷测试的概念变得流行。我承认我也希望融入敏捷这个流行元素。在我的职业生涯中,我曾受命去创建一个测试部门,我有很好的主意去实施敏捷测试方法,使用精益流程和快速测试周期达到尽可能低的缺陷率。我决定保持团队在一个小的规模,因为我们将对所有事情进行自动化,并且在生产环境中测试产品!(译者注:就是每发一个新版本就自动进行自动化测试,用机器代替人工实现更敏捷的反应和拥有更多的测试时间和覆盖率)
就像我们陷入凹槽一样,我们也会陷入无聊且致命的手工测试的陷阱。进入这个陷阱十分简单,因为这不需要努力和脑力。但正视它,并摆脱它并不简单。秘诀就是在一开始的时候就不要陷入这个陷阱。
下面的列表就是一个测试人员必须具备的最重要的五项优势:
1. 持续不断的自我提升
软件测试人员必须持续学习。技术的世界并不迟缓。在眨眼之间它都在变化。今天,我们正在讨论把人通过喷射飞机在太空中飞行实现3小时内从英国转送到澳大利亚。
我不是说每个人需要退出来并开始学习航空科技。我说的是测试人员不应该坐在他们舒适的区域,并用世界上著名的自卫格言“我只测试这个”为他们缺乏能力进行辩护。在这么多东西之中,其中测试人员需要学习的最重要的东西之一就是持续增长产品领域的知识。测试人员普遍存在一个错觉:产品知识等同于领域知识。这是完全错误的。了解产品固然非常重要,但拥有领域知识也是至关重要的。不了解所测试系统所在的领域不仅不负责任而且十分危险。
2. 编程技能
软件测试人员需要了解一些基础的编程知识。一个不会编程——至少了解编程基础——不能真正成为一个软件测试人员。我记得在我第一个工作的公司,有一个产生相同作用的规定:要成为一个测试人员,必须先完成一个程序的开发。这个规定的意义在于,测试人员在测试的时候能联想到代码结构,这个在测试阶段能为开发人员和系统工程师带来巨大的价值。这是一个测试团队真正为他们测试的产品带来的增值服务。
3. 创新思维
测试人员必须持续思考他们怎么完成,并正确地完成以下两件事:
a) 丰富测试用例
b) 优化测试方法
装备上这两项技能,丰富测试用例现在变成只是制定战略层面上的问题。实施已经不是一个问题了。这个解放了测试人员,让他们集中注意力在制定测试计划,而不是测试工作的细节。他们停止“为小事烦恼”,抱歉我没找到更好的形容(原文如此:for the lack of better words)。很多软件测试工具和程序就是这种向前思考的产物。
4. 交流能力
根据我的经验,测试人员很多时候认为他们是“处于办公室后面”的人群,因此不需要想“处于办公室前方”的人那样说那么多话。在一些环境下,他们也许是对的,但并不代表一个测试人员需要减少交流。在几乎所有环境中,交谈和交流是两项完全不同的事物。
一个测试人员必须能够清晰地交流,用词精准并展示出高超的理解能力。 交流技能在这里包括一系列活动,如阅读和理解产品说明书,把它们转化为结构化的测试用例,报告软件缺陷(bug),并清晰、简明地写出给管理者的测试报告,但并不仅仅如此。在会议中,测试人员必须能合理地讨论,并用具有逻辑、清晰的方法传达他们的发现。一句话,为了在企业中保持优势,一个软件测试人员必须拥有超常的说和写的技能。
5. 责任感
这是一个很多我在过去一起共事的软件测试人员可能感到不大舒服的词。我通过两种不同的方式来表达这个词:
a) 对于你测试的产品负责任。许多测试者在早上来到办公室,完成他们的任务,然后在晚上离开办公室。当他们完成当天的任务后,他们就会收拾东西并离开。听起来很正常?是的,而我也曾读到和看到很多人实际上都在努力达成这种“常规”的工作方式。然而,这并不是我想说的重点(也许另一天就会有另一个文章说这事)。
我的重点是,大部分时候测试人员看不到他们的产品实际上在怎么样的大环境下工作。他们是怎么影响经济和市场的,商业和商业运作,顾客和最终用户,等等。要是测试人员可以了解到这些并明白他们正在创造的贡献,他们正在做的工作有这么大的意义,他们将会由于发展而来的拥有感而工作得更好。
b) 对你制造的错误(errors or mistakes)负责任。人们普遍认为测试人员就是找其他人的错误的人。并且测试人员也乐于相信这个概念。但是,测试人员(和其他普通人一样)也会犯错。承认这些错误的是正直的测试人员。
我经常说,承认自己错误、不会说不必要的解释来浪费大家的时间和精力的测试人员是可靠的测试人员。我们马上就会从责备转变成专注于如何解决这个问题。用手指指别人活着转而责备其他人也是很危险的。我曾经经历过这个事情:测试人员发现其他人在责备他们的错误,然后不断地解释或不承认,最后导致了很多不必要的情形和不好的感受。你只需要承认这个错误然后继续前进。
世界在不断往前走,企业也在往前走,测试人员也需要往前走并不被落下。“学习,提升,创新”。
最后:【可能给予你助力的教程】
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
关注我的微信公众号:【程序员二黑】免费获取~
我的学习交流群:642830685 群里有技术大牛一起交流分享~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!