左耳朵耗子发表了《我们需要全职的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没有专职的测试工程师,因为通常意义上关注“用户质量”的测试工程师并不能在这个组织中发挥大的价值,只有对开发有深入了解的开发工程师才能真正的在提高“开发质量”方面发挥作用。而对于许多国内的以“做项目”为主的软件企业来说,也就很好理解为什么他们只需要“能像客户一样发现产品中的缺陷的”的测试了。
分享到:
相关推荐
动态响应一般是指控制系统在典型输入... 为什么开关电源需要测试动态响应? 电源动态响应的一般测试方法和要求 测试条件测试数据及示意图 测试步骤 什么样的结果算合格? 动态响应与什么有关?该如何
什么样的测试用例是好的测试用例.doc
8. 缺陷生命周期是什么样的? 9. 什么是测试用例?一个好的测试用例应包含哪些内容? 10. 什么是测试计划? ### 测试类型 11. 描述单元测试和集成测试的区别。 12. 什么是系统测试? 13. 什么是验收测试(UAT)? ...
我们需要什么样的测试?左耳朵耗子发表了《我们需要全职的QA吗?》后,一石激起千重浪,赞成者有之,激烈反对者有之;有人说文中对QA的定义不对,还有人说以偏概全……的确,在需不需要专职的QA角色这个问题上,很难用...
前两天我写了一篇对该文的回应文章,但由于文章写就得比较仓促,很多观点来不及完整表述,因此,在“真理越辩越明”的原则下,在这篇文章中,我准备就“我们需要什么样的测试”这个问题说说我自己的看法。...
原生移动应用测试需要覆盖多平台、多设备以及不同网络条件,例如使用Appium进行跨平台测试。 7. API测试:API已成为应用程序间交互的主要方式,因此API测试变得至关重要。工具如Postman、REST Assured和SoapUI帮助...
从样张提供的信息来看,该书可能围绕软件测试的最佳实践、测试技术和方法等方面展开,旨在将软件测试提升到艺术的高度,强调测试不仅是一门科学,更是一门需要创新和艺术感的活动。 首先,从书名《完美测试》来看,...
1、什么是兼容性测试?兼容性测试侧重哪些方面? 5 2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? 5 3、测试的策略有哪些? 5 4、正交表测试用例设计方法的特点是...
在软件测试设计报告的开头部分,我们需要对测试项目进行概述,包括测试的目的、测试的范围、测试的方法和测试的时间表等。这个部分的目的是为了让读者了解测试的背景和目标,从而更好地理解测试的结果。 在这个部分...
2. 软件测试的整体流程是怎么样的? 3. 测试计划的流程是怎么样的? 4. 如何写出优秀的测试用例? 5. 如何优雅的提Bug? 6. 缺陷的生命周期是怎么样的? 7. 使用的缺陷管理工具是什么,如何使用? 8. 缺陷的生命周期...
**imageXpert OCR 打印机测试样张详解** 在IT行业中,打印机是不可或缺的硬件设备,用于将数字文档转化为纸质形式。对于打印机的性能评估和优化,测试样张起着至关重要的作用。"imageXpert OCR 打印机测试样张"是一...
综上所述,编写好的测试用例需要考虑多方面因素,包括明确目标、完整性、可重复性、易读性、覆盖性、独立性、优先级、有效性、预期结果验证和自动化潜力。通过遵循这些原则,可以提高测试的质量和效率,从而确保软件...
软件测试面试题●发现...换个问法:什么样的测试用例才是好的测试用例? ●优先级 ●模块 ●测试用例名称 ●前置条件 ●测试步骤 ●预期结果 ●实际结果 ●执行人 9、提交的缺陷都包含了什么内容? ●标题 ●缺陷类
在Macworld的体验中,通过评论和测试iOS应用程序,我们可以深入理解开发者所面临的困难。本文将通过开发者的真实经历,分享iOS App开发的一些关键知识点。 首先,开发iOS App并非易事。即便是看似糟糕的应用,背后...
软件测试面试题●发现...换个问法:什么样的测试用例才是好的测试用例? ●优先级 ●模块 ●测试用例名称 ●前置条件 ●测试步骤 ●预期结果 ●实际结果 ●执行人 9、提交的缺陷都包含了什么内容? ●标题 ●缺陷类
总结起来,好的测试用例需要具备以下特征:高可读性和可操作性,完整的基本要素,层次分明的结构,全面覆盖的场景,以及发现bug的潜力。这些特性不仅帮助测试团队高效地执行测试任务,而且有助于提升整体软件质量,...
- 特点:如果需要重复进行耐压测试,第二次测试的电压应适当降低(通常是首次测试电压的80%)。 #### 三、测试设备与条件 1. **测试设备**: - 主要区别在于最高施加电压能力、最大施加电流能力和电压类型(交流...
软件测试知识:测试计划、测试方案、编写用例、提交bug、跟踪bug,编写测试报告 测试工具的使用 操作系统 编写代码的能力 数据库知识 业务知识、网络知识. 除了这些必备的技能,我们还需要什么样的...