艾伟也谈项目管理,找出软件开发过程中的BUG,你需要火眼金睛

  1)Bug大都出现在程序员的编码过程中。测试人员工作之一就是找出Bug,面对那些难以被人发现的Bug,测试人员通常会采取哪些手段?以您的经验,对广大测试人员有什么好的建议?对于开发人员,您有什么建议让他们减少Bug的产生?

  之所以难以发现,大多是测试案例不够完整,检查测试案例是否全面覆盖了需求,等价类划得是不是够细有助于发现更多的问题。

  如果已经发现的问题大多是猜测法发现的,那么惨了,这是一个天马行空的测试,所有的BUG都将是难以发现的BUG,碰运气吧。如果你真的是在这个不幸的团队,别伤心,你有很多同伴都是这样不幸,继续用你学过的理论和可能不太多的编程经验,挖边界值,找亚边界,偷听开发人员聊天,看他们哪块儿是赶工的,哪块儿编得特艰难的,BUG往往在这里的,上升到理论就是20-80原则。

  发现难以发现的BUG曾经是评价测试人员的一个重要指标,这要求测试人员细心,有耐心,分析能力强,知识面广,逆向思维能力强,有创造力。要想练耐心细心,可以玩拼图,练习在人民日报上找错别字。练思维方式可以玩密室逃生,玩找不同。可以看出,测试人员还是满讲天份的,女生往往细心耐心有余创造力不足,男生偏向于跳跃思维,但往往坐不住。

  随着安全开发的概念的出现,软件的不可控性下降了,大家可以等着看微软Windows 7的补丁频率是不是还像2000/XP那么频繁。这个年代对测试人员的要求变成了开发能力强,要求结构化思维能力,简单的说,人治变法治了。

  开发人员的随意性是很大的,据说中国的开发人员和印度的开发人员的差别就在于中国的开发人员喜欢小创新而印度的开发人员一般比较乖。对于控制BUG,人治不如法治,人治是指教育开发人员开发时要多做校验,严格按需求开发,不要玩小创造等等,法制是指有严格的开发规范并有技术手段去保障开发人员遵守这样的规范。别把开发人员累死也是减少BUG的重要方法,测试人员成长为项目经理时一定记着这一点。

  (2)Bug除了出现在程序员编码阶段外,在测试过程中,会不会因为测试人员的操作失误,亦或是其他原因,导致软件出现Bug呢?

  只要软件还在生命周期里,都可能导致BUG的产生。在测试阶段,测试人员没发现的BUG,就留在软件里了,测试人员理解错误,本来是毛毛虫的BUG,他给理解成甲壳虫的BUG,而开发人员也居然就给改成甲壳虫了,也就引入了新的BUG。如果测试管理到位,测试人员发现的BUG不是直接交给开发人员,而是有个对需求了解比较好的管理者审一下,确定是否真的是BUG,再交给开发人员,可以有效地避免大部分测试导致的BUG。

  编码阶段的BUG其实只是BUG出现的一个小方面,最多的BUG,或说最严重的BUG,往往是在需求阶段,越早生成的BUG越难改,后果越严重。

  (3)对于测试人员来讲,除了借助于一些测试工具外,还应具备什么样的个人能力?是否需要具备自己动手处理Bug能力?再则您认为软件开发人员是否需要具备自我测试的能力?

  会用测试工具在应聘时超级管用,但要想当一个合格的测试人员,工具外的功夫还需要很多修炼。测试人员的技术能力很重要,作为开发测试,问题报告是给开发人员看的,需要用开发人员能看得懂的语言,因此懂开发,用开发人员的语言去描述问题就非常重要了,而如果是第三方测试,那么问题单不仅开发人员要看懂,业务人员,也就是用户也必需能看懂,这又要求测试人员要有被测软件所应用的领域的知识。

  表达能力也很重要,就是要把你发现的问题说明白,让别人看得懂。好的程序员用注释让别人看得懂,好的测试人员不用注释就得让别人看得懂。特别是不容易重现的问题,需要描述很多问题出现的背景条件,绝对是一个挑战。

  就像你无法描述开发人员应当需要什么能力一样,测试人员也各不相同,不管是技术强的,管理强的,沟通强的,脑子活的,细心的,耐心的,都会有发挥优势的地方。

  如果说一定要找一个最关键的能力,那就是责任心了。这是针对不太规范的测试而言,对于理想状态的测试,如果测试案例都定好了,测试人员按部就班执行就好。但一般来说,测试方案都是粗线条的,那么做一个案例还是做两上,猜测还是不猜测,都是测试人员主观需要确定的,这时,有责任心的测试的价值就体现出现了。

  我不建议测试人员自己动手处理BUG,开发人员和测试人员形成的相互制约在一定程度上保证了软件的质量。测试人员如果自己处理BUG,引入新的BUG的概率会大增,而且发现这样的BUG要比发现开发人员制造的BUG难得多。

  同样的道理,开发人员测试也会造成相互制约机制的破坏,因此,有条件的软件公司最好不要让软件开发人员测试自己的软件。但这也有一点例外,就是开发人员用白盒测试工具自己检查自己代码的质量,这样的测试还是建议开发人员自己做的。

  (4)我们经常看到一款软件在正式发布后,仍存在很多Bug。在产品发布后,是否还需要人员去进行测试Bug?对一款产品的测试工作,Bug率达到一个怎样的状态才算作合格产品?

  即使软件再也不打算升级了,只有还在使用,测试就还有意义。测试可以为下次升级做准备,即使不再升级,测试也能给使用者以信心,对于存在的问题,给出解决或预防的办法。更主要的是,用户一定会发现问题,开发人员要么根据测试人员的复测情况进行修改,要么就只能教育用户怎么避免问题了,比如:“那个地方千万别输入负数,否则系统会崩掉了”,多丢脸呀。

  而如果一个软件行将就木了,不仅不会再改,甚至不会再用了,那就别测了。

  Bug率多高跟软件给谁用有关,飞机火箭的BUG率要求肯定要比办公软件苛刻得多。套用一句据说是某快餐店销售人员的话:“给冰激淋的量应该是客户不投诉的最少量。”那么BUG率就应该是客户还愿意选用你的软件的最高BUG率就好了。对于一般软件来说,这完全是个市场行为,客户能接受,项目经理一定不会再投入测试人员了。而如果你的对手重重,或你有一个很有追求的上司,那么BUG率就会要求得比较严格。而对于飞机火箭来说,由于硬件投入大,政治影响大,事关人事等原因,BUG率的要求会非常苛刻,测试投入也应该大得多。

  (5)您认为测试人员有没有必要与开发人员在同一个项目组工作,能将Bug扼杀在萌芽状态吗?如果采用这样的工作方法,责任应该如何界定,避免互相推诿?

  将BUG扼杀在摇篮里是我们的终极追求。上面的问题谈到开发人员可以利用白盒工具检查自己的代码,这样就可以在代码还没有离开开发人员的手里的时候就杀掉它。在一个大型开发项目中,测试可能有很多的角色,如开发测试,为开发人员贴身服务,独立于测试,跟开发人员背对背,跟踪每一个研发版本,在发版前还有一个测试组,这个测试组发现的问题就要打开发和测试组的板子了。软件发版后,再有一个测试组,专门针对用户的反馈进行测试,将认为必要的改动记入下一个版本的需求中。

  不管测试和开发是在一个项目组中还是完全独立,出现推诿的原因一般是因为测试和开发上面共同的领导工作缺位,没有一个老大说了算。测试人员发现开发人员的问题天经地义,似乎开发人员没有反驳的余地,但测试人员也会有“水平有限,错漏之处,敬请谅解”的地方,这要是让开发人员揪住,当然会出现界定责任的问题。这就需要有一个站得更高的人,充分了解软件的需求和设计,由他来充当裁判,一方面保证开发人员按要求修改问题,一方面把测试人员提得不合理的问题驳回,主持公道,解决争端

  专家简介

  朱璇,女,年龄绝密,计算机系统结构专业,中国软件评测中心信息安全测试部副经理,十年软件和信息系统测试工作经验,目前主要从事信息安全测试,安全风险评估、安全技术研究和测试管理工作。

