我们暂且不去评析软件测试在当今it公司中的地位,只说大家对软件测试的认识。基于我短暂的经验,我总结出软件测试几个最常见的误区,供大家研究:
测试简单,对技术要求不高
这是对测试最通常的评价,如果一个开发人员转做测试,那么别人通常认为,他是不是开发能力不够,或者是他是不是不愿意吃苦之类。我们先引用Google的 Patrick Copeland对一个卓越的测试员所应有品质的评论:
“那是心态与激情。从我所做过的100个访问来看, “卓越”可以被提炼为:1)一种发现问题的独特敏感性;以及2) 伴随这种敏感性产生的对于测试的激情。换句话说,他们喜欢测试而且善于做这件事。他们也明白测试带来的挑战往往等于或者大于编程所带来的挑战。一个拥有测试基因与正确态度的测试员总能找到工作。他们是金子。”
很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。
在我个人理解中,测试反而对技术要求更高。这里的"高"不是说一定多么精于某一门技术,而是需要更广的技术能力。比如简单的功能测试,我们需要需求分析能力和业务能力,当然还有相应的测试技术;进行白盒测试,我们需要拥有一定的代码阅读能力和编写能力;安全性测试,我们需要一定的网络安全知识和数据库分析能力等等。
测试无聊
一件单调且无聊的事,作为测试的一个传闻,频繁见诸于主流媒体文章中,这些文章把测试者比作软件产业的装配线工人。而事实上,测试工作每天都呈现给我们新的令人兴奋的挑战。Michael Bolton(注:DevelopSense校长,Rapid Software Testing的作者之一)的一段精彩摘引很好的概括了这一点:
“测试是一件我们以寻找新信息为动机所做的事。测试是一个探索、发现、调查、学习的过程。当我们以评估,或者认知预料之外的问题为目的地配置、操作、和观察一个产品的时候,那么我们在测试。当我们尽力去寻找产品及其设计的程度和限制的时候,当我们被那些尚未回答甚至尚未问过的问题所驱使着的时候,我们在测试。”
测试人员与开发人员很难相处
这个论调的提出貌似很有普遍性,而实际上就我这几年的经验,无论做开发还是做测试,都没有与任何的同事产生难于相处的问题,反而都成了很要好的朋友。尽管测试与开发在工作性质上有着“形”的区别:开发人员是在构造项目,而测试人员是在破坏开发人员已构建好的项目;而实际上,本质并不冲突,都是为了项目的“成”和质量服务的。至少我认为在大部分公司中,这个论调是不成立的。
总有一天,机器自动化将代替手工测试
这是业界很多人所津津乐道的话题,记得曾经去某个外包公司谈合作,其经理很得意的告诉我们他们的目标就是未来以自动化取代手工测试,每个项目只需要一两个自动化测试工程师就ok了。
当然,我不否认自动化测试的作用,甚至我自己也在津津乐道于测试框架开发等工作,但是自动化代替人工测试?恐怕我得说“NO”。不是难于实现,而是根本不可能。
软件的最终使用者永远是人,所以只有人才能真正了解人的需求。例如用户体验,common sense等等,这是机器永远不能代替的。
测试自动化常被用来解决庞大的问题。因为要做的太多, 这庞大的范围使得自动化脆弱而不可靠。有些特定的事情自动化擅长而有些特定的事情人更擅长,这样看上去一个结合二者的方法也许更好. 我想要的是自动化使我的,作为一个人的,工作更加简单。自动化更擅长分析数据与注意模式。 它并不善于确定相关性和判断调用。 幸运的是人类擅长判断。
软件开发完成后进行软件测试
软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。
软件发布后如果发现质量问题,那是软件测试人员的错
这种认识很打击软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。
项目进度吃紧时少做些测试,时间富裕时多做测试
这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。
软件测试是没有前途的工作,只有程序员才是软件高手
由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。这两年来国内软件测试人员的需求不断增大,越来越多的IT企业认识到了软件测试的重要性,这种可喜的现状与发展趋势让笔者对我国软件业的发展重新抱有较大的希望。
不要 “动” 之前的业务逻辑,因为会 “牵一发而动全身”
要 “遵守” 之前的业务逻辑,现有的业务逻辑尽量不要和之前的冲突,为啥呢?
因为啊,一旦按照现在业务逻辑的话,就得把之前的改了,改之前的业务逻辑会非常的复杂,不仅开发需要改代码,而且我们测试要重新再测,所以,不要动之前的业务逻辑。
总结
如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的,都可以加入我们
644956177。群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!
最后让我们每天努力一点点,期待属于你的一飞冲天! 以上是我总结的几个误区,如果你还有其他补充的,那么欢迎留言讨论。