软件测试.docx
《软件测试.docx》由会员分享,可在线阅读,更多相关《软件测试.docx(17页珍藏版)》请在冰豆网上搜索。
软件测试
软件测试复习汇总
“软件质量是软件与明确的和隐含的定义的需求相一致的程度”,
软件质量的特征:
功能性可靠性易用性效率维护性可移植性
软件质量保证:
⏹SQA:
SoftwareQualityAssurance
⏹是贯穿软件生命周期的活动
⏹是为客观地保证软件产品和过程符合所规定的需求以及已经建立的计划而定义的活动
⏹是为整个软件产品的适应性提供证据的系统化活动
包括三方面:
1、软件测试:
是用来验证软件产品是否满足了用户需求的活动
是发现软件所存在的缺陷的活动
是发现是否存在问题的活动
2、质量控制
用来监督工作进展和观测需求是否满足的过程和方法
3、软件配置管理
软件配置包括代码、文档和数据等
配置管理是软件开发过程中的产品进行标记、追踪以及控制变更的活动
⏹错误:
error,由人们在建立软件产品过程中所犯的错误而引起的软件错误
⏹缺陷:
defect,缺陷是错误的表现
⏹故障:
fault,软件缺陷被激活,所引起的软件内部状态
⏹失效:
failure,故障被传播所导致的软件执行失败
V模型
左边每个开发活动都有右边的测试活动相对应,而相应的测试活动,其开展的次序则正好相反
⏹模型
测试伴随着整个开发周期,而且,测试的对象不仅仅是程序,需求、功能和设计同样要测试。
软件测试原则:
1)测试必须由独立的部门实施
(2)给测试分配最好的人员
(3)测试工作的计划应以发现最多的错误为目标
(4)无效、非预期的输入条件和有效条件都应该被测试
(5)被测软件不应该在测试期间进行修改
(6)测试报告应该包括测试用例和测试结果
(7)应该明确预期的结果
(8)应事先对测试进行计划并在以后进行更新,排除测试的随意性
(9)选择一组合适的测试方法
(10)尽早地和及时地测试
软件测试的特点:
⏹软件测试的主要目的是增强软件工程师对软件正常运行的信心,其过程是从无穷的执行域中选择有穷的测试用例集来对程序行为进行动态验证
⏹软件测试是系统性规划的过程
⏹软件测试技术找出的缺陷应是其他验证和确认技术难以发现的
⏹测试是通过运行软件以检测将会出现的故障的过程,它提供了一种对质量进行度量的途径
第二章
测试策略:
关注测试的方案或者过程
单元测试、集成测试、系统测试、验收测试
测试技术:
测试过程中所采用的手段
黑盒测试、白盒测试、静态测试、动态测试
白盒测试:
结构测试,逻辑驱动测试
方法:
语言覆盖语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次
判定覆盖基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足
条件覆盖基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。
判定条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次
条件组合覆盖逻辑覆盖
☐条件组合覆盖的基本思想是设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
☐它与条件覆盖的差别是它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次
路径覆盖路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径
基本路径测试的过程
1.依据代码绘制流程图
2.确定流程图的圈复杂度(cyclomaticcomplexity)
3.确定线性独立路径的基本集合(basisset)
4.设计测试用例覆盖每条基本路径
1.V(G)=区域数量(由节点、连线包围的区域,包括图形外部区域)
2.V(G)=连线数量-节点数量+2
V(G)=判定节点数量+1
基本路径测试法
☐基本路径测试:
在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
黑盒测试:
功能测试,数据驱动测试
方法:
等价类划分法
⏹分为有效等价类和无效等价类。
有效等价类是有意义的、合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。
无效等价类与有效等价类的意义相反
⏹在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类
边界值划分法
⏹确定边界情况(输入或输出等价类的边界)
⏹选取正好等于、刚刚大于或刚刚小于边界值作为测试数据
判定表方法
⏹一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。
正交实验法
⏹确定影响功能的因子与状态
⏹选择一个合适的正交表
⏹利用正交表构造测试数据集
错误推断发
⏹基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。
静态测试和动态测试
⏹将需求和设计的评审也纳入测试的范畴,可以看作是广义测试
⏹静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等
⏹静态分析的查错和分析功能是其他方法所不能替代的,可以采用人工检测和计算机辅助静态分析手段进行检测,但越来越多地采用工具进行自动化分析
⏹动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统信息,对系统行为进行验证。
主动测试和被动测试
⏹主动测试方法:
测试人员主动向被测试对象发送请求、或借助数据、事件驱动被测试对象的行为,从而验证被测试对象的反应或输出结果
⏹被动测试方法:
测试人员不干预产品的运行,而是被动地监控产品在实际环境中运行,通过一定的被动机制来获得系统运行的数据,包括输入、输出数据.
第三章
单元测试是对软件基本组成单元进行的测试。
目标:
单元模块被正确编码
Ø单元测试的任务:
路径测试、接口测试、内部数据结构测试、模块边界条件测试、模块错误处理路径测试
任务1:
模块独立执行通路测试
任务2:
模块局部数据结构测试,检查局部数据结构完整性
任务3:
模块接口测试,检查模块接口是否正确
任务4:
模块边界条件测试,检查临界数据处理的正确性
任务5:
模块的各条错误处理通路测试,预见、预设的各种出错处理是否正确有效。
过程:
1.在详细设计阶段完成单元测试计划
2.建立单元测试环境,完成测试设计和开发
3.执行单元测试用例,并且详细记录测试结果
4.判定测试用例是否通过
5.提交《单元测试报告》
静态测试技术:
不运行被测试程序,对代码通过检查、阅读进行分析。
三步曲:
⏹走查(WalkThrough)。
采用讲解、讨论和模拟运行的方式进行的查找错误的活动
⏹审查(Inspection)。
采用讲解、提问方式进行,一般有正式的计划、流程和结果。
主要方法采用缺陷检查表。
⏹评审(Review)通常在审查会后进行,审查小组根据记录和报告进行评估。
驱动模块(driver):
对底层或子层模块进行测试所编写的调用这些模块的程序。
桩模块(stub):
对顶层或上层模块进行测试时所编写的替代下层模块的程序
第四章
Junit的设计目标:
⏹简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写
⏹使测试单元保持持久性
⏹可以利用既有的测试来编写相关的测试
JUnit的特点
⏹可以使测试代码与产品代码分开,更有利于测试代码的管理和代码的发布
⏹提供了多种方式来显示测试结果,而且可以扩展
⏹对不同性质的被测对象,如Class、JSP、Servlet等,JUnit有不同的测试方法
第五章
⏹集成测试是构造软件体系结构的系统化技术
⏹也是进行一些旨在发现与接口相关的错误的测试
⏹目标是利用已通过单元测试的构件建立设计中描述的程序结构
集成测试的策略:
非渐增式测试模式:
⏹先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。
渐增式测试模式:
把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。
传统的将增量测试模式分为:
自顶向下集成:
⏹优点:
Ø可以自然地做到逐步求精,一开始就能让测试者看到系统的框架
Ø不需要测试驱动程序
Ø能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误
⏹缺点:
Ø需要提供桩模块
Ø可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚
Ø这种方法在早期不能充分展开人力
自底向上集成
优点:
Ø不需要桩程序
Ø能够较早的发现关键的模块的缺陷
缺点:
Ø直到最后一个模块被加入进去之后才能看到整个程序(系统)的框架
三明治集成
采用自顶向下、自底向上集成相结合的方式,并采取持续集成的策略,有助于尽早发现缺陷,也有利于提高工作效率
系统测试的概念
⏹将通过集成测试的软件系统,作为计算机系统的一个重要组成部分,与计算机硬件、外设、某些支撑软件的系统等其他系统元素组合在一起所进行的测试
⏹目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或矛盾的地方
确认测试的α测试与β测试
⏹α测试
☐由最终用户在开发者的场所进行
☐软件在自然的环境下使用,开发者站在典型用户的后面观看,并记录错误和使用问题
☐α测试在受控的环境下进行
⏹β测试
☐最终用户场所执行
☐开发者通常不在场,因此,β测试是在不为开发者控制的环境下软件的现场应用
☐最终用户记录测试过程中遇见的所有问题(现实存在或想象的),并将其定期地报告给开发者。
接到β测试的问题报告之后,软件工程师进行修改,然后准备向最终用户发布软件产品
系统测试的主要内容
(1)功能测试
(2)性能测试
(3)压力测试
(4)可靠性测试
(5)兼容性测试
(6)容错性测试
(7)安全性测试
功能测试
☐程序安装、启动正常,有相应的提示框、错误提示等
☐每项功能符合实际要求
☐系统的各种状态按照业务流程而变化,并保持稳定
☐系统的界面清晰、美观
☐菜单、按钮操作正常、灵活,能处理一些异常操作
☐能接受正确的数据输入,对异常数据的输入有提示、容错处理等
系统测试与确认测试的区别
⏹确认测试始于集成测试的结束,那时已测试完单个构件,软件已组装成完整的软件包,且接口错误已被发现和改正
⏹在确认测试时,传统软件与面向对象软件的差别已经消失,测试便集中于用户可见的动作和用户可识别的系统输出
第六章
LoadRunner:
⏹目前应用最为广泛的性能测试工具之一
⏹可用来测试整个企业的系统,它通过模拟实际用户的操作行为和实时性能检测,可以帮助使用者更快的查找和发现问题
⏹支持广泛的协议,可以应用于许多不同架构应用的测试
⏹包括5个阶段:
规划、创建脚本、定义场景、执行场景和分析结果
第七章
传统的软件=数据+过程,面向过程、或者结构化,程序=算计+数据结构,功能模块结构
面向对象的软件=对象+消息,程序=类+类之间的关系程序的最小组成单位:
类
传统的测试:
Ø单元测试:
模块测试
Ø集成测试:
自下而上或者自上而下的组装测试
面向对象的测试:
Ø单元测试:
类测试
Ø集成测试:
自下而上或者自上而下的测试策略已不能使用
面对对象测试内容:
⏹类测试
⏹面向对象的集成测试
⏹面向对象的系统测试
第八章
Safety:
freedomfromdanger,risk,orinjury
软件系统不给人和环境带来灾难、伤害的能力
Security:
freedomfromillegalacquisitionandmodificationofinformation
软件系统保护数据不被非法获取和修改的能力,信息安全:
security
Safetytest:
排除软件中可能引发严重后果的错误
广义上讲:
所有的测试都属于safetytest
Securitytest的主要内容:
⏹用户权限测试/访问控制测试
⏹URL安全性测试
⏹表单提交安全性测试
⏹Session测试
⏹Dos攻击
⏹嗅探
第九章
图形用户界面:
窗体、按钮、对话框、标题栏等
用户界面测试的重点:
✓正确性
•与功能测试一样,界面的元素应符合用户需求
✓易用性
•用户操纵界面来完成任务的难易程度
✓视觉效果,布局、颜色等美学效果
根据图形用户界面设计的规范进行测试
测试所主要关注的问题:
✓易用性
✓规范性:
测试各个GUI元素
✓帮助设施
✓合理性
✓美观及协调性
✓快捷方式的组合
✓正确性
第十章
嵌入式系统是指用于执行独立功能的专用计算机系统
嵌入式系统的特点:
✓专用性强
Ø嵌入式系统都是以应用为中心,其中的软件系统和硬件的结合非常紧密,一般要针对特定的硬件平台进行软件开发。
✓软件系统精简
Ø嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以操作系统内核较之传统的操作系统要小得多
Ø一般没有系统软件和应用软件的明显区分
✓高实时性、高可靠性
Ø实时性是嵌入式软件的基本要求,这也是由于嵌入式系统的应用环境所决定的
Ø嵌入式系统软件要求固态存储,以提高速度
Ø软件代码要求高质量和高可靠性
✓嵌入式系统需要专用的开发工具和环境
Ø软件系统开发完成以后,用户通常是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。
Ø开发时往往有宿主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。
软件模拟测试方式:
软件模拟测试方式,将嵌入式软件从嵌入式系统中独立出来,通过仿真器模拟目标机的运行环境,在宿主机上实现嵌入式软件的测试
优点
✓与嵌入式硬件平台脱钩
✓操作简单,可以借鉴常规的软件测试方法
交叉测试方式,与目标环境无关的部分在PC机上完成,借鉴常规的软件测试方法对软件进行测试
与硬件密切相关的部分在目标机上完成
最后的确认测试在目标机上完成
第十一章
⏹Web软件是一种可以通过Web访问的应用程序
WEB软件的特点:
Ø网络集约性
Web软件在网络上,并且服务于变化多样的各种客户群的需要,但其本身只需要一个服务器端,用各式各样的客户端满足不同要求的客户。
Ø内容驱动性
它们一般都拥有一个广大的服务群体,其服务的内容,往往由这些群体的要求所决定。
Ø持续演化性
Web应用软件一般是采取持续演化的模式。
,按小时为单位进行更新都是司空见惯的。
Ø即时性
对于某些较大规模的Web网站,开发时间往往也只有几周或者几天,适度复杂的Web页面可以仅在几小时内完成。
这要求开发者必须十分熟练于开发Web应用所需的压缩时间进度的规划、分析、实现以及测试方法。
Ø安全性
Web应用通过网络访问,为了提高系统效率,需要限制访问终端的用户的数量。
为了保护敏感内容,必须提供安全的数据传输模式。
Ø美观性
基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。
更需要从最终用户的角度进行安全性和可用性测试。
WEB软件测试:
内容
Ø功能测试
Ø性能测试性能测试包括:
负载测试,压力测试,连接速度测试
Ø
Ø安全性测试
Ø可用性/可靠性测试
Ø配置和兼容性测试
Ø数据库测试
第十二章
测试项目管理就是以测试项目为管理对象,通过一个临时性的专门的测试组织,运用专门的软件测试知识、技能、工具和方法,对测试项目进行计划、组织、执行和控制,并在时间成本、软件测试质量等方面进行分析和管理活动。
测试需求分析,确定测试类型中的各个测试项及其优先级,测试项也进行标识
测试计划就是描述所有要完成的测试工作
测试计划和实施,制定测试的技术方案,设计测试用例,设计测试用例特定的集合,测试开发,测试环境的设计。
测评项目需求管理的主要任务:
1)评审测评项目的需求和需求变更,2)控制测评项目的需求和需求变更,3)有措施保证测试需求规约、测试计划、测试活动和测试工作产品与测评项目的需求相一致。
测评项目策划:
1)测试计划(如进度、人员安排)应基于对软件测试工作量和资源的估计
2)根据测试进展情况(包括测试级别和测试过程),对软件测试计划不断细化和修订
3)评审软件测试计划,并得到各有关方的认同
4)对测试计划进行版本控制和变更控制。
测评项目跟踪与控制:
1)按照软件测试计划和软件测试说明跟踪实际结果和性能;
2)当实际的进度、工作量和测试的充分性等明显偏离软件测试计划和软件测试说明时,采取纠正措施,并加以管理直到结果;
3)跟踪和评价测试人员工作的有效性;
4)跟踪和评价测试工具的使用情况。
测评项目质量保证的内容:
考察测评项目正在使用的过程和正在构造的测试工作产品与其相应要求和标准的符合性
编制测评项目质量保证计划并通过评审
质量保证人员客观地验证测试工作产品及其活动遵循所用标准、规程和需求的情况
测评项目配置管理:
在整个测评项目的生存期内,建立完全的严格的配置管理(基线),维护测评工作产品的完整性
1)编制测评项目配置管理计划,并通过评审
2)所选定的测评工作产品(包括选定的测评工作产品及描述、工具、环境等)应是已标识的、受控的和可用的
3)已标识的测评工作产品的更改和发布是受控的
第十三章
⏹测试自动化指“一切可以由计算机系统自动完成的测试任务都由计算机系统或软件工具、程序来承担并自动执行”
手工测试vs自动测试
手动测试
☐发现缺陷率高
☐容易实施
☐创造性、灵活性
☐覆盖率量化困难
☐重复测试效率低
☐不一致性、可靠性低
☐依赖人力资源
自动测试:
✓高效率(速度)
✓高复用性
✓覆盖率容易度量
✓准确、可靠
✓不知疲劳
✓激励团队士气
✓机械、难以发现缺陷
✓一次性投入大
自动化测试的认识误区:
⏹误区一:
自动化测试应完全取代人工测试。
80%以上的缺陷是手工测试发现,一味的追求测试自动化,会使测试工作的成本增加
⏹误区二:
测试用例可完全由测试工具生成
白盒测试中,利用某些测试工具可以自动生成部分测试用例,
黑盒测试中,几乎所有测试用例都需要手工去设定。
⏹误区三:
测试工具可以在任何场合使用。
⏹误区四:
自动化后测试效率立刻提高(如:
测试工作马上减轻,进度缩短)
⏹误区五:
自动化测试顺利引入后就一劳永逸了
自动化测试的原理:
⏹通过设计的特殊程序模拟测试人员对计算机的操作(黑盒测试),或者类似于编译系统那样对计算机程序进行检查(白盒测试)。
第十四章
⏹测试用例是为了特定目的而设计的测试数据及与之相关的测试规程的一个特定的集合
白盒测试用例的基本设计方法:
Ø逻辑覆盖
Ø路径覆盖
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。
语句覆盖
判定覆盖
条件覆盖
判定-条件覆盖
条件组合覆盖
黑盒测试用例设计的基本方法
Ø等价类划分
使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例
基本思想:
把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数代表性的数据做为测试用例的输入数据
等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
测试某等价类的代表值就等价于对这一类其他值的测试。
Ø第一步:
划分等价类(列出等价类表)
Ø第二步:
选取测试用例
Ø边界值分析
一种黑盒测试方法,是对等价类划分方法的补充