时间: 2024-10-31 12:50:19

艾伟也谈项目管理,找出软件开发过程中的BUG,你需要火眼金睛的相关文章

艾伟也谈项目管理,产品版本改造中的项目管理

近段时间,一直在负责一个产品版本改造(C/S系统进行B/S改造)的研发项目管理,在任务紧.时间短.团队成员又没有相关技术(Silverlight)背景的恶劣情况下,我带领包含我在内只有6个人员(5个研发人员,1个产品经理,产品经理在系统版本改造中主要精力投入到辅助市场部进行产品推广去了)的超小型项目团队,终于在公司给定的时间范围内完成了整个产品的版本改造.这其中经历了需求变更.技术风险.人员变动等诸多问题,项目任然取得了成功,这种使用新技术的试验项目能够取得成功不得不说有几分侥幸,更多的还是团队

艾伟也谈项目管理,克服在企业中应用敏捷方法的技术挑战

在企业中应用敏捷方法是一项具有挑战性的任务.实现敏捷不像安装软件那样能在一天内完成.而是需要适应企业环境,其中包括:文化.技术和组织方面.本文将探讨面临的一些挑战,这些挑战与建立开发环境.自动化测试.持续集成相关,并且同在企业环境中明确完成的定义(DoD)相关. 建立开发环境 每位技术负责人和开发经理都想缩减团队成员建立开发环境的时间.然而,为了在项目中获得较高的产出,开发人员要持续投入许多精力,让事情变得有条不紊.缺乏文档,是建立开发环境时间过长的关键原因.第二个关键原因是建立过程中包含多少手

艾伟也谈项目管理,利用简单的一元线性回归分析估计软件项目开发时间

引言       前两天一个朋友给我打电话,问我如何估计项目开发时间.对此我很诧异,问他以前他们是怎么估计的,他说以前基本都是大家开个会,大约都说说自己意见,最后负责人一拍脑袋,给出一个时间.不过这次遇到一个非常认真的客户,要求不但要估计出项目开发时间,还要明确说明具体的依据和估算方法,这下我这朋友有点犯难,才询问我.后来我翻阅了一些数理统计和项目估算方面的资料,告诉了他利用一元线性回归分析估计软件项目开发时间的方法.想到这种估算需要在一些开发团队很常见,所以在这里整理成文. 问题的定义及数学模

艾伟也谈项目管理,DevOps,不是一个传说!

DevOps最近成了热词,望文生义,你也能猜个八九不离十,它就是在说"研发团队"与"运维团队"之间的那点事儿.那么,到底什么是"DevOps"呢? WikiPedia上说:"DevOps是软件开发.运维和质量保证三个部门之间的沟通.协作和集成所采用的流程.方法和体系的一个集合.它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解."这恰好体现了精益管理中的客户价值原则,即:以客户的

艾伟也谈项目管理,解读敏捷需求分析五大关键因素

大多数学计算机语言的人都会有过这样的感受,过去一直认为编程和架构是整个软件生命周期里最了不起的部分,但实际工作后才会发现在商业产品里,需求分析才是一个商业软件成功与否的关键. 放眼望去,在当今软件工程领域出现的许多问题,诸如缺陷及资源运用不当,都源于需求的不清晰,甚至有软件人戏称:"需求变更乃万恶之源",一时也获得了颇多响应.时至如今,业务IT间需求分析过程中存在的问题主要有哪些?什么是敏捷需求分析?产品级和项目级需求有何异同?敏捷需求分析方法论中的五大关键点是什么?就以上热点话题,雅

艾伟也谈项目管理,我的项目管理观点

    公司要我给项目经理做一个培训,关于项目经理的做事情的方法和观点方面.我就采用了Workshop的方式,Workshop不是会议模式,而是侧重于交流会谈的一种模式,毕竟大家都是项目经理,并非说我的做法就是对的,所有的一切都是自己的经验之谈,所以我只是说大家彼此分享经验,交流心得.我把我所要分析的内容大概做了一个讲义,也希望更多人能够参与到这个Workshop中.项目经理好做吗?      项目经理好做吗?好做!项目经理好做吗?不好做.不同的人.不同的态度.不同的方法,其结果也就存在有极大的

致力于为客户找出软件漏洞的Bugcrowd获得了600万美元A轮融资

摘要: 致力于为客户找出软件漏洞的Bugcrowd近日获得了600万美元A轮融资,他们主要提供众包模式下的企业安全测试服务.本轮融资由Costanoa Venture Capital领投,Rally Ventures, Paladin Capital Group以及 致力于为客户找出软件漏洞的Bugcrowd近日获得了600万美元A轮融资,他们主要提供众包模式下的企业安全测试服务.本轮融资由Costanoa Venture Capital领投,Rally Ventures, Paladin Ca

软件开发过程中的审查 (Review)

软件开发过程中的审查 (Review)   希望别人做些什么->定义出流程 希望别人做出正确的结果->定义出审查制度    软件开发项目中包括很多的审查动作,贯穿于整个开发过程.个人认为审查主要有以下目的: 1.尽早排查出潜在的问题(Potential Risk/Issue)   经过其他人的参与,以不同的视角提出不同的看法,会有类似头脑风暴的效果,集思广议来查找工程师未能注意的问题. 2.保持良好且有效的双向沟通   很多时候沟通并不充分,总有许多以为明白,实际并不明白的情况.组织管理人员需

求解答-试编写一个算法,找出一个循环链表中的最小值。我是新手,编了一个程序,不知错在哪

问题描述 试编写一个算法,找出一个循环链表中的最小值.我是新手,编了一个程序,不知错在哪 #includeusing namespace std; class LinkNode{ int data; LinkNode *link; LinkNode(int d=0LinkNode *l=0){data=d;link=l;}}; class List{private: LinkNode *first; int n;public: List() { first=new LinkNode; first