软件测试基本理论与技术教材Word文件下载.docx
《软件测试基本理论与技术教材Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件测试基本理论与技术教材Word文件下载.docx(132页珍藏版)》请在冰豆网上搜索。
5.14GUI测试60
5.15验收测试63
5.16回归测试65
6.17系统测试工具及其应用66
第6章软件评审68
6.1软件评审概述68
6.2需求评审68
6.3概要设计评审69
6.4详细设计评审69
6.5数据库设计评审69
第7章测试管理71
7.1建立测试管理体系71
7.2测试管理的基本内容71
7.3测试管理的原则74
7.4测试管理的实践74
7.5常用的测试管理工具76
第二篇Linux操作系统78
1.1安装与登陆命令79
1.2文件处理命令85
1.3系统管理命令92
1.4网络操作命令100
第三篇SQL语言基础106
1.1数据定义语言(DDL)107
1.2数据操作语言DML107
1.3数据控制语言DCL107
1.4数据库事务控制107
第一篇软件测试基本理论与技术
第1章软件测试概述
随着计算机技术的飞速发展,计算机系统的规模和复杂性急剧增加,其软件开发成本以及由于软件故障而造成的经济损失也正在增加,软件质量问题已成为人们共同关注的焦点。
软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
随着软件系统规模和复杂性的增加,进行专业化高效软件测试的要求越来越严格,软件测试职业的价值逐步得到了认可,软件测试技术已作为一门新兴产业而快速发展起来了。
1.1计算机系统的软件可靠性问题
随着对计算机需求和依赖的与日俱增,计算机系统的规模和复杂性急剧增加,使得计算机软件的数量以惊人的速度急剧膨胀。
与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。
由于计算机硬件技术的进步,元器件可靠性的提高,硬件设计和验证技术的成熟,硬件故障相对显得次要了,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。
1.2软件测试的目的和意义
定义1:
1983年IEEE(国际电子电气工程师协会)提出的软件工程标准术语中给软件测试下的定义是:
“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。
定义2:
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去执行程序,以发现软件故障的过程。
该定义强调寻找故障是测试的目的。
定义3:
软件测试是一种软件质量保证活动,其动机是通过一些经济有效的方法,发现软件中存在的缺陷,从而保证软件质量。
1.3软件测试过程
1.单元测试
目的:
检测程序模块中有无故障存在
对象:
软件设计的最小单位,与程序设计和编程实现关系密切
2.集成测试
发现与接口有关的模块之间的问题
方法:
非增式集成测试法和增式集成测试法
(1)非增式集成测试法
对每一个模块进行单元测试,在此基础上按程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试
(2)增式集成测试法
不断地把待测模块连接到已测模块集(或其子集)上,对待测模块进行测试,直到最后一个模块测试完毕
3.确认测试
目的:
对软件产品进行评估以确定其是否满足软件需求的过程
4.系统测试
针对系统中各个组成部分进行的综合性检验,证明系统的性能测试人员要求:
(1)系统开发人员不能进行系统测试。
(2)系统开发组织不能负责系统测试。
5.验收测试
向用户表明所开发的软件系统能够像用户所预定的那样工作主要任务:
(1)明确规定验收测试通过的标准;
(2)确定验收测试方法;
(3)确定验收测试的组织和可利用的资源;
(4)确定测试结果的分析方法;
(5)制定验收测试计划并进行评审;
(6)设计验收测试的测试用例;
(7)审查验收测试的准备工作;
(8)执行验收测试;
(9)分析测试结果,决定是否通过验收。
1.4软件测试与软件开发的关系
1.4.1软件开发过程
正规的软件开发过程一般包括六个阶段,即:
第一阶段计划
第二阶段需求分析
第三阶段设计
第四阶段程序编写
第五阶段测试
第六阶段运行和/维护
这六个阶段构成了软件的生存周期。
1.4.2软件测试在软件开发中的作用
项目规划阶段:
负责整个测试阶段的监控。
需求分析阶段:
确定测试需求分析,制定系统测试计划。
测试需求分析是指产品生存周期中测试所需的资源、配置、各阶段评审通过的标准等。
概要设计和详细设计阶段:
制定集成测试计划和单元测试计划。
编码阶段:
开发相应的测试代码或测试脚本。
测试阶段:
实施测试,并提交相应的测试报告。
1.4.3软件测试过程模型
软件测试过程V模型
特点:
非常明确地表明了测试的不同级别,清晰地展示了软件测试与开发之间的关系
软件测试过程W模型
1.4.4软件测试环境的搭建
测试环境是指用来运行软件的环境。
测试环境=硬件+软件+网络+数据准备+测试工具
硬件环境:
主要是指PC机、笔记本电脑、服务器、各种PDA终端等。
例如现要测试微软的word2003这一款软件,那么是在PC机上测试还是在笔记本电脑上测试?
如果在PC机上测试,那么CPU是奔腾2.4G,还是赛扬1.7G?
内存是DDR512M,还是SD128M?
不同的机器类型,不同的机器配置,必然会导致不同的反应速度,因此测试一款软件时一定要考虑硬件配置。
软件环境:
主要是软件运行的操作系统。
比如word2003是在Window2003下检测,还是在WindowXP下检测,这里可能会有兼容性的问题。
网络环境:
主要指的是C/S结构还是B/S结构。
例如要测试微软的outlook2003这一款软件,那么是在局域网里测,还是在互联网里测?
如果在局域网中测,那么是在10M的局域网里测,还是在100M的局域网里测?
不同的网络类型,不同的传输速度,必然会导致不同的收发速度,因此测试一款软件时也不能忽视网络的因素。
数据准备:
主要指的是测试数据的准备。
测试数据的准备应考虑数据量和真实性,即尽可能获取大量的真实的数据,包括正确和错误的数据。
当无法取得真实数据时应尽可能模拟出大量的数据。
测试工具:
目前市场上的测试工具很多,可分为静态测试工具、动态测试工具、黑盒测试工具、白盒测试工具、测试执行评估工具、测试管理工具等,因此,对测试工具的选择是一个比较重要的问题,应根据测试需求和实际条件来选择已有的测试工具,或购买、自行开发相应的测试工具。
搭建软件测试环境还应注意以下几点:
尽量模拟用户的真实使用环境;
测试环境中尽量不要安装其它与被测软件无关的软件,但最好安装杀毒软件,以确保系统没有病毒;
测试环境应与开发环境独立。
1.5软件测试的发展历程和现状
发展历程:
上世纪50年代,英国著名的计算机科学家图灵就给出了软件测试的原始定义:
测试是程序正确性证明的一种极端实验形式。
直到上世纪70年代以后,随着计算机硬件技术的进步与成熟,软件在整个系统中所占的地位越来越重要,软件规模和复杂性大大增加。
软件可靠性面临前所未有的危机,给软件测试工作带来了挑战,测试的意义逐渐被人们认识,软件测试的研究开始受到重视,是软件测试技术发展最活跃的时期。
1975年,Goodenough首次提出了软件测试理论,从而把软件测试这一实践性很强的学科提高到理论的高度。
1982年,美国北卡来纳大学召开了首次软件测试技术会议,是软件测试与软件质量研究人员和开发人员的第一次聚会
现状:
就目前软件工程发展的状况而言,软件测试仍然是较为薄弱的一个方面。
不仅测试理论,已有的测试方法也不能满足当前软件开发的实际需求。
尤其是进入20世纪90年代后,计算机技术日趋成熟,软件应用范围逐步扩大,软件规模和复杂性急剧增加,与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。
1.6我国软件测试产业现状
随着软件外包行业的逐渐兴起和人们对软件质量保障意识的加强,中国软件企业已开始认识到,软件测试的广度和深度决定了中国软件企业的前途命运。
以占中国软件外包总量近85%的对日软件外包来说,业务内容基本都针对测试环节。
软件外包中对测试环节的强化,直接导致了软件外包企业对测试人才的大量需求。
近年来,几乎所有的软件企业均存在不同程度的测试人才缺口,软件测试工程师已成为了亟待补充的关键技术工种之一。
IBM、XX、华为、惠普、盛大网络、联想集团等国内外大型IT企业均表现出对成熟软件测试人才的期盼,而微软、三星、西门子、思科、华为3COM等多家国内外IT巨头则相继在全国各大高校招兵买马,并把软件测试人才的招聘放在了突出的位置。
国内软件测试人才紧缺的现状已经凸现出来。
1.7软件测试工具
白盒测试工具
(1)静态测试工具
职能:
主要集中在需求文档、设计文档以及程序结构上,可以进行类型分析、接口分析、输入输出规格说明分析等。
工具:
McCabe&
Associates公司开发的McCabeVisualQualityToolSet分析工具;
ViewLog公司开发的LogiScope分析工具;
SoftwareResearch公司开发的TestWork/Advisor分析工具及SoftwareEmancipation公司开发的Discover分析工具,北京邮电大学开发的DTS缺陷测试工具等。
(2)动态测试工具
功能确认与接口测试、覆盖率分析、性能分析、内存分析等
Compuware公司开发的DevPartner软件、Rational公司研制的Purify系列等。
黑盒测试工具
Rational公司的TeamTest,Compuware公司的QACenter。
分类:
功能测试工具
性能测试工具
测试设计和开发工具
测试设计:
说明测试被测软件特征或特征组合的方法,确定并选择相关测试用例的过程。
测试开发:
将测试设计转换成具体的测试用例的过程。
工具类型:
测试数据生成器
代表工具:
Bender&
Associates公司提供的功能测试数据生成工具SoftTest;
Parasoft公司提供的C/C++单元测试工具ParasoftC++test等。
基于需求的测试设计工具
捕获/回放工具和覆盖分析工具
测试执行和评估工具
测试执行和评估:
执行测试用例并对结果进行评估的过程,包括选择用于执行的测试用例、设置测试环境、运行所选择的测试、记录测试执行活动、分析潜在的软件故障并测量测试工作的有效性。
工具类型
捕获/回放
覆盖分析
存储器测试
测试管理工具
测试管理:
帮助完成测试计划,跟踪测试运行结果等。
用途:
测试用例管理
缺陷跟踪管理
配置管理
Rational公司的TestManager、Compureware公司的TrackRecord等软件。
目前市场上主流的测试工具
以MI,Rational和Compuware公司开发的软件测试工具为主导
MI公司产品
LoadRunner
WinRunner
TestDirector
QT
IBMRational公司产品
RationalRobot(功能/性能测试工具)
RationalPurify(白盒测试工具)
RationalTestmanager(测试管理工具)
RationalClearQuest(缺陷/变更管理工具)
Compuware公司产品
自动黑盒测试工具QACenter
自动白盒测试工具DevPartner
Vantage应用级网络性能监控管理软件
习题1
什么是软件测试?
软件测试的目的和意义是什么?
软件测试与软件开发有何关系?
简述软件测试过程。
是否有必要在软件开发的各个阶段进行测试?
若是,测试在软件开发各阶段的作用分别是什么?
简述软件测试过程V模型和软件测试过程W模型的主要区别。
搭建软件测试环境涉及哪几方面的内容?
请概括静态测试与动态测试的不同点。
系统测试和验收测试有何不同?
我国软件测试的现状如何?
你曾用过哪些测试工具?
软件测试工具对软件测试有何影响?
第2章黑盒测试
黑盒测试是一种常用的软件测试方法,它将被测软件看作一个打不开的黑盒,主要根据功能需求设计测试用例,进行测试。
本章主要介绍几种常用的黑盒测试方法和黑盒测试工具,并通过实例介绍各种方法的运用。
黑盒测试是从一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试。
其基本观点是:
任何程序都可以看作是从输入定义域到输出值域的映射,这种观点将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。
因无法看到盒子中的内容,所以不知道软件是如何实现的,也不关心黑盒里面的结构,只关心软件的输入数据和输出结果。
2.1黑盒测试的基本概念
黑盒测试是从用户观点出发的测试,其目的是尽可能发现软件的外部行为错误。
在已知软件产品功能的基础上,
检测软件功能能否按照需求规格说明书的规定正常工作,是否有功能遗漏;
检测是否有人机交互错误,是否有数据结构和外部数据库访问错误,是否能恰当地接收数据并保持外部信息(如数据库或文件)等的完整性;
检测行为、性能等特性是否满足要求等;
检测程序初始化和终止方面的错误等。
黑盒测试着眼于软件的外部特征,通过上述方面的检测,确定软件所实现的功能是否按照软件规格说明书的预期要求正常工作.
两个显著的优点:
①黑盒测试与软件具体实现无关,所以如果软件实现发生了变化,测试用例仍然可以使用;
②设计黑盒测试用例可以和软件实现同时进行,因此可以压缩项目总的开发时间。
穷举输入测试是不现实的。
这就需要我们认真研究测试方法,以便能开发出尽可能少的测试用例,发现尽可能多的软件故障。
常用的黑盒测试方法有等价类划分、边界值分析、决策表测试等,每种方法各有所长,我们应针对软件开发项目的具体特点,选择合适的测试方法,有效地解决软件开发中的测试问题。
2.2等价类划分
等价类划分法是一种典型的黑盒测试方法,它完全不考虑程序的内部结构,只根据程序规格说明书对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。
2.2.1等价类划分方法
所谓等价类是指输入域的某个互不相交的子集合,所有等价类的并便是整个输入域。
1.划分等价类
(1)有效等价类:
检验程序是否实现了规格说明预先规定的功能和性能。
(2)无效等价类:
检查软件功能和性能的实现是否有不符合规格说明要求的地方。
2.常用的等价类划分原则
(1)按区间划分
(2)按数值划分
(3)按数值集合划分
(4)按限制条件或规则划分
(5)细分等价类
在确立了等价类之后,可按表2.1的形式列出所有划分出的等价类表:
表2.1等价类表
输入条件
有效等价类
无效等价类
同样,也可按照输出条件,将输出域划分为若干个等价类。
3.等价类划分测试用例设计
在设计测试用例时应同时考虑有效等价类和无效等价类测试用例的设计。
根据等价类表设计测试用例,具体步骤如下:
(1)为每个等价类规定一个唯一的编号。
(2)设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到测试用例覆盖了所有的有效等价类。
(3)设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。
重复这一步,直至测试用例覆盖了所有的无效等价类。
2.2.2等价类划分法的测试运用
1.三角形问题的等价类测试
【例2.1】三角形问题是软件测试文献中使用最广泛的一个例子。
输入三个整数a、b和c分别作为三角形的3条边,通过程序判断由这3条边构成的三角形类型是:
等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角形)。
三角形问题可以更详细地描述为:
输入3个整数a、b和c分别作为三角形的三条边,要求a、b和c必须满足以下条件:
Con1.1≤a≤10Con2.1≤b≤100
Con3.1≤c≤100Con4.a<
b+c
Con5.b<
a+cCon6.c<
a+b
2.保险公司人寿保险保费计算程序的等价类测试
【例2.2】某保险公司人寿保险的保费计算方式为:
保费=投保额×
保险费率
其中,保险费率根据年龄、性别、婚姻状况和抚养人数的不同而有所不同,体现在不同年龄、性别、婚姻状况和抚养人数,点数设定不同,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;
而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则见表2.5。
年龄
性别
婚姻状况
抚养人数
20-39
40-59
其它
M
F
已婚
未婚
1人扣0.5点,
最多扣3点
6点
4点
2点
3点
5点
分析程序规格说明中给出和隐含的对输入数据的要求,可以得出:
①年龄:
一位或两位非零整数,取值的有效范围为1-99。
②性别:
一位英文字符,只能取‘M’或’F’值。
③婚姻:
字符,只能取‘已婚’或‘未婚’。
④抚养人数:
空白或字符‘无’或一位非零整数(1-9)
⑤点数:
一位或两位非零整数,取值范围为8-19
通过对规格说明输入数据的取值分析,可以得出保险公司人寿保险保费计算程序的等价类。
等价类测试存在两个问题:
一是规格说明往往没有定义无效测试用例的期望输出应该是什么样的。
因此,测试人员需要花费大量时间来定义这些测试用例的期望输出。
二是强类型语言没有必要考虑无效输入。
传统等价类测试是诸如FORTRAN和COBOL这样的语言占统治地位年代的产物,那时这种无效输入的故障很常见。
事实上,正是由于经常出现这种错误,才促使人们使用强类型语言。
2.3边界值分析法
大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部。
为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。
因此边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。
2.3.1边界值分析法
1.边界条件
边界是一些特殊情况。
程序在处理大量中间数值时都是正确,但是在边界处可能出现错误。
边界条件就是软件计划的操作界限所在的边缘条件。
一些可能与边界有关的数据类型有:
数值,速度,字符,地址,位置,尺寸,数量等。
同时,考虑这些数据类型的下述特征:
第一个/最后一个,最小值/最大值,开始/完成,超过/在内,空/满,最短/最长,最慢/最快,最早/最迟,最高/最低,相邻/最远等。
其实边界值和等价类密切相关,输入等价类和输出等价类的边界是要着重测试的边界情况。
在等价类的划分过程中产生了许多等价类边界。
边界是最容易出错的地方,所以,从等价类中选取测试数据时应该关注边界值。
在等价类划分基础上进行边界值分析测试的基本思想是,选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。
2.边界值分析测试
这里讨论一个有两个变量x1和x2的程序P。
假设输入变量x1和x2在下列范围内取值:
a≤x1≤b,c≤x2≤d
边界值分析利用输入变量的最小值(min),稍大于最小值(min+),域内任意值(nom),稍小于最大值(max-),最大值(max)来设计测试用例。
即通过使所有变量取正常值,只使一个变量分别去最小值,略高于最小值、略低于最大值和最大值。
对于一个n变量的程序,边界值分析测试会产生4n+1个测试用例。
3.健壮性边界值测试
健壮性测试是边界值分析的一种扩展。
变量除了取min,min+,nom,max-,max五个边界值外,还要考虑采用一个略超过最大值(max+)以及一个略小于最小值(min-)的取值,看看超过极限值时系统会出现什么情况。
健壮性边界值测试将产生6n+1个测试用例.
健壮性测试最有意义的部分不是输人,而是预期的输出,观察例外情况如何处理。
2.3.2边界值分析法的测试运用
1.三角形问题的边界值分析测试用例设计
边界值分析测试用例
测试用例
a
b
c
预期输出
Test1
Test2
Test3
Test4
Test5
60
50
1
2
99
100
等腰三角形
等边三角形
非三角形
Test6
Test7
Test8
Test9
Test10
Test11
Test12
Test13
2.加法器边界值测试用例设计
【例2.4】加法器程序计算两个1~100之间整数的和。
对于加法器程序,根据输入要求可将输入空间划分为三个等价类,即1个有效等价类(1~100之间),两个无效等价类(<
1,>
100)。
但这种等价类划分不是很完善,我们只考虑了输入数据的取值范围,而没有考虑输入数据的类型,我们认为输入应为整数,但用户输入什么都有可能。
为此,我们可综合考虑输入数据的取值范围和类型划分等价类,其结果如下表所示。
加法器等价类
编号