让我们区分质量保证与测试

发表于:2014-9-25 11:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李云    来源:51cto

  概念与思辨深度
  一个行业的发展似乎总伴随着更多的概念被塑造出来。拿测试来说,我们有单元测试、集成测试、系统测试、回归测试、冒烟测试,等等。我们缘何塑造如此多的概念来“为难”自己呢?答案可以用我从@李智勇SZ老师那学到的“概念越纯粹表示思辨深度越深”这句话加以解释,而这一切又为了提高同行间的沟通效率。需要特别指出的是,多个相似但不同的概念想表达的是各自的不同之处,而非共同之处。为此,如果人家在讨论单元测试时,你冒出一句“写好程序,编译完,跑一跑,看看写得对不对,这就是最简单的UT啊!”就不大合适,因为这说明你根本没有理解单元测试的概念(可以读一下我写的《明晰单元测试》一文)。如果你再加上一句“靠,都是测试,分那么清干什么?”,那还表明你逻辑不清。
  我近期所写的《对软件测试团队“核心价值”的思考》一文引发了一些讨论。比如,@朱少民老师(后面简称朱老师)指出:“‘(文中所述测试)帮助开发人员提高其开发质量和效率’是软件测试团队的价值取向之一,但还不是软件测试团队的主要核心价值“。于是我向朱老师请教他所理解的测试核心价值,得到的回复是“软件测试最核心的价值还是能够快速发现问题以提供产品的质量反馈,有能力提供准确的、客观的、完整的质量评估,并通过缺陷分析、用户行为分析等,确定缺陷模式和开发人员不良行为、习惯等,帮助开发人员预防缺陷(从设计到编程、单元测试,不仅仅是设计)”。
  之后我的回复是,“我们应将QA(Quality Assurance,质量保证)与测试区分开来”,因为我认为朱老师将测试的范围定义得太大了。但朱老师却帮我指出“我这是地地道道的测试,看来你对QA理解不够。QA的主要对象是(包括开发、测试)流程,QA人员评审、审计和改进流程,以保证质量。测试的对象是产品,包括阶段性半成品。从严格意义看,测试就是对软件产品的质量评估”。
  类似与QA和测试相关的讨论发生在@左耳朵耗子老师写了《我们需要专职的QA吗?》一文之后。这些讨论又为我们带来了@程序员邹欣老师写的《测试QA的角色和分工》,以及@段念-段文韬老师写的《对《我们需要专职QA吗?》的回应》。在本文我想顺便谈一谈以前读这些文章的看法。
  谁对谁错?
  如果读过我所写的《软件开发:个人与团队是永远的核心》一文的话,知道我给出了高质高效软件开发的一个效能模型。从模型所涵盖的内容来看,其范围非常广,包括行为、能力和方法三大支柱。某种程度上,我们在软件行业的职场旅程有点象是“盲人摸象”(但我们能沟通),这个摸索的过程与我们从事的软件细分行业(如互联网、通讯、银行)、服务公司(如国企、外企、私企)、工种(如开发、测试)等都有着很直接的关系,所获得的一种成功经验很可能在另一种情形下根本行不通。摸索的过程很容易通过现实去理解书本上的东西,这不是坏事,但千万不要以为所“眼见的”就是“宇宙真理”,也千万别放弃自己的独立思考。
  存在争议并不是坏事,我们之所以争议,是因为我们有着不同的成长途径和思考深度(年龄起着一定的作用)。争议的焦点不是为了“你死我活”地相互“拉黑”,而应最大可能地达成共识和完善自我认识。所达成的共识越多就越是知道“象的模样”,这对所有的从业人员都有意义。正因如此,作为技术人,我时常会告诫自己“多放下一点自大与自尊去接受别人的想法,这对于自己来说是一种很好的成长途径。”而且,我对于自己所不熟悉的技术领域更多持敬畏而非否定态度。总的说来,谁对谁错并非争论的关键,而是我们有哪些想法其实是相通或相同的、如何摆事实讲逻辑地让对方了解自己的想法。我希望每一位读者都能理性对待所碰到的争议,这算是一个小小的呼吁吧。
  QA不包含测试
  我认为引起QA与测试相关的很多争议出现在我们没有明晰概念,或者有的概念太泛了容易导致问题。QA这个词就是一个例子!
  质量保证很容易让人想到与软件质量相关的方方面面,比如测试、流程、缺陷数据分析等。既然这样,开发工程师的水平是不是也影响着软件质量呢?那人员的招聘为什么不由QA部门管,而是由HR和开发部门管?这个问题问得是不是很无厘头?但这个问题也告诉我们,各种部门的职责定义其实并非由其名字表意所定,而是由公司根据组织架构的需要指派的。既然如此,我们在使用这些名词时,一定要根据职责加以展开,而不能依据名字意思本身,否则很容易因为不当言语而引发没有价值的争议。有些争议甚至影响到了他人的“饭碗”了,你叫人如何理性?这间接地指出,我们的言语应尽可能严谨。
  如果QA不是测试,那它是干什么的?老实说,我不敢凭空给一个角色定义职责,加上我并不是QA(与测试)方面的专家,在此只能以我曾经服务过的Motorola公司为例说一说我的大致理解。简单说来,Motorola的QA是一个与测试部门完全独立的部门,她关注二大事务,一是缺陷数据分析与缺陷预防,二是流程规范与改善。QA会根据测试与开发两大部门所产生的缺陷数据进行数据分析(或叫数据挖掘吧),发现各产品的缺陷模型(常犯错误、缺陷数趋势等),通过模型去预测可能潜在的遗留缺陷,以帮助开发部门进行改进(最终作用于流程)。另外,QA会全程参与软件开发活动以跟踪公司所制定流程的执行情况。比如,以前我就职的Motorola杭州研发中心通过了TL9000认证,QA必须确保开发活动完全符合TL9000的要求,以免出现资质复审时无法通过的状况。
  读者请注意,我以Motorola公司为例去定义QA的职责就一定对吗?未必!对于就职于一些测试隶属于QA部门的同仁可能很难接受以上的定义。在这种情况下,我们需要思考的是,这个定义是否有助于我们更方便地沟通?如果定义有助于我们的沟通,则这种定义就是可取的,否则值得商榷。理性思考不能忘!
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号