软件工程之美
宝玉
Groupon资深工程师,微软最有价值专家
立即订阅
6741 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 你为什么应该学好软件工程?
免费
特别放送 | 从软件工程的角度解读任正非的新年公开信
学习攻略 | 怎样学好软件工程?
基础理论 (9讲)
01 | 到底应该怎样理解软件工程?
02 | 工程思维:把每件事都当作一个项目来推进
03 | 瀑布模型:像工厂流水线一样把软件开发分层化
04 | 瀑布模型之外,还有哪些开发模型?
05 | 敏捷开发到底是想解决什么问题?
06 | 大厂都在用哪些敏捷方法?(上)
07 | 大厂都在用哪些敏捷方法?(下)
08 | 怎样平衡软件质量与时间成本范围的关系?
“一问一答”第1期 | 30个软件开发常见问题解决策略
项目规划篇 (8讲)
09 | 为什么软件工程项目普遍不重视可行性分析?
10 | 如果你想技术转管理,先来试试管好一个项目
11 | 项目计划:代码未动,计划先行
12 | 流程和规范:红绿灯不是约束,而是用来提高效率
13 | 白天开会,加班写代码的节奏怎么破?
14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决
15 | 风险管理:不能盲目乐观,凡事都应该有B计划
16 | 怎样才能写好项目文档?
需求分析篇 (5讲)
17 | 需求分析到底要分析什么?怎么分析?
18 | 原型设计:如何用最小的代价完成产品特性?
19 | 作为程序员,你应该有产品意识
20 | 如何应对让人头疼的需求变更问题?
“一问一答”第2期 | 30个软件开发常见问题解决策略
系统设计篇 (4讲)
21 | 架构设计:普通程序员也能实现复杂系统?
22 | 如何为项目做好技术选型?
23 | 架构师:不想当架构师的程序员不是好程序员
24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
开发编码篇 (7讲)
25 | 有哪些方法可以提高开发效率?
26 | 持续交付:如何做到随时发布新版本到生产环境?
27 | 软件工程师的核心竞争力是什么?(上)
28 | 软件工程师的核心竞争力是什么?(下)
29 | 自动化测试:如何把Bug杀死在摇篮里?
30 | 用好源代码管理工具,让你的协作更高效
“一问一答”第3期 | 18个软件开发常见问题解决策略
软件测试篇 (4讲)
31 | 软件测试要为产品质量负责吗?
32 | 软件测试:什么样的公司需要专职测试?
33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
34 | 账号密码泄漏成灾,应该怎样预防?
运行维护篇 (6讲)
35 | 版本发布:软件上线只是新的开始
36 | DevOps工程师到底要做什么事情?
37 | 遇到线上故障,你和高手的差距在哪里?
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
39 | 项目总结:做好项目复盘,把经验变成能力
“一问一答”第4期 | 14个软件开发常见问题解决策略
经典案例解析篇 (7讲)
40 | 最佳实践:小团队如何应用软件工程?
41 | 为什么程序员的业余项目大多都死了?
42 | 反面案例:盘点那些失败的软件项目
43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?
44 | 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
45 | 从软件工程的角度看微服务、云计算、人工智能这些新技术
“一问一答”第5期(内含彩蛋) | 22个软件开发常见问题解决策略
结束语 (1讲)
结束语 | 万事皆项目,软件工程无处不在
软件工程之美
登录|注册

31 | 软件测试要为产品质量负责吗?

宝玉 2019-05-11
你好,我是宝玉。从这一篇开始,我们将进入软件工程中的测试模块的学习。
说到软件测试,你一定不会陌生,尤其是如果你做开发相关岗位的话,一定是对测试又爱又恨,一方面测试从你的程序找出 Bug,然后你还要费心去修复;另一方面测试帮你发现 Bug,修复后能很好的提升质量。
正因为测试能发现软件中的质量问题,通过测试能有效提升软件质量,慢慢的大家就觉得软件测试能保障质量,所以测试要对质量负责。开发也会对测试产生依赖心理,很多功能模块实现后,就扔给测试人员去测试。
上线后,如果因为有测试漏测导致的 Bug,测试人员还要为质量问题背锅,受到责备。上面这样的场景到现在也还在很多软件项目中上演。但这对测试人员其实是不公平的。
因为软件开发是多个环节组成的,从最开始的需求,到后面的设计、开发,每个环节都可能会导致质量问题,而测试只能对已经开发完成的软件产品进行检测,并不能干预整个过程。
比如说测试是无法对开发写的代码直接测试的,只能基于软件功能去测试,也就是说对于代码的质量,测试人员其实是没有什么办法的。
那到底谁应该为产品质量负责呢?在回答这个问题之前,你不妨先思考一个更本质的问题:什么是软件产品质量?

什么是软件产品质量?

取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件工程之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(17)

  • kirogiyi
    产品设计、软件开发、软件测试都应该对产品质量负责。

    产品设计要重视产品需求的完整性,提升用户的操作舒适感,展现流畅的页面逻辑设计,这是产生良好软件质量的开端。在进行产品设计评审的时候,除了评审人员外,相应的软件开发团队和软件测试团队一定要派人员参加,不能坐等任务分配。有的开发团队和测试团队不去了解需求和产品设计情况,只是一味的等待产品的UI设计,久而久之,就形成了少交流多看文档的习惯,于是大家就开始机械般各顾各的,做完了扔出去就好,就很难在产品质量上达成共识。

    软件开发是核心,开发人员对产品的理解程度和自身的技术水平决定了产品的质量和迭代周期。如果开发团队不去与产品团队交流,不去与测试团队核对测试用例,那么在开发过程中大多只会去关注是否实现和能否实现,至于产品质量出现的问题就不是他们关注的重点。然后就会自私的认为产品设计需要增删改是产品团队的原因,产品上线出现bug是测试团队没有覆盖到,部门之间的战争就开始酝酿直至爆发。

    软件测试更多的是发现问题、监督问题和约束行为。发现问题的重点在于通过完善的测试覆盖,去找到开发过程中的盲点,而不是去为别人的疏忽大意导致的错误埋单,比如:开发提交的产品有错别字什么的,这种错误就是开发负责人应该承担的。在明确发现问题后,测试团队有权利去监督开发团队解决问题,直至问题得以彻底解决。除此之外,测试团队可以对开发团队行为进行约束,双方协作完成自动化测试体系和流程的构建,共同遵守规则:开发团队负责单元测试、集成测试和系统测试的代码编写,测试团队负责查缺补漏和必要的人工测试。

    因此,个人认为,产品、开发、测试的紧密合作是保障产品质量的必备条件。

    作者回复: 👍👍感谢分享!
    非常有价值的补充!

    2019-05-11
    5
  • 我们公司团队小,每次app开发完成后,要求测试人员组织开发全体测试2次,用于保证质量。团队小测试人员技术有限,性能,安全等一般难以保证。

    作者回复: 其实即使是小团队,也应该加大对自动化测试对投入,绝对是磨刀不误砍柴工,这样App开发完成后,很多测试就可以自动化完成,节约时间和人力。

    当然在没有自动化测试的覆盖的话,这也是很好的一种测试方式。

    2019-05-12
    3
  • javaadu
    有一定影响,刚开始很不习惯(现在也有不少同事不习惯),没有测试为开发写测试用例了,作为开发者就要有更好的测试意识,要自己组织测试评审,有些好的核心的测试用例要及时加入到集成测试中。测试人员也转型为测试开发,将精力投入到测试平台的打造上。

    作者回复: 👍有测试意识能提升代码质量,其实挺好的

    2019-05-24
    2
  • 纯洁的憎恶
    解铃还须系铃人,要想提高软件质量,就要着眼于整个生产链条,每一个环节都要为提高质量出力,而绝不能仅仅依靠质量监控岗位或部门。相反,很多企业设置了类似的部门或岗位,并把质量、安全的重担压在他们肩上,但又没有赋予足够的权力去介入、影响整个链条,结果可想而知。不谋全局者不足以谋一域啊。

    把整体质量按照生产链条或链条上的不同角色,划分为若干子部分。通过有机的把控各个子部分质量,形成合力,达到提高整体质量的目的。

    作者回复: 👍是的,很多都只要求QA为质量负责,而不赋予权力!

    有时候单纯子质量和全局质量还是有冲突,比如开发追求代码质量可能会导致延期影响过程质量。不仅要有之部分质量目标,还是大家有共同的质量目标。做好确实不容易

    2019-05-15
    2
  • hua168
    质量是怎么打分的?算进KPI考核吧?
    直接用代码质量管理软件(如sonar)实现自动检查可以吧?

    作者回复: 很遗憾,都不好量化,软件检查只是辅助,可以作为一个参考。

    代码质量要看满足需求,是否设计良好,代码简洁逻辑清晰,可维护、可测试、安全高性能

    过程质量要看开发过程对软件工程和项目管理知识的应用

    功能质量要看客户满意度

    2019-05-12
    2
  • 项目负责人为软件质量总责任人。功能,代码,过程都要关注,并不一定要亲力亲为,因为除了质量他还要兼顾范围、时间和成本。提升质量意识最理想状态是组员有质量人人有责的意识与行动,但实际上这很难。如果自下而上做不到,就自上而下用制度强推,有奖有罚。最后补充一点就是推行质量保障是需要公司层面作为支持的,否则在推行过程中会有不少阻力,也许在强人项目经理的推动下,个别项目能做的很好,但心会很累~

    作者回复: 赞,确实还要考虑金三角的因素。

    软件项目呢,也并非一定要有强人项目经理,其实只要按照软件工程,踏踏实实做好每一个环节,质量就不会差到哪去。

    比如说在需求上多花点时间精力,把需求确认清楚,这就成本一半了,然后再基于确定的需求做好架构设计再开发,最后开发后做好测试,那么质量就有了基本保障了。

    2019-05-11
    2
  • Charles
    目前理论上我们整体质量负责是项目经理

    但是团队小,所以一碰到线上问题,基本上boss都知道是哪一块出的问题,直接找对应的岗位了,然后通过这个人出发去解决问题,这个人发现需要协调,人少就自己直接对接,人多就项目经理协调

    另外我认为除了老师说的这些流程和自动化来保证产品质量,可能对于小团队而言,人的因素也很重要,发自内心的责任感、对产品的认可并且产品数据持续增长还有boss福利给到位,产品质量就已经有一大半成功了

    作者回复: 对,人是很重要的因素。自动化测试就是可以减少对人的依赖,当然这也有点像先有鸡还是先有蛋的难题,还是要先有人才能把流程、自动化这些建设起来:)

    2019-05-11
    2
  • javaadu
    产品经理(pd)为功能质量负责
    项目经理(pm)为过程质量,代码质量负责,开发人员经常兼任技术pm
    没有测试人员,有完整的ci基础平台

    作者回复: 👍感谢分享
    你觉得没有测试人员,软件质量有没有受影响呢?

    2019-05-11
    2
  • Joey
    请教宝玉老师,系统间接口治理,有没有好的实践或方案可以推荐?我们公司现状:业务系统多,调用关系复杂,且调用方式也五花八门,上游修改接口,下游难以发现或通知遗漏,引发生产质量。总体可以归纳为三种方式:API接口、数据接口、文件接口。
    2019-12-11
    1
  • 陈丹
    测试原则中有一条是不能测试自己的代码,facebook开发自己测试自己的代码,也会有问题,除非交叉测试

    作者回复: 👍是的,自己测试自己的代码是很容易有盲区的,需要交叉测试

    2019-08-22
    1
  • 钟杰
    个人觉得过程质量很大程度影响代码质量和功能质量,没有项目经理对整个项目的把控,例如在开发过程中不设立代码审查环节,开发人员随意签入低质量代码,从而影响软件代码质量,还有在开发过程中没有做好需求评审环节的工作,从而影响软件的功能质量,所以高的过程质量可以很大程度上提高软件的代码质量和功能质量

    作者回复: 👍支持你的观点,对过程的质量把握至关重要。

    2019-07-05
    1
  • 风翱
    没问题部门领导负责,有问题开发人员负责。 授权,不应该只有责任没有权力。

    作者回复: 是的,权责需对等!

    2019-06-26
    1
  • williamcai
    软件开发是一个团体活动,任何参与的个体都要对软件质量负责。软件成功了,大家都有成就感,失败了大家都有责任。这是个体与整体的关系

    作者回复: 👍是的,软件质量,人人有责,做好了大家都好。

    2019-05-19
    1
  • 一路向北
    软件产品质量是一个整体问题,从设计,实现,测试,每一个环节都是质量的关键。质量出问题,很多时候是因为缺失一环造成。

    作者回复: 👍是的,一个环节有质量问题,会导致整个软件质量出问题。

    2019-05-18
    1
  • 胖虫子
    一般都是测试背锅啊,产品需求不明,测试也无能为力,但最后有问题还是测试背,你怎么没想到

    作者回复: “背锅”与否主要还是看组织文化,一些文化不太好的组织,犯了错误就一定要有人背锅,背锅就总是测试。

    上线出错误了,不总是测试的责任,也不总只是测试的责任。犯错误是常态,只是要找到原因、做出改进,尽可能避免犯同样的错误。

    2019-11-18
  • 追风筝的人
    代码质量 功能质量 过程质量,人人对产品质量负责
    2019-10-16
  • 陈丹
    每个项目负责人都应该看看这篇文章,每篇文章都说出了心声。。😂

    作者回复: 欢迎转发:)

    2019-09-05
收起评论
17
返回
顶部