软件测试工程师的疑惑Word格式.docx
- 文档编号:20086977
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:15
- 大小:32.31KB
软件测试工程师的疑惑Word格式.docx
《软件测试工程师的疑惑Word格式.docx》由会员分享,可在线阅读,更多相关《软件测试工程师的疑惑Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
一类是没有正确理解用户需求,由系统需求或者分析人员设计出来的缺陷,这类缺陷主要由设计人员“生产”;
另外一类是程序开发人员没有按照设计要求进行开发或者编写的代码存在错误而引起的缺陷,这类缺陷由程序开发人员“生产”。
对于那些开发流程不规范的组织,通常开发人员会包办测试前的大部分工作。
在这种环境下,几乎没有什么设计文档,软件开发主要按照程序设计人员的想像来进行,这个时候的缺陷则主要由开发人员“生产”。
测试人员不是缺陷的“生产”者,因为测试人员没有写过一行代码,这是否意味着测试人员可以在一旁“幸灾乐祸呢”?
事实恰好相反,测试人员与缺陷关系更加密切,他们是“缺陷的缺陷”的制造者。
所谓“缺陷的缺陷”,主要指测试人员提交的“不是缺陷”的缺陷,即测试人员没有正确理解需求,从而提交了根本“不是缺陷”的缺陷,这种缺陷也是测试人员经常受到指责的重要原因。
关于上面的抱怨,测试和开发双方都需要摆正心态:
因为实际双方都在不停的“生产”着缺陷,只是创造的方式不同罢了。
3、缺陷产生的原因是什么?
在上个问题中,已经介绍了设计人员、开发人员、测试人员都会“生产”软件缺陷。
在实际工作中,缺陷产生的方式更是层出不穷,原因也是多种多样。
例如开发人员去接杯水,碰巧和另外一个接水的同事聊了几句,结果回到工位时忘记了要在某个判断语句追加此前已经想好的一个判断条件,这无疑会产生一个缺陷。
因此很难一下子把缺陷产生的原因全部陈列出来,下面只是一些引起缺陷的典型原因:
(1)开发人员不太了解需求,不清楚应该“做什么”和“不做什么”,常常做不合需求的事情,因此产生了缺陷;
(2)软件系统越来越复杂,开发人员不太可能精通所有的技术。
如果不能正确地掌握新的技术或者知识,可能会产生缺陷;
(3)技术文档普遍编写的很差,甚至文档本身就有缺陷,导致使用者产生更多的缺陷;
(4)软件需求、设计报告、程序经常发生变更,每次变更都可能产生新的缺陷;
(5)任何人在编程时都可能犯错误,导致程序中有缺陷;
(6)技术人员常处于进度的压力之下,不能静心思考也很容易产生缺陷,尤其是在Deadline临近之际,频繁的加班是开发人员疲于应付进度;
(7)很多开发人员过于自信,喜欢说“没问题”,因此对于一些代码不进行认真的调试,这也是一些缺陷产生的原因;
(8)频繁的拷贝代码也会把缺陷随之复制到新的程序中,尤其是复制其它团队成员的代码更容易使一些缺陷隐藏在程序中。
4、软件的质量应该由什么人来负责?
对于一些开发管理混乱或者测试刚刚起步的组织,产品质量一发生问题,习惯上会归咎于测试小组,认为测试人员没有测试好产品,所以才产生了那么多的缺陷。
对于开发管理规范一些或者测试体系已经建立一定时间的组织,如果客户投诉产品质量问题,则往往开发人员与测试人员会一起接受处罚。
这种处理方式多少会让测试人员心理稍稍平衡一些。
追根溯源,软件发生质量问题实际是项目管理不规范引起的。
因此,如果要追究责任的话,软件质量问题的责任应该由整个团队来承担。
只有提高整个团队的开发水平,才能提高质量。
此外,也应该认识到软件发现问题是正常的现象,很少有软件实现了零缺陷。
做为公司领导者,应该具体问题具体分析,不要老是考虑如何惩罚自己的成员。
5、测试能保证质量吗?
在软件质量方面,目前多数IT企业主要采取三种措施:
技术评审、过程检查、软件测试。
技术评审:
技术评审最初是由IBM公司为了提高软件质量和提高程序员工作效率而采用的,主要指对项目计划、软件需求、系统设计等文档进行有效评审的过程。
技术评审可以由专家团队组成,也可以由组织内部人员组成,它可以尽量避免设计人员在某些方面发生“闭门造车”的情形。
通过技术评审,可以尽早地发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量。
过程检查:
属于质量工程师(QA)的工作范畴,主要检查软件项目的“工作过程和工作成果”是否符合已经制定的相关规范。
在项目执行过程中,质量保证人员要不断的按照项目计划对项目进行有效的监督和检查。
通过过程检查,可以找出明显不符合规范的工作过程或者工作成果,及时纠正开发中的错误。
因此,软件测试只是保证质量的最常用手段,仅仅通过测试是不能够保证质量的,还要辅以技术评审、过程检查等手段。
6、测试人员是否需要开发技能?
在很多测试网站的论坛上,这个问题都是津津乐道的热门话题。
而究其根源,主要是因为很多测试人员做不了开发才来做测试,于是其中的很多人便怀着一些“胆怯”心理,与同行反复探讨这个问题,期望其他人能够肯定“即使不会开发也能做好测试”的观点,以便在心理上得到一些安慰。
是否需要开发技能与测试人员从事的测试工作种类有极大关系,相信很多人都听过微软曾经聘用一名家庭主妇来测试Windows操作系统的故事。
实际上,如果从事单元测试、集成测试等较接近程序代码的工作,无疑需要开发技能,这类工作对测试人员开发技能的要求甚至会超过程序员;
而从事基本的界面测试、用户功能测试,不会开发不会有大的影响。
但是,原则上还是建议测试人员最好具备一定的开发能力,而且是开发能力越强越好,开发技能对测试工作可以说是“百利而无一害”,例如可以更容易避免报告重复的缺陷、对缺陷原因进行更准确的定位等等。
同时,由于国内多数公司对测试人员没有分类,要想得到更多的发展机会,也应该学会开发,便于从事各种类型的测试工作,除非只从事那些远离代码的测试工作。
此外,掌握一门开发语言后,进行测试的时候可以站在程序开发的角度进行思考,而且知道程序如何编写,就更容易发现问题。
7、测试的目的是什么?
测试的目的是为了发现尽可能多的缺陷,这个观念很容易让人接受,但是却很难落实到实际工作中,因为测试的目的常常被定位为“证明软件没有问题”。
软件质量是否优良在投产后才能有所体现。
正确理解测试的目的十分重要。
如果认为测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地设计很多不易暴露错误的测试示例,这些测试用例恰恰证明软件实现了预期功能,这样的测试是不真实的。
成功的测试在于发现了迄今尚未发现的缺陷,测试人员的职责是设计这样的测试用例——它能有效地揭示潜伏在软件里的缺陷。
8、一个软件产品测试结束时没有发现任何新的缺陷,这样的软件质量一定好吗?
测试只能证明缺陷存在,不能证明缺陷不存在。
而彻底的、全面的测试又难以成为现实,现实中要考虑时间、费用等限制,不允许无休止地测试。
通常的测试结束,只是满足一定条件下的测试结束,最后的“测试”还是交给了用户。
因此,即使测试结束了,质量也不一定好。
例如测试小组在时间紧迫的情况下,只测试了核心模块,这样的软件系统质量一般不会好。
9、测试中的80-20原则是什么?
测试中的80-20原则是说一般情况下,在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug,而系统测试又能找出其余Bug中的80%,最后的5%的Bug可能只有在用户的大范围、长时间使用后才会暴露出来。
因为测试只能够保证尽可能多地发现错误,无法保证能够发现所有的错误。
还有就是一般情况下80%的缺陷聚集在20%的关键核心业务模块中。
10、测试到Zero-bug是测试工作的目标和原则吗?
通常对于相对复杂的产品或系统来说,Zero-bug是一种理想,Good-enough是我们的原则。
Good-enough原则就是一种权衡投入/产出比的原则:
不充分的测试是不负责任的;
过分的测试是一种资源的浪费,同样也是一种不负责任的表现。
执行测试工作的关键在于:
如何界定什么样的测试是不充分的,什么样的测试是过分的。
解决这一问题的通常方法是制定最低测试通过标准和测试内容,然后具体问题具体分析。
11、通常测试工作要达到什么目标?
(1)确保产品完成了它所承诺或公布的功能。
这一目标就是软件要符合需求,开发出的软件应该达到所有功能都有明确的书面说明------在某种意义上与ISO9001是同一种思想,测试的首要目的就是保证所有预定功能是存在并且经过规范的测试。
当然书面文档的不健全甚至不正确会导致测试效率低下、测试目标不明确和测试范围不充分,进而导致最终测试的作用不能充分发挥、测试效果不理想。
因此具体问题一定要具体分析,一个好的测试负责人尽量来弥补这些文档缺陷。
(2)确保产品满足性能和效率的要求。
现在的用户对软件的性能方面的要求越来越高,使用起来系统运行效率低(性能低)、或用户界面不友好、用户操作不方便(效率低)的产品市场空间肯定会越来越小。
因此通过测试改善性能也是测试工作一个目标。
实际上用户最关心的不是软件的技术有多先进、功能有多强大,而是能从这些技术、这些功能中得到多少好处。
也就是说,用户关心的是他能从中取出多少,而不是你已经放进去多少。
(3)确保产品是健壮的、适应用户环境的。
健壮性即稳定性,是产品质量的基本要求,尤其对于一个用于事务关键或时间关键的工作环境中的应用系统。
软件只有稳定的运行,才会不致于中断用户的工作,因此通过健壮性测试是软件测试工作的又一个目标。
2.测试管理部分
1、测试负责人要进行严格的测试进度跟踪吗?
很多时候,由于人力资源的不足,测试项目负责人都是在执行测试,这样就使整个项目缺乏控制,一些问题(例如:
有些成员的缺陷质量不够合格;
开发人员修改不及时,系统某些功能发生严重问题导致部分功能无法测试。
)得不到解决,耽误了进度。
所以测试负责任必须全程监控项目,尽可能多的掌握信息。
通常,测试负责人需要完成下面这些内容的管理工作:
●测试用例执行情况;
●每个测试员提交的缺陷情况;
●测试中是否发生突发问题。
2、测试也有版本控制吗?
这里的版本主要是指测试对象的版本控制,也就是指对开发部提交的产品进行版本控制。
在开发小组版本管理不规范的情况下,测试小组进行版本控制十分重要,要保证测试对象是可以控制的。
建议开发和测试双方进行明确的约定,可以各自指定专门的测试版本负责人,制定提交原则,对提交情况进行详细的记录,这样基本避免了版本失控导致的测试失误或无效。
3、如何处理测试人员的流动问题?
人员流动不仅仅是测试部门,这是IT行业的普遍现象。
从管理者角度,主管需要多多和团队内成员进行沟通,建立一个融洽的团队环境,及时掌握情况,可以早些进行相应的调整。
但是只有企业建立好的用人制度,给员工提高广阔的发展空间和好的培训学习机会,才能从根本上解决这一问题。
加强项目管理,强化文档管理并保证文档的有效性,可以大大减少由于人员流失带来的损失。
同时,测试部门要建立培训机制,使新到员工接受直接或者间接的培训,快速适应工作。
4、为什么开发人员经常抱怨测试工程师提交的缺陷质量太差?
我们经常听开发人员说:
“这不是缺陷!
”,“这个缺陷没有,因为我的系统上运行正常!
测试工程师本身就是做质量工作的,提交的成果本身就应该质量高些,为什么还会有这种现象?
提交的缺陷引起争议是一种正常的现象,例如测试人员描述不清楚就会引起争议。
减少甚至避免这种现象的方法是交叉测试,交叉测试是提高测试质量的一个有效手段,当然交叉测试会增加一定的测试成本投入。
在测试任务完成后,测试工程师之间互相验证彼此提交的缺陷,就会避免了缺陷描述不清、因运行环境而产生的缺陷等一系列问题,从而大大降低了回归测试以及交流的成本,因而这种投入也是值得的,实际开发人员在单元测试阶段也会进行交叉测试,来提高开发质量。
另外,测试人员一定要按照规范描述测试中发现的缺陷,一个缺陷至少描述清楚概要描述、详细描述、重现步骤三方面的内容。
5、“让那些新手来做测试,反正他们也不会什么”正确吗?
在实际项目开发中,我们常常看到有些单位忽视测试团队存在的意义,当要实施测试时,往往临时找几个程序员充当测试人员。
也有些单位尽管认识到了组建测试团队的重要性,但在具体落实的时候往往安排一些毫无开发经验的行业新手去做测试工作,这常常导致测试效率低下,测试人员对测试工作索然无味。
根据笔者的经验,测试团队应首先聘请一名资深的测试领域专家,他应具有极为丰富的同类项目软件测试经验,对软件开发过程中常见的缺陷或错误了然于胸;
此外,他还具有较好的亲和力和人格魅力。
其次,项目测试团队还具有很多具备一技之长的成员,如对某些自动化测试工具运用娴熟或能轻而易举地编写自动化测试脚本等。
另外,测试团队还应聘请一些兼职成员,如验证测试实施过程中,同行评审是最常使用的一种形式,这些同行专家就属于兼职测试团队成员的范畴。
至于测试团队里里的测试新手,这部分人可以安排去从事交付验证或黑盒测试之类的工作。
6、测试同化现象是什么?
同化现象是指随着时间的推移,开发人员会逐渐影响测试人员的思维和对缺陷的判断能力,尤其是针对同一产品,同一组开发人员和同一组测试人员共同配合了很长时间,很多本来是缺陷的问题,由于测试人员对软件“习惯成自然”的使用,会不被当成缺陷,尤其是在开发人员的解释和说服下。
同化现象发生可能意味着“恶性循环”的开始:
测试人员会帮着开发人员解释一个个缺陷的合理性,一轮有一轮的测试都不会发现问题。
招聘新的人员,不同的测试项目组轮换去测试不同的产品,就可以避免。
同时建议产品可以发布测试版,更多的人对其进行测试,就可以发现更多的问题。
7、测试工程师如何避免定位效应?
社会心理学家曾作过一个试验:
在召集会议时先让人们自由选择位子,之后到室外休息片刻再进入室内入座,如此五至六次,发现大多数人都选择他们第一次坐过的位子。
这种现象称为定位效应,说明人们习惯上凡是自己认定的,人们大都不想轻易改变它。
定位效应在开发人员和测试人员身上都有体现。
例如开发工程师针对某一自己写的功能,经常进行代码移植,这种复制的“功能”,由于上一次经过调试,在新的地方往往不会认真调试,这些代码往往会带来共享变量冲突等许多种类型的缺陷。
定位效应体现在测试人员身上就是测试过的功能不再进行认真测试:
在回归测试时,之前由于进行过认真的测试,往往会认为某些功能是可靠,只要验证一些以前发现的缺陷是否修改完成就可以了。
这种现象在反复多次回归时表现的更加突出,因为回归测试中很多功能都会进行多次反复测试。
众所周知,开发人员在修改缺陷时往往会引入新的缺陷,测试人员的疏于防范就会把这些缺陷带到用户这里。
解决这种问题的方案一般有两个:
(1)
完整的执行测试用例:
这种方法投入较大,但是在开发产品时最好在最后一次回归测试时测试的执行一次全部的测试用例。
(2)
交叉测试:
测试人员交叉测试,就可以很大程度的避免定位效应。
测试工程师在回归测试时互相交换任务,反复测试某一功能的机会大大减少,从而也就不会“主观的”人员某些功能没有缺陷。
通常上面的两个方法都是结合使用的,既要进行交叉测试,又要全面执行测试用例,测试覆盖面要尽可能的广泛。
8、测试人员忽然辞职怎么办?
目前IT行业人员流动较大已经成为一种不争的事实,员工的辞职大多数都会给组织带来一定的影响,而这种影响基本是不可能避免的。
在测试领域,员工忽然辞职也会带来很大的负面影响,尤其测试队伍规模较小时。
面对这种情况,我们所能做的,就是如何最大限度的降低这种影响。
根据作者的经验,主要有两种方法:
第一种是在测试人员内部建立一个良好的学习环境,大家互相学习,这样某些特有技术不会被某一个人所掌握,而互相学习和提高自身,也是大多数成员愿意做的;
第二种就是在组织中进行知识管理,把技术作为知识沉淀下来,这样新的员工在接手工作时容易上手,通过学习快速适应环境。
此外,日常还要注意工作规范化,例如形成尽可能多的文档,都可以降低员工离职带来的损失。
9、测试人员工作发生问题测试经理应该如何做?
测试人员工作发生问题是测试经理经常要面对的问题,作为测试部门的领导,首先要做的是指出测试人员所犯的错误,使其尽快改正错误。
唯一不能做的就是盯着下属的错误不放。
总盯着下属的失误,是一个领导者的最大失误。
英国行为学家波特说:
当遭受许多批评时,下级往往只记住开头的一些,其余就不听了,因为他们忙于思索论据来反驳开头的批评。
身为测试经理要根据测试人员的心理来进行指导,最大限度的调动每个人员的积极性来参加工作。
10、不深入到具体测试工作时,测试经理如何考核员工?
这种现象在测试规模较大的组织中很常见。
测试经理应该尽可能的安排每周与每个成员在不被打扰的环境下进行谈话,这样可以尽早发现和解决很多问题。
做为一个测试经理,主要工作之一就是定期的评定组织做了些什么并且是怎样做的。
同时还要为员工做一个报告——关于充分了解测试人员正在做什么和怎样做的报告,以此来给测试人员做做工作成绩考核。
这份报告要了解到每个人的动态。
测试经理和每个员工重点是谈谈目前的工作,例如大家在工作中的问题或意见;
是否需要帮助等。
许多管理者经常抱怨没有时间在一周会见每一个员工来谈他们的工作。
但是根据作者的经验,如果不能安排时间和员工进行每周的谈话,员工会来打扰测试经理的工作,因为员工很多问题还要要来找测试经理商议。
同时对待员工要用他们能接受的方式,而不是我们自己可以接受的方式。
“己所不予,勿施于人”,这条黄金法则可能会对许多生活中的纯粹的社交因素有效,但是并不是总对工作有用。
有效率的管理者知道应该逐渐了解每一个员工需要怎样的对待方式。
总之,只有尽可能多的和员工接触,才能更精确的进行考核。
11、测试经理如何面对加班问题?
大多数情况下,作者是不主张加班的。
当员工每周工作超过40个小时的时候,他们开始在工作的时候关心自己的事。
他们花钱,会给很久没有联系的人打电话,因为员工们一直都在工作。
员工不能在太疲劳的状态下完成工作,这是因为他们在工作时不能关心自己,这种情况下通常效率很低。
测试管理工作的重要任务之一就是要创造一个环境,让员工在工作时间内完成工作,同时还要鼓励他们每周不要超过40小时,甚至可以基于他们在40个小时能够完成的工作量给他们酬劳。
通常情况下这样做能够提升创造力,从而会逐渐提高效率。
测试工作本身的一个突出特点就是不断重复枯燥、冗长的测试,如果在疲劳状态下,很有可能精力不集中,略过一些重要的测试环节。
而且有的时候测试需要编写测试驱动程序,这种情况更需要较好的状态来工作。
12、测试管理者如何面对自己的错误?
每个人都会犯错。
我们可能会因为忘记开会而使客户发怒,承认自己犯错是一件尴尬的事情,尤其是管理人员认为对自己负责的项目小组承认犯错可能会失去尊严。
如果我们不是经常犯错,承认错误的时候其实能够赢得尊敬。
例如我们忘记一次会议,然后为此向同事或者客户道歉,其他的人会理解我们的。
不管做了什么,不要否认或故意忽略自己的失误。
故意忽略不会让错误消失,这只会让错误成长为怪物。
13、为什么计划定期的培训?
测试工作和开发工作一样,不但要面对日新月异的新技术,还要学习相关系统的领域知识。
只有在不断的学习中,才能做好工作,跟上行业的发展。
如果测试管理者没有基于不断的变化而培训员工,就会给组织带来一定的损失。
日常培训可以是关于特定项目或者是技术,通常采用下面几种方法:
(1)测试部门内自由交流方式的培训。
这种培训的交流比较随意,可以在周五的例会上进行交流,也可以大家一起坐在茶馆里进行交流。
方法可以采用“头脑风暴法”,让每个组员讨论一个特定的领域,这种交流方法特别对同时要做很多不同项目的小组比较有益处。
当每个人做不同的项目,这会有助于每个人了解你小组所有的工程。
(2)跨部门的互相学习。
测试工作需要很多领域以及技术知识,这些知识单靠自学是远远不够的。
和其它部门的同事进行交流是一个相当好的办法,大家在工作中可以在技术等各个方面互相得到提高。
(3)外部培训。
外部培训尽管投入较高,但也是值得的。
这些专家一般在自己的领域非常精通,可以快速提高整个测试团队的水平。
也可以通过测试小组介绍一些朋友来进行培训,这种方式可以降低成本。
培训是构造学习型组织的基本条件,也是提高员工水平的重要方法。
经常的定期培训,可以增强组织凝聚力,使员工更加愿意长期留在组织中发展。
做为测试负责人,定期的进行培训是十分必要的。
14、时间上不允许进行全部测试,测试负责人应该如何做?
这个问题也许十分可笑,可是现实中我们的测试经理们却不得不面对这个问题。
这里的全部测试不是指对软件进行遍历测试,而是指测试负责人制定的测试计划包含的全部测试内容。
通常,不管是开发产品还是做具体的项目,都会发生耽误进度的情况。
一旦整体进度不能向后延迟,项目相关人员习惯上的做法就是缩减测试时间。
尤其在功能还没有开发完成的情况下,这种现象更为突出。
担负着质量重任的测试经理,如何来解决这个问题呢?
比较好的做法是按照下面的步骤逐步来完成和改进工作:
(1)按照测试任务的轻重缓急,尽最大努力完成测试任务。
在时间不足的情况下,我们应该对测试任务按照优先级来划分,重要紧急的任务先完成。
这个时候的测试任务是一种辅助性工作,其目的就是尽最大努力来提高质量。
因此,面对这种情况,测试负责人要做的就是带领测试小组充分利用所有资源来保证质量。
(2)在实际工作中和开发人员共同配合,逐步改进工作。
只有整个团队的软件开发能力提高了,才能从根源上解决问题。
因此,测试负责人要带领团队和开发小组共同寻找适合自己的开发模式,从而使项目规划的更加合理,进而按照预定计划来开展测试工作。
总之,在任何情况下,测试负责人都不应该抱怨。
只有积极的面对问题,才能更好的解决问题。
15、公司不重视测试,测试负责人如何开展测试工作?
目前国内的软件公司不重视测试仍然是一种普遍现象。
尽管很多公司在意识上已经开始重视测试,但是在具体工作中,往往由于追赶进度、节省资源等方面原因而忽略测试工作。
在这种情况下,测试负责人仍要对软件质量负主要责任。
在这种环境下,测试负责人应该如何开展工作呢?
首先,要主动去配合开发人员完成工作。
尤其是不能抱怨环境,在任何情况下抱怨是不能解决问题的,只能加重矛盾的激化。
在此基础上,逐渐显出测试工作的重要性,然后再逐步健全测试体系。
其次,用实际行动来证明测试工作的重要性。
只有测试工作的业绩逐步表现出来,人们才会真正的注意到测试的重要性。
因此,测试负责人从点滴开始做起,才能逐步做好测试工作。
要想做好软件,把开发的软件产品形成商品,测试工作必须和开发一样重视。
否则,质量不好的产品,很快会被市场淘汰的。
现代的软件规模越来越大,测试工作也会越来越重要,因此测试负责人只要坚持做好工作,可发挥作用的空间会越来越大。
最后要说
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 工程师 疑惑