软件测试名词解释简答题以及综合题含答案.docx
《软件测试名词解释简答题以及综合题含答案.docx》由会员分享,可在线阅读,更多相关《软件测试名词解释简答题以及综合题含答案.docx(31页珍藏版)》请在冰豆网上搜索。
软件测试名词解释简答题以及综合题含答案
一、名词解释题
1、测试用例
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。
测试用例是执行的最小实体。
2、驱动模块
驱动模块是在进行单元测试时所设置的一种辅助测试模块,它用来模拟被测试模块的上一级模块,相当于被测模块的主程序。
驱动模块在单元测试中接收数据,把相关的数据传送给被测试的模块,启动被测模块,并打印出相应的结果。
3、回归测试
在集成测试策略的环境中,回归测试是对某些已经进行过的测试的某些子集再重新测试一遍,以保证上述改变不会传播无法预料的副作用或引发新的问题。
在更广的环境里,回归测试就是用来保证(由于测试或者其他原因的)改动不会带来不可预料的行为或者另外的错误。
4、静态测试
静态测试是指不利用计算机运行被测程序,也就是说,计算机并不真正运行被测试的程序,而是通过其他手段达到检测的目的。
静态测试是对被测程序进行特性分析的一些方法的总称。
5、桩模块
桩模块是在进行单元测试时所设置的一种辅助测试模块,它用来模拟被测试模块工作过程中所调用的模块。
桩模块由被测模块调用,它们一般只进行很少的数据处理,以便检验被测模块与其下级模块的接口。
6、强度测试
强度测试的目的是要检测非正常的情形,测试是想要破坏程序。
强度测试需要在反常规数据量、频率或资源的方式下运行系统,以检验系统能力的最高实际限度。
7、软件测试
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复查。
它是软件质量保证的关键步骤。
通常对软件测试的定义有两种描述:
定义1:
软件测试是为了发现错误而执行程序的过程。
定义2:
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例运行程序,以及发现错误的过程。
8、自动化测试
自动化测试得一般定义为:
各种测试活动的管理与实施,包括测试脚本的开发与执行,均使用一种自动化测试工具来验证测试的需求。
9、动态测试
动态测试的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例对其运行情况(即输入与输出的对应关系)进行分析,达到检测的目的。
10、独立路径
某一程序的独立路径是指从程序入口到程序出口的多次执行中,每次至少有一个语句集(包括运算、赋值、输入/输出或判断)是新的和未被重复的。
二、问答题
1、软件测试涉及哪些关键问题?
软件测试涉及的关键问题包括以下四个方面:
(1)测试由谁来执行。
通常的做法是开发者(机构或组织)负责完成自己代码的单元测试,而系统测试则由一些独立的测试人员或专门的测试机构进行。
(2)测试什么。
软件需求规格说明、概要设计规格说明、详细设计规格说明和源程序都是测试的对象。
(3)什么时候进行测试。
测试可以是一个与开发并行的过程,还可以是在开发完成某个阶段任务之后进行,或者是在开发结束后再进行测试。
(4)怎样进行测试。
根据软件的功能规范说明和程序实现,利用各种测试方法,生成有效的测试用例,对软件进行测试。
2、简述软件测试过程的流程。
软件测试过程按测试的先后次序可分为:
单元测试、集成测试、确认(有效性)测试、系统测试和验收(用户)测试共5项步骤。
(1)单元测试:
针对每个单元的测试,以确保每个模块能正常工作为目标。
(2)集成测试:
对已测试过的模块进行组装,进行集成测试。
这项测试的目的在于检验与软件设计相关的程序结构问题。
(3)确认测试:
在完成集成测试后,对开发工作初期制定的确认准则进行检验。
确认测试是检验所开发的软件能否满足所有功能和性能需求的最后手段。
(4)系统测试:
在完成确认测试后,应属于合格软件产品。
但为了检验它能否与系统的其他部分(比如硬件、数据库)协调工作,还需要进行系统测试。
(5)验收测试:
检验软件产品质量的最后一道工序是验收测试。
验收测试主要突出用户的作用,同时软件开发人员也应有一定程度的参与。
3、为什么说软件测试必须有预期结果?
没有预期结果的测试是不可理喻的。
软件缺陷是经过对比而得出来的。
这正如没有标准无法进行度量一样。
如果我们事先不知道或是无法肯定预期的结果,我们必然无法了解测试正确性。
这很容易然人感觉如盲人摸象一般,不少测试人员常常凭借自身的感觉去评判软件缺陷的发生,其结果往往是把似是而非的东西作为正确的结果来判断,因此常常出现误测的现象。
4、什么是测试用例?
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。
测试用例是执行的最小实体。
5、简述黑盒测试和白盒测试概念,并试分析两者的优点和缺点。
黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。
它从用户观点出发的测试。
用这种方法进行测试时,把被测试程序当作一个黑盒,在不考虑程序内部结构的内部特性、测试者只知道该程序输入和输出之间的关系或程序功能的情况下,依靠能够反映这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。
黑盒测试的优点有:
1)比较简单,不需要了解程序内部的代码及实现;
2)与软件的内部实现无关;
3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;
4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;
5)在做软件自动化测试时较为方便。
黑盒测试的缺点有:
1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;
2)自动化测试的复用性较低。
白盒测试:
若测试规划基于产品的内部结构来进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-boxTesting)方法。
白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试。
它依赖于对程序细节的严密的检验,针对特定条件和循环设计测试用例,对软件的逻辑路径进行测试。
在程序的不同点检验程序的状态,来进行判定其实际情况是否和预期的状态相一致。
软件的白盒测试一般用来分析程序的内部结构。
它的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。
白盒测试的缺点有:
(1)程序运行会有很多不同的路径,不可能测试所有的运行路径;
(2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;
(3)系统庞大时,测试开销会非常大。
6、采用白盒测试法设计测试用例时,常用的逻辑覆盖测试方法有哪几种?
请简单描述各种方法的目的。
目前比较常用的逻辑覆盖测试方法有:
语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
(1)语句覆盖的目的是选择足够多的测试用例,使程序中的每个可执行语句至少执行一次。
(2)判定覆盖的目的是通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值,也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次。
(3)条件覆盖的目的是设计若干测试用例,在执行被测程序以后,要使每个判定中每个条件的可能值至少满足一次。
(4)判定/条件覆盖的目的是设计足够的测试用例,使得判定中每个条件的所有取值(真/假)至少出现一次,并且每个判定本身的所有判定结果(真/假)也至少出现一次。
(5)组合覆盖的目的是通过执行足够的测试用例,使得每个判定中条件的各种可能都至少出现一次。
(6)路径覆盖的目的是设计足够多的测试用例,要求覆盖程序中所有可能的路径。
7、黑盒测试有哪几种方法?
请简单描述各种方法的特点。
黑盒测试的具体技术方法主要有边界值分析法、等价类划分法、因果图法、决策表测试法等。
(1)边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。
因此,边界值分析利用输入变量的最小值、略大于最小值、输入值域内的任意值、略小于最大值和最大值来设计测试用例。
(2)等价类划分法是把程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
经过类别的划分后,每一类的代表性数据在测试中的作用都等价于这一类中的其他值。
(3)因果图方法就是从程序规格说明书的描述中找出因(输入条件)和果(输出结果或程序状态的改变),将因果图转换为决策表,最后为决策表中的每一列设计一个测试用例。
这种方法考虑到了输入情况各种组合以及各个输入情况之间的相互制约关系。
(4)在所有的黑盒测试方法中,基于决策表的测试是最为严格、最具有逻辑性的测试方法。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:
针对不同逻辑条件的组合值,分别执行不同的操作。
决策表法很适合测试这类问题。
8、简析已学的各种黑盒测试方法的特点,并分析如何选择恰当的黑盒测试方法?
黑盒测试的具体技术方法主要有边界值分析法、等价类划分法、因果图法、决策表测试法等。
(1)边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。
因此,边界值分析利用输入变量的最小值、略大于最小值、输入值域内的任意值、略小于最大值和最大值来设计测试用例。
(2)等价类划分法是把程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
经过类别的划分后,每一类的代表性数据在测试中的作用都等价于这一类中的其他值。
(3)因果图方法就是从程序规格说明书的描述中找出因(输入条件)和果(输出结果或程序状态的改变),将因果图转换为决策表,最后为决策表中的每一列设计一个测试用例。
这种方法考虑到了输入情况各种组合以及各个输入情况之间的相互制约关系。
(4)在所有的黑盒测试方法中,基于决策表的测试是最为严格、最具有逻辑性的测试方法。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:
针对不同逻辑条件的组合值,分别执行不同的操作。
决策表法很适合测试这类问题。
通常在决定测试策略时,有以下的参考原则:
(1)在任何情况下都必须采用边界值分析法。
这种方法设计出的测试用例发现程序错误的能力最强;
(2)必要时采用等价划分类方法补充测试用例;
(3)采用错误推断法再追加测试用例;
(4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。
如果没有达到要求的覆盖标准,则应当在补充更多的测试用例;
(5)如果程序的功能说明中含有输入条件的组合情况,则应在一开始就选用因果图法。
9、简介WEB应用程序在压力下的常见错误类型。
有两种错误类型是:
(1)内存泄漏(Memoryleak):
一种极难检测的现象。
内存泄漏经常发生在已发行的产品中,原因很简单,很难设计测试用例来检测它们。
使用简单的功能测试,几乎发现不了内存泄漏问题,因为在产品完成之前测试没对产品进行足够多的使用。
内存泄漏通常要求操作要重复非常多的次数以使内存消耗达到能引起注意的程度。
尽管与其它编程语言(如C/C++)相比,Java程序更难引入内存泄漏错误,但只要程序仍保持着对对象的引用,该对象仍有可能被实例化并且它占用的内存永远不会被释放。
(2)并发与同步(ConcurrencyandSynchronization):
压力测试在查找并发性问题上非常出众,这是因为在任何一个测试生命周期中,它都应用了许多不同的代码路径和定时条件。
一般的规则是,压力测试运行的时间越长,涉及并应用的代码路径组合和定时条件就越多。
当然,这也的确使得这些问题很难再现(错误可以在5分钟或5天后发生)。
死锁、线程泄漏以及任何一般的同步问题通常只能在压力测试阶段被检测出来。
这些类型的问题很难通过执行单元测试来发现。
开发人员不会一直考虑他或她的代码将与其他地方的代码(在执行单元测试时这些代码可能还没写出来)进行交互。
10、单元测试的主要任务是什么?
单元测试针对每个程序的模块,解决5个方面的测试问题:
模块接口、局部数据结构、边界条件、独立的路径和错误处理。
详细来说:
(1)模块接口的测试:
检查进出程序单元的数据流是否正确。
对模块接口数据流的测试必须在任何其他测试之前进行,因为如果不能确保数据正确的输入和输出的话,所有的测试都是没有意义的。
(2)局部数据的测试:
必须测试其内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误。
(3)边界条件:
目的是检测在数据边界处模块能否正常工作,边界测试是单元测试的一个关键任务。
(4)独立路径:
路经测试也称为覆盖测试。
在单元测试中,最主要的测试是针对路径的测试。
测试用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误。
(5)错误处理:
良好的设计应该预先估计到投入运行后可能发生的错误,并给出相应的处理措施,使得用户不至于束手无策。
11、简述自顶向下增量式测试和自底向上增量式测试两种集成测试方法,并比较两者的优点和缺点。
自顶向下增量式测试表示逐步集成和逐步测试是按照结构图自上而下进行的,即模块集成的顺序是首先集成主控模块(主程序),然后依照控制层次结构向下进行集成。
自底向上增量式测试表示逐步集成和逐步测试的工作是按结构图自下而上进行的,由于是从最底层开始集成,所以也就不再需要使用桩模块进行辅助测试。
自顶向下测试的主要优点在于它可以自然的做到逐步求精,一开始就能让测试者看到系统的框架。
它的主要缺点是需要提供桩模块,并且在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定困难。
同时,观察和解释测试的输出常常也比较困难。
自底向上的优点在于,由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也无困难。
如果关键的模块是在结构图的底部,那么自底向上测试具有优越性。
它的主要缺点在于,直到最后一个模块被加进去之后才能看到整个程序(系统)的框架。
12、简述在哪些测试模块中应优先考虑引入自动化测试?
自动化测试可以带来哪些优点?
当具有下列情况时需要考虑进行自动化测试:
(1)测试个案的生成,包括测试输入、测试输出、测试操作指令等。
(2)测试的执行与控制,包括单机和网络多机分布运行,节假日运行,测试个案调用控制,测试对象、范围、版本控制等。
(3)测试结果与标准输出的对比。
(4)不吻和的测试结果的分析、记录、分类和通报。
(5)总测试状况的统计报表产生。
自动化测试的优点在于:
对程序的回归测试更方便;可以运行更多更烦琐的测试;可更好的利用资源;测试具有一致性和可重复性;可让产品更快的投入市
场;增加软件的信任度。
13、在软件工程或软件测试中,哪些软件问题被称为软件缺陷?
(1)软件未达到产品说明书中已经标明的功能;
(2)软件出现了产品说明书中指明不会出现的错误;
(3)软件未达到产品说明书中虽未指出但应当达到的目标;
(4)软件功能超出了产品说明书中指明的范围;
(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不好。
14、简述软件测试与软件开发各阶段的关系。
(1)项目规划阶段:
负责从单元测试到系统测试的整个测试阶段的监控。
(2)需求分析阶段:
确定测试需求分析、系统测试计划的制定,评审后成为管理项目。
测试需求分析是对产品生命周期中测试所需求的资源、配置、每阶段评判通过的规约;系统测试计划则是依据软件的需求规格说明书,制定测试计划和设计相应的测试用例。
(3)详细设计和概要设计阶段:
确保集成测试计划和单元测试计划完成。
(4)编码阶段:
由开发人员进行自己负责部分的代码的测试。
在项目较大时,由专人进行编码阶段的测试任务。
(5)测试阶段(单元、集成、系统测试):
依据测试代码进行测试,并提交相应的测试状态报告和测试结束报告。
15、在测试实施之前,如何才能确定好的测试策略和测试方法?
通常,在确定测试方法时,应遵循以下原则:
(1)根据程序的重要性和一旦发生故障将造成的损失来确定测试等级和测试重点。
(2)认真选择测试策略,以便能尽可能少的使用测试用例,发现尽可能多的程序错误。
因为测试不足则意味着让用户承担隐藏错误带来的危险,但测试过度又会带来资源的浪费。
因此,测试需要找到一个平衡点。
通常在确定测试策略时,有以下5条参考原则:
(1)在任何情况下都必须采用边界值分析法。
这种方法设计出的测试用例发现程序错误的能力最强。
(2)必要时采用等价类划分方法补充测试用例。
(3)采用错误推断法再追加测试用例。
(4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。
如果没有达到要求的覆盖标准,则应当再补充更多的测试用例。
(5)如果程序的功能说明中含有输入条件的组合情况,则应一开始就选用因果图法。
16、简述软件测试的目的和原则。
软件测试以发现故障为目的,是为了发现故障而执行程序的过程。
软件测试的目的有以下三点:
(1)测试是程序的执行过程,目的在于发现错误。
(2)好的测试用例在于发现至今还未发现的错误。
(3)成功的测试是发现了错误的测试。
依据上述软件测试目的,软件测试的原则是:
(1)尽早的和及时的测试应作为软件开发人员的座右铭。
(2)测试用例应当由测试数据和与之对应的预期结果组成。
(3)在程序提交测试后,应当由专门的测试人员进行测试,避免由程序设计者自行检查程序。
(4)测试用例应包括合理的输入条件和不合理的输入条件。
(5)严格执行测试计划,排除测试的随意性。
(6)充分注意测试当中的群体现象。
(7)要对每一个测试结果作全面的检查。
(8)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。
17、为什么在单元测试之后要进行集成测试?
如何组织集成测试?
实践表明,软件的一些模块能够单独地工作,但并不能保证组装连接之后也肯定能正常工作。
程序在某些局部反映不出来的问题,在全局情况下有可能暴露出来,影响软件功能的实现。
可能的原因有以下几方面:
(1)模块相互调用时引入了新的问题;
(2)几个子功能组合后不能实现预计的主功能;
(3)计算的误差累计达到了不能接受的程度;
(4)全局数据结构出现错误。
因此,在单元模块完成单元测试后,需要按照设计的程序结构图进行组合、进行集成测试,检测与接口有关的各种故障。
组织集成测试的一种方法是先独立的测试每个模块,然后再将它们组合成一个整体进行测试;另一种方法是先把下一个待测试模块组合到已经测试过的那些模块上去,再进行测试,逐步完成集成测试。
由此产生了两种集成测试方法:
非增量式测试和增量式测试。
18、当WinRunner识别完GUI对象后,会将GUI对象的属性储存在GUIMapFile,WinRunner提供二种GUIMapFile模式:
GUIMapFileperTest模式与GlobalGUIMapFile模式。
(1)请比较这两种GUIMapFile模式的优点和缺点。
■GUIMapFilePerTest模式的优点:
每个测试都有自带的GUIMapFile;使用方便,且保存和加载GUIMapFile都是自动完成;作为单次测试,容易维护和更新(就是重新录一次)。
■GUIMapFilePerTest模式的缺点:
一旦软件GUI变更,每个测试的GUIMapFile都要重新录制。
■GlobalGUIMapFile模式的优点:
如果对象或窗体的属性改变,只需要在GUIMapFile里修改对应的属性;容易维护和更新(无需重新录制)。
■GlobalGUIMapFile模式的缺点:
要手工保存和加载使用的GUIMapFile。
(2)请分别说明在这两种GUIMapFile模式下,WinRunner可以通过哪些方式学习被测软件的GUI?
当使用GUIMapFilePerTest模式时,WinRunner会在录制脚本时自动学习被测软件的GUI。
当使用GlobalGUIMapFile模式时,WinRunner可以通过以下三种方式学习被测软件的GUI:
■使用RapidTestScriptWizard学习被测软件每个窗体中所有GUI对象的属性。
■使用GUIMapEditor学习单个GUI对象、窗体或某个窗体中所有GUI对象的属性。
如果开发过程中改变了GUI,用户可以使用这种方式更新GUIMap。
■通过录制脚本的方式学习被录制(被操作)的那部分被测软件中的所有的GUI对象的属性。
19、介绍在WinRunner中GUI映射文件(GUIMapFile)的作用。
GUIMap是Winrunner和windows操作系统之间交流的媒介,具体的说是Winrunner和application之间的媒介,应用程序中的对象是通过GUImap识别的,Winrunner回放时要在GUImap里找到对象。
脚本在回放时,脚本里用到的对象都应该包含在GUImapfile里,可通过GUISpy等工具将GUI对象学习认识到GUIMapFile内。
20、什么是数据驱动脚本?
简介在Winrunner中如何实现数据驱动脚本。
数据驱动脚本技术将测试输入存储在独立的数据文件中,而不是绑定在脚本中。
执行时是从数据文件而不是从脚本中读入数据。
这种方法最大的好处是可以用同一个脚本允许不同的测试。
对数据进行修改,也不必修改执行的脚本。
使用数据驱动脚本,可以以较小的开销实现较多的测试用例,这可以通过为一个测试脚本指定不同的测试数据文件达到。
将数据文件单独列出,选择合适的数据格式和形式,可将用户的注意力集中到数据的维护和测试上。
达到简化数据,减少出错的概率的目的。
在Winrunner中:
(1)先生成单个输入的测试脚本;
(2)通过选取菜单table->datadriverwizard.可通过向导来生成数据文件(excel文件格式),向导同时生成了读取该数据文件的循环语句;
(3)在已有了数据文件之后,可通过选取菜单table->datatable编辑更改数据文件。
21、WinRunner可以帮助用户自动处理从测试开发到测试执行的整个过程,可以创建可修改和可复用的测试脚本,而不用担心软件功能模块的变更。
(1)请简述WinRunner测试过程所包含的六个阶段。
■创建GUIMap:
让WinRunner识别应用程序的GUI对象。
■创建测试:
用户可以通过录制、编成或两者同时使用的方式建立测试脚本。
■调试测试:
用户可以在调试模式下测试运行脚本,也可以设置中断点,监测变量,对测试脚本除错。
■执行测试:
用户在检验模式下执行测试脚本。
■查看测试结果
■报告发现的错误
(2)WinRunner可以用录制的方式快速建立自动测试脚本,请问WinRunner提供了哪几种可用的录制模式?
请描述各种录制模式的特点。
WinRunner提供了两种录制模式:
环境判断模式(ContextSensitivemode)和模拟模式(Analogmode)。
■环境判断模式:
这种模式根据用户选取的GUI对象(如窗体、列表、按钮等)将用户对软件的操作动作录制下来,并忽略这些对象在屏幕上的物理位置。
每一次对被测软件进行操作。
回放测试脚本的过程,就是WinRunner模拟一个用户鼠标选取对象、用键盘输入数据的操作过程。
■模拟模式:
这种模式记录鼠标点击、键盘输入和鼠标在二维平面上(x轴、y轴)的精确运动轨迹。
执行测试时,WinRunner让鼠标根据轨迹运动。
模拟模式对于那些需要追踪鼠标运动的测试非常有用,例如画图软件。
三、设计