51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2679|回复: 15
打印 上一主题 下一主题

[原创] 跟ricmy的一次讨论

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-20 00:11:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   写在前面:有幸在论坛中就产品质量问题跟ricmy兄进行了深入讨论,现在把讨论记录整理了一下,收藏在这里。


ricmy

    对测试的新理解

    转到测试部门已经半年了,在这半年的时间内,对测试的理解越来越深刻了
从一开始认为 测试依赖人的因素,只要下面的人专业知识上去,对产品品质会有很大的提升,于是花费了很大的精力投入到对员工的基础知识的培训,一个月下来确实有些成效,大家对测试的基本知识,以及case 撰写的一些方法都有很好的掌握,但是对产品品质确没有起到明显的效果
    2个月后,认为品质不好的根本原因是Test Case 撰写不到位,如果Case 到位,那么可以将人为的因素减少,于是又花费了我2~3个月的时间将每条产品线的Test Case 重新进行Review ,且对公司的Test Case模板进行改良,这次有些效果,可是也不是很明显
    6个月后,认为测试策略很重要,因为即使你有很好很全面的Test case ,可是每次测试的时候把握不住重点,再好的case 在有限的时间内你只能挑选部分进行测试,这个时候策略就变得尤其重要,而策略这个东西又得靠人。
    原本想通过一些方法来减少依赖人因素,结果绕了一圈,又回到原点
    当然如果是一个非常成熟的公司,遵循CMMI流程,可以通过组织的资料库来减低人的因素,可是,我们虽然过了CMMI3 但是如同虚设,起不到任何作用,看了最近有必要加强测试策略学习


愚人:
    产品质量是设计出来的,是开发出来的,不是测试出来的……

ricmy
    如果是在一年前,我或许会非常赞同你的观点
    可是现在,我对此有些其他的理解,一个好的测试,可以在很大程度上保证产品的品质可是一个好的开发,比不上一个好的测试所能保证的力度(请注意,我只是强调测试所保证的力度大一些,并没有否认开发不能保证)
如果说一个好的测试可以保证产品 80%~90%的品质,那么我认为一个好的开发只能保证 50%~60%的品质,甚至可能还会低一些
    原因有3点:
    1. 一个好的测试,会包含End use 所可能遇见的场景,并对这些场景进行反复的测试,同时还能包含到一些End use 所不能遇见的测试,一个产品只要是经过一个好的测试所Release 出去,我相信用户的一般使用应该是没有问题,不然这个就不叫好的测试了
    2. 一个好的开发,会对程序的架构,逻辑等做出好的设计,同时在单元测试方面也做的非常的到位,可是,好多时候开发只是对部分功能的测试,而非一个系统测试,所以在很大程度上无法做到一个全面的测试
    3. 开发人员的测试通常具有局限性,因为他们对程序的流程非常的情况,在思考测试的时候,会有思维的局限性,有时候很难跳出这个圈圈,这就会导致测试会出现很多漏洞

以上只是个人意见,欢迎讨论

