[转]软件测试为什么失败?

原文链接:软件测试为什么失败

案例1: A公司是一家从事网游点卡交易的互联网公司,去年年底我司做调研时发现一个问题:测试部门有近40人,独立于研发团队,团队成员分为自动化测试和手工测试两个小组,测试经理则是从IBM过来的,但据研发和测试人员反应,测试人员的地位非常低,自动化测试岗位形同虚设,没有起到任何作用,在互联网软件开发的过程中,测试人员的价值非常有限,测试员工的成就感非常低,最近一个月也有30%-40%的离职率,这个问题让负责测试部门的陈总非常头痛,一方面人员不太稳定,一方面软件质量的问题越来越多....

案例2:B公司是深圳一家医疗电子企业,公司有专业的软件测试部,独立向研发管理部汇报。经过我司的调研,B公司的软件测试流程已具备,专业的测试人员也有一批,但测试人员相对于开发人员普遍薪酬低,缺乏激励,加上公司领导层对研发过程质量不太关注,研发过程中测试不充分,导致许多致命的问题到客服现场才发现,最后又把责任推到测试头上,测试人员不愿意承担责任,导致团队的测试效率非常低下,开发与测试之间相互推诿....

以上两个案例,是中国目前很多企业遇到的问题。软件究竟需不需要测试,软件的测试究竟怎么做?如何通过软件测试来保证产品质量?....在软件开发越来越占重要地位的今天,越来越多的领导层已认识到软件测试的重要性,但除了华为、中兴、腾讯等为数不多的几个公司做得好一点之外,很多企业都还在摸索,测试部门的价值在一个公司里往往成了争论的焦点,测试人员的地位也无法与开发人员抗衡。

笔者曾经分别任职于华为和阿里巴巴公司,也曾经服务过一些中小型软件公司,成功和失败的案例都有,总体来说,中国目前的软件测试体系还不成熟,很多公司试图做好软件测试,但由于在测试管理、测试技术、测试流程等方面缺乏高度的认识,往往导致测试失败,如测试人员的待遇问题、测试技术如何提升、自动化需要做到什么程度等等,测试为什么失败?根据笔者多年的测试管理经验,可以归结为以下三个方面:

1)缺乏测试组织的支撑。许多公司的测试组织仍然附属于开发部门,没有独立的测试环境,不能从公平、公正的角度指出软件存在的缺陷,并要求在限定的时间对软件的缺陷进行修复。国外较成熟的测试组织(如微软,Yahoo等),测试组织属于QA部门,而不是研发部门,这样更有利于保证产品质量。另一方面,许多公司对测试部门的定位是QC(质量控制)部门,而测试部门并没有控制质量的权利,而成了QC(质量检测)的角色,即在最后一个环节对软件产品进行验证,这个时候为时已晚,产品质量的很多问题可能已无法测试出来。在华为公司,测试和开发是平等的,两个部门都是PDT(产品开发团队)的组成部分。

PDT是临时小组,在项目开始时成立,在产品成功发布后解散,PDT成员在概念阶段一起作整个项目的计划,PDT成员在执行阶段一起管理整个项目,测试人员和开发人员同时参与项目的整个过程。只有测试人员一开始就进入产品开发团队,才能有效的保证产品质量,因此,建立独立于开发的测试体系是非常必要的。

2)缺乏测试流程的保障。很多公司建立了规范了开发流程,如CMMI或IPD等等,但软件测试往往成了短板,如开发的版本发布频繁,测试人员疲于奔命,测试人员缺乏质量检测标准,测试过程中的软件需求变更过快,没有测试结束标准等...这些都是缺乏规范的测试流程的表现。没有规范的测试流程,研发人员会经常会以此为借口,发布没有完善的软件版本,开发过程中不做版本规划,修改缺陷时经常返工...

这些,都会增加测试人员的工作量,而作为开发的下游部门,测试人员很难去改变开发人员的这些不规范的行为,只能用大家公认的流程去约定大家的开发行为,如单元测试、集成测试、系统测试、验收测试的入口条件、中断条件、出口条件等。同时,在开发过程中,对开发人员和测试人员的行为进行约束,如开发修复缺陷后需要返工,要与绩效挂钩;测试人员漏测试致命或严重缺陷需要处罚等等。目前,业界较流行的开发流程采用V模型:

V模型的特点是:开发与测试紧密相连。在V模型中,从项目的需求分析、概要设计、详细设计到具体的编码编写。开发的每一个环节都和软件的测试紧密相扣,可以有效的保证产品质量。各个阶段测试的工作如下:

① 需求阶段主要活动是:测试工作从需求文档中,设计系统测试的用例,按照需求文档的功能划分,突出测试重点。完成系统测试的计划工作。

② 在功能概要设计阶段活动是:依据功能概要设计的目标,设计测试用例,对集成测试阶段的目标,作好一个准备。

③ 在详细设计阶段的活动是:在这一阶段,对应的测试工作是单元测试工作,通过详细设计的说明,测试工作人员可以准备好测试用例。这个是最小的测试执行单元。

④ 在编码阶段的活动是:测试工作可以根据上述的单元测试计划,进行单元测试了。一面编程,一面进行单元测试。充分的单元测试可以极大的提高程序的质量。因为很大的一部分错误都是在单元中发现的,如条件组合问题、边界值问题等。

编码工作全部完成后,测试工作就可以按照计划进行。从单元测试、集成测试、到系统测试。最后还有验收测试,验收测试工作主要是面向客户,向客户演示软件功能的实现。通过系统测试的用例。给客户展示,并确保用例全部执行通过,测试工作完成。建立规范的测试流程对测试部门的效率提升是非常关键的一环。

3)缺乏合适的测试人员。很多公司的HR认为对测试人员的要求较低,不需要懂得太多的知识,也不需要具备很多经验,测试谁都可以做。其实,这些观点都是错误的。要招聘到一个合适的测试人员不是一件容易的事。因为一个合格的软件测试人员需要同时具备以下条件:

① 具备一定的产品和业务知识。

② 有一定的怀疑精神,有寻根问底的精神。

③ 良好的沟通能力。

④ 具备一定的编程能力,只有懂一两门编程语言,跟开发的交流会更加顺畅。

⑤ 具备良好的文档编写能力,能编写较规范的测试报告。

⑥ 总结及分享的能力,能及时总结测试经验及与他人分享的能力。

⑦ 学习能力较强,对新业务、新技术和新产品功能的掌握较快。

⑧ 具备发散性思维,需要对客户的正常操作及异常操作进行推断。

⑨ 掌握一定的自动化测试方法和工具,能对测试效率不断进行改进。

除了上面几点之外,还有些公司对测试人员的英文水平要求较高,或者要求有带领团队的能力。可见,测试人员需要掌握的知识还真多,具备以上要求的测试人员或管理人员少之又少,除了招聘之外,公司内部也可以进行培养。

由此可见,人、流程、组织对软件测试的成功进行缺一不可。当然,研发管理的规范性,测试人员的绩效考核和激励机制也是非常重要的因素,一定要解决测试团队的成就感问题,同时,应建立测试人员的职业通道。只有这样,测试才有可能做好,不会陷入测试人员走了一批又来了一批的怪圈,一方面团队不稳定,另一方面产品质量也不会稳定。

时间: 2024-10-24 13:57:55

[转]软件测试为什么失败?的相关文章

杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》

课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲  师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式.随着创新环境的快速发展,许多企业都会面临这样的问题:如何快速响应市场的变化?如何推出更有竞争力的产品?如何在竞争中脱颖而出?……是大部分研发型企业普遍面临的核心问题.另外,软件项目在产品开发中位置越来越重要,逐渐占领主导地位,这时传统的IPD流程和CMMI

杨学明老师推出全新课程-- 《产品测试管理的五大利器》 课程大纲

课时:13小时(2天) 产品测试管理的五大利器 讲师:杨学明 [课程背景] “质量就是效益,质量就是生命”,随着各企业产品国际化进程的逐步推进,产品的功能.性能与质量标准与国际接轨迫在眉睫, “追求高品质”这个理念已深深地扎根于每个企业.质量是企业的生命,是企业发展的灵魂和竞争的核心.质量关系到企业的盈利,关系到企业的生存与发展,关系到企业的生死存亡.产品测试管理是提高产品质量的重要手段之一,产品测试作为产品进入市场的最后一道防线,关系到产品质量管理的成败.但目前国内一些企业在产品测试管理方面面

共创力咨询《软件产品需求分析与管理》公开课即将在北京开课!

