http://qa.blog.163.com/blog/static/190147002201241422335464/
左耳朵耗子发表了《我们需要全职的QA吗?》后,一石激起千重浪,赞成者有之,激烈反对者有之;有人说文中对QA的定义不对,还有人说以偏概全…… 的确,在需不需要专职的QA角色这个问题上,很难用一个简单的“需要”或“不需要”来回答。前两天我写了一篇对该文的回应文章,但由于文章写就得比较仓促,很多观点来不及完整表述,因此,在“真理越辩越明”的原则下,在这篇文章中,我准备就“我们需要什么样的测试”这个问题说说我自己的看法。
首先要说明的是,这篇文章完全不是讨论“我们是否需要专职QA”这个问题的,也不是讨论“各种情况下QA或测试工程需要做什么”,而是从我自身对测试的认知和个人经验出发,说一说我对不同特点的产品需要的测试的看法。
本文讨论的前提是:“不同的产品需要不同的测试”。当我提到“产品”时,除了产品本身所对外展现的特性外,还会隐含地包含了该产品开发团队的状况。这篇文章没有把行业作为一个划分的维度,是因为我相信,即使在同一个行业中,也存在各种截然不同的产品。
测 试是为质量服务的,测试活动围绕质量进行。这个定义是我们今天讨论的出发点。ISO 9126模型给出了一个多层次的质量模型定义,该定义包括了各个正交维度的质量属性,这些质量属性中既有面向用户的,也有面向开发的。但在实际的测试工作 中,一旦提到产品质量,大部分人更容易将其理解成“用户质量”,也就是“最终用户所能感受到的软件的质量(例如,软件的功能性、性能、安全性等等)”。 “用户质量”是用户所能够直接感受到的产品的“好坏”,也是用户是否愿意为产品付钱的主要原因。因此,在测试中重视“用户质量”是必然的。设想一下,如果 A公司要为B客户开发一个软件,只要该软件最终能够达到B用户的要求,A公司就能拿到钱,通常这也就意味着A公司“成功的完成了该软件的开发”。从这个角 度来说,“用户质量”就是软件开发是否成功的标准。
然 而,如果深入看待整个软件开发过程,事情就没有这么简单了。A公司为客户B开发的软件并非是一锤子买卖,而是需要不断的维护和升级的,B用户不断提出新的 需求,而这些新的需求都要被加入到软件中去。在这种情况下,从效益出发,A公司就不能仅仅考虑最终的产出是否能够满足B客户的要求了,而是必须想办法保证 产品在持续演进的过程中始终保持好的可维护性和可测试性,这样A公司才能以较低的成本让这个产品持续成功。因此,如果不把软件开发看成一锤子买卖,而将该 软件的生命周期的维护过程考虑进去,我们就不得不关注“用户质量”之外的“开发质量”,这里的“开发质量”就是指产品内在的,是否容易被修改、是否容易被 移植、是否容易被验证的特点。
1.“用户质量”和“开发质量”就是我通常用来分析一个产品究竟需要什么样的测试的第一个因素。
在 这个维度下,我们可以很容易地理解,如果一个产品仅仅是 “一次性”的产品(也即,开发后不再需要维护和持续演化),那么测试的重点一定就是“用户质量”(只需要关心该产品是否在用户面前表现得够好就可以了); 代码是不是够烂,设计是不是不合理并不重要。而如果一个产品是需要持续演进较长时间的,那就必须关心代码和设计的质量(“开发质量”)。例如,一个采用付 费下载方式进行销售的小游戏,开发团队通常不会花太多的时间和精力在保证产品具有良好的“开发质量”上,而宁愿花更多的时间去调整外部的细节表现,音效, 图像上。
2. 另一个直接决定了产品需要什么样的测试的纬度是“产品对缺陷的容忍程度”。
测 试工程师有时候喜欢把“零缺陷”作为标榜测试工作的口号(我在很长一段时间内也是如此),但,仔细想想,如果发现一个缺陷的成本比让这个缺陷留在产品中带 来的损失更大,那是否还值得去发现这个缺陷?我想,从项目的角度来说,答案是不言而喻的。测试是一个资源权衡的活动,也是一个基于风险的活动,因此,产品 的缺陷带来的影响越小,影响越容易被消除(修复),这个缺陷的价值就越小,值得投入用来发现缺陷的资源也就越少。
拿 互联网产品和传统的桌面产品来比较,对桌面型产品来说,缺陷的修复成本足够高(只能通过软件召回或是发布补丁的方式),因此对缺陷的容忍度就低;而对于互 联网产品来说,由于其产品的修复成本足够低(对一个已知的缺陷,可能只需要花上几分钟到几十分钟就能完全修复了),因此相对而言,其对缺陷的容忍程度更高 (当然,对于那些会导致用户数据损失或是带来其他不可逆破坏的缺陷,那又另当别论了),对互联网产品开发来说,及时识别缺陷(发现那些用户已经遇到的缺 陷),快速定位缺陷和快速修复缺陷的能力往往要比在系统测试阶段发现缺陷的能力更重要。而要能有强大的识别缺陷和定位缺陷的能力,就必须依靠产品内建的 “开发质量”了。
再以医疗行业的某些软件为例,对涉及到医疗器械的控制软件(如自动注射器,心脏起搏器等),其对缺陷的容忍程度就非常低,原因很简单,因为这类缺陷可能带来的后果太严重。
3. 第三个因素是“有效的测试方式”。
对 互联网产品来说,最有效的测试方式也许并不是找一堆专职的测试工程师在公司内部尽可能地覆盖每一个功能细节,让真正的用户来对产品进行测试在很多情况下也 许是更好的选择。无论是FB,Google等公司提倡的dog food(让全部员工来进行测试),还是在实际产品上进行的a/b testing, 或是游戏公司通常喜欢采用的内测方式,都是典型的让用户参与测试的方法。另外,根据产品不同的特性,适合采用手工测试还是自动化测试的方式来进行测试也是 一个值得考虑的点。
4. 第四个因素则是“产品的开发团队所处的状况”,因此,对同一个组织来说,在组织发展的不同阶段,所需要的测试也是不同的。
“苦逼的团队是做不出有爱的产品的”,自然,“苦逼”的团队也不可能达成好的测试。因为让每个人疲于奔命的是总也无法完成的任务和无止境的加班,恐怕都没有停下来思考如何改进的机会。
以 上就是我对“什么样的产品需要什么样的测试”这个问题的理解。在这四个因素的指导下,再回头来考虑不同软件产品的测试,就很容易理解为何不同的产品,不同 的企业会采用很不相同的测试方式。例如,FB没有专职的测试工程师,因为通常意义上关注“用户质量”的测试工程师并不能在这个组织中发挥大的价值,只有对 开发有深入了解的开发工程师才能真正的在提高“开发质量”方面发挥作用。而对于许多国内的以“做项目”为主的软件企业来说,也就很好理解为什么他们只需要 “能像客户一样发现产品中的缺陷的”的测试了。
左耳朵耗子发表了《我们需要全职的QA吗?》后,一石激起千重浪,赞成者有之,激烈反对者有之;有人说文中对QA的定义不对,还有人说以偏概全…… 的确,在需不需要专职的QA角色这个问题上,很难用一个简单的“需要”或“不需要”来回答。前两天我写了一篇对该文的回应文章,但由于文章写就得比较仓促,很多观点来不及完整表述,因此,在“真理越辩越明”的原则下,在这篇文章中,我准备就“我们需要什么样的测试”这个问题说说我自己的看法。
首先要说明的是,这篇文章完全不是讨论“我们是否需要专职QA”这个问题的,也不是讨论“各种情况下QA或测试工程需要做什么”,而是从我自身对测试的认知和个人经验出发,说一说我对不同特点的产品需要的测试的看法。
本文讨论的前提是:“不同的产品需要不同的测试”。当我提到“产品”时,除了产品本身所对外展现的特性外,还会隐含地包含了该产品开发团队的状况。这篇文章没有把行业作为一个划分的维度,是因为我相信,即使在同一个行业中,也存在各种截然不同的产品。
测 试是为质量服务的,测试活动围绕质量进行。这个定义是我们今天讨论的出发点。ISO 9126模型给出了一个多层次的质量模型定义,该定义包括了各个正交维度的质量属性,这些质量属性中既有面向用户的,也有面向开发的。但在实际的测试工作 中,一旦提到产品质量,大部分人更容易将其理解成“用户质量”,也就是“最终用户所能感受到的软件的质量(例如,软件的功能性、性能、安全性等等)”。 “用户质量”是用户所能够直接感受到的产品的“好坏”,也是用户是否愿意为产品付钱的主要原因。因此,在测试中重视“用户质量”是必然的。设想一下,如果 A公司要为B客户开发一个软件,只要该软件最终能够达到B用户的要求,A公司就能拿到钱,通常这也就意味着A公司“成功的完成了该软件的开发”。从这个角 度来说,“用户质量”就是软件开发是否成功的标准。
然 而,如果深入看待整个软件开发过程,事情就没有这么简单了。A公司为客户B开发的软件并非是一锤子买卖,而是需要不断的维护和升级的,B用户不断提出新的 需求,而这些新的需求都要被加入到软件中去。在这种情况下,从效益出发,A公司就不能仅仅考虑最终的产出是否能够满足B客户的要求了,而是必须想办法保证 产品在持续演进的过程中始终保持好的可维护性和可测试性,这样A公司才能以较低的成本让这个产品持续成功。因此,如果不把软件开发看成一锤子买卖,而将该 软件的生命周期的维护过程考虑进去,我们就不得不关注“用户质量”之外的“开发质量”,这里的“开发质量”就是指产品内在的,是否容易被修改、是否容易被 移植、是否容易被验证的特点。
1.“用户质量”和“开发质量”就是我通常用来分析一个产品究竟需要什么样的测试的第一个因素。
在 这个维度下,我们可以很容易地理解,如果一个产品仅仅是 “一次性”的产品(也即,开发后不再需要维护和持续演化),那么测试的重点一定就是“用户质量”(只需要关心该产品是否在用户面前表现得够好就可以了); 代码是不是够烂,设计是不是不合理并不重要。而如果一个产品是需要持续演进较长时间的,那就必须关心代码和设计的质量(“开发质量”)。例如,一个采用付 费下载方式进行销售的小游戏,开发团队通常不会花太多的时间和精力在保证产品具有良好的“开发质量”上,而宁愿花更多的时间去调整外部的细节表现,音效, 图像上。
2. 另一个直接决定了产品需要什么样的测试的纬度是“产品对缺陷的容忍程度”。
测 试工程师有时候喜欢把“零缺陷”作为标榜测试工作的口号(我在很长一段时间内也是如此),但,仔细想想,如果发现一个缺陷的成本比让这个缺陷留在产品中带 来的损失更大,那是否还值得去发现这个缺陷?我想,从项目的角度来说,答案是不言而喻的。测试是一个资源权衡的活动,也是一个基于风险的活动,因此,产品 的缺陷带来的影响越小,影响越容易被消除(修复),这个缺陷的价值就越小,值得投入用来发现缺陷的资源也就越少。
拿 互联网产品和传统的桌面产品来比较,对桌面型产品来说,缺陷的修复成本足够高(只能通过软件召回或是发布补丁的方式),因此对缺陷的容忍度就低;而对于互 联网产品来说,由于其产品的修复成本足够低(对一个已知的缺陷,可能只需要花上几分钟到几十分钟就能完全修复了),因此相对而言,其对缺陷的容忍程度更高 (当然,对于那些会导致用户数据损失或是带来其他不可逆破坏的缺陷,那又另当别论了),对互联网产品开发来说,及时识别缺陷(发现那些用户已经遇到的缺 陷),快速定位缺陷和快速修复缺陷的能力往往要比在系统测试阶段发现缺陷的能力更重要。而要能有强大的识别缺陷和定位缺陷的能力,就必须依靠产品内建的 “开发质量”了。
再以医疗行业的某些软件为例,对涉及到医疗器械的控制软件(如自动注射器,心脏起搏器等),其对缺陷的容忍程度就非常低,原因很简单,因为这类缺陷可能带来的后果太严重。
3. 第三个因素是“有效的测试方式”。
对 互联网产品来说,最有效的测试方式也许并不是找一堆专职的测试工程师在公司内部尽可能地覆盖每一个功能细节,让真正的用户来对产品进行测试在很多情况下也 许是更好的选择。无论是FB,Google等公司提倡的dog food(让全部员工来进行测试),还是在实际产品上进行的a/b testing, 或是游戏公司通常喜欢采用的内测方式,都是典型的让用户参与测试的方法。另外,根据产品不同的特性,适合采用手工测试还是自动化测试的方式来进行测试也是 一个值得考虑的点。
4. 第四个因素则是“产品的开发团队所处的状况”,因此,对同一个组织来说,在组织发展的不同阶段,所需要的测试也是不同的。
“苦逼的团队是做不出有爱的产品的”,自然,“苦逼”的团队也不可能达成好的测试。因为让每个人疲于奔命的是总也无法完成的任务和无止境的加班,恐怕都没有停下来思考如何改进的机会。
以 上就是我对“什么样的产品需要什么样的测试”这个问题的理解。在这四个因素的指导下,再回头来考虑不同软件产品的测试,就很容易理解为何不同的产品,不同 的企业会采用很不相同的测试方式。例如,FB没有专职的测试工程师,因为通常意义上关注“用户质量”的测试工程师并不能在这个组织中发挥大的价值,只有对 开发有深入了解的开发工程师才能真正的在提高“开发质量”方面发挥作用。而对于许多国内的以“做项目”为主的软件企业来说,也就很好理解为什么他们只需要 “能像客户一样发现产品中的缺陷的”的测试了。
发表评论
-
结对测试
2013-01-20 16:38 770其实很早就接触了 ... -
测试人员如何做好有效的pdca
2012-10-20 15:31 901入职以来做的 ... -
启发式测试策略建模
2012-09-27 10:42 682最近再学习测试建模方 ... -
测试用例小解
2012-09-23 18:22 796目标管理贯穿各个 ... -
5W1H分析法
2012-09-22 18:52 13415W1H分析法在软件测试中的运用,小小总结了一下 具体可以看 ... -
探索性测试需求思路
2012-08-01 22:42 1191卖点测试法: 新需求必 ... -
性能测试新手上路-20120722
2012-07-22 20:16 699入职一年后,经历了测试执行,测试设计,现在开始走向了性 ... -
测试意识之主动思考
2012-07-22 16:02 679软件测试中如何主 ... -
小谈敏捷
2012-07-03 00:06 922公司一直采用瀑布模式开发,也通过了CMMI 3级认证, ... -
谈谈测试中的探索性思维
2012-06-30 16:35 718不知大家是否有看过《探索性测试》这本书,里面讲的是 ... -
开发参与案例评审改进
2012-06-29 15:32 624前言: 不管是cmmi思想 还是敏捷思想,都要求开发和测试打破 ... -
以开放的心态学习
2012-06-18 12:27 668质量是测试人员的自尊 ... -
制定模块测试计划
2012-06-05 20:21 843如何制定模块测试计划?谈谈个人的看法 1.确认模块的输入输 ...
相关推荐
**imageXpert OCR 打印机测试样张详解** 在IT行业中,打印机是不可或缺的硬件设备,用于将数字文档转化为纸质形式。对于打印机的性能评估和优化,测试样张起着至关重要的作用。"imageXpert OCR 打印机测试样张"是一...
8. 缺陷生命周期是什么样的? 9. 什么是测试用例?一个好的测试用例应包含哪些内容? 10. 什么是测试计划? ### 测试类型 11. 描述单元测试和集成测试的区别。 12. 什么是系统测试? 13. 什么是验收测试(UAT)? ...
在本文中,我们将深入探讨如何使用Qt库中的`QImage`类进行图像处理,特别是关注其在加载解码、直接使用原始数据以及进行格式转换...通过`Jpg2PixmapDemo`这样的测试,我们可以获得宝贵的实测数据,指导我们的优化工作。
测试系统由多个部分组成,包括线控转向系统样件、直流稳压电源、CAN收发器、转向阻力模拟电机等。CANoe工具用于生成线控转向系统输入报文指令,同时接收CAN总线上的转向结果报文数据,并进行响应性能的测试结果分析...
应力测试对于微波炉玻璃转盘至关重要,因为它需要承受高温、高速旋转以及承载食物的重量。玻璃转盘的应力分布不均可能导致破裂或变形,影响微波炉的正常使用。因此,设计一个高效、精确的自动化测试系统是必要的。 ...
7. 烤漆样管试验:测试产品的烤漆性能和耐用性,通过对产品进行烤漆样管试验。 8. 紙箱破裂强度摔箱测试:测试产品的包装强度和耐用性,通过对产品进行摔箱测试。 9. 絕緣耐電壓試驗:测试产品的絕緣性能和耐用性,...
在RAW图片中,每个像素通常只包含一种颜色的信息,需要通过算法(如Demosaicing)将这些单色信息转换成我们常见的三色(RGB)图像。这个过程涉及到色彩插值和噪声管理,是图像处理技术中的核心部分。 在测试图像...
在平台更替的情况下,需要关注测试程序的转换是否造成了不合理的偏移,以及是否达到了预期的稳定性和精度。 在评估新旧测试平台时,需要监控以下几个关键因素: - 测试结果是否一致:评估新平台与旧平台在相同测试...
为什么需要单元测试? 1. 复杂的系统,你也许一时难以下手,无法全面构建,测试驱动,使得你能够从容设计,自顶而下。 2. 这种开发方式,开发完成后,代码质量通常较好,而且很容易进行回归测试。 复杂的例子...
- 高级测试工程师/程序分析员:这一级别的测试人员不仅要精通各种测试技术和工具,还要参与制定测试策略和标准,对测试流程提出改进意见,同时可能需要指导初级测试工程师的工作。 - 专家级测试工程师:如自动化...
特别注意的是,在进行液体、危险品、敏感物品的振动测试时,包装需要倒置,以确保瓶盖和方向指示箭头朝下,避免泄露或损坏。然而,绝对禁止将真实的危险品或有害物质送至实验室,应使用非危险替代品,如水或沙子,且...
在IT行业中,设备装置的设计与测试是至关重要的环节,尤其是涉及到电力系统中的交流采样技术。"一种交流采样板测试装置"是一个专为检测和验证交流采样板性能而设计的专业设备。交流采样,全称交流信号采样,是电力...
常见的处理包括颜色空间转换(如RGB转灰度)、图像缩放、滤波(如高斯滤波、中值滤波)、边缘检测(如Canny算法、Sobel算子)、图像增强等。描述中的"可以用来做图像处理"表明这些BMP图像可以用于这些技术的实践和...
- 嵌入式系统中的测试与信号处理:在空间有限或者对实时性要求高的嵌入式系统中,测试技术和信号处理往往需要优化和定制。 - 错误检测和校正:在信号传输和存储过程中,使用各种算法来检测和纠正错误,确保数据的...
综上所述,手机测试不仅涉及软件测试的基本原理和技术,还需要深入理解手机本身的功能特点和技术标准。测试人员除了具备扎实的专业知识之外,还需具备良好的组织协调能力和持续学习的能力。通过对这些知识点的学习,...
测试方法是将LED灯具样品包装好放置在振动测试台上,然后,进行振动测试,测试设置为振动速度300转/分钟,振幅设为2.54厘米。最后,将灯具按以上方法在上下、左右、前后三个方向上分别测试30分钟。测试要求是灯具在...
下面我们将深入探讨USB转232的相关知识点。 1. **USB(Universal Serial Bus)**:USB是一种通用接口标准,用于连接各种设备,如鼠标、键盘、打印机、存储设备等。它提供了数据传输速度快、即插即用和热插拔的优点...
在本文中,我们将深入探讨路由器测试的关键方面,包括压力测试、内网测试以及WAYOS 9999版本在路由器稳定性测试中的应用。 压力测试是评估路由器在高负载或大量并发数据传输情况下的表现。这种测试旨在模拟实际网络...
### USB CDC 转串口测试说明 #### 一、USB CDC简介 USB CDC(Communications Device Class)是一种用于通信设备的USB类定义标准,它主要用于实现计算机与各种通信设备之间的数据交换。在本测试说明中,我们关注的...