愚人:
    说质量是设计出来并不是说不要测试,反而更需要测试,不仅仅是后期的测试,测试要在产品需求阶段就参与,提出可测试性需求,如要产品留一下接口供测试使用,如日志,如方便现有工具的使用,在需求阶段,测试要参与需求的评审,参与产品设计风险分析,不仅仅是测试,还要客服,QA,集合大家的智慧,经验,尽可能的预测风险,在设计的时候把缺陷降到最低。
     诚然,做到这样很难,但是不少优秀的公司已经向着这个方向做了,比如华为,如果发布三个版本还不能通过测试,项目经理直接下课,所以华为非常非常重视前期的设计和风险分析。
     后期的测试很重要,但是前期的测试更加重要,这就对测试人员提出了更高的要求。大家都听说过,越早发现bug,解决成本越低。微软公司专家撰写的一本书《测试有道——微软测试技术心得》中就一专家说我再也不想做测试的,测试出的那些问题完全可在设计中发现解决,可能不是原话,大体是这个意思。
    可以这么说,任何后来的测试都是亡羊补牢的工作,当然亡羊补牢,尤为不晚,但是如果能做到未雨绸缪,将是怎样的降低成本。记得某此培训课上,老师也讲过波音公司某架飞机的设计,就是前期工作做的比较好,没用怎么测试就可以试飞了。
    当然,公司发展程度不一样,能做到的设计质量也不一样。bug也不可能在设计时全消灭,就像不可能在测试中消灭。但测试只是把设计的缺陷或者编码的缺陷找出来了,然后开发去修复或者掩盖bug,表面上是测试帮助产品提高了产品质量,诚然,产品质量确实没那么坏了,但是产品质量并没有提高,仅仅是没那么坏了而已,因为设计在那里放着呢,这就是为什么不少国产软件或产品不如国外的,主要还是设计的不行,这就错过了未雨绸缪的机会;设计不行也就算了,还不重视后期的测试,发现亡羊也不补牢,或者就就简单的补补……
    不知道大家有没有遇到这样的问题,因为几个bug整个软件的设计架构都要重构,给你一个架构都很乱的软件,即便是你很牛,能测试出所有bug ,但是也不可能提高产品质量的。
    以上是一些浅薄的认识,欢迎继续讨论……
ricmy
    从愚人兄的字里行间可以看出,愚人兄对测试确实有很深的理解,这里确实让人佩服。
不过,我这里举一个软件行业之外的例子 看是否可以从另外一面来说明这个问题:
我想前几年**的事件大家都记忆犹新了,作为**,曾经的乳品行业第一位,通过了如ISO9001ISO14001认证、GMP审核和HACCP认证,从这些证书来讲,我可以说,三鹿在生产流程以及监督制度方面肯定是非常健全的,正因此获得了所谓国家免检产品称号,结果呢?就是因为免检,所以才导致后来的**事件,这是多么严重的一件事情呀!残害了多少无辜的儿童。从那以后国家视乎意识到免检的危害了,几乎取消了所有产品的免检资格。
    从上面的一个例子,我们可以看到产品的测试是很等的重要,从某种程度上来讲,只要产品测试各项指标符合要求,其实对其的生产过程反而可以不用那么太在意。
    诚然如你所说,一个好的开发,设计,可以减少一些产品的成本,但是这个并不能完全等于 一个高质量的产品,而从另外一个角度来说,一个好的测试约等于 一个高质量产品。同样,我从没有否认设计的重要性,我是一个从事了多年开发的人,对产品设计的重要性我想我的体会应该是相当深刻的,一个好的设计所强调的是模块划分的合理性,接口的规范性,架构的可扩充性以及可便于维护性,而这些所强调的只是代码的一个品质,而不是一个产品的品质。其实在早期的开发中很少有讲到设计的概念,那个时候也是有高品质的产品,软件设计也就是到了有OO开发后才慢慢的流行起来,当然我也不否认,那个时候也没有什么软件测试这一学科,但是那个时候开发人员其实应该是做了大量的单元测试,以及整合测试,系统测试,只是那个时候的这些概念不是那样的清晰罢了。
   正如前面所说,我进入测试领域还不到一年的时间,在很多认知上面可能存在一些欠缺,还欢迎大家通过讨论的形式来共同的进步。


