关于软件质量保障初探
博文软件质量保障初探
软件质量这个词非常广泛,在不同语境下有不同的含义。下面是国际标准组织最近的定义:
"Capability of software product to satisfy stated and implied needs under specified conditions."
"The degree to which a software product meets established requirements; however, qualitydepends upon the degree to which those established requirements accurately
representstakeholder needs, wants, and
expectations.
这两个定义都强调了软件要符合用户以及利益相关者的需求,有多种方式可以来剖析软件的质量,关于这方面的学术论文也不少,在这本书中,我们知道:
软件=程序+软件工程
那么,我们可以嵌套这个公式:
软件质量 = 程序质量+软件工程质量
程序的质量体现在软件外在功能的质量。各种功能还有很多特征需要衡量,例如,网站显示查询的结果的速度;订票网站能并发处理业务的吞吐量;支持在线用户的数
量。程序还有其他的方面,例如用户的体验的质量,国际化的质量和安全的质量。
软件的开发过程有三个特性:好,快,便宜。通俗的说就是“软件在功能,成本,时间三方面都满足利益相关者的需求”
我体会到,软件质量的保障应该分为很多方面,并不是单纯的某一方面,它是由诸多因素控制的,在熟读课本之后,我领悟到了
软件工程的质量体现在以下方面:
软件开发过程的可见性
软件开发过程的风险控制
软件内部模块,项目中间截断的交付质量,项目管理工具因素
软件开发成本的控制
内部质量的指标完成
软件质量貌似很抽象,实则很具体。他需要的不是某一方面的完美,而是面面俱到,因为软件等于程序加软件工程
程序有很多方面组成,软件工程也不是有一个方面组成的。
软件的质量保障( QA )和软件测试( Test )是有很大区别的。
一位曾经在雅虎和微软工作的的程序员,有这么一个断论,大多数的开发团队,并不需要一个独立的测试人员。
首先,有分工是好事,软件团队中应该有独立的测试角色。所有人都可以参与QA的工作(报告Bug什么的),但是最后要有一个角色对QA这件事负责。不但角色要独
立,而且在最后软件发布时,必须得到此角色的签字保证(Sign Of)。分工是社会和行业进化的结果,开发和测试其实是软件工程的两个分支,对于不同的软件1服务,
测试的方式和程度都有所区别。独立的测试角色从用户的角度出发验证产品质量。独立专业的测试等同于代表客户对产品进行认证
在熟读课本,我发现,团队内部需要独立的QA角色,团队外面也需要独立的QA角色。所以QA的工作范围其实品质,线上,出货一系列的检查,不论是团队内还是团队外。
对于测试人员观点很多人有不同的见解:
既然有人专门负责,那我就不用负责 了
盲目信任专业人士扮演的角色
为了自己的角色而做绩效优化
画地为牢的分工
无明确责任的分工
还有很多成功人士和成功的公司号称没有必要设置独立的测试角色
对于以上问题我做一下说明,我觉得每个公司要设置独立的QA,每个QA不光可以测试本团队的测试工作,还可以在团队外测试别的团队的测试工作。
test和QA的专职也不一样
QA关注产品TESTER 重点是对软件开发的成果进行检查、控制,然而test关注过程SQA 重点是对软件开发过程进行监督管理、控制。
一旦出现问题,可以由按照什么方面出现的问题,来判断是谁的问题。代码上面的精细差别,可以交付给编程人员来整改,如果是因为测试上面的差错,那就可以判断这是测试人员出现的疏忽而导致 的问题。