文章目录
- 软件质量与测试
- 3.1 软件质量问题的原因
- 3.2 对软件质量特性的理解
- 3.3 基于软件质量特性的测试
- 3.4 软件能力成熟度模型(CMM)
软件质量与测试
3.1 软件质量问题的原因
软件质量问题的原因有以下几种:
- 软件本身的特点和目前普遍采用的开发模式使得隐藏在软件产品内部的质量缺陷不可能完全避免。
- 技术上解决软件质量问题有局限性。
- 软件产品的质量问题时有暴露,有的企业提供错误的用户手册,许多企业开发的程序存在可读性差且产品的用户界面不统一、产品的测试不充分等问题。
- 软件开发工具和管理工具的提供与使用不够充分,致使大量的开发工作和管理工作停留在手工劳动阶段,不仅效率低而且通常不能保证质量。
- 其他原因,如:项目组交流不够、交流上有误解或者根本不进行交流;程序设计错误或需求有变化;时间压力;代码文档贫乏或者较差的文档使得代码维护和修改变得异常艰辛,其结果是带来许多错误。
3.2 对软件质量特性的理解
软件质量是软件产品满足用户使用要求的程度。对于软件质量的衡量,就是高质量的软件系统能够准时交付给用户,所耗费的成本不超过预算,且能够正常地运行,即该软件必须尽可能地没有BUG。
软件质量好坏程度的基础是软件需求,与需求不符的软件就不是高质量的软件。因此,完成的成本和时间都应控制在计划范围内。另外,软件质量的高低也体现在软件产品的可靠性和可维护性上。
软件质量特性:
(1)功能性:当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。
- 适合性:软件产品为指定的任务和用户目标提供一组合适的功能的能力。
- 准确性:软件产品提供具有所需精度的正确或相符的结果或效果的能力。
- 互操作性:软件产品与一个或更多的规定系统进行交互的能力。
- 安全保密性:软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。
- 功能的依从性:软件产品遵循与功能性相关的标准、约定或法规以及内似规定的能力。
(2)可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力。
- 成熟性:软件产品为避免由软件中故障而导致失效的能力。
- 容错性:在软件出现故障或者违反其指定接口的情况下,软件产品维持稳定的性能级别的能力。
- 易恢复性:在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。
- 可靠性的依从性:软件产品遵循与可靠性相关的标准、约定或法规的能力。
(3)易用性:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。
- 易理解性:软件产品使用户能理解软件是否合适以及如何能够将软件用于特定的任务和使用条件的能力。
- 易学性:软件产品使用户能学习其应用的能力。
- 易操作性:软件产品使用户能操作和控制它的能力。
- 吸引性:软件产品吸引用户的能力。
- 易用性的依从性:软件产品遵循与易用性相关的标准、约定、风格指南或法规的能力。
(4)效率:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。
- 时间特性:在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。
- 资源利用性:在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力。
- 效率依从性:软件产品遵循与效率相关的标准或约定的能力
(5)维护性:软件产品可被修改的能力。修改可能包括纠正、改进、或软件对环境、需求和功能规格说明变化的适应。
- 易分析性:软件产品诊断软件中的缺陷或失效原因或识别带修改部分的能力。
- 易改变性:软件产品使指定的修改可以被实现的能力。
- 稳定性:软件产品避免由于软件修改而造成意外结果的能力。
- 易测试性:软件产品时已修改软件能被确认的能力。
- 维护性的依从性:软件产品遵循与维护性相关的标准或约定的能力。
(6)可移植性:软件产品从一种环境迁移到另外一种环境的能力。
- 适应性:软件产品无需采用额外的活动或手段就可适应不同指定环境的能力。
- 易安装性:软件产品在指定环境中被安装的能力。
- 共存性:软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力。
- 易替换性:软件产品在同样环境下,替代另一个相同用途的指定软件产品的能力。
- 可移植性的依从性:软件产品遵循与可移植性相关的标准或约定的能力。
软件质量特性间的影响关系:
3.3 基于软件质量特性的测试
- 功能性测试
功能性测试是软件测试工作的最主要部分,一般包括以下几方面:
-
安装。如果安装能由用户来完成,则按照安装手册中的信息应能成功安装产品描述中指出的每种所要求的系统对于程序的安装应是充分的。安装之后程序能否运行应是可鉴别的。
-
功能表现。需求规格或用户文档中所提到的所有功能应是可执行的。程序应按照用户文档中的给定形式,在规定的边界值范围内使用相应的设施、性质和数据执行其功能。
-
正确性。程序和数据应与产品描述及用户文档中的全部说明相对应。
-
一致性。程序和数据本身不能自相矛盾,并且同产品描述和用户文档不能相互矛盾,每个术语应在各处都具有相同的含义。
- 可靠性测试
软件可靠性测试是指运用测试技术和统计技术对被测软件执行测试和评价,并采集系统运行期间的软件失效数据进行处理,最终评估软件可靠性的过程。
软件可靠性测试由可靠性目标的确定,运行剖面的开发,测试的计划与执行,测试结果的分析与反馈四个主要的活动组成。
- 易用性测试
易用性是交互适应性,实用性和有效性的综合体现。当软件表现为难以理解不易使用,运行缓慢,或者从测试人员的角度看,最终用户将会指责软件不正确。软件本身达不到精品软件的要求是就说明软件软件的易用性不好。
易用性测试对象主要为用户界面,包括命令行,菜单,窗口,功能键及帮助等。它有七个要素:符合标准和规范、直观性、一致性、灵活性、舒适性、正确性、实用性。
-
符合标准和规范。被认为是最重要的用户界面因素对于操作系统平台尤其自己的标准和规范,如微软的Windows系统。那么对于在某个平台上运行的软件,就需要把该平台的标准和规范作为UI设计说明的补充内容。
-
直观性。当测试用户界面时,测试人员要考虑以下几个问题,以及如何衡量软件的直观程度。
(1)用户界面是否j洁净、不唐突,不拥挤。UI不应为用户制造障碍,所需功能或者期待的响应应该明显,并在其出现的地方。
(2)UI的组织和布局是否合理;是否允许用户轻松的从一个功能转到另一个功能;下一步做什么是否明显;任何时刻是否都可以决定放弃或者退出,退回输入是否得到承认菜单或者窗口是否深藏不露。
(3)是否有多余的功能;软件整体或布局是否太紧凑,是否有太多特性把工作复杂化;是否感到信息太庞杂。
(4)如果其他所有努力均失败,帮助系统是否有用。
- 一致性。测试的软件本身以及与其他软件的一致性是一个关键属性。由于用户有固定的使用习惯,因此希望能够将一个程序的操作方式带到另一个程序中。
快捷键和菜单选项。快捷键一般具有通用性。
术语和命令。整个软件是否使用同样的术语;特性命令是否一致。
用户级别。软件同一UI风格是否对应同一用户级别;是否有UI风格与用户级别不一致的情况出现。
按钮的位置和等价的按键。例如确定和取消的按钮的相对位置。
- 灵活性。由于用户对软件做各种操作,所以软件需要有较大的灵活性。
软件UI是否灵活可以参考以下几点:
状态跳转。
状态终止和跳过。
数据输入和输出。
-
舒适性。
测试人员在测试时要根据实际情况对软件是否具有舒适性进行鉴别。 -
正确性
市场定位偏差。软件有没有多余或者遗漏的功能,或者某些功能是否执行了与市场宣传材料不符的操作。
语言描述和组织。程序员的语言描述和组织往往会使用户产生歧义或不解,或者令用户难以接受。
多媒体缺陷。UI设计的图标,图像,声音和视频设计不合理或不正确。
与UI说明不一致,即没有实现所见即所得。
- 实用性。主要指具体UI特性是否使用在测试过程中检查每一功能点的UI是否具有实用价值,是否有助于用户执行软件相应的功能,如果不能,则被认为使用性不好或者有使用方面的缺陷。
- 兼容性测试
兼容性测试主要是测试被测软件是否能够与其他软件正确的协同操作。
软件兼容性的测试目的就是通过检查软件之间能否正确的交互和共享信息,并找出软件不能正常交互执行的缺陷。最终验证用户期望的需求能够正确实现。
软件兼容性测试要考虑以下几个问题:
- 被测软件要求与何种其他系统平台支撑软件和应用软件保持兼容?如果软件本身要作为其他软件的平台,那么需要在平台上运行什么类型的程序?
- 应该遵循何种软件之间交互的标准或规范?
- 软件使用何种数据与其他平台和软件交互和共享信息?
兼容性涉及向后兼容和向前兼容,向后兼容是指可以使用版本的以前版本,向前兼容是指可以使用软件的未来版本。
3.4 软件能力成熟度模型(CMM)
CMM软件成熟度等级: