软件测试方法和技术重点2教材.docx
- 文档编号:26372955
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:27
- 大小:261.54KB
软件测试方法和技术重点2教材.docx
《软件测试方法和技术重点2教材.docx》由会员分享,可在线阅读,更多相关《软件测试方法和技术重点2教材.docx(27页珍藏版)》请在冰豆网上搜索。
软件测试方法和技术重点2教材
第一章:
软件测试概述
1.1软件、软件危机和软件工程
☐软件的定义
☐软件危机的定义
☐软件危机的主要表现
(1)软件开发费用和进度失控。
(2)软件的可靠性差。
(3)生产出来的软件难以维护。
(4)用户对“已完成”的系统不满意现象经常发生。
(5)软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。
(6)软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要,软件产品供不应求的状况使得人类不能充分利用计算机硬件所能提供的巨大潜力。
☐产生软件危机的原因
(1)与软件本身的特点有关。
(2)用户需求不明确。
(3)缺乏正确的理论指导。
(4)软件开发规模越来越大。
(5)软件开发复杂度越来越高。
☐软件工程的概念
1.2软件缺陷与软件故障
☐相关概念
错误
缺陷
故障
失效
1.3软件质量
☐软件质量的三种模型Bohm模型、McCall质量模型和ISO126模型。
☐软件质量的好坏要依靠软件度量,软件度量可以分为:
外部度量、内部度量和使用度量。
☐软件质量的定义
☐软件质量的特征
1.4软件测试
☐为社么要进行软件测试
软件测试——产品质量的保证
软件测试——控制成本的关键
软件测试——软件可靠性确认
软件测试——让企业具备国际竞争的实力
☐什么是软件测试
软件测试的定义。
BillHetzel博士(正向思维的代表):
软件测试就是为程序能够按预期设想那样运行而建立足够的信心。
“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果”
测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作
GlenfordJ.Myers(反向思维的代表):
测试是为了证明程序有错,而不是证明程序无错误
一个好的测试用例是在于它能发现至今未发现的错误
一个成功的测试是发现了至今未发现的错误的测试
软软件测试的主要内容包含两个方面,即:
件测试是由“验证(Verification)”和“确认(Validation)”活动构成的整体
⏹验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性
⏹“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。
☐软件测试的重要性
“程序测试是为了发现错误而执行程序的过程”。
测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。
在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有“破坏性”,测试可视为分析、设计和编码3个阶段的“最终复审”,在软件质量保证中具有重要地位。
第二章:
软件测试的基本概念
2.1软件缺陷
软件质量的内涵
软件质量的特征
软件质量产品的属性
2.2软件测试的分类
按软件测试层次划分:
按照软件测试的策略和过程分类,可以将软件分为单元测试、集成测试、系统测试、验收测试。
按被测试对象分为:
单元测试、程序测试、系统测试、文档测试、Web应用测试、客户端测试。
按照测试目的分为:
功能测试、压力测试、性能测试、可靠性测试、灾难恢复性测试、安全性测试、兼容性测试、回归测试、安装测试等。
2.3静态测试和动态测试
按照程序是否运行,可以将软件测试划分为:
静态测试和动态测试。
静态测试
静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估。
静态测试包括代码检查、静态结构分析、代码质量度量等。
它可以由人工进行,也可以借助软件工具自动进行。
因为静态测试方法并不真正运行被测程序,只进行特性分析。
所以,静态方法常常称为“分析”,静态测试是对被测程序进行特性分析方法的总称。
静态测试的任务
(1)检查算法的逻辑正确性。
(2)检查模块接口的正确性。
(3)检查输入参数是否有合法性检查。
(4)检查调用其他模块的接口是否正确。
(5)检查是否设置了适当的出错处理。
(6)检查表达式、语句是否正确,是否含有二义性。
(7)检查常量或全局变量使用是否正确。
(8)检查标识符的使用是否规范、一致。
(9)检查程序风格的一致性、规范性。
(10)检查代码是否可以优化,算法效率是否最高。
(11)检查代码注释是否完整,是否正确反映了代码的功能。
静态测试可以完成以下工作:
(1)发现下列程序的错误:
错用局部变量和全局变量、未定义的变量、不匹配的参数、不适当的循环嵌套或分支嵌套、死循环、不允许的递归、调用不存在的子程序,遗漏标号或代码。
(2)找出以下问题的根源:
从未使用过的变量、不会执行到的代码、从未使用过的标号、潜在的死循环。
(3)提供程序缺陷的间接信息:
所用变量和常量的交叉应用表、是否违背编码规则、标识符的使用方法和过程的调用层次。
(4)为进一步查找做好准备。
(5)选择测试用例。
(6)进行符号测试。
2、动态测试
——计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况即输入与输出的对应关系进行分析,以达到检测的目的。
动态测试包括:
(1)功能确认与接口测试
(2)覆盖率分析
(3)性能分析
(4)内存分析
通过软件评审,可以更早地发现需求工程、软件设计等各个方面的问题,大大减少大量的后期返工,将质量成本从昂贵的后期返工转化为前期的缺陷发现。
评审是对软件元素或者项目状态的一种评估手段,以确定其是否与计划的结果保持一致,并使其得到改进。
检验工作产品是否正确地满足了以往工作产品中建立的规范。
软件评审是软件测试的组成部分。
2.4主动测试和被动测试
☐主动测试以测试例为中心,由测试程序完全控制整个测试过程测试程序负责生成测试序列并将其发给待测协议实现。
☐被动测试采用了另一种思想,只是被动接受软件的输入输出行为,通过分析监听到的数据来推断软件实现中是否存在错误。
被动测试比较简单,不需要构造测试集,支持在线测试且可以长时间进行测试而无需人工干预。
2.5黑盒测试和白盒测试
从软件测试用例设计方法的角度进行分类,软件测试的技术分为黑盒测试(Black-boxTesting)和白盒测试(White-boxTesting)。
(1)黑盒测试:
是一种从用户角度出发的测试,又称为功能测试或者数据驱动测试、基于规格说明的测试等。
简单地说,若测试用例的设计时基于产品的功能,目的是检查程序各个功能是否实现,并检查其中的功能错误,则这种测试方法称为黑盒测试。
(2)白盒测试:
基于产品的内部结构来进行测试,检查内容操作是否按规定执行,软件各个功能部分是否得到充分应用。
白盒测试又称为结构测试或者逻辑驱动测试或基于程序的测试。
2.5.1黑盒测试方法概述
黑盒测试是一种从用户角度出发的测试,又称为功能测试或者数据驱动测试、基于规格说明的测试。
黑盒测试的基本观点是:
任何程序都可以看做是从输入定义域映射到输出值域的函数过程。
它将被测程序视为一个打不开的黑盒子,盒子中的内容完全不知道,只知道盒子是要做成什么样子的。
黑盒测试方法着重测试软件的功能需求,是在程序接口上进行测试主要是为了发现以下的错误:
(1)是否有不正确的功能或者是遗漏的功能;
(2)接口能否正确地接收输入数据并产生正确的输出结果;
(3)是否有数据结构错误或外部信息访问错误;
(4)性能是否能够满足要求;
(5)是否有程序初始化和终止方面的错误。
黑盒测试有两个显著的特点:
(1)黑盒测试不考虑软件的具体实现过程,当在软件实现的过程发生变化时,测试用例仍然可以使用;
(2)黑盒测试用例的设计可以喝软件实现同时进行,这样能够压缩总的开发时间。
黑盒测试有两种基本方法,即通过测试和失败测试。
黑盒测试方法的优点:
适用于各个测试阶段;
从产品功能角度进行测试;
容易入手生成测试数据。
黑盒测试的缺点:
某些代码得不到测试;
如果规则说明有误,无法发现;
不易充分进行测试。
2.5.2白盒测试方法概述
白盒测试指测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误,是进一步测试的前提,也称作结构测试或者逻辑驱动测试。
白盒子测试分静态和动态两种:
静态白盒测试是在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时也称为结构分析。
动态白盒测试也称结构化测试,通过查看并使用代码的内部结构,设计和执行测试。
白盒测试的主要方法有逻辑覆盖、基本路径测试等,它主要用于对软件的验证测试。
2.6软件测试级别
软件测试级别可分为单元测试、集成测试、确认测试、系统测试和验收测试。
(1)单元测试:
是针对每个单元的测试,是软件测试的最小单位
(2)集成测试:
是对已测试过的模块进行组装,对组装以后的集成块进行测试。
(3)系统测试:
主要任务是检测被测软件与系统其他部分的协调性,通常采用黑盒测试的方法。
(4)验收测试:
是软件产品质量额最后一关,在这一环节,测试主要从用户的角度着手,参与者主要是用户及少量的程序开发人员,通常采用的测试方法为黑盒测试。
2.7软件测试计划和测试用例
2.7.1软件测试计划
描述测试目的、范围、方法和软件测试的重点等的文档。
对于验证软件产品的可接受程度编写测试计划文档是一种有用的方式。
详细的测试计划可以帮助测试项目组之外的人了解为什么和怎样验证产品。
它非常有用但是测试项目组之外的人却很少去读它。
软件测试计划作为软件项目计划的子计划,在项目启动初期是必须规划的。
在越来越多公司的软件开发中,软件质量日益受到重视,测试过程也从一个相对独立的步骤越来越紧密嵌套在软件整个生命周期中,这样,如何规划整个项目周期的测试工作;如何将测试工作上升到测试管理的高度都依赖于测试计划的制定。
测试计划因此也成为测试工作的赖于展开的基础。
《ANSI/IEEE软件测试文档标准829-1983》将测试计划定义为:
“一个叙述了预定的测试活动的范围、途径、资源及进度安排的文档。
它确认了测试项、被测特征、测试任务、人员安排,以及任何偶发事件的风险。
”软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。
借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
2.7.2测试用例
是为了发现软件缺陷,或至少可能发现缺陷而设计;
通过好的用例来提高质量,从而降低维护成本;
不好的用例将给质量带来一定的风险;
好的用例是度量质量的一个标准。
经常用“测试用例数/千行代码“来评价项目
测试用例的特点
有效性
是否能发现软件缺陷,至少可能发现软件缺陷;
开销
测试事例的执行、分析和调试是否经济;
可仿效性
测试用例可以测试多项内容,因而减少了测试事例的数量;
可维护性
每次软件修改后对测试事例的维护成本;
可执行性
是否依赖于测试用例设计者;
测试用例的编写标准:
在制定测试用例时,由于不同软件公司的背景不同,因此测试用例的内容有所不同,但根据ANSI/IEEE列出了测试用例编写规范和模板,其主要元素包括:
标识符:
惟一标识每一个测试用例
测试项:
准确的描述所需要测试的项及其特征
测试环境要求:
表征执行该测试用例需要的测试环境
输入标准:
执行测试用例的输入需求(这些输入可能包括数据、文件或者操作)
输出标准:
按照指定的环境和输入标准得到的期望输出结果
测试用例之间的关联:
标识该测试用例与其它的测试(或其它测试用例)之间的依赖关系。
2.8软件测试的工作范畴
☐软件测试工作的组织与管理:
制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。
☐测试工作的实施:
编制符合标准的测试文档,搭建测试环境,开发测试脚本、与开发组织协作实现各阶段的测试活动
优秀测试工程师应该具备的素质,内容详见P33-P34.
第三章:
软件测试方法
白盒测试的概念:
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
掌握:
白盒测试方法的分类:
语句覆盖,语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次
判定覆盖,判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足
条件覆盖,条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。
路径覆盖,
判定-条件覆盖,
条件组合覆盖,
基本路径测试法
黑盒测试的概念:
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
黒盒测试方法的分类:
等价类划分法,分为有效等价类和无效等价类。
有效等价类是有意义的、合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。
无效等价类与有效等价类的意义相反
边界值分析法,
确定边界情况(输入或输出等价类的边界)
选取正好等于、刚刚大于或刚刚小于边界值作为测试数据
因果图法,
判定表法:
注意里面的条件桩、动作桩、条件项、动作项。
用条件覆盖法设计白盒测试用例
用等价类和边界值设计黒盒测试用例
以上两种设计测试用例的方法一定要掌握
第四章:
软件测试过程
4.1单元测试
单元测试:
单元测试是对软件基本组成单元(如函数、类的方法等)进行的测试。
定义:
单元测试是对软件基本组成单元进行的测试。
时机:
一般在代码完成后由开发人员完成,QA人员辅助.
概念:
模块,组件,单元
单元测试的测试人员:
程序人员和开发人员
单元测试的测试方法,
检查每一条独立执行路径的测试。
保证每条语句被至少执行一次。
检查局部数据结构完整性
检查模块接口是否正确
检查临界数据处理的正确性
预见、预设的各种出错处理是否正确有效
4.2集成测试和系统测试
集成测试:
集成测试是将软件集成起来,对模块之间的接口进行测试。
顾名思义,集成测试是将软件集成起来后进行测试。
集成测试又叫子系统测试、组装测试、部件测试等。
模块内的集成,主要是测试模块内各个接口间的交互集成关系;
子系统内的集成,测试子系统内各个模块间的交互关系;
系统内的集成,测试系统内各个子系统和模块间的集成关系。
集成测试的测试人员:
有经验的测试人员和开发者共同
集成测试的集成模式和经典代表
非渐增式测试模式:
先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。
渐增式测试模式:
把下一个要测试的模块同已经测试好的模块结合进来进行测试,测试完后再把下一个应该测试的模块结合起来测试。
渐增式测试又可以根据每次添加模块的路线分为自顶向下测试、自底向上测试和混合测试等方式。
一定要注意自顶向下和自底向上的具体试用环境
4.3系统测试的概念
系统测试(特征测试):
检验系统所有元素之间协作是否合适,整个系统的性能和功能是否达到要求。
其测试内容包括:
功能测试,非公能测试与回归测试等。
系统测试的测试人员,
系统测试的内容:
功能测试,回归测试,非功能性测试;
非功能性测试(特征测试)包含哪些内容:
性能测试压力测试容量测试安全性测试可靠性测试容错性测试
4.4验收测试
验收测试:
检查软件是否符合合同要求,包括需求规格说明、设计规格说明和用户手册等。
其测试内容包括:
易用性测试(用户界面和可用性测试)、
兼容性测试(软件兼容性测试、数据共享兼容性测试、硬件兼容性测试)、
安装测试和可恢复性测试、文档测试等(安装与卸载测试、可恢复性测试)
验收测试的内容(正确性、完备性、易理解性、一致性)
验收测试的测试人员(用户和测试部门共同完成)
验收测试的测试依据;α,β测试
第五章软件测试自动化
5.1测试自动化的内涵
自动化测试(automatedtest)是相对手工测试而存在的一个概念,由手工逐个地运行测试用例的操作过程被测试工具自动执行的过程所代替。
测试工具的使用是自动化测试的主要特征
测试自动化指“一切可以由计算机系统自动完成的测试任务都已经由计算机系统或软件工具、程序来承担并自动执行”
5.2测试自动化实现的原理
代码分析:
类似于高级编译系统,在工具中定义类/对象/函数/变量等定义规则、语法规则等,在分析时对代码进行语法扫描,找出不符合编码规范的地方。
对象识别(Windows对象、Mac对象、WebDOM对象)
脚本技术:
线性脚本结构化脚本数据驱动脚本、关键字驱动脚本
自动比较技术:
静态比较和动态比较,简单比较和复杂比较,敏感性测试比较和健壮性测试比较,比较过滤器
测试自动化系统的构成:
测试工具的分类、测试工具的选择、测试自动化普遍存在的问题、自动化测试的引入和应用
5.3自动化测试的引入和应用
找准测试自动化的切入点
把测试开发纳入整个软件开发体系
测试自动化依赖测试流程和测试用例
软件测试自动化的投入较大
进行资源的合理调度
5.4功能测试工具:
QTP
5.5性能测试工具:
Loadrunner
第六章组建测试团队
6.1测试团队的构成
a.QA/测试经理:
人员管理,资源调配、测试方法改进等;
b.实验室管理人员:
设置、配置和维护实验室的测试环境
c.内审员:
审查流程,建立测试模板,跟踪缺陷测试报告的质量等;
d.测试组长:
负责项目的管理、测试计划、测试用例、任务安排等;
e.测试设计人员/资深测试工程师:
产品设计规格说明书的审查、测试用例的设计、技术难题的解决、培训和指导、实际测试任务的执行;
f.一般(初级)测试工程师:
执行测试用例和相关的测试任务。
6.2优秀测试工程师应具备的素质
a)高度的责任感
b)非常好的沟通能力、幽默感
c)技术能力、自信心、耐心
d)怀疑一切的精神、勤奋精神
e)洞察力、适度的好奇心
f)反向思维和发散思维能力、
g)自我学习能力、创新能力等
第七章设计和维护测试用例
掌握:
测试用例的设计原则:
☐尽量避免含糊的测试用例
☐尽量将具有相类似功能的测试用例抽象并归类
☐尽量避免冗长和复杂的测试用例
用例三要素:
步骤,数据和预期结果。
测试用例:
测试用例可以独立进行测试执行的最小单元
测试内容的一系列情景和每个情景中必须依靠输入和输出,而对软件的正确性进行判断的测试文档,称为测试用例
测试用例就是将软件测试的行为活动转化为规范化的文档
等价类划分方法:
一.方法简介
1.定义
是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
该方法是一种重要的,常用的黑盒测试用例设计方法。
2.划分等价类:
等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:
测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分可有两种不同的情况:
有效等价类和无效等价类。
1)有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类
与有效等价类的定义恰巧相反。
无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。
因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准:
1)完备测试、避免冗余;
2)划分等价类重要的是:
集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
3)并是整个集合:
完备性;
4)子集互不相交:
保证一种形式的无冗余性;
5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。
4.划分等价类的方法
1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
如:
输入值是学生成绩,范围是0~100;
2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;
3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
例:
输入条件说明学历可为:
专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
5.设计测试用例
在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:
有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:
1)为每一个等价类规定一个唯一的编号;
2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
二.实战演习
1.某程序规定:
"输入三个整数a、b、c分别作为三边的边长构成三角形。
通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算…"。
用等价类划分方法为该程序进行测试用例设计。
(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。
)
分析题目中给出和隐含的对输入条件的要求:
(1)整数
(2)三个数 (3)非零数 (4)正数
(5)两边之和大于第三边 (6)等腰 (7)等边
如果a、b、c满足条件
(1)~(4),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为"非三角形"。
2)如果三条边相等即满足条件(7),则程序输出为"等边三角形"。
3)如果只有两条边相等、即满足条件(6),则程序输出为"等腰三角形"。
4)如果三条边都不相等,则程序输出为"一般三角形"。
列出等价类表并编号
覆盖有效等价类的测试用例:
a b c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 方法 技术 重点 教材