课时:13小时(2天)    软件产品需求分析与管理   讲师: 杨学明 时 间:2019.01.04~05 举办单位:深圳市共创力企业管理咨询有限公司 举办地点:北京 [课程背景] 营销大师科特勒指出:“以市场为导向.以客户为中心”就是对市场需求的管理!市场需求管理是公司战略.市场计划.新产品开发的依据,决定了公司竞争力的延续,直接影响到公司效益. 但是:“有价值的客户需求在哪里,对有价值的需求如何进行汇总.分析.”目前大量的理论体系到此为止,如何在实际的操作层面上进行下去?如何执行? 很多企

《软件可靠性工程实践》大纲

[课程背景] 随着计算机技术迅猛发展,软件的销售量和使用量呈几何级数增长,软件的规模也越来越大,复杂性急剧提高.例如,航天飞机的飞行软件达50万行源代码,F-22战斗机更达150多万行源代码,软件失效已成为系统瘫痪的主要原因.根据美国国防部和NASA的统计,当今武器系统和航天项目中的软件可靠性比硬件系统大约低一个数量级.因软件故障而造成的重大事故也不乏其例,如F-18战斗机在海湾战争中,飞行控制软件共发生了500多次故障,爱国者导弹因软件问题误伤了28名美国士兵:阿里安5型火箭的发动机控制系统软

python+selenium自动化软件测试:装饰器之用例失败后截图

对于用例失败截图,很多小伙伴都希望用例执行失败的时候能自动截图,想法是很好的,实现起来并不是那么容易,这里小编分享下最近研究装饰器,打算用装饰器来实现自动截图. 一.函数作为形参1.函数的参数也可以是另外一个函数,也就是说传的参数不仅可以是常见的字符串.数字等,也可以是一个函数.2.定义aaa为一个加法函数,bbb为减法函数.3.calculate这个函数传三个参数,第一个参数是一个函数,另外两个参数是函数的两个参数. 二.万能装饰器1.由于不知道我们被调用的函数到底有几个参数,这时候就可以写一

软件测试读书笔记

[美] Ron Paton著, 周予滨, 姚静译. 软件测试[M]. 北京:机械工业出版社, 2002. 这本书是一本软件测试入门级读本,书的写作风格是浅显易懂,且知识面覆盖广.该书内容分为六个部分,每一部分分别讲述了软件测试的一个方面的知识.通过阅读该书我明白了软件测试与软件缺陷的一些相关知识,大致明确了软件缺陷的产生及在测试中如何对缺陷进行处理和管理. 1 软件测试综述 该部分作者通过讲述几个臭名昭著的软件错误案例,包括爱国者导弹防御系统(由于一个很小的系统时钟错误累积起来拖延数十个小时造成

《软件测试》总结

<软件测试>Ron Patton著. 这本书很全面地介绍了软件测试的理论基础知识,也就是看了这本书对软件测试有了一定的了解,帮助我找到了一份关于软件测试的工作.在看这本过程中也有一些有疑问的地方,这里主要是针对自学软件测试以来对软件测试的理解的一点总结,并把自己不懂的地方梳理一遍. 一.软件测试工程师究竟要做些什么? 这本书中给到一个相对完整的答案:软件测试员的目标就是尽可能早地找出软件缺陷,并确保其得以修复. 在面试过程中,面试官曾经告诉过我,并不是为了找bug,而是协助开发人员完善产品.有

我对软件测试行业的个人理解 4

我觉得我上一篇写得太简略了,估计很多人看了觉得不过如此,我决定在这篇里深化一下. 本文中,我定义技术路线长度或技术基础的标准为:普通人完全掌握一种技术所需要的时间,我把他的单位名称定义为Y,M,D (年,月,日) 比如3Y表示某技术需要普通人花3年时间来掌握,1M表示某技术需要普通人花1个月时间掌握. 本文有以下前提条件,基于我的个人理解: 前提一 计算机专业应届生的技术路线基础理论上为4Y,因为大学要读4年 培训班毕业非计算机专业的学生,以培训一年为例,技术基础为1Y 黑盒手工测试的技术路线为

软件测试分类总结

在这之前,如果你问我,软件测试的分类有哪些,我可能会回答的语无伦次.最近温习了一下软件测试分类的知识,觉得有必要总结一下.        从不同的角度可以将软件测试分为六种分类方式:项目流程阶段划分.源代码可见程度划分.软件测试点划分.软件测试工作自动化程度划分.是否运行程序划分.其他测试. 1.根据项目流程阶段划分为:单元测试.集成测试.系统测试.验收测试        单元测试:单元测试是测试过程中的最小粒度,是对程序中的单个子程序或具有独立功能的代码段进行测试,包含入口和出口的参数,输入和