愚人:

    我知道跟大家的争论点在哪里了,是大家理解的质量的阶段不一样,及产品设计质量和上市产品质量。
    首先,我从未怀疑过测试对上市产品质量的贡献,因为我自己做了差不多三年测试了,深知测试为保证质量付出的艰辛与汗水,请看准,这里是说保证而不是提高。因为我还是认为,产品的质量在设计的时候就已经确定了,后面的开发和测试都是为了尽可能的使产品的质量接近设计质量。
    ricmy兄在9楼说如果说一个好的测试可以保证产品 80%~90%的品质,那么我认为一个好的开发只能保证 50%~60%的品质,甚至可能还会低一些,并且列出了三点原因,愚人都同意,但这都是尽量的去保证质量,去保证的这个质量是尽可能的去达到设计时的质量目标,确实是,开发和测试在产品设计出之后,能做的就只有使产品质量与设计质量目标相差不是太远,也就是一个保证的作用,而不是提高。
    所以说大家的争论点是因为质量的阶段或者概念。试想诺基亚手机和国产手机并,谁的质量好,该是不言而喻的。我想着绝对不是国产手机没有测试好,而是设计质量就决定了产品质量。如果把诺基亚的测试人员和某国产厂商测试人员兑换,我想诺基亚质量依旧可以遥遥领先国产的(我不是崇洋媚外,事实就这样),因为设计在那里放着呢,开发测试只起到了保证作用。当然诺基亚的手机也不可能达到他们的设计质量目标的。
    至于 ricmy兄提到的XX事件,更说明了另一点——团队。只有高水平的设计人员是生产部出来高质量的产品的,或者说设计出高质量的产品不一定能生产出,后面还需要高水平的开发,测试,生产人员。把高质量的产品提交给用户需要团队的努力。这就是国外外包订单会给富士康。伟创力(虽然是血汗工厂,但是不能否定他们的制造水平),而不会随便给比亚迪。XX虽然是国内知名品牌,并不是产品质量是多么好,是因为符合中国国情,因为大多数国人的消费能力只能消费那个品牌。如果国民消费能力可以的话,估计xx也要被淘汰,因为设计质量不高。
    大家反对,估计是我说产品质量是设计出来的,开发出来的,那么我收回后半句,产品质量确实是设计决定的,后面的开发、测试和生产只是尽可能的去保证最终上市的产品接近设计质量,最终上市产品的质量,则是由团队合作决定的……


Ricmy


    愚人兄这样的理解我还是比较赞同的,一个好的团队往往可以保证从他们手上出来的产品品质,不过往大一点说,这个应该决定于一个公司的文化,或者说是一个公司的定位,往往就这2点,我们往往就可以判断一个产品的好坏,正如愚人兄前面提到的,一提到诺基亚,大家都与皮质耐用相联系,一提到苹果大家就与时尚个性与高品质所联系一样,与其说是设计决定的,还不如说是文化与定位决定的,我相信国产手机在研发能力上不至于说是不能设计一部好品质的手机,也不是他们没有这样的生产团队(富士康不也是我们自己中国人吗)而是他们给自己的定位就是这样(我就是一个二流产品),不过有时候因为策略的原因,苹果偶尔也会出现这样的问题,最近iPhone 第四代OS 不就是因为想抢占商机,结果出现信号不好的情况,紧急之下除了一个升级版,结果还是一堆问题,微软不也是出现过几次这样的情况吗?像之前的WinME以及最近Vista 不都是一个失败的产品吗。
   正如我前面所提到,我从来没有否认设计的重要性,也没有否认设计对产品品质的重要性,一个好的品质需要各方面的共同努力才能达成,缺了谁都不行!!


愚人:

    我没说富士康不是中国人的,我是说国外那些外表订单给实力强的外包公司……
    呵呵……
    嗯,文化和定位觉得了很多东西,是一个公司的灵魂……
Jackc

    呵呵,很不错的帖子,仔细看完了。
    说到NOKIA手机与国产手机,确实存在愚人兄存在的问题,但是我有一些自己的理解
    我们换一个角度看手机市场:从产品成本上来看
    NOKIA手机的设计/生产/维护成本远远高于任何国产手机(不是简单的1~2倍的问题)。而支持长期高成本的产品输出,则需要足够大的利润。好在NOKIA的手机市场份额够大,它能够支撑。而国内呢,在手机行业中很难找出这样的企业。(也许有人会说中兴和华为,可惜这两家公司每年的巨额利润的主要来源不是手机产品)
    所以,足够多的资金投入,加上合理的资源分配,才能组织强力的团队,最终才可能出现的高品质的产品。各个资源之间是密切相关的,缺一不可。
    然而,对于目前国内热衷于追求当前利润的大趋势,很少有人会砸下大把的钞票再卧薪尝胆十几年吧,呵呵。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-8-22 12:02:29 | 只看该作者
