引入两个问题:
1、没有bug,算不算高质量?
2、没有bug,并且满足用户的需求,算不算高质量?
说起“质量”这个概念,我们都很熟悉,会说“坏的质量会怎样怎样,好的质量会怎样怎样”,但让我们给出质量的正式定义,可能不是容易的事情。
我们来看下ISO9126国际标准是如何定义的软件质量的:
以上质量模型由6个特性和27个子特性组成,其核心理念就是系统、组件或过程满足特定需求,满足客户/用户需求或期望的程度。简单的说:客户满意度越高,质量就越好。当然,目前我们还没法严格按照质量模型定义的标准去逐一评估每个特性是否达标。
这里我将软件质量翻译成使用质量来进一步探讨对软件质量的认知
使用质量是从客户或用户使用的角度去感知到的质量。因为质量是相对客户而存在,没有客户就没有质量,质量就是客户的满意度。
例子1、
例子2、
例子3、
从软件质量的定义,可将软件质量分为3个层次,具体如下。
● 满足需求规定:软件产品符合开发者明确定义的目标,并且能可靠运行。
● 满足用户显示的需求:软件产品的需求是由用户产生的,软件最终的目的就是满足用户需求,解决用户的实际问题。
● 满足用户隐式的需求:除了满足用户的显式需求,软件产品如果满足用户的隐式需求,将会极大地提升用户满意度,这就意味着软件质量更高。
经典名言:
丢失一个钉子,坏了一只蹄铁;
坏了一只蹄铁,折了一匹战马;
折了一匹战马,伤了一位骑士;
伤了一位骑士,输了一场战斗;
输了一场战斗,亡了一个帝国
– 本杰明·富兰克林
一个小小的细节都会产生极大的影响,这就是我们所说的蝴蝶效应。
引用前几年的一份关于消费者对购买的产品不满意的调研报告:4%的人会抱怨、投诉;96%的不提意见;91%的人不会复购;13%的人会向身边约9个人诉说对产品的不满;寻找一个新用户比留住一位老用户多5倍多开支
由此可见,低质量给用户带来的连锁反应,不仅仅是产品的价值下滑,更是给公司的品牌价值造成了巨大的影响
实际工作中,我们经常能听到以下声音:
质量意识本质上是一种思维逻辑,即能否站在用户和产品角度思考并解决问题。主要包含如下几方面:
用户意识:即你研发的软件产品是否满足了用户的真实需求,解决了用户的底层痛点,产品使用的感受是否良好。简单来说就是——在能用的基础上是否好用,创造更多的经济价值。
商业意识:即开发的软件产品能否为企业创造商业价值。技术本身是没有直接价值的,技术的价值需要有一个依附物或者说承载品,这个物品就是软件产品能创造的商业价值。
数据意识:软件产品最终要投入市场让用户使用,然后才能发现不足并且不断迭代优化。当数据量越来越庞大时,不仅要意识到产品带来的经济价值,更要意识到我们所做的事情带来的社会价值。
质量是习惯出来的,没有最好,只有更好和持续改进,因此我们可以:
质量保障体系好坏的标准,不是里面的内容多么充实、饱满,而在于执行力。落地后,需要整个团队去遵守,形成思维化习惯而落地,在执行的过程中不断去优化,进而继续坚持。
先来看下项目开发的生命周期,这边划分了4个阶段:需求阶段 -> 开发阶段 -> 测试阶段 - > 上线
结合我们公司目前业务的快速迭代以及敏捷开发的模式,本次质量体系的重点先从需求阶段和上线阶段落实,着重抓好产品的“入口”和“出口”
需求质量体现在如何能正确的洞察客户的需求。如果需求都是错的或者有偏差,那么研发出来的产品返工和失败则是必然的。
我们首先看,需求的整个过程。
举个例子:
用户需求:我想随时随地的与他人进行交流沟通
于是诞生了产品 – 手机
但用户不是专业人员所以,通常会说的比较抽象,比如:好用、时尚、使用流畅。我们称为,产品的特性,最后这些特性具体用什么功能体现,需要什么软硬件,定义清晰,最后我们才能进入开发。
这个过程如下图所示:
所以,需求的形成是:
需求来源很杂乱,通常会有下面几个来源
当把需求都收集完了之后,接下来就进入到需求筛选了,把一些不合理的需求剔除掉
例子1
例子2
所有参与实现需求的相关人员,包括业务方、产品经理、UED、PM、开发、测试、其他团队依赖方等
当需求确定后,难免会遇到需求变更的现象,面对需求的变更需要有套规范的处理方案
需求是规划的起点,也是研发的起点,质量是否符合要求,但这个要求是否正确,其实更重要,我们应该投入更多的质量保障在这个环节
这里特地提到了预发布环境(目前我们缺失的环节)预发布环境是产品质量最后一道防线,有必要备一套。列举几条预发布环境的作用:
每个产品可根据自己业务线的特点,适当调整。怎样在产品上线时间点和产品质量之间找到平衡点,需要根据实际情况来分析决定,以下根据公司实际情况罗列了两个上线标准
注:目前只针对需求的上线定个标准,后续可以根据实际情况定义其他类别的上线标准,如:bug上线,技术优化上线,紧急上线,异常回滚等标准