软件测试策略与过程答疑解读Word文档下载推荐.docx
《软件测试策略与过程答疑解读Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软件测试策略与过程答疑解读Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
这一特性称为单调性。
(3)即使对软件所有成分都进行了充分的测试,也并不表明整
个软件的测试已经充分了。
这一特性称为非复合性。
(4)即使对软件系统整体的测试是充分的,也并不意味着软件
系统中各个成分都已经充分地得到了测试。
这个特性称为非分解性。
(5)软件测试的充分性应该与软件的需求和软件的实现均相关。
(6)软件越复杂,需要的测试数据就越多。
这一特性称为复杂
性。
(7)测试得越多,进一步测试所能得到的充分性增长就越少。
这一特性称为回报递减率。
2.3
什么是静态测试?
静态测试包括哪些内容?
静态测试是指不利用计算机运行被测程序,也就是说,计
算机并不真正运行被测试的程序,而是通过其他手段达到检测的目
的。
静态测试是对被测程序进行特性分析的一些方法的总称。
静态测试包括代码检查、静态结构分析、代码质量度量等。
其
中:
代码检查又包括代码走查、桌面检查、代码审查等,主要检查
代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表
达的正确性,代码结构的合理性等方面;
静态结构分析主要是以图形的方式表现程序的内部结构,如函
数调用关系图、函数内部控制流图;
代码质量度量则是以目前已有
的几种度量参数(Line
复杂度、Halstead
复杂度、McCabe
复杂度)
来衡量软件的质量。
2.4
静态测试可以完成哪些工作?
(1)发现下列程序的错误:
错用局部变量和全局变量;
未定义的变量、不匹配的参数;
不适当的循环嵌套或分支嵌套、死
循环、不允许的递归;
调用不存在的子程序,遗漏标号或代码。
(2)找出以下问题的根源:
从未使用过的变量;
不会执行到的
代码、从未使用过的标号;
潜在的死循环。
(3)提供程序缺陷的间接信息:
所用变量和常量的交叉应用表;
是否违背编码规则;
标识符的使用方法和过程的调用层次。
(4)为进一步查找做好准备。
(5)选择测试用例。
(6)进行符号测试。
2.5
什么是动态测试?
动态测试包括哪些内容?
动态测试是指计算机必须真正运行被测试的程序,通过输
入测试用例,对其运行情况即输入与输出的对应关系进行分析,达
到检测的目的。
动态测试包括功能确认与接口测试、覆盖率分析、
性能分析、内存分析等。
2.6
简述黑盒测试法和白盒测试法。
若测试规划是基于产品的功能,目的是检查程序各个功能
是否能够实现,并检查其中的功能错误,则这种测试方法称为黑盒
测试方法。
黑盒测试又称为功能测试、数据驱动测试和基于规格说
明的测试。
它从用户观点出发的测试。
用这种方法进行测试时,把
被测试程序当作一个黑盒,在不考虑程序内部结构的内部特性、测
项目
黑盒测试法
白盒测试法
规划方面
功能的测试
结构的测试
优点方面
能确保从用户的角度出发进行测试
能对程序内部的特定部位进
行覆盖测试
缺点方面
①无法测试程序内部特定部位
②当规格说明有误,则不能发现问题
①无法检查程序的外部特性
②无法对未实现规格说明的
程序内部欠缺部分进行测试
应用范围
边界分析法
等价类划分法
决策表测试
语句覆盖
判断覆盖
条件覆盖
判断/条件覆盖
路径覆盖
循环覆盖
模块接口测试
2.7
比较黑盒测试法和白盒测试法。
试者只知道该程序输入和输出之间的关系或程序功能的情况下,依
靠能够反映这一关系和程序功能需求规格的说明书,来确定测试用
例和推断测试结果的正确性。
若测试规划基于产品的内部结构进行测试,检查内部操作是否
按规定执行,软件各个部分功能是否得到充分使用,则这种测试方
法称为白盒测试方法。
白盒测试又称为结构测试、逻辑驱动测试或
基于程序的测试。
它依赖于对程序细节的严密的检验。
针对特定条
件和循环集设计测试用例,对软件的逻辑路径进行测试。
在程序的
不同点检验程序的状态,来进行判定其实际情况是否和预期的状态
相一致。
黑盒测试法和白盒测试法是从完全不同的起点出发,并且这两
个出发点在某种程度上是完全对立的,反映了测试思路的两方面情
况。
这两类方法在长期的软
件测试实践过程中被证明是有效和实用
的方法。
2.8
简述软件测试过程。
软件测试过程按测试的先后次序可分为:
单元测试、集成
测试、确认(有效性)测试、系统测试和验收(用户)测试共
5
个
步骤。
(1)单元测试:
针对每个单元的测试,以确保每个模块能正常
工作为目标。
(2)集成测试:
对已测试过的模块进行组装,进行集成测试。
这项测试的目的在于检验与软件设计相关的程序结构问题。
(3)确认测试:
在完成集成测试后,对开发工作初期制定的确
认准则进行检验。
它是检验所开发的软件能否满足所有功能和性能
需求的最后手段。
(4)系统测试:
在完成确认测试后,应属于合格软件产品。
但
为了检验它能否与系统的其他部分(比如硬件、数据库及操作人员)
协调工作,还需要进行系统测试。
(5)验收测试:
检验软件产品质量的最后一道工序是验收测试。
验收测试主要突出用户的作用,同时软件开发人员也应有一定程度
的参与。
2.9
单元测试的主要任务是什么?
单元测试针对每个程序的模块,主要测试
个方面的问题
——模块接口、局部数据结构、边界条件、独立的路径和错误处理。
(1)模块接口测试:
检查进出程序单元的数据流是否正确,对
模块接口数据流的测试必须在任何其他测试之前进行。
(2)局部数据结构测试:
测试其内部的数据能否保持完整性,
包括内部数据的内容、形式及相互关系不发生错误。
(3)路径测试:
检查是否存在由于计算错误、不正确的判定或
是不正常的控制流而产生的错误。
(4)边界条件测试:
是单元测试的最后一步,必须采用边界值
分析方法来设计测试用例,测试为限制数据处理而设置的边界处,
看模块是否能够正常工作。
(5)出错处理测试:
测试模块在工作中发生了错误时,其中的
出错处理设施是否有效。
2.10
简单说明单元测试中的辅助测试模块。
在对每个模块进行单元测试时,不能完全忽视它们和周围
模块的相互关系。
为模拟这一联系,在进行单元测试时,需要设置
一些辅助测试模块。
辅助测试模块有两种:
一种是驱动模块
(Drive),用来模拟被测试模块的上一级模块,相当于被测模块的
主程序。
驱动模块在单元测试中接收数据,把相关的数据传送给被
测试的模块,启动被测模块,并打印出相应的结果。
另一种是桩模
块(Stub),用来模拟被测试模块工作过程中所调用的模块。
桩模
块由被测模块调用,它们一般只进行很少的数据处理,例如打印入
口和返回,以便检验被测模块与其下级模的接口。
被测模块、驱动
模块和桩模块共同构成了一个如下图所示的单元测试的测试环境:
2.11
为什么在单元测试之后要进行集成测试?
如何组织集成测
试?
实践表明,软件的一些模块能够单独地工作,但并不能保
证组装连接之后也肯定能正常工作。
程序在某些局部反映不出来的
问题,在全局情况下有可能暴露出来,影响软件功能的实现。
可能
的原因有:
(1)模块相互调用时引入了新的问题;
(2)几个子功
能组合后不能实现预计的主功能;
(3)计算的误差累计达到了不
能接受的程度;
(4)全局数据结构出现错误。
因此,在单元模块完
成单元测试后,需要按照设计的程序结构图进行组合、进行集成测
试,检测与接口有关的各种故障。
组织集成测试的一种方法是先独立的测试每个模块,然后再将
它们组合成一个整体进行测试;
另一种方法是先把下一个待测试模
块组合到已经测试过的那些模块上去,再进行测试,逐步完成集成
测试。
由此产生了两种集成测试方法:
非增量式测试和增量式测试。
2.12
简述集成测试中的非增量式测试和增量式测试方法。
非增量式测试方法是采用一步到位的方法来构造测试:
对
所有模块进行个别的单元测试后,按照程序结构图将各模块连接起
来,把连接后的程序当作一个整体进行测试。
增量式测试的集成是逐步实现的:
逐次将未曾集成测试的模块
和已经集成测试的模块(或子系统)结合成程序包,再将这些模块
集成为较大系统,在集成的过程中边连接边测试,以发现连接过程
中产生的问题。
按照不同的实施次序,增量式测试又可以分为自顶
向下增量式测试和自底向上增量式测试:
(1)自顶向下增量式测试表示逐步集成和逐步测试是按照结构
图自上而下进行的,即模块集成的顺序是首先集成主控模块(主程
序),然后依照控制层次结构向下进行集成。
从属于主控模块的按深
度优先方式(纵向)或者广度优先方式(横向)集成到结构中去。
其中,深度优先的集成首先集成的是在结构中的一个主控路径下的
所有模块,主控路径的选择是任意的;
广度优先的集成首先沿着水
平方向,把每一层中所有直接隶属于上一层的模块集成起来,直到
底层。
(2)自底向上增量式测试表示逐步集成和逐步测试的工作是按
结构图自下而上进行的,即从程序模块结构的最底层模块开始集成
和测试。
由于是从最底层开始集成,对于一个给定层次的模块,它
的子模块(包括子模块的所有下属模块)已经集成并测试完成,所
以不再需要使用桩模块进行辅助测试。
在模块的测试过程中需要从
子模块得到的信息可以直接运行子模块得到。
图见
P49
图
所示
2.13
比较几种不同的集成测试方法。
(1)非增量式集成测试与增量式集成测试的比较:
非增量式测试的方法是先分散测试,然后集中起来再一次完成
集成测试。
假如在模块的接口处存在错误,只会在最后的集成测试
时一下子暴露出来。
与此相反,
增量式测试是逐步集成和逐步测试
的方法,把可能出现的差错分散暴露出来,便于找出问题和修改。
而且一些模块在逐步集成的测试中,得到了较多次的考验,因此,
可能会取得较好的测试效果。
总之,增量式测试要比非增量式测试
具有一定的优越性。
(2)自顶向下与自底向上增量式测试的比较:
自顶向下增量式测试的主要优点在于它可以自然的做到逐步求
精,一开始就能让测试者看到系统的框架。
它的主要缺点是需要提
供桩模块,并且在输入/输出模块接入系统以前,在桩模块中表示测
试数据有一定困难。
同时,观察和解释测试的输出常常也比较困难。
自底向上增量式测试的优点在于,由于驱动模块模拟了所有调用参
数,即使数据流并未构成有向的非环状图,生成测试数据也无困难。
如果关键的模块是在结构图的底部,那么自底向上测试具有优越性。
它的主要缺点在于,直到最后一个模块被加进去之后才能看到整个
程序(系统)的框架。
2.14