单元测试和接口测试很重要啊。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-8-22 18:18:07 | 只看该作者
1. 许多产品的研发不是线性的:设计——开发——测试。

2. 很多产品是基于既有版本进行升级开发。如果说Windows ME不成功,主要原因不是开发团队不尽力,而是Windows 3.x的核心无法继续应对愈发复杂的现实世界。代码基的质量决定了不可能有超越性设计,没有超越性设计就只能终结Windows 3.x所延续来的产品线。

3. 测试驱动开发不仅局限在单元测试层面。许多敏捷团队,先编写架构级别的测试用例,再细化架构——他们用测试来驱动架构的演化。他们还先编写用户验收测试用例,再编写业务代码——他们用测试用例记录需求,用可执行的规格说明驱动用户价值实现。

4. 测试已经不是单纯的“下游”活动,它正在逐步移向软件开发的“中心”。在许多开发场景中,架构设计、代码实现、测试检查总是处于一个小迭代中,不存在泾渭分明的“阶段”。

5. 测试不局限在发现错误。发现错误之后,分析错误根源,学习更好的设计理念、设计模式、实现惯用法,从而为“未来”的开发积累基础。

6. 测试的根本价值在于反馈。它不仅提供代码的正确性反馈,还提供对开发者的反馈。让开发团队从错误中学习,认识自己的不足,这是测试反馈的最大价值。

7. 测试还为测试者提供反馈。在测试中,分享所发现的问题,总结所获得的经验,让整个测试团队逐渐成长。更好的产品来自更好的团队,更好的团队来自不停的学习。自己的错误、团队的错误是极具价值的学习资料。

8. 只要软件开发是高智商活动,软件测试就是高智商活动。高智商活动不能试图消除人的因素,相反,要依靠人、依靠团队。成功的关键是雇佣、训练、培养高质量的软件测试者,并构建学习型团队。

9. 不要相信CMM,因为它重过程、不重人。只有人,才是决定性因素。

10. 培养高水平软件测试人员,关键是测试领导要亲力亲为。要阅读他们的测试计划、测试用例,提供反馈意见;要阅读他们的缺陷报告,提供反馈意见;要和他们一起工作,让彼此互相学习。

11. 构建高水平团队的一个方法是定期的组织学习活动。让团队成员分享他们的经验,分析有教益的缺陷,总结发现类似缺陷的方法。

