测试 QA 的角色和分工
作者:网络转载 发布时间:[ 2012/11/5 13:46:36 ] 推荐标签:
测试的角色 (Test) 要独立出来么 ?
独立出来的测试角色怎么才能发挥作用?
有些成功人士和成功的公司号称没必要有独立的测试角色 (Test), 你怎么看?
近又看到一些关于开发人员要不要负责测试的讨论。 例如:
http://www.aqee.net/on-testers-and-testing/
大多数的开发团队并不需要一个独立的测试角色。即使有一个,他的所有的开发时间比上所有的测试时间应该 >20:1。
[注: 这个翻译有错误, 原文指 开发: 测试 的比例应该 > 20:1 ]
我正好在写相关的教案, 也来凑个热闹。
[这篇文章的一些事例来自于我曾经和现在的团队。 希望这些例子不足以影响相关人物和团队的伟大形象。 任何软件团队都会犯错误, 伟大的团队有勇气面对自己的错误并不断改进。]
首先, 明确两个概念:
软件测试 (Test):运用定义好的流程,工具去验证软件能实现预先设计的功能和特性, 工作的流程和结果通常是可量化的, 例如, 测试用例, bugs, 代码覆盖率, MTTF, 软件效能的参数。 [注: 正因为流程和结果是可明确定义的, 可量化的, 很多测试工作可以自动化]
软件质量保证工作 (Quality Assurance):软件团队的成员为了让软件达到事先定义的质量而进行的所有活动,包括测试工作。
对于这两个术语, 不同人有不同的定义, 有人认为它们是互通的, 在《现代软件工程》的上下文中我尽量使用上述的定义.
测试的角色 (Test) 要独立出来么 ?
回答: 首先, 我相信有分工是好事, 软件团队中应该有独立的测试 (Testing) 角色。所有人都可以参与QA 的工作 (报告bug 什么的), 但是后要有一个角色对QA 这件事负责。 不但角色要独立,而且在后软件发布的时候, 必须得到此角色的签字保证 (sign off)。我在微软参与的项目都是这样做的。
在开始论证之前, 先引用斯密特 ·亚当斯的 《国富论》 来暖场 (我没读过这本书, 直接从网上抄的)。
分工理论
亚当斯认为,分工的起源是由人的才能具有自然差异。… 假定个人乐于专业化及提高生产力,经由剩余产品之交换行为,促使个人增加财富,此等过程将扩大社会生产,促进社会繁荣,并达私利与公益之调和。 他列举制针业来说明。“如果他们各自独立工作,不专习一种特殊业务,那么他们不论是谁,不能一日制造二十枚针,说不定连一枚也制造不出来。他们不但不能制出由适当分工合作而制成的数量的二百四十分之一,连这数量的四千八百分之一,恐怕也制造不出来。”
分工促进劳动生产力的原因有三:第一,劳动者的技巧因专业而日进;第二,由一种工作转到另一种工作,通常需损失不少时间,有了分工,可以免除这种损失;第三,许多简化劳动和缩减劳动的机械发明,只有在分工的基础上方才可能。
引用
我们看团队形式的职业体育比赛, 各个位置的分工都很明确, 拿足球来说, 有专注进攻的, 有专注防守的, 但是在我的印象中, 那些伟大的前锋大多数只管一件事 - 进攻。 亨利 (Thierry Henry)参加防守么?
当然一些球赛也有没有分工的时候, 原因 有好几个:
事太小, 几个小孩踢个半场。
无知, 小孩们刚开始玩球。
人手不够, 一对一打篮球, 你要参与防守么? 沙滩排球,两人都是全攻全守。
如果你的软件团队做的事情和上面的情况类似, 那当然不必分工。你们做的很可能不是商用软件, 你的软件团队大概也不用受什么软件工程规律的束缚。 (参见: 软件工程概论).
任何产业产业成熟到一定阶段的时候, 独立的质量保证角色是不可避免的。团队内部有QA 角色, 团队外部也有独立的QA 角色。
拿药品和食品来做例子, 除了生产厂家自己的检测之外, 这些产品还要接受行业主管部门相关机构的检测和认可 (药品检验, 食品检验), 才能上市。 在出现争议的情况下, 还要第三方机构来进行测试或认证。
有人也许这样建议:
这些药品都是药厂同一批工人一边制造一边测试出来的, 特别有保证! 不用测了, 赶紧吃了吧!
也许还有人这样建议:
这个十字坡夫妻店的农家饭都是他们自己亲手做的, 很可信, 咱们今晚去吃饭住一宿吧。
我们每天经常使用的电子产品, 从大彩电到电影插座, 也经历了很多团队内部的和外部的测试, 请随手拿过任何一个电器, 你会在背面看到密密麻麻的小字, 其中肯定有下列标记之一:
没有这些标记的产品电子产品, 市面上很少看到。
在软件和互联网产业, 目前没有这些认证, 相反的, 倒是有“人肉认证” :
你想申请某个专业网站的账户或者邮箱, 但是又担心这个网站对用户信息的保护程度不够。有人说, 没关系的, 这个网站的创始人也用账户, CTO , 总监什么的还经常发软件安全博客, 账户一定是非常安全的! 这里不存在独立的质量认证, 只能通过人肉 (创始人/CTO/总监)来认证产品的质量。
其实这种认证未必安全… (密码门事件) (明文密码事件)(邮箱密码漏洞)
如果有第三方的认证 “此网站对用户信息的保护程度是X级, 我们认证它不会明文存储用户密码… ” 我放心了。 在第三方认证出现之前, 我希望团队内部至少有独立的QA 角色, 来确保软件的质量。否则我是不乐意使用这些软件/服务的。
[补充一句, 互联网服务的各种认证也在发展, 例如verisign 公司提供的各种认证。]
独立出来的质量保证角色怎么才能发挥作用?
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11