软件测试概论
- 格式:docx
- 大小:55.22 KB
- 文档页数:33
第一章:软件测试概述①软件缺陷定义:(1)软件未达到产品说明书中已经标明的功能;(2)软件出现了产品说明书中指明不会出现的错误;(3)软件未达到产品说明书中虽未指出但应当达到的目标;(4)软件功能超出了产品说明书中指明的范围;(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。
②软件缺陷的特征:•“看不到”——软件的特殊性决定了缺陷不易看到•“看到但是抓不到”——发现了缺陷,但不易找到问题发生的原因所在③软件缺陷产生原因:(1)软件产品说明书(需求)——56%(不专业—专业~~信息传递)(2)设计——27%(设计不规范)(3)编写代码——7%(4)其他——10%(软、硬件设备之间的配备问题)④软件测试发展历程:早期―→测试1957年―→为了确信自己的产品20世纪70年代―→Glenford Myers 《软件测试艺术》——“测试是为发现错误而执行一个程序或系统的过程”20世纪80年代早期―→软件质量、Bill Hetzel 《软件测试完全指南》——“测试是以评价一个程序或者系统属性为目标的任何一种活动。
测试是对软件质量的度量”20世纪90年代―→测试工具盛行2002年―→Rick和Stefan《系统的软件测试》——“测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个生命周期过程”⑤今天的软件测试面临的挑战:•软件在国防现代化、社会信息化和国民经济信息化中的作用越来越重要,由此产生的测试任务越来越繁重•软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题•面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步•对于分布式系统整体性能还不能进行很好的测试•对于实时系统来说,缺乏有效的测试手段•随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性难题⑥软件开发与软件测试的关系:•测试与开发各阶段的关系项目规划阶段,需求分析阶段,详细设计和概要设计阶段,编码阶段,测试阶段(软件开发生命周期)•测试与开发的并行性⑦软件测试的发展趋势:•测试工作将进一步前移。
大学软件测试知识点总结软件测试是软件工程中非常重要的一个环节,它不仅可以帮助开发人员发现和修复软件中的缺陷,还可以提高软件质量,保证软件的稳定性和可靠性。
在大学阶段,学习软件测试知识是非常重要的,下面将从基本概念、测试方法、测试工具、自动化测试等方面进行总结。
一、基本概念1. 软件测试的定义软件测试是指在软件开发过程中,通过给定的测试用例来执行软件,并比较实际输出与预期输出,以评估软件的质量和性能的过程。
2. 测试的目标软件测试的主要目标是发现软件中的缺陷,保证软件的质量,满足用户需求,提高软件的稳定性和可靠性。
3. 测试的原则(1)全面性原则:软件测试应该覆盖所有可能的输入和场景。
(2)有效性原则:软件测试需要通过合理的方法来发现软件中的缺陷。
(3)经济性原则:软件测试需要在成本可控的范围内进行,并且要取得相对较高的测试效果。
4. 测试的阶段软件测试可以分为单元测试、集成测试、系统测试和验收测试等几个阶段,每个阶段都有各自的特点和目标。
二、测试方法1. 黑盒测试黑盒测试是基于软件的功能规格和需求来设计测试用例的方法,测试人员不需要了解软件内部的结构和实现细节,主要关注软件的输入和输出。
2. 白盒测试白盒测试是基于软件内部结构和代码来设计测试用例的方法,测试人员需要了解软件的内部逻辑和算法,主要关注软件的逻辑覆盖和代码覆盖。
3. 灰盒测试灰盒测试是介于黑盒测试和白盒测试之间的一种测试方法,既关注软件的功能和需求,又关注软件的内部结构和代码。
4. 功能测试功能测试是测试软件的功能是否符合用户需求和规格说明书的一种测试方法,主要针对软件的界面操作和功能的正确性。
5. 性能测试性能测试是测试软件在不同负载条件下的性能指标,如响应时间、吞吐量、并发用户量等,主要用于评估软件的性能和稳定性。
6. 安全测试安全测试是测试软件的安全性和可靠性的一种测试方法,主要用于评估软件在面对各种攻击和恶意行为时的表现。
7. 自动化测试自动化测试是使用自动化工具和脚本来执行测试用例和生成测试报告的一种测试方法,可以提高测试效率和质量。
测试技术概述篇一:软件测试技术概述软件测试是指对计算机软件的运行效果和正确性等方面进行检察和验证的过程,是保证软件质量的重要手段之一。
软件测试的目的是找出软件中的问题和缺陷,以便优化开发、测试和运维流程,从而提高软件的可靠性和稳定性。
软件测试技术是指测试人员通过各种方法和手段进行测试的过程中所使用的一些具体技术和方法。
常用的软件测试技术包括黑盒测试、白盒测试、灰盒测试、自动化测试、性能测试、安全测试、负载测试等。
这些技术在测试不同的软件系统时可以有所差异,但是它们都是为了更好地检测软件中的缺陷和问题。
在软件测试中,测试人员需要根据具体的测试需求选择合适的测试技术和方法。
例如,黑盒测试通常用于测试用户界面和功能,白盒测试则用于测试程序的内部实现,性能测试用于检测系统在不同负载条件下的效果和响应速度等。
对于不同的测试需求,测试人员可以采用适宜的测试技术和方法,以提高软件测试效率和准确率。
随着软件开发技术的不断发展,各种新的软件测试技术和方法也不断涌现。
例如,基于机器学习的自动化测试技术、基于云计算的负载测试技术、基于人工智能的安全测试技术等,这些新的技术和方法可以更好地适应现代软件开发的需要,提高测试的准确率和效率。
总之,软件测试技术是软件测试的重要组成部分,对于保证软件质量和提高用户体验有着重要的作用。
测试人员需要充分了解不同的测试技术和方法,根据具体的测试需求选择适宜的测试技术和方法,以提高测试的准确性和效率。
篇二:网络安全测试技术概述随着互联网的普及,网络安全问题成为日益严重的问题,如何及时发现和解决网络安全问题是每个组织和个人必须面对的挑战。
而网络安全测试技术是保障网络安全的关键方法之一,它可以检测网络中的漏洞和风险,并及时进行修复和完善。
网络安全测试技术包括主机安全测试、网络安全测试、应用程序安全测试等。
其中,主机安全测试主要针对主机或服务器进行安全检测,包括操作系统、数据库、应用服务等方面;网络安全测试主要针对网络架构、设备和网络协议进行安全检测;应用程序安全测试主要针对 Web 应用程序、移动应用程序等方面进行安全检测,以发现应用程序中潜在的漏洞和风险。
软件测试各章知识点总结第一章:软件测试概述软件测试是指为了发现软件中的错误和问题,评估软件质量,确保软件功能正常的过程。
软件测试的目的是验证软件是否符合用户的需求和期望,以及确保软件的质量达到一定的标准。
软件测试在整个软件开发过程中起着非常重要的作用,它能够帮助开发团队及时发现和修复问题,提高软件的稳定性和可靠性。
软件测试的基本原则包括全面性、系统性、可靠性和性能。
全面性指测试应该覆盖所有可能的情况,包括正常情况和异常情况;系统性指测试应该以系统为单位进行,而不是单个模块或功能;可靠性指测试结果应该是可靠的、准确的;性能指测试应该关注软件的性能表现。
软件测试的方法可以分为静态测试和动态测试。
静态测试是指在软件开发的早期阶段进行的,包括代码审查、设计审查和使用静态分析工具进行分析。
动态测试是指在软件开发的后期阶段进行的,包括单元测试、集成测试、系统测试和验收测试。
软件测试的类型包括功能测试、性能测试、安全测试、兼容性测试、可靠性测试等。
功能测试是验证软件功能是否符合用户需求的测试;性能测试是验证软件在各种条件下的性能表现的测试;安全测试是验证软件的安全性和可靠性的测试;兼容性测试是验证软件在不同平台和环境下的兼容性的测试;可靠性测试是验证软件的稳定性和可靠性的测试。
第二章:软件测试流程软件测试的流程包括测试计划、测试设计、测试执行、测试评估和测试报告。
测试计划是在测试开始之前进行的,包括确定测试目标、测试方法、测试资源和测试进度。
测试设计是在测试执行之前进行的,包括确定测试用例、测试数据和测试环境。
测试执行是在测试设计之后进行的,包括执行测试用例、记录测试结果和发现问题。
测试评估是在测试执行之后进行的,包括评估测试结果、计算测试覆盖率和分析测试效果。
测试报告是在测试评估之后进行的,包括总结测试结果、提出改进建议和撰写测试报告。
软件测试的自动化是指利用自动化测试工具进行软件测试的过程。
自动化测试包括测试脚本的编写、测试数据的准备和测试环境的配置。
计算机系统工程分为硬件和软件两大范畴。
计算机硬件的工程技术在过去的50多年中已经达到了相当成熟的状态。
硬件设计技术和制造技术发展非常迅速,其自动化已经达到相当高的水平,硬件的可靠性已是一种现实的要求,而不在是一种愿望。
而在软件工程技术方面的情况则不同,软件是最难设计、最少可能成功、最容易出错、也最难管理的系统部分。
据报道,在上世纪的最后十年里,计算机软件已成为系统瘫痪的主要原因。
随着以计算机为基础的系统在数量、复杂程度和应用方面的激增,对软件的需要却在不断增加,因此促使供求矛盾日趋激化,这就是人们常说的软件危机。
软件危机的来源主要表现以下几个方面:(1)缺乏软件开发的经验:由于缺乏大型软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。
主观盲目地制定计划,执行起来和实际情况有很大差距,使得经费常常突破预算、工期一拖再拖,软件的投资者和用户对开发工作从不满意发展到不信任。
(2)需求不明确:作为软件设计依据的软件需求,在开发的初期提得不够明确,或者未能做出确切的表达。
开发工作开始后,软件人员又未能和用户及时的交换意见,使得一些问题得不到及时解决而隐藏起来,造成开发后期矛盾的集中暴露。
导致对多个错综复杂的问题既难于分析,又难于解决。
(3)缺少开发规范:开发过程中没有统一遵循的、公认的方法论或开发规范,参加工作的人员之间的配合不够严密,约定不够明确。
加之不重视文字资料,使得开发文档很不完整。
发现了问题,未能从根本上去找原因,只是修修补补。
显然,这样开发出来的软件无法维护。
(4)软件的复杂性:软件的规模一般都比较庞大,大型软件有时会超过1亿行源代码。
加之人们传统上的误区,往往是硬件难以实现的部分改用软件来完成,这使得软件既庞大,复杂性又高,甚至有时人的大脑已无法理解、无法驾驭人类本身所创造出来的复杂逻辑系统,投入使用后往往错误百出。
(5)缺乏有效的测试手段:软件的复杂性和软件测试的复杂性,使得难以研制有效的软件测试工具,导致测试效率不高、自动化程度低,测试花费时间多、测试成本高,这使得软件开发者只要求测试人员对软件做简单的测试,这无法保证软件的质量。
软件测试的基本概念软件测试是软件工程中非常关键的一环节,意思是对软件系统进行检测和验证,以发现其中的错误、缺陷、漏洞等。
测试的主要目标是保证软件系统的质量,以满足用户的需求和期望,同时降低软件开发中的风险和成本。
一、软件测试的基本概念1.测试的定义与分类:测试是一种实现非功能性需求的方式,也是软件质量保证的一个过程。
根据测试执行的对象不同,测试可以分为单元测试、集成测试、系统测试、验收测试等不同的分类。
2.测试用例与测试计划:测试用例是为达到某个特定的测试目标而制定的一组测试步骤,而测试计划则是测试的一个整体组织,包括测试目标、测试资源、测试计划和执行、测试管理和跟踪等。
3.缺陷与缺陷管理:在测试过程中,测试人员发现的问题和错误被称为缺陷,而缺陷管理是针对这些问题的跟踪、管理、解决和报告的过程,以确保软件质量。
二、软件测试的流程在进行软件测试时,可以参考以下流程:1.需求分析:对需求进行深入了解和分析,确保测试人员掌握了需求的核心内容和所有功能点的逻辑。
2.测试计划与策略:编制测试计划及测试策略,包括测试的目标、范围、资源、时间、环境等。
3.测试用例设计:根据需求和功能设计测试用例。
4.测试环境准备:搭建测试环境并配置好测试所需的相关软件、硬件及网络等。
5.测试用例执行:按照测试用例进行测试并记录测试结果。
6.缺陷跟踪:发现问题之后,进行缺陷跟踪分析、确认、解决、验证和报告等。
7.测试报告:汇总所有的测试结果并进行测试报告的撰写。
三、软件测试的方法软件测试的方法有很多种,常见的有如下几种:1.黑盒测试:又叫功能测试,针对软件系统的功能进行测试,不考虑内部实现。
2.白盒测试:又叫结构测试,测试人员需要了解软件系统的内部实现,以进行测试。
3.灰盒测试:结合黑盒和白盒测试的优缺点,进行测试。
4.自动化测试:利用专用的软件工具实现自动执行测试用例,并比较测试结果和预期结果。
5.性能测试:测试软件系统在一定规模和负载下的性能表现和负载能力。
软件测试概述软件测试是软件开发过程中至关重要的一环。
在软件开发过程中,通过对软件系统进行测试,可以发现潜在的问题和错误,保证软件的质量和稳定性。
本文将对软件测试的定义、目的、原则以及常见的测试方法进行概述。
一、软件测试的定义软件测试是指通过运行和评估一个系统的过程,以发现系统是否满足其指定的需求、可接受标准以及用户的期望。
软件测试旨在检测软件系统中的错误、缺陷和风险,并验证软件是否满足预期的功能和性能。
二、软件测试的目的软件测试的目的主要有以下几点:1. 发现和修复软件中的错误和缺陷,确保软件的质量和可靠性。
2. 验证软件是否满足用户需求和预期,保证软件的功能和性能。
3. 提高软件开发过程的效率和可控性,减少开发中的风险和成本。
4. 增加软件的可维护性和可扩展性,便于后期的维护和更新。
三、软件测试的原则在进行软件测试时,应遵循以下原则:1. 全面性:尽可能覆盖所有的功能和路径,以发现潜在的问题和错误。
2. 独立性:测试过程应独立于开发过程,确保测试结果的客观性和准确性。
3. 可重复性:测试用例应具有可重复性,以便在不同环境和条件下进行反复测试。
4. 及早测试:测试应尽早介入软件开发过程,以便及时发现和修复问题。
5. 缺陷追踪:对于发现的问题和错误,应进行跟踪和记录,确保及时处理和解决。
四、常见的软件测试方法根据测试的目标和方法,常见的软件测试方法主要包括以下几种:1. 单元测试:对软件中的最小单元(如函数、模块等)进行独立的测试,以验证其功能的正确性。
2. 集成测试:将各个单元组装为一个整体,测试它们之间的接口和交互是否正常。
3. 系统测试:对整个软件系统进行全面的功能、性能和兼容性测试,以验证系统是否满足用户需求。
4. 验收测试:由用户根据需求和标准进行的测试,以确保软件系统能够满足用户的实际需求。
5. 性能测试:对软件的性能指标进行测试,如响应时间、吞吐量等,以保证系统的性能。
6. 安全测试:测试软件系统的安全性,发现潜在的安全漏洞和风险,保护用户的数据和隐私。
【关键字】考试软件测试概论(TS)考试试题选择题1) 以下关于测试和调试的说法中,正确的是(a )。
(选择一项)a) 测试工作包括发现错误,以及确定错误的原因和确切位置,排除软件中的错误b) 测试就是调试,两者没有什么区别c) 测试是在开发完成后的测试阶段才开始d) 调试的目的是定位和纠正错误2) 以下关于测试的定义中,错误的是(b)。
(选择一项)a) 为找出错误而运行程序或系统的过程b) 一切以评价程序或系统的属性、能力为目的的活动c) 评价程序或系统的过程d) 测试是在用户需求和开发技术之间找区别3) 以下关于测试的目的描述,错误的是(a)。
(选择一项)a) 为了说明程序中没有缺陷b) 在于发现了迄今尚未发现的缺陷c) 揭示潜伏在软件里的缺陷d) 为软件产品的质量测量和评价提供依据4) 通常情况下,软件测试至少要达到下列目标,其中错误的是(d)。
(选择一项)a) 确保产品完成了它所承诺或公布的功能b) 确保产品满足性能和效率的要求c) 确保产品是健壮的、适应用户环境的d) 确保产品的质量达到用户的需求5) 下列软件测试的“行业规则”或者“工作常识”中,描述错误的是(c )。
(选择一项)a) 所有的测试都应追溯到用户需求b) 应该在测试工作真正开始前的较长时间内就进行测试计划c) 测试应从“大规模”开始,逐步转向“小规模”d) 为了达到最佳效果,应该由独立的第三方来构造测试6) 软件工程是开发、运行、维护和修复软件的系统方法。
软件工程具有如下的性质,其中错误的是(a)。
(选择一项)a) 软件工程是一门综合性的交叉学科,它涉及计算机科学、工程科学、管理科学、数学等领域b) 软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案c) 软件工程要用数学科学中的方法和原理进行软件生产的管理d) 软件工程要用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型、说明用户需求的形式化模型等7) 在任何生命周期模型中,一个好的测试都应该具有一些特点,以下描述错误的特点是(c)。
软件测试概论第一章绪论1.1 软件生存期同其它任何事物一样,计算机软件从它的发生、发展到达成熟阶段,以至老化和衰亡,是一个历史发展的过程,这个过程称为软件的生存期(Life Cycle),包括下列六个步骤:(1)计划(Planning):确定软件开发的总目标;给出软件的功能、性能、可靠性以及接口等方面的设想;研究完成该软件任务的可行性,探讨问题解决的方案;对可供开发使用的资源(软件、硬件、人力)、成本、可取得的效益和开发的进度等做出估计;制定完成开发任务的实施计划。
(2)需求分析(Requirement Analysis):由软件人员和用户共同对待开发的软件进行详细的定义和确切的描述,其结果是给出软件需求说明书(SRS:Software Requirement Specification)。
(3)设计(Designing):软件的设计分为两部分。
一是概要设计(Preliminary Design),是指根据软件的需求说明书,软件设计人员应把需求说明书中各项需求转化为相应的体系结构,在结构中的每一组成部分是功能明确的模块,每个模块都能体现相应的需求。
二是详细设计(Detail Design),是指对概要设计中给出的各个模块所要完成的工作进行具体的描述,为后来的编程打下基础。
软件设计的结果是给出设计说明书。
(4)编码(Coding):利用某种计算机语言,把设计说明书中规定的内容转化为计算机可以接受的程序的过程称为编码。
编码应以设计相一致,且结构清晰、易读、易修改。
(5)测试(Testing):根据软件的需求说明书、设计说明书和源代码,检验软件开发工作的成果是否符合要求的过程称为软件测试。
软件测试是发现软件错误、提高软件可靠性与保证软件质量的重要手段。
(6)运行与维护(Running and Maintaining):对已交付用户的软件投入正式使用后便进入运行阶段,这个阶段可能持续若干年。
在运行过程中,可能有多种原因需要对它进行修改,包括运行中发现了软件错误需要修正;为适应变化了的软硬件环境,而需要做相应的变更;为进一步增强软件的功能,或提高其性能,而使它进一步的完善和扩充等。
上述六步表明了一个软件从其酝酿开始,直至使用相当长的时间后,被新的软件代替而退役的整个过程。
按此顺序逐步转变的过程可用一个软件生存期的瀑布模型加以形象化描述。
如图1.1所示。
图中自上而下的箭头代表了问题的一个求解过程,而自下而上的箭头代表了在实际项目的研制中,为确保软件质量,每一步骤完成后都要进行复查,如发现了问题,就要及时解决,以免问题积压到最后造成更大的困难。
运行与维护的箭头表示在运行中可能需要多次维护。
另外图中还指明了六个步骤划分的三个阶段,软件定义阶段、软件开发阶段和软件维护阶段。
值得注意的是,上述软件维护工作不可简单地看待仅仅是修改程序。
在运行过程中若有必要修改,得提出充分的修改理由,经过审核,才能确定下来。
接着需要经历制定修改计划、确定新的需求、修改软件设计、修改编码、进行测试以及重新投入运行等一系列步骤,这正是上述开发一个新软件的步骤。
若是运行中多次提出修改,则将经历多次这些步骤。
可用图1.2来表示这一过程,并称为软件的生存周期,也简称为软件的生存期。
1.2软件危机计算机系统工程分为硬件和软件两大范畴。
计算机硬件的工程技术在过去的50多年中已经达到了相当成熟的状态。
硬件设计技术和制造技术发展非常迅速,其自动化已经达到相当高的水平,硬件的可靠性已是一种现实的要求,而不在是一种愿望。
而在软件工程技术方面的情况则不同,软件是最难设计、最少可能成功、最容易出错、也最难管理的系统部分。
据报道,在上世纪的最后十年里,计算机软件已成为系统瘫痪的主要原因。
随着以计算机为基础的系统在数量、复杂程度和应用方面的激增,对软件的需要却在不断增加,因此促使供求矛盾日趋激化,这就是人们常说的软件危机。
软件危机的来源主要表现以下几个方面:(1)缺乏软件开发的经验:由于缺乏大型软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。
主观盲目地制定计划,执行起来和实际情况有很大差距,使得经费常常突破预算、工期一拖再拖,软件的投资者和用户对开发工作从不满意发展到不信任。
(2)需求不明确:作为软件设计依据的软件需求,在开发的初期提得不够明确,或者未能做出确切的表达。
开发工作开始后,软件人员又未能和用户及时的交换意见,使得一些问题得不到及时解决而隐藏起来,造成开发后期矛盾的集中暴露。
导致对多个错综复杂的问题既难于分析,又难于解决。
(3)缺少开发规范:开发过程中没有统一遵循的、公认的方法论或开发规范,参加工作的人员之间的配合不够严密,约定不够明确。
加之不重视文字资料,使得开发文档很不完整。
发现了问题,未能从根本上去找原因,只是修修补补。
显然,这样开发出来的软件无法维护。
(4)软件的复杂性:软件的规模一般都比较庞大,大型软件有时会超过1亿行源代码。
加之人们传统上的误区,往往是硬件难以实现的部分改用软件来完成,这使得软件既庞大,复杂性又高,甚至有时人的大脑已无法理解、无法驾驭人类本身所创造出来的复杂逻辑系统,投入使用后往往错误百出。
(5)缺乏有效的测试手段:软件的复杂性和软件测试的复杂性,使得难以研制有效的软件测试工具,导致测试效率不高、自动化程度低,测试花费时间多、测试成本高,这使得软件开发者只要求测试人员对软件做简单的测试,这无法保证软件的质量。
软件危机的事例是很多的。
最著名的是上世纪六十年代,美国IBM公司开发的IBM 360操作系统,这一项目在开发期共花费了5000万美元,总共投入的工作量是5000人年,共写出了100万行源程序。
由于它太庞大,OS 360变得相当不可靠,平均每次修改后的新版本都大约存在1000个左右的错误,而且有理由认为这是一个常数。
另外,美国空军的范登堡中心在上世纪六十年代后期发生过多次导弹试射失败的事故,事后检查几乎都是由于软件有错误而造成的。
与软件危机有关的许多问题都起源于软件本身的特点、软件开发人员的弱点、以及人们对软件开发实质的种种不切实际的误解,计算机软件已经成为以计算机为基础的系统发展的重要瓶径。
科学上的危机和其它领域的危机一样,解决危机的过程往往孕育着一种科学理论的诞生。
自上世纪七十年代以来,科学家们一直在试图解决软件危机问题,虽然目前尚不能说软件的危机已经过去,但二十年来,软件技术的迅速发展,包括面向对象的技术、基于知识的软件开发环境、先进的软件测试工具等,为保证大型软件的研制提供了重要的基础。
正是这些先进的技术,目前上亿行源代码的软件比比皆是。
1.3 软件质量质量这一概念有许多不同的定义。
在《词海》中,就把质量一词解析为“产品或工作的优劣程度”。
国际标准化组织(ISO)把质量定义为“与一个产品或服务是否能够满足其指定的或蕴涵的需求有关的性质与特征的总合”。
同其它产品一样,软件的质量也不是绝对的,在不同的情况下,对不同的人来说,软件质量的含义是不同的。
1.软件质量要素软件产品的质量是由许多软件性质构成的,这些性质常称为软件质量要素。
一般来讲,软件的质量因素有下列11个。
(1)易使用性:是指软件易于使用的程度。
(2)完整性:保护软件不被未经同意的存储和使用的能力。
(3)效率:指软件对计算机资源的使用效率,包括运算时间效率和存储空间效率。
(4)可靠性:不失败的能力。
(5)正确性:程序完成其规约的程度。
(6)易维护性:在程序的操作环境中,确定软件故障的位置并纠正故障的难易程度。
(7)灵活性:当软件操作环境变化时,对软件作相应修改的难易程度。
(8)易测试性:对软件测试以保证其无错误和满足其规约的难易程度。
(9)易移植性:将一个程序从一个运行环境移植到另一个运行环境的难易程度。
(10)易复用性:复用一个软件或其部分的难易程度。
(11)互用性:将一个软件系统和其它软件系统组合在一起的难易程度。
2.软件质量要素的衡量标准软件每个质量要素又包含一系列的衡量标准,具体为:(1)易使用性:包括易操作性、培训、易交流性、输入和输出量、输入输出速度。
(2)完整性:包括存储控制、存储审查。
(3)效率:包括运行效率、存储效率。
(4)可靠性:容错性、一致性、准确性、简洁性。
(5)正确性:包括易追溯性、一致性、完备性。
(6)易维护性:一致性、简洁性、简明性、模块性、自我描述性。
(7)灵活性:模块性、一般性、易扩展性、自我描述性。
(8)易测试性:简洁性、模块性、检视、自我描述性。
(9)易移植性:模块性、自我描述性、硬件独立性、软件独立性。
(10)易复用性:通用性、模块性、自我描述性、硬件独立性、软件独立性。
(11)互用性:模块性、通讯共同性、数据共同性。
每个衡量标准的定义为:(1)易追溯性:指在特定的软件开发与操作环境中,能够从软件的需求寻找出其相应的实现的能力与性质。
(2)完备性:指软件实现了其全部所需功能的性质。
(3)一致性:指在软件的设计与实现中采用统一的技术与术语的性质。
(4)准确性:指软件的输出与计算中的精度满足其需求的性质。
(5)容错性:指在非正常条件下,仍然能够操作软件的性质。
(6)简洁性:指软件以最容易理解的方式实现其功能的性质。
(7)模块性:指用一系列在很大程度上相互独立的模块来构成软件的性质。
(8)一般性:指软件所提供的功能具有应用范围广的性质。
(9)易扩展性:指易于对软件存储空间和计算功能进行扩充的性质。
(10)检视:指软件所提供的用于测量使用情况和识别错误的属性。
(11)自我描述性:指软件中包含它对功能的实现的解析性信息的属性。
(12)运行效率:指软件使用最少的处理时间的性质。
(13)存储效率:指软件在操作中对存储空间的需求最少的性质。
(14)存储控制:指反映对软件及其数据的存储进行控制的能力的性质。
(15)存储审查:指对软件及其数据的存储进行审查、记录能力的性质。
(16)易操作性:指决定软件的操作与操作过程的复杂程度与难易程度的性质。
(17)培训:指支持从初步熟悉到熟练操作软件的过度的性质。
(18)易交流性:指软件的输入与输出能够被人们理解的程度的性质。
(19)软件独立性:指决定对软件环境中的其它软件的依赖程度的性质。
(20)硬件独立性:指决定软件对硬件环境的依赖程度的性质。
(21)通讯共同性:指软件使用标准的通讯协议与界面的性质。
(22)数据共同性:指软件使用标准的数据表示格式的性质。
(23)简明性:软件的实现使用最少代码的性质。
每一个软件质量衡量标准又可以有多个不同的度量。
软件质量度量有的作用于软件的代码,有的作用于软件开发过程中产生的中间结果和文档。
1.4 软件可靠性1.硬件可靠性所谓系统的可靠性,是指“一个系统在一定的环境下,在所给定的时间内能按预定的要求完成一定功能的概率”。