《软件工作之美》材料地址: https://time.geekbang.org/column/article/94631
测试只能对已经开发完成的软件产品进行检测,并不能干预整个过程。
什么是软件产品质量
不同的人对软件质量好坏的评判角度是不同的。
- 用户:美观好用
- 开发:代码质量是否高,是否好维护
- 测试:bug数量、安全、性能等
- 项目负责人: 整个过程质量,成本可控、如期完成
功能质量、代码质量和过程质量这三个方面组合在一起,很好地概括了软件质量。
功能质量:
Bug 数量、性能、UI/UX
代码(架构)质量:
可维护性,可读性,执行效率,安全性,可测试性
过程质量
软件工程,项目管理的质量(时间、成本)
谁该为产品质量负责?
软件质量从来不是单方面质量决定的,通常是几方面质量因素相互影响,共同决定的。
离开权力谈责任就是耍流氓了。
软件质量的首要负责人是项目负责人,其次是开发人员,然后才是软件测试。
虽然从权责的角度看,项目负责人是最应该对项目质量负责的,但是从效果来说,却是开发人员对项目质量负责最有利。
比如facebook,开发人员自己写代码实现功能,然后写自动化测试代码对功能进行测试,最后上线。
如何做到“人人为产品质量负责”?
敏捷开发中强调的是:项目的所有人一起为产品质量负责,人人为产品质量负责。
首先,可以参考敏捷开发中的扁平化管理。
其次,可以选择将团队拆小。
另外,也可以鼓励工种之间的融合
最后就是制定相应的制度,鼓励大家重视质量。比如 sprint 回顾会
精彩留言
kirogiyi:
产品设计、软件开发、软件测试都应该对产品质量负责。
产品设计要重视产品需求的完整性,提升用户的操作舒适感,展现流畅的页面逻辑设计,这是产生良好软件质量的开端。在进行产品设计评审的时候,除了评审人员外,相应的软件开发团队和软件测试团队一定要派人员参加,不能坐等任务分配。有的开发团队和测试团队不去了解需求和产品设计情况,只是一味的等待产品的UI设计,久而久之,就形成了少交流多看文档的习惯,于是大家就开始机械般各顾各的,做完了扔出去就好,就很难在产品质量上达成共识。
软件开发是核心,开发人员对产品的理解程度和自身的技术水平决定了产品的质量和迭代周期。如果开发团队不去与产品团队交流,不去与测试团队核对测试用例,那么在开发过程中大多只会去关注是否实现和能否实现,至于产品质量出现的问题就不是他们关注的重点。然后就会自私的认为产品设计需要增删改是产品团队的原因,产品上线出现bug是测试团队没有覆盖到,部门之间的战争就开始酝酿直至爆发。
软件测试更多的是发现问题、监督问题和约束行为。发现问题的重点在于通过完善的测试覆盖,去找到开发过程中的盲点,而不是去为别人的疏忽大意导致的错误埋单,比如:开发提交的产品有错别字什么的,这种错误就是开发负责人应该承担的。在明确发现问题后,测试团队有权利去监督开发团队解决问题,直至问题得以彻底解决。除此之外,测试团队可以对开发团队行为进行约束,双方协作完成自动化测试体系和流程的构建,共同遵守规则:开发团队负责单元测试、集成测试和系统测试的代码编写,测试团队负责查缺补漏和必要的人工测试。
因此,个人认为,产品、开发、测试的紧密合作是保障产品质量的必备条件。