软件测试与软件质量
软件测试的现状与发展
- 处于发展阶段,目前还是以手工测试为主
- 国内外软件企业越来越重视软件测试
- 软件测试行业发展的原因
- 自动测试工具的出现提高了测试的效率
- 测试是验证软件的正确性
- 测试就是发现软件中的缺陷BUG
测试人员必备素质
- 责任心
- 沟通能力
- 团队合 作精神
- 耐心、细心、 信心
- 时刻保持怀 疑的态度, 并且有缺陷 预防意识
- 具备一 定的编 程经验
软件缺陷
缺陷的识别
- 不符合设计要求
- 不满足用户确定需求
产生缺陷的原因
- 人员之间的沟通交流不够,交流 上有误解或者根本不进行交流
- 文档不完善
- 需求不断的变化
- 参与人员的过度自信
- 程序设计本身有错误
- 工期短,任务重,时间压力大
- 软件复杂性
- 软件开发工具或系统软硬件自身含 有缺陷
判断发现的问题是否是缺陷的方法
- 通过参考文档来确 认缺陷
- 通过了解软件产品的行业背景 (或参考同类典型软件)来发 现缺陷
- 通过沟通来确认 和识别缺陷
有效记录缺陷
- 保证重现缺陷
- 分析故障——使用最少步骤复现故障
- 包含所有重现缺陷的必要步骤
- 方便阅读
- 尽量简单——一个缺陷一个 告
- 注意自己的语气
- 值得注意的经验
缺陷 告的用途
- 记录缺陷
- 缺陷分类
- 缺陷跟踪
为什么要尽早的 告缺陷h3>
- 因为开发刚写完程序,对该程序要挺熟悉,改的比较快,可以节约成本
是不是所有的缺陷都会被修复h3>
- 理论上是所有缺陷都需要修复,但是实际上由于技术、时间等问题,并不是所有缺陷都会被修复
缺陷分类
- 按问题引出不同
- 按功能(模块)
- 按缺陷的严重程度(影响进度的问题、死机、功能问题、界面问题、建议)
- 按修复缺陷的优先级(应立即修复的问题、在产品发布之前必须修复的问题、如果时间允许应该修复的问题、可以在发布版本中存在的问题)
告的分类
-
按缺陷所处状态分类
待确认的
新提交的
已分配的
问题未解决的
待返测的
已关闭的
-
按处理意见分类
已解决的
不是问题
无法修复
延迟解决
重复bug
无法复现
处理缺陷
- 注意缺陷 告的处理成本
- 修改缺陷要量力而行
- 关注被推迟修改的缺陷
- 如果决定据理力争就一定要赢
软件质量
经典的“软件质量”定义
- 软件质量特性的总和,软件满足规定或潜在用户需求的能力。 简单的说,软件质量就是客户的满意度。
软件质量的组成部分
- 软件产品的质量,即满足使用要求的程度(软件质量特性)
- 软件开发过程的质量,即能否满足开发所带来的成本、时间和风险等要求
软件质量与软件过程的关系
- 软件质量:软件产品的特性可以满足用户的功能、性能需求的能力。
- 软件过程:软件生命周期中的活动,一般包括软件需求分析、软件设计、软件编码、 软件测试、交付、安装和软件维护。
- 过程决定质量,软件过程决定软件质量,软件质量是在软件开发过程中逐渐建立起来 的
- 软件过程的优劣决定了软件质量的高低,好的过程是高效高质量的前提。人员和过程 是决定软件质量的关键因素,高质量的人员和好的过程应该得到好的产品。
软件测试与软件过程的关系
- 在软件过程中注意把握测试的对象
- 软件测试在软件生存周期中的位置
软件测试在软件生存周期中占有非常重要的位置,是对软件规格说明、设计和编码 的最后终审。
软件测试与软件质量的关系
- 软件系统的开发包括一系列生产活动,其中由人带来的错误因素非常多。错误可能出 现在程序的最初阶段 ,其次目标可能是错误的或描述不完整,也可能在后期的设计和 开发阶段,因为人们不能完好无缺地工作和交流,软件开发过程中必须伴有质量保证 活动。
- 软件测试是软件质量保证的重要手段,是规约、设计和编码的最终检查
什么是保证软件质量的安全
- 只有坚持不懈的改进过程中的问题才是提高软件产品质量的根本出路,但是 注意过程并不意味着忽视技术。软件质量不是依靠软件测试来保证的,软件质 量需要靠不断的提高技术水平和改进软件开发过程来保证,正如牛奶的生产, 如果把所有对质量的期望都压在对最后一道工序的质检上,那将是一个什么样 的结果。
正确认识软件测试
- 软件的质量不是靠测出来的
- 软件测试真的比开发容易么
测试人员发现缺陷是测试的初步,还要分析定位缺陷;而且测试人员需要发现潜在的 难以被发现的缺陷
测试人员需要开发测试工具和自动测试脚本
测试人员必须精通整个业务
- 软件测试需要开发与测试人员的共同努力
破坏性、建设性
考虑角度不同
软件质量特性
- 功能性40%:软件在指定条件下使用时,满足用户明确和隐含需求的功能的能力
适合性:软件是否提供了相应的功能
准确性:软件提供的功能是否正确(用户需要的)
互操作性:产品与产品之间交互数据的能力,例如word对其他文档的支持能力
安全性:允许经过授权的用户和系统能够正常的访问相应的数据和信息,禁止未授权的用户 访问等
功能性的依从性:软件遵循与功能性相关的标准、约定或法规以及类似规定的能力。这些标 准要考虑国际标准、国家标准、行业标准、企业内部规范等
- 可靠性:软件在指定条件下使用时,维持规定的性能级别的能力。平均故障修复时间、平均无故障时间
成熟性:软件产品为避免软件内部的错误扩散而导至系统失效的能力(主要是对内错误的隔 离),异常等的处理
容错性:软件防止外部接口错误扩散而导致系统失效的能力(主要是对外错误的隔离)
易恢复性:系统失效后,重新恢复原有的功能和性能的能力。
可靠性的依从性:软件遵循与可靠性相关的标准、约定或法规的能力
- 易用性15%:在指定使用条件下,产品被理解、 学习、使用和吸引用户的能力
易理解性:软件交互给用户的信息时,要清晰,准确,且要易懂,使用户能够快速理解软件。
易学性:软件使用户能学习其应用的能力。
易操作性:软件产品使用户能易于操作和控制它的能力。
吸引性:软件吸引用户的能力
易用性的依从性:软件遵循与易用性相关的标准、约定、风格指南或法规的能力
- 效率:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力
时间特性:在规定条件下,软件执行其功能时,提供适当的响应和处理时间以及吞吐率的能 力,即完成用户的某个功能需要的响应时间
资源利用性:在规定条件下,软件执行其功能时,使用合适的资源数量和类别的能力。如: CPU、内存、磁盘、IO、 络带宽等
效率依从性:软件遵循与效率相关的标准或约定的能力
- 可维护性:软件可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功能 规格说明变化的适应
易分析性:软件诊断软件中的缺陷、失效原因或识别待修改部分的能力
易改变性:软件产品使指定的修改可以被实现的能力
稳定性:软件避免由于软件修改而造成意外结果的能力
易测试性:使已修改软件能被确认的能力
维护性的依从性:软件遵循与维护性相关的标准或约定的能力
- 可移植性:软件从一种环境迁移到另一种环境的能力
适应性:适应不同平台
易安装性:在指定环境中被安装的能力
共存性:软件在公共环境中同与其分享公共资源的其他独立软件共存的能力
易替换性: 软件产品在同样的环境下,替代另一个相同用途的软件产品的能力
可移植性的依从性:软件遵循与可移植性相关的标准或约定的能力
质量管理体系
- ISO:International Organzation for Standardzation,国际标准化组织,其宗旨是在 世界范围内促进标准化工作的发展,以利于国际物资交流和互助,并扩大知识、科学、技 术和经济方面的合作
- CMM:Capability Maturity Model,能力成熟度模型,是美国卡耐基梅隆大学,软件 工程研究所(SEI)提出的一种用于评价软件承包商能力并帮助改善软件质量的模型。自 1987年开始实施认证,现已成为软件业权威的评估认证体系。CMM的精髓在于:过程决 定质量。
- CMM的五个等级
初始级(等级1):软件过程的特点是无秩序的,偶尔甚至是混乱的。几乎没有什么过程是经 过定义的,成功依赖于个人的努力。
可重复级(等级2):已建立基本的项目管理过程去跟踪成本、进度和功能性。必要的过程纪 律已经就位,使具有类似应用的项目,能重复以前的成功。
已定义级(等级3):管理活动和工程活动两方面的软件过程均已文档化、标准化、并集成到 组织的标准软件过程。全部项目均采用供开发和维护软件的组织标准软件过程中的一个经批准 的剪裁本
已管理级(等级4):已采集详细的有关软件过程和产品质量的度量。无论软件过程还是产品 均得到定量了解和控制。
优化级(等级5):利用来自过程和来自新思想、新技术先导性试验的定量反馈信息、使持续 过程改进成为可能。
- 理论上是所有缺陷都需要修复,但是实际上由于技术、时间等问题,并不是所有缺陷都会被修复
缺陷分类
- 按问题引出不同
- 按功能(模块)
- 按缺陷的严重程度(影响进度的问题、死机、功能问题、界面问题、建议)
- 按修复缺陷的优先级(应立即修复的问题、在产品发布之前必须修复的问题、如果时间允许应该修复的问题、可以在发布版本中存在的问题)
告的分类
-
按缺陷所处状态分类
待确认的
新提交的
已分配的
问题未解决的
待返测的
已关闭的 -
按处理意见分类
已解决的
不是问题
无法修复
延迟解决
重复bug
无法复现
处理缺陷
- 注意缺陷 告的处理成本
- 修改缺陷要量力而行
- 关注被推迟修改的缺陷
- 如果决定据理力争就一定要赢
软件质量
经典的“软件质量”定义
- 软件质量特性的总和,软件满足规定或潜在用户需求的能力。 简单的说,软件质量就是客户的满意度。
软件质量的组成部分
- 软件产品的质量,即满足使用要求的程度(软件质量特性)
- 软件开发过程的质量,即能否满足开发所带来的成本、时间和风险等要求
软件质量与软件过程的关系
- 软件质量:软件产品的特性可以满足用户的功能、性能需求的能力。
- 软件过程:软件生命周期中的活动,一般包括软件需求分析、软件设计、软件编码、 软件测试、交付、安装和软件维护。
- 过程决定质量,软件过程决定软件质量,软件质量是在软件开发过程中逐渐建立起来 的
- 软件过程的优劣决定了软件质量的高低,好的过程是高效高质量的前提。人员和过程 是决定软件质量的关键因素,高质量的人员和好的过程应该得到好的产品。
软件测试与软件过程的关系
- 在软件过程中注意把握测试的对象
- 软件测试在软件生存周期中的位置
软件测试在软件生存周期中占有非常重要的位置,是对软件规格说明、设计和编码 的最后终审。
软件测试与软件质量的关系
- 软件系统的开发包括一系列生产活动,其中由人带来的错误因素非常多。错误可能出 现在程序的最初阶段 ,其次目标可能是错误的或描述不完整,也可能在后期的设计和 开发阶段,因为人们不能完好无缺地工作和交流,软件开发过程中必须伴有质量保证 活动。
- 软件测试是软件质量保证的重要手段,是规约、设计和编码的最终检查
什么是保证软件质量的安全
- 只有坚持不懈的改进过程中的问题才是提高软件产品质量的根本出路,但是 注意过程并不意味着忽视技术。软件质量不是依靠软件测试来保证的,软件质 量需要靠不断的提高技术水平和改进软件开发过程来保证,正如牛奶的生产, 如果把所有对质量的期望都压在对最后一道工序的质检上,那将是一个什么样 的结果。
正确认识软件测试
- 软件的质量不是靠测出来的
- 软件测试真的比开发容易么
测试人员发现缺陷是测试的初步,还要分析定位缺陷;而且测试人员需要发现潜在的 难以被发现的缺陷
测试人员需要开发测试工具和自动测试脚本
测试人员必须精通整个业务 - 软件测试需要开发与测试人员的共同努力
破坏性、建设性
考虑角度不同
软件质量特性
- 功能性40%:软件在指定条件下使用时,满足用户明确和隐含需求的功能的能力
适合性:软件是否提供了相应的功能
准确性:软件提供的功能是否正确(用户需要的)
互操作性:产品与产品之间交互数据的能力,例如word对其他文档的支持能力
安全性:允许经过授权的用户和系统能够正常的访问相应的数据和信息,禁止未授权的用户 访问等
功能性的依从性:软件遵循与功能性相关的标准、约定或法规以及类似规定的能力。这些标 准要考虑国际标准、国家标准、行业标准、企业内部规范等
- 可靠性:软件在指定条件下使用时,维持规定的性能级别的能力。平均故障修复时间、平均无故障时间
成熟性:软件产品为避免软件内部的错误扩散而导至系统失效的能力(主要是对内错误的隔 离),异常等的处理
容错性:软件防止外部接口错误扩散而导致系统失效的能力(主要是对外错误的隔离)
易恢复性:系统失效后,重新恢复原有的功能和性能的能力。
可靠性的依从性:软件遵循与可靠性相关的标准、约定或法规的能力
- 易用性15%:在指定使用条件下,产品被理解、 学习、使用和吸引用户的能力
易理解性:软件交互给用户的信息时,要清晰,准确,且要易懂,使用户能够快速理解软件。
易学性:软件使用户能学习其应用的能力。
易操作性:软件产品使用户能易于操作和控制它的能力。
吸引性:软件吸引用户的能力
易用性的依从性:软件遵循与易用性相关的标准、约定、风格指南或法规的能力
- 效率:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力
时间特性:在规定条件下,软件执行其功能时,提供适当的响应和处理时间以及吞吐率的能 力,即完成用户的某个功能需要的响应时间
资源利用性:在规定条件下,软件执行其功能时,使用合适的资源数量和类别的能力。如: CPU、内存、磁盘、IO、 络带宽等
效率依从性:软件遵循与效率相关的标准或约定的能力
- 可维护性:软件可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功能 规格说明变化的适应
易分析性:软件诊断软件中的缺陷、失效原因或识别待修改部分的能力
易改变性:软件产品使指定的修改可以被实现的能力
稳定性:软件避免由于软件修改而造成意外结果的能力
易测试性:使已修改软件能被确认的能力
维护性的依从性:软件遵循与维护性相关的标准或约定的能力
- 可移植性:软件从一种环境迁移到另一种环境的能力
适应性:适应不同平台
易安装性:在指定环境中被安装的能力
共存性:软件在公共环境中同与其分享公共资源的其他独立软件共存的能力
易替换性: 软件产品在同样的环境下,替代另一个相同用途的软件产品的能力
可移植性的依从性:软件遵循与可移植性相关的标准或约定的能力
质量管理体系
- ISO:International Organzation for Standardzation,国际标准化组织,其宗旨是在 世界范围内促进标准化工作的发展,以利于国际物资交流和互助,并扩大知识、科学、技 术和经济方面的合作
- CMM:Capability Maturity Model,能力成熟度模型,是美国卡耐基梅隆大学,软件 工程研究所(SEI)提出的一种用于评价软件承包商能力并帮助改善软件质量的模型。自 1987年开始实施认证,现已成为软件业权威的评估认证体系。CMM的精髓在于:过程决 定质量。
- CMM的五个等级
初始级(等级1):软件过程的特点是无秩序的,偶尔甚至是混乱的。几乎没有什么过程是经 过定义的,成功依赖于个人的努力。
可重复级(等级2):已建立基本的项目管理过程去跟踪成本、进度和功能性。必要的过程纪 律已经就位,使具有类似应用的项目,能重复以前的成功。
已定义级(等级3):管理活动和工程活动两方面的软件过程均已文档化、标准化、并集成到 组织的标准软件过程。全部项目均采用供开发和维护软件的组织标准软件过程中的一个经批准 的剪裁本
已管理级(等级4):已采集详细的有关软件过程和产品质量的度量。无论软件过程还是产品 均得到定量了解和控制。
优化级(等级5):利用来自过程和来自新思想、新技术先导性试验的定量反馈信息、使持续 过程改进成为可能。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!