软件质量—软件测试核心技术(4)

发表于:2020-8-13 11:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing教研团队    来源:51Testing软件测试网原创

  第3章 软件质量
  测试工作很重要的作用就是帮助开发人员提升软件质量。只有明确了什么是软件质量,如何通过体系来保证和提升质量,才能更好地完成测试工作。
   图3-1  质量的定义
  3.1 软件质量的定义
  软件质量是客观存在的,研发企业可以借助质量铁三角来从不同的角度提升软件质量。
  3.1.1 什么是质量
  国际标准化组织(International Organization for Standardization,ISO)关于质量的定义是一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求。而质量就是实体基于它的所有特性满足需求的程度。质量的定义如图3-1所示。
  质量的定义包含3个要素—实体、特性集合和需求。
  1.实体
  实体的示例如下。
  ●产品:手机、MP3、汽车、企业资源计划(Enterprise Resource Planning,ERP)软件、桌子……
  ●服务:酒店、出租车、快递、培训、美容……
  对于测试来说,实体即测试对象。
  2.特性集合
  对于不同实体,其特性集合不同。
  榨汁机的特性集合如下。
  ●功能:能够榨豆浆、水果汁(如苹果汁、梨汁、西瓜汁……)
  ●性能:比如,榨1kg黄豆需要多长时间?
  ●耗能:比如,榨1kg黄豆消耗的电量是多少?
  ●安全性:榨汁过程中有无人体安全防护措施?有无漏电保护?
  ●可靠性:榨汁机能持续稳定运转多长时间?
  ●易用性:榨汁机的操作是否简单方便?
  ……
  酒店的特性集合如下。
  ●建筑:客房、西餐厅、宴会厅、酒吧、健身房……
  ●设施:配套设施的品牌、档次……
  ●环境:交通、风景……
  ●服务:服务品种、服务态度、响应客户要求的及时性……
  ……
  3.需求
  评价实体的质量,不是从一个角度来说它的质量好还是不好,而是从所有的角度来综合进行评价。
  软件质量是由哪些特性组成的?后面会讲到软件质量模型,这是软件质量中最核心的一部分。
  评价的标准是什么?是需求。质量和需求对应,需求有3个层次—显式需求、隐式需求和用户的实际需求,因此我们可以引申出不同层次的软件质量。
  ●符合需求规格:符合开发者明确定义的目标,即产品在做让它做的事情。目标是开发者定义的,并且是可以验证的。如果想要一个高质量的产品,需求必须是可度量的,并且产品的需求要么满足,要么不满足。根据这种度量,质量是一个二维的状态,即产品要么是高质量的,要么是低质量的。需求可能非常复杂或者非常简单,但只要它们是可以度量的,就可以用来确定是否达到质量要求。这是生产者关于质量的观念,他们认为质量就是满足生产者的需求或规格说明书。在这里满足规格说明书成为产品本身的一个终点。这个是内部质量,即从软件启动到交付用户之间产生的所有中间产品的质量。
  ●符合用户显式需求:符合用户所明确说明的目标。目标是客户所定义的,符合目标即判断我们是不是在做我们需要做的事情。在这个维度上用户认为的质量是产品适合使用。这也应当是产品目的的一种描述。描述内容记录在用户的需求规格说明书中,并且质量系统始终围绕着需求进行质量的改进和质量的检测。这个是验收质量,即用户在验收时评价产品的质量。
  ●符合用户实际需求:实际需求包括用户显式的和隐式的需求,但往往我们会忽略隐式的需求。因此,在控制一个产品的质量的过程中必须关注这些隐式的需求,并给予应有的验证。用户实际上是根据所有这些实际需求和隐式需求来判断质量的。这个是使用质量,即用户在实际使用过程中对产品的质量评价。
  3.1.2 质量管理学家
  在质量行业发展的历史上涌现出了多位影响巨大的质量管理学家,而我们当今的质量理念都源于这些大师。
  1.戴明
  戴明(1900—1993)博士是世界著名的质量管理学家,他因对世界质量管理发展做出的卓越贡献而享誉全球。以戴明命名的“戴明品质奖”至今仍是日本品质管理领域中的最高荣誉。作为质量管理的先驱者,戴明学说对国际质量管理理论和方法始终产生了异常重要的影响。他认为,“质量是一种最经济的手段,可制造出市场上最有用的产品。一旦改进了产品质量,生产率就会自动提高。”
  2.朱兰
  1979年,朱兰建立了朱兰学院,用于广泛传播他的观点。朱兰学院如今已成为世界领先的质量管理咨询公司。
  朱兰的《质量策划》(Planning for Quality)一书阐述了他的思想和整个公司质量策划的构成方法。
  朱兰认为大部分质量问题是管理层的错误而并非工作层的技巧问题。他认为管理层控制的缺陷占所有质量问题的80% 以上。
  他首次将人力与质量管理结合起来,如今,这一观点已包含于全面质量管理的概念之中。
  3.克劳士比
  质量管理学家克劳士比被誉为当代“伟大的管理思想家”“零缺陷之父”“世界质量先生”,他终生致力于“质量管理”哲学的发展和应用,促使全球质量活动由生产制造业扩大到工商企业领域。
  克劳士比的理论在中国也大受欢迎,其理论被总结成了克劳士比的质量管理基本原则。
  ●质量就是满足要求。
  ●工作的标准是零缺陷。
  ●质量系统的核心是预防。
  ●用不符合要求的代价(Price of Nonconformance,PONC)来衡量质量。
  4.费根堡姆
  费根堡姆是全面质量控制的创始人。他主张用系统或者全面的方法管理质量,在质量过程中要求所有职能部门参与,而不局限于生产部门。这一观点要求在产品形成的早期就建立质量标准,而不是在出现质量问题后再进行质量的检验和控制。
  他将质量控制定义为“一个协调组织中人们的质量保持和质量改进工作的有效体系,该体系是为了用最经济的手段生产出客户完全满意的产品”。
  他指出质量并非意味着“最佳”,而是“最佳的用户体验”。在质量控制里,“控制”一词代表一种管理工具,包括制定质量标准、按标准评价符合性、在不符合标准时采取的行动和策划标准的改进等。
  5.石川馨
  石川馨是20世纪60年代初期日本“质量圈”运动中最著名的倡导者之一。
  在《质量控制指南》中,石川馨总结了QC小组的7种常用工具,分别是帕累托(Pareto)图、鱼骨图(因果图/石川图)、散点图、直方图、检查表、控制图和流程图,我们称其为质量控制的七大手法。
  3.1.3 质量铁三角
  质量铁三角如图3-2所示。
  流程、技术、组织3个方面是影响软件质量的铁三角。软件质量的提高应该要综合考虑这3方面的因素,从每个方面进行改进,同时还需要兼顾成本和进度。
  图3-2  质量铁三角
  一个软件企业要想良性发展,必须关注组织、流程和技术三者之间的关系。组织是流程成功实施的保障,好的组织结构能够有效地促进流程的实施。流程对于产品的成功有着关键的作用,一个符合组织特点和产品特点的流程能够极大地提高产品开发的效率和产品质量;反之则会拖延产品开发进度,并且质量也无法得到保证。对于企业来说,人是最宝贵的财富,他们是技术的载体。技术发展的方向应该与现在的开发流程和规范相结合,这样有利于专业技能的提高。
  流程、技术、组织三者共同决定软件质量。
  1.流程
  从一个软件企业的长远发展来看,如果要提高产品的质量,首先应当从流程抓起,规范软件产品的开发过程。这是一个软件企业从小作坊的生产方式向集成化、规范化的大公司迈进的必经之路,也是从根本上解决质量问题、提高工作效率的一个关键手段。
  什么是流程?流程(flow)是一个或一系列有规律的行动,这些行动以确定的方式发生或执行,促使特定结果的出现。
  软件产品的开发同其他产品(如汽车)的生产有着共同的特性,即需要按一定的过程来进行生产。在工业界,流水线生产方式是一种高效的且能够比较稳定地保证产品质量的方式。通过这种方式,不同的人员被安排在流程的不同位置,最终为一个目标共同努力,这样可以防止人员工作间的内耗,极大地提高工作效率。另外,由于对应过程来源于成功的实例,因此其最终的产品质量能够满足过程所设定的水平。
  下面以灌装可乐为例说明流程。
  ●输入:散装可乐、瓶子、盖子、标签。
  ●活动:放瓶、灌装、贴标签、封瓶盖。
  ●输出:成品可乐。
  软件工程在软件的发展过程中采用了流程并把它应用到了软件开发中,这就形成了软件开发流程。
  无论我们做哪件事情,都有一个循序渐进的过程,从计划、策略到实现。软件开发流程就是按照这种思维来定义开发过程的,它根据不同产品的特点和以往的成功经验,定义了从需求到最终产品交付的一整套流程。流程告诉我们该怎么一步一步去实现产品,可能会有哪些风险,如何避免风险等。由于流程源于成功的经验,因此按照流程进行开发可以使我们少走弯路,并有效地提高产品质量,提高用户的满意度。
  流程的要素如下。
  ●角色(role):为了达到某目的而参与的一些人,这些人在过程中承担着相同的任务和职责。
  ●职责(responsibility):角色在过程中所承担的相关责任、应该完成的任务、应该获得的权限。
  ●入口准则(entry criteria):开始某项活动必须满足的条件或者环境。
  ●输入(input):开展某些活动时所参考的资料或者所需要加工的原材料。
  ●输出(output):完成某些活动后可以提交的工件或产出。
  ●出口准则(exit criteria):退出或者结束某些活动时所必需满足的条件或者环境。
  ●工具(tool):开展活动所需要使用的工具。
  ●方法(method):开展活动所使用到的方法。
  ●培训(training):开展活动所需要的外界的或者第三方的支持。
  ●模板(template):开展活动所使用到的规范样本。
  ●度量(measurement):开展活动所能提供的度量指标。
  ●检查表(check list):QA人员用来检查的依据。
  例如,按组成要素分析系统测试(System Testing,ST)过程。
  ●ST:制订ST计划→设计ST方案→编写ST用例→ST执行。
  ●角色:测试经理、高级软件测试工程师、软件测试工程师、初级软件测试工程师。
  ●输出:测试计划文档、测试方案文档、测试用例文档、测试报告。
  ●度量:设计用例数/(人?时)、覆盖率。
  流程的好处如下。
  (1)使得不可见的软件开发过程变得可见并可控。
  (2)流程驱动每一个研发人员的活动,减少了内耗,提高了效率。
  缺陷流程如下。
  测试人员初始化缺陷报告→测试经理审核→开发经理分发→软件开发工程师定位和修改→软件测试工程师回归→软件测试工程师关闭。
  流程和成功不是等价的。如果没有流程,则成功不可能得到保证,但有了流程并不意味着肯定能够成功,这恐怕是很多迷信于流程的人所不能接受的。但这的确是一个事实。记得有一个做了将近30多年的需求分析专家说过:“即使是一个已经达到CMM4级的公司,也完全有可能做不好需求分析。”为什么?技术是成功的另外一个必要条件。就好比现在你要从上海到北京去,流程给你指出了最短的路径,技术给你提供最快的交通工具(飞机),两者的结合就是完美的。
  2.技术
  技术指的是什么?
  技术的承载者是人,包含以下方面。
  ●现有员工所承载的技术能力。例如,A公司要求应聘人员是博士、硕士毕业生,B公司要求应聘人员是大专、中专毕业生,显然,A公司要求的技术能力要高。
  ●公司发展过程中积累下来的技术能力,如专利、案例、平台、框架等。
  从类型上,技术分为开发技术、测试技术和结构工艺技术。
  ●开发技术,如分析技术、设计技术、编码技术等。在国内一个普遍的非正常现象就是开发人员觉得只有编程能力才是玩转计算机的真正技能。就好像要盖一套房子,其他都不重要,只要砖瓦匠有高超的技能就行了。尽管这个比喻会打击很多程序员的自尊心,但这的确是一个事实。我们缺少系统级的工程师,在分析和设计方面的工作做得很不扎实。
  ●测试技术。对于软件测试来说,不仅需要掌握多方面的技术,如软件测试的基础知识、测试分析技术、测试用例设计技术、测试执行技术、测试工具的使用技术等,还需要了解计算机及软件的基础知识,如编程语言C/Java、数据结构、操作系统数据库、网络基础知识等。
  ●结构工艺技术,如MP3、手机的外观设计、软件界面等,往往能创造额外的价值。
  技术与流程的关系如下。
  ●只有技术,没有规范的流程,无法进行现代化的软件研发。
  ●只有好的流程,没有好的技术支撑,同样无法生产出高质量的软件产品。
  3.组织
  组织对产品质量不产生直接影响,它通过技术和流程这两个因素来间接影响质量。
  组织对技术的影响如下。
  ●能确保具备相应技术能力的人去从事相应的技术活动。
  ●有利于技术的积累,如专利的申请、保护,建立案例库等。
  组织对流程的影响如下。
  ●组织必须为流程的执行提高强有力的保证,流程=规章制度+约束条件。
  ●如果流程没有执行力,遇到阻碍,需要组织强有力的推行。

查看《软件测试核心技术 从理论到实践》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号