当前位置:首页 > 软件测试复习大纲
软件测试方法和技术 一、名词解释
? 软件测试(IEEE)定义:在特定的条件下运行系统或构件,观察或记录结果,对系
统的某个方面做出评价 ,分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性 。更完整的定义:软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体 ? 测试驱动开发(TDD Test Driven Development),即测试驱动开发的基本思想就是在
开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程。
? 软件质量:软件产品具有满足规定的或隐含要求能力要求有关的特征与特征总和
(ISO 8492)或者书P15:质量是产品或服务所满足明示或暗示需求能力的固有特性和特征的集合
? 软件缺陷:P18(软件缺陷的现象也在该页)
? 人工检测:人工检测偏重于编码风格、质量的检验,对设计、代码进行分析,有效
地发现逻辑设计和编码错误。
? 计算机辅助静态分析:利用静态分析工具对被测程序进行特性分析,从程序中提取
一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。
? 主动测试方法:测试人员主动向被测试对象发送请求、或借助数据、事件驱动被测
试对象的行为,从而验证被测试对象的反应或输出结果
? 被动测试方法:测试人员不干预产品的运行,而是被动地监控产品在实际环境中运
行,通过一定的被动机制来获得系统运行的数据,包括输入、输出数据.
? 系统非功能性测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试P29
? 错误推测法:是测试者根据经验、知识和直觉来发现软件错误,来推测程序中可能
存在的各种错误,从而有针对性的进行测试P38
? 独立路径: 至少引入一系列新的处理语句或条件的任何路径 ? 基本集: 由独立路径构成的集合
? 基于模型的测试 (MBT, Model-based testing):通过构建能够正确描述被测软件系统
功能特性的模型,然后基于这个模型产生测试用例并执行这些测试用例的过程 P57 ? 状态迁移图(state transition diagram,STD):描述系统状态变化的动态信息——动
态说明,由状态和迁移来描述,状态指出数据输入的位置(或时间),而迁移则指明状态的改变。逻辑功能模型(logic function model, LFM)的定义P58
? 模糊测试(Fuzz testing)方法,简单的说,就是构造大量的变异数据作为系统的输
入,从而检验系统在各种数据情况下是否会出现问题
? 形式化方法:基于数学的方法(数学表示、精确的数学语义)来描述目标软件系统属
性的一种技术
? 形式化验证,就是根据某些形式规范或属性,使用形式逻辑方法证明其正确性或非
正确性。
? TMap (Test Management Approach,测试管理方法)是一种结构化的、基于风险策略的测试方法体系, 目的能更早地发现缺陷,以最小的成本、有效地、彻底地完成测试任务,以减少软件发布后的支持成本。 P71
? TPI(Test Process Improvement)是基于连续性表示法的测试过程改进的参考模型,
是在软件控制、测试知识以及过往经验的基础上开发出来的P82
? 关键测试过程(Critical Test Process,CTP):内容参考模型、上下文相关的方法,并
能对模型进行裁剪 P86
? 单元测试:是对软件基本的组成单元进行独立的测试
? 代码走查:采用讲解、讨论和模拟运行的方式进行的查找错误的活动。P102(注意
的问题:引导小组成员在走查前通读设计和编码;限时,避免跑题 ;发现问题适当记录,避免现场修改 ;检查要点是代码是否符合标准和规范,是否有逻辑错误 ? 驱动模块(drive):对底层或子层模块进行测试所编写的调用这些模块的程序。 ? 桩模块(stub):对顶层或上层模块进行测试时所编写的替代下层模块的程序。P106 ? 代码协定:用于标记代码的类、用于编译时分析的静态分析器和运行时分析器。 ? Visual Studio Team System(VSTS):是一套工具集,全面整合了软件设计、开发、测
试、部署和人员协作工具,其开发版(Development Edition)提供了静态分析、代码剖析、代码涵盖以及其它单元测试所需的功能特性。 ? 大棒集成方法(Big-bang Intergration):先是对每一个子模块进行测试(单元测试阶
段),然后将所有模块一次性的全部集成起来进行集成测试 。(适用小规模应用系统) ? 性能测试(performance test):就是为了发现系统性能问题或获取系统性能相关指标
而进行的测试 ? 渗入测试(soak test),通过长时间运行,使问题逐渐渗透出来,从而发现内存泄漏、
垃圾收集(GC)或系统的其他问题,以检验系统的健壮性 ? 峰谷测试(peak-rest test),采用高低突变加载方式进行,先加载到高水平的负载,
然后急剧降低负载,稍微平息一段时间,再加载到高水平的负载,重复这样过程,容易发现问题的蛛丝马迹,最终找到问题的根源 ? 容错性测试(Fault-tolrent test)是检查软件在异常条件下自身是否具有防护性的措
施或者某种灾难性恢复的手段。
? 兼容性测试: 验证软件之间是否正确地交互和共享信息 ? 验收测试:P186
? α 测试: 开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)
进行测试,试图发现错误并修正 ,经过α测试调整的软件产品称为β版本
? β 测试:组织外部的典型用户在日常工作中实际使用β版本,并要求用户报告异常
情况、反馈使用意见。然后软件开发公司再对β版本进行改错和完善。
? 测试自动化指“一切可以由计算机系统自动完成的测试任务都已经由计算机系统或
软件工具、程序来承担并自动执行”
? 对象库 是本地在测试结构范围内 存储对像信息 ? 测量(Measurement) :确定一个测量的行为
? 度量(Metric) :某个给定属性的度的一个定量测量 ? 指标 (Indicator) :具体测量的属性及其给定值
二、知识点 第一章
1.为什么要进行软件测试
? 软件总存在缺陷。只有通过测试,才可以发现软件缺陷。也只有发现了缺陷,才可
以将软件缺陷从软件产品或软件系统中清理出去。
? 软件中存在的缺陷给我们带来的损失是巨大的,这也说明了软件测试的必要性和重
要性
? 测试是所有工程学科的基本组成单元,自然也是软件开发的重要组成部分。
? 测试人员水平越高,找到软件问题的时间就越早,软件就越容易更正,产品发布之
后越稳定,公司赚的钱也越多,微软就是一个典型的例子
2.什么是软件测试(书P7)
ppt:找程序的缺陷、发现一个系统的错误、找出软件中潜在的Bug、测试一下是否符合用户的需求、为即将上市的软件提供一个保证的过程、软件质量保证的一套工程的方法、让软件变得更健壮更好的一种技术、对代码进行的调试 3.软件测试的发展
? 初级阶段(1957~1971)测试通常被认为是对产品进行事后检验 ,缺乏有效的测试
方法
? 发展阶段(1972~1982),1972年第一次关于软件测试的正式会议,促进了软件测
试的发展
? 成熟阶段(1983到现在),国际标准Std 829-1983 ,形成一门独立的学科和专业,
成为软件工程学科中的一个重要组成部分
4.软件测试正向思维和反向思维 Bill Hetzel博士(正向思维的代表):
? 软件测试就是为程序能够按预期设想那样运行而建立足够的信心。
? “软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期
的结果”
? 测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作 Glenford J. Myers (反向思维的代表):
? 测试是为了证明程序有错,而不是证明程序无错误 ? 一个好的测试用例是在于它能发现至今未发现的错误 ? 一个成功的测试是发现了至今未发现的错误的测试 5.软件测试定义的两面性
正向思维-验证软件正常工作-评价一个程序或系统的特性或能力并确定是否达到预期的结果 -在设计规定的环境下运行软件的所有功能,直至全部通过。
逆向思维-测试是为发现错误而针对某个程序或系统的执行过程 -寻找容易犯错误的地方和系统的薄弱环节,试图破坏系统,直至找不出问题。 6.软件测试的价值
? 全面评估产品质量,获得有关产品质量的全面、客观的信息 ? 发现问题,督促问题解决,提高产品质量
? 持续提供质量反馈、及时揭示质量风险,有助于控制项目风险,提高构建的质量 ? 通过缺陷分析,获得缺陷模式,有助于缺陷预防 7.测试和质量保证的关系
软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
? 对软件工程各个阶段的进展、完成质量及出现的问题进行评审、跟踪。
? 审查和验证软件产品是否遵守适用的标准、规程和要求,并最终确保符合标准、满
足要求。
? 建立软件质量要素的度量机制,了解各种指标的量化信息,向管理者提供可视信息。 8.软件测试和开发的关系(书P10软件瀑布模型图1-1)
第二章
1.ISO 9126 软件质量特征:书P16 ISO 9126软件质量三层模型(附加:McCall模型P16)
? 功能:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的
需求的那些功能。 ? 可靠:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。 ? 易用:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组
属性。
? 效率:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。 ? 可维护:与进行指定的修改所需的努力有关的一组属性。
? 可移植:与软件从一个环境转移到另一个环境的能力有关的一组属性。 2.非功能特性:书P17
3.软件缺陷的产生:P19(书上比较具体,以下是PPT中)
① 技术问题
算法错误,语法错误,计算和精度问题,接口参数传递不匹配 ② 团队工作 沟通不充分,误解
③ 软件本身
? 文档错误、用户使用场合(user scenario), ? 时间上不协调、或不一致性所带来的问题
? 系统的自我恢复或数据的异地备份、灾难性恢复等问题 4.软件测试的分类:书P21 5.静态测试和动态测试
? 将需求和设计的评审纳入测试的范畴,可看作是广义测试
? 静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等 ? 静态分析的查错和分析功能是其他方法所不能替代的,可以采用人工检测和计算机辅助静态分析手段进行检测,但越来越多地采用工具进行自动化分析
动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统信息,对系统行为进行验证。
6.产品评审和评审分类P23
互评 (Peer review)、轮查 (Pass-round)、 走查 (walk-through)、 会评 (Inspection) 管理评审 、技术评审 、文档评审 、流程评审
7.白盒测试和黑盒测试P27
8.软件测试级别及任务P28
共分享92篇相关文档