软件测试大家都很熟悉,软件测试是软件开发完成后进行的一轮保障软件质量的环节,如果你是做开发类岗位的话,肯定对测试又爱又恨,恨得是测试从你的程序中找Bug,有的时候会为了某个Bug争得面红耳赤,爱的是测试通过测试软件帮你发现了很多程序中的问题,进而很好的提升了软件质量。

正因为测试能发现软件质量问题,通过测试能有效提高软件质量,所以慢慢大家都觉得,软件测试要对软件质量负责,开发也渐渐对测试产生依赖心理,很多功能模块实现后,扔给测试人员去测试,自己很少进行自测。

产品上线后,如果出现未发现的Bug,测试总是会为质量问题背锅,受到责备和惩罚,这在我们软件过程中司空见惯,但是这样其实对软件测试人员是十分不公平的。

软件开发是由多个环节组成的,从最开始的需求,到后来的设计、开发、测试等,每个环节都可能导致质量问题,而测试只能对已经完成开发的软件产品进行检测,无法干预整个过程。因为软件测试只能对功能进行测试,无法对代码直接测试。

那到底谁应该为软件质量负责呢?首先我们先了解什么是软件产品质量?

不同人对软件质量好坏其实评判角度不一样,对用户来说,看重软件有没有满足需求,是不是美观好用;对开发来说,看重代码质量是不是很高,好不好维护;对于软件测试而言,看重的是Bug数量、安全、性能等指标;对于项目经理来说,看重的是整个开发过程的质量,成本是否可控,项目能否如期完成。

David Chappell在《The Three Aspects of Software Quality:Functional,Structural and Process》中提到的软件质量的三个考量要素:功能质量、结构质量和过程质量。

所有软件的设计开发都是从一个想法开始的,客户有了一个想法,然后开发团队实施,把想法变成需求、需求变成设计、设计变成代码、代码变成软件。

功能质量,指用户体验软件的结果,满足用户需求是对功能质量最基础的要求,Bug数量、性能、UI/UX都是很重要的质量指标,如果软件Bug太多,性能差,不好用,交互差,客户不满意,这些都决定了产品的功能质量。

结构质量,软件中主要组成部分就是代码,代码质量指软件架构和功能代码的质量,代码质量主要体现在以下方面:

  1. 代码可维护性,
  2. 代码的可读性
  3. 代码的执行效率
  4. 代码的安全性
  5. 代码的可测试性

用户虽然不能直接看到代码,但是代码质量高低会直接影响功能质量。

过程质量,指软件开发过程中的项目管理,这个决定了项目能否如期完成,开发成本是否在预算之内。

综合来看,软件质量从来不是单方面质量决定的,都是几方面相互相成,互相影响的。

比如过程改进,增加了自动化测试的覆盖,引用了持续集成,这样可以提高代码质量和功能质量。

所以梳理清楚了产品质量后,我们知道产品质量是有功能质量、代码质量和过程质量共同决定的,三方面共同负责。

在说责任之前,我们要知道,权责向来都是对等的,我们要让开发对软件开发过程负责,那前提就是他必须有权力去影响和控制开发过程,否则离开权力谈责任就是耍流氓了。

我们先来看看项目中的主要角色,主要负责内容:

软件测试,对功能质量负责,对软件产品进行测试验收,确保产品满足功能需求。

开发人员,对结构质量负责,代码质量和测试代码,通过自动化方式做功能测试。

项目负责人,对过程质量负责,过程质量的水平高低,会间接影响代码质量和功能质量。

如果真的非要排个序的话,软件质量的首要负责人是项目经理、开发、测试。

开发是唯一能直接影响代码质量、对代码负责的人。开发能够更容易的找到Bug,更容易通过架构设计、自动化测试代码等手段保证好代码质量,提升测试效率。

现在软件开发的发展趋势就是软件测试的很大一部分手工测试工作已经被自动化代替;甚至不设测试岗位,典型代表就是Facebook,开发人员自己写代码实现功能,然后写自动化测试代码对功能进行测试,然后上线。这意味着在实现功能的同时,还要考虑如何去测试这个功能,这样让代码更具有可测试性,对开发人员的要求更高了。

我们不需要做到Facebook那样,从头到尾一个人搞定,但是作为开发人员,我们可以对代码质量有更高要求,如让项目有更多自动化代码覆盖,交付测试之前自己自测一遍。

敏捷开发强调的是,项目的所有人一起为产品质量负责,人人为产品质量负责,但是到具体实施就需要有一定的方法,否则就跟一个和尚挑水喝,两个和尚抬水喝,三个和尚没水喝,到时出现到处推诿的情况,大家都不愿真正对软件质量负责了。

如何做到“人人为产品质量负责”

我们只有真正在团队中建立了一种重视产品质量的文化,每个人才会确确实实地对质量负责,那有哪些方法可以帮助团队建立这种文化呢?

首先我们可以参考敏捷开发中的扁平化管理,产品负责人更多是充当一种服务型的角色,大家地位都很平等,每个人都有权力去影响到项目过程、实现权责对等,大家才会为过程质量负责。

其次,拆小团队,人数多的团队容易推诿扯皮,人数少的团队易于每个人承担更多的责任,有助于形成人人重视产品质量的文化。

然后,鼓励大家互相协作,例如开发人员多些自动化测试用例;测试人员给开发人员提供自动化测试用例的协作,例如设计测试用例。

最后指定相应的制度,鼓励大家重视软件质量:

  1. 每个Sprint都有项目回顾会议,每个人都可以针对质量提出有效的建议,最终落实建议
  2. 出现质量问题,不是推卸,而是分析原因、及时修复、避免再现

总结

保证软件高质量,并非只是测试人员的责任,软件质量体现在功能质量、结构质量和过程质量三个方面,对产品质量负责,意味着要对着三方面共同负责。所以对于产品质量,最理想的状态还是做到人人都为产品质量负责,为了达到这个目标,我们需要建立一种重视质量的文化,每个人才会确确实实地对质量负责。

软件测试是否应该为软件质量背锅?相关推荐

  1. 软件测试 - 软件测试流程(完整版)避免当背锅侠,测试人的生存......

    目录:导读 前言 一.测试计划 二.测试设计 三.bug提交与缺陷跟踪(重要) 四.回归测试范围 五.内部沟通 六.总结 前言 软件测试是在测试中识别软件产品和服务的准确性和质量的过程.显然,它的诞生 ...

  2. 软件测试完后,运行后还有BUG,测试人员就应该背锅吗?

    测试完成后还有bug,测试人员肯定是有责任的,第一时间要赶紧处理而不是着急甩锅.但是这口锅全部扣测试身上,明显也是不能接受的,关键在于测试人员需要找出足够的证据来保护自己. 或许很多人会说测试不可能发 ...

  3. 日常工作中,软件测试人员如何避免“背锅”

    作为一名软件测试工程师,日常工作中最常打交道的肯定就是开发和产品经理.有沟通就会问题,有问题难免会有争执.那么你肯定听过这些话: "这么弱智的bug你都测不出来吗?" " ...

  4. 谁为软件质量负责(背锅)?

    这是一个残酷的世界,无论我们多么努力,结果可能还是不如意.这一点,软件人深有体会,不管我们多么认真地编码,多么仔细地测试,仍然无法抵挡Bug顽强地冒出来. 如果Bug被发布出去了,谁将为此背锅负责? ...

  5. 软件测试是背锅,测试如何少背锅”

    刚毕业时我应该跟大部分人一样都觉得软件测试比开发简单.容易,比开发要舒服轻松很多,我们老师还有学长学姐也如是跟我们这样讲''女孩子做测试挺好,比开发舒服".的确,在实习前两个月是比开发轻松, ...

  6. 软件测试周刊(第02期):测试不背锅指南、搞垮领导..

    这里记录过去一周我们看到的软件测试及周边的行业动态,周五发布. 本周刊开源(GitHub: SoftwareTestingWeekly ),欢迎提交 issue,投稿或推荐软件测试相关的内容. 目录 ...

  7. AI删库,程序员背锅?

    作者 | 一一 出品 | AI科技大本营 又一代码清库的惨案发生了,不过这次要背锅是 AI. 近日,美国最大点评网站 Yelp 的工程师训练的神经网络闯祸了.他们训练了一个用来消除 bug 的神经网络 ...

  8. AI 删库,程序员背锅?

    作者 | 一一 出品 | AI科技大本营 又一代码清库的惨案发生了,不过这次要背锅是 AI. 近日,美国最大点评网站 Yelp 的工程师训练的神经网络闯祸了.他们训练了一个用来消除 bug 的神经网络 ...

  9. 测试员就是“背锅侠”?学会这些,扔掉测试人常背的3口“锅”

    最近发生了一起生产事故,究其根源,事故本身属于架构或者需求层面需要规避的问题,测试人员的责任其实是非常小的,但实际情况是:相关测试人员因此承担了很大的压力,成为质量问题的"背锅侠" ...

最新文章

  1. WPF 与Surface 2.0 SDK 亲密接触–LibraryContainer 篇
  2. 【机器学习-学习笔记】单/多变量线性回归、多项式回归、逻辑回归、过拟合、正则化
  3. C#String地址、拼接性能学习
  4. SLF4j+LOG4j
  5. SQL 无限级分类语句
  6. My Lead route attach and detach issue
  7. SVN中如何去除版本控制器
  8. 明晚8点,捷微团队QQ群公开课,讲解jeewx2.0版本maven环境的搭建入门!
  9. android studio第三方调试,Android Studio直接运行调试签名包
  10. 基于tcp的应用层协议还原
  11. poj1091:跳蚤【容斥原理】
  12. 机器人水下赌场争霸战!中国团队创造历史,在美国登顶世界第一
  13. 【MySQL数据库】----保姆级MySQL驱动包安装+JDBC编程
  14. 微软高性能缓存AppFabric (一) 安装
  15. 华为通用软件开发工程师面经(业务主管面挂)
  16. 吴莫愁新专辑出炉 承认哈林老师是她生命中的贵人
  17. 基于go语言的史上最流弊的学生成绩管理系统
  18. 盘点国内外那些形式多样的能量采集技术
  19. 抖音新号怎么快速涨粉(8种抖音运营吸粉技巧)
  20. NB-IoT 的“前世今生” 1

热门文章

  1. Pytorch 冻结网络层
  2. html div 虚线边框样式,纯CSS实现渐变虚线框和边框滚动动画
  3. python实现链表(一)
  4. rsa加解密 --- jsencrypt.min.js --- 支持长字符串分段加解密
  5. 计算机艺术和动画之父肯·诺尔顿去世,享年91岁
  6. 什么是编程?——我的编程之路
  7. 批量替换一个文件中的文件名,例如将文件夹中s**_abnormal.jpg文件修改为s**_abnor.jpg
  8. HDU 4833 Best Financing 一脸费用流的dp
  9. xsl特殊符号输出总结
  10. 中央空调如何调节温度html,麦克维尔中央空调设置温度单位方法