[ 本帖最后由 liangshi 于 2010-8-22 19:22 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-8-23 11:09:22 | 只看该作者
如果是在一年前,我或许会非常赞同你的观点
    可是现在,我对此有些其他的理解,一个好的测试,可以在很大程度上保证产品的品质可是一个好的开发,比不上一个好的测试所能保证的力度(请注意,我只是强调测试所保证的力度大一些,并没有否认开发不能保证)
如果说一个好的测试可以保证产品 80%~90%的品质,那么我认为一个好的开发只能保证 50%~60%的品质,甚至可能还会低一些
    原因有3点:
    1. 一个好的测试,会包含End use 所可能遇见的场景,并对这些场景进行反复的测试,同时还能包含到一些End use 所不能遇见的测试,一个产品只要是经过一个好的测试所Release 出去,我相信用户的一般使用应该是没有问题,不然这个就不叫好的测试了
    2. 一个好的开发,会对程序的架构,逻辑等做出好的设计,同时在单元测试方面也做的非常的到位,可是,好多时候开发只是对部分功能的测试,而非一个系统测试,所以在很大程度上无法做到一个全面的测试
    3. 开发人员的测试通常具有局限性,因为他们对程序的流程非常的情况,在思考测试的时候,会有思维的局限性,有时候很难跳出这个圈圈,这就会导致测试会出现很多漏洞

以上只是个人意见,欢迎讨论

完全赞同  个人认为  产品的质量是 设计、开发和测试共同努力的结果,缺一不可
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-8-23 11:16:32 | 只看该作者
套用微软的一句话:什么是微软的软件测试?
1.是软件开发的依赖
开发人员依赖测试来保证开发工作的质量,使开发整体地协调地向前推。
2.是项目管理的基础
项目管理的主要线索就是 软件项目管理的主要线索就是Bug Bug的管理
软件测试的结果是项管理和决策的主要依据 软件测试的结果是项管理和决策的主要依据
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-8-23 11:36:57 | 只看该作者
微软应该是TDD吧……
其实要分开设计质量和上市产品的质量……
估计很多人不同意,因为认为质量的是相对于直接开发出来的产品,没有经过测试……所以经过测试,肯定会提高质量的……
但是即便是通过所有人的努力,也不可能达到设计质量……

[ 本帖最后由 愚人 于 2010-8-23 11:51 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-8-23 13:16:32 | 只看该作者

回复 6# 的帖子

在设计阶段就设计测试的 所以说 设计出来的结果也有测试的部分
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-8-23 14:32:00 | 只看该作者
我说,还好,我们还有测试,不像某些疫苗,直接上市。那么,测试保证了质量?

神说,你觉得蒙牛没有测试吗?

我说,....

神说,测试只是提供信息。至于这些信息的定义、重要性以及所要采取的反应都取决于人,而人做出的决定都是感性的,利益驱动的。

我叹口气,说,测试能够保证软件质量。

神说,如果开发的产品本身就质量低劣,进行测试你不觉得是浪费大家的时间吗?一段时间发现的缺陷越多,并不意味着剩下的缺陷越少,而是意味着会出现更多的缺陷。

我说,我明白了,测试只是反馈信息,除此之外,并不能做其他任何事情。正如我们去体检,体检报告只能反映当时我们的身体状态,至于健不健康,则取决于我们平时的生活习惯,这是两个分开的事情,体检并不保证我的健康。

神说,是的。

我说,那么,很多大公司非常看重测试部门,原因其实是他们无法看清楚他们自己的开发过程,于是只能从测试里获取信息,而这些信息对整个软件开发来说只是一部分而已。我看到过有项目经理向测试人员询问是否可以交付,这根本上就是在推卸责任,信息和作出决定根本是两回事,如果是这样,不如让测试人员来当经理好了。
                                                                           摘自《关于测试的问与答》
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-8-23 17:06:20 | 只看该作者
一个项目或者公司开发的水平或者说级别 决定了一个项目绝大部分的质量
开发会影响测试的水平,比如说测试要使用开发所用的工具,所制定的各种规范和约定。。。

另外测试中没有权威,只有经验比较丰富的人。

[ 本帖最后由 shanxi 于 2010-8-23 17:13 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-8-24 01:53:50 | 只看该作者
“测试”的范围比较大吧,由高级开发人员或专家评审设计也算是测试....(文档测试)

如果能画个圈圈,框个范围就更好了。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-8-24 08:53:15 | 只看该作者
学习一下
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-8-24 09:02:20 | 只看该作者
貌似比较深奥,先留个脚印,慢慢看~
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2010-8-24 09:11:57 | 只看该作者
学习了,写的真不错,精辟!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2010-8-27 17:11:44 | 只看该作者
原帖由 chengning 于 2010-8-23 13:16 发表
在设计阶段就设计测试的 所以说 设计出来的结果也有测试的部分

但是设计用例不会提高产品质量,之所以会在那时候发现问题,是因为设计质量不高……
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2010-8-27 17:14:24 | 只看该作者
原帖由 ermine 于 2010-8-24 01:53 发表
“测试”的范围比较大吧,由高级开发人员或专家评审设计也算是测试....(文档测试)

如果能画个圈圈,框个范围就更好了。

这个算不算测试还真不好说,比如设计评审,开发对设计可行性做的研制……
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2010-8-27 20:08:47 | 只看该作者
我的观念是,开发的设计,其实是包括了业务流程的设计的,那也就是在评审时,会对业务需求进行验证,也算测试的一种。

不过有些跑题了,主题说的是产品质量,呵呵。不过感觉质量,也是很大的话题。。。。。。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-22 01:11 , Processed in 0.078958 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表