大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx

上传人:b****7 文档编号:22330981 上传时间:2023-02-03 格式:DOCX 页数:25 大小:302.16KB
下载 相关 举报
大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx_第1页
第1页 / 共25页
大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx_第2页
第2页 / 共25页
大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx_第3页
第3页 / 共25页
大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx_第4页
第4页 / 共25页
大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx

《大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx》由会员分享,可在线阅读,更多相关《大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。

大学软件工程相关专业考试攻略《软件测试技术概论》Word文件下载.docx

没有用户参与的黑盒测试中,最常见的测试种类有:

(1)功能性测试

(2)容量测试

(3)安全性测试

(4)负载测试

(5)恢复性测试

(6)标杆测试

(7)稳定性测试

(8)可靠性测试等。

必须有用户参与的测试有两个类型:

(1)外场测试

(2)实验室测试

10、黑盒测试的4个方面测试数据有哪些?

(1)易于计算的数据

(2)典型数据

(3)边界/极端数据

(4)假数据

11、什么是灰盒测试?

一般地,在白盒测试中交叉使用黑盒测试的方法;

在黑盒测试中交叉使用白盒测试的方法。

灰盒测试就是这类介于白盒测试和黑盒测试之间的测试。

12、什么是分支条件组合覆盖?

设计一定的测试用例,是每个分支中的各操作数值的组合都遍历一次。

13、什么是程序插装方法?

应用包括哪些?

程序插装方法是借助向被测程序中插入操作实现测试目的的方法。

应用包括:

测试覆盖率和测试用例有效性度量;

断言检测;

数据流异常检测;

路径智能分解。

14、什么是断言?

在程序的特定部位插入某些用以判断变量特性的语句,使这些语句在程序执行中得以证实,从而使程序的运行特性得以证实。

我们把插入的这些语句称为断言(Assertions)。

15、图4-2断言例子P52

16、什么是切片?

对于给定的一个程序行为的子集,通过切片技术把程序减小到一个最小化形式,并且仍旧能产生给定的行为。

这个简化后的程序就称为切片。

17、什么是故障插入?

故障插入(FaultSeeding)是一个统计的方法,用于评价遗留在一个程序中的故障数量和种类。

首先,故障被插入大一个程序中,然后,程序被测试,并且发现故障的数量可用来估计还没有发现的故障数量。

18、什么是变体分析?

带有插入错误的程序称为一个变体或变异。

19、什么是等价类?

规格经常把所有可能的输入集合分成一个一个类。

这些中间的数据获得相同的对待。

这个划分被称为等价类。

20、等价类有哪两种不同情况?

有效等价类(ValidEquivalenceClass)和无效等价类(InvalidEquivalenceClass)。

有效等价类是指对程序规格说明是合理的,有意义的输入是数据构成的集合,利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

无效等价类是与有效等价类定义恰巧相反的类。

21、等价类划分原则

(1)在输入条件规定了取值范围或值个数的情况下,可以确立一个有效等价类和两个无效等价类;

(2)在输入条件规定了输入值集合或者规定了“必须如何”的情况下,可以确立一个有效等价类和一个无效等价类;

(3)在数条件是一个布尔量的情况下,可以确立一个有效等价类和一个无效等价类;

(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以确立n个有效等价类和一个无效等价类;

(5)在规定输入数据必须遵守规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);

(6)在确知以划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。

22、边界值测试定义

针对各种边界情况设计测试用例,可以查出更多的错误。

使用边界值分析方法设计测试用例,首先应确定边界情况。

23、规范导出定义

规范导出测试根据相关规范描来设计测试用例。

每一个测试用例用来测试一个或多个规范陈述语句。

一个比较实际的方法是根据陈述规范所用语句的顺序来相应地为被测试对象设计测试用例。

24、错误猜测法定义

错误猜测法是基于经验和其他一些测试技术,如边界值测试的一种方法。

在经验的基础上,测试设计者猜测错误的类型以及在特定的软件中错误发生的位置并设计测试用例去发现它们。

25、单元测试的主要目的有哪些?

(1)验证代码是与设计相符合的;

(2)跟踪需求和设计的实现;

(3)发现设计和需求中存在的错误;

(4)发现在编码过程中引入的错误。

26、单元测试和集成测试的区别

单元测试与集成测试相比,测试对象有所区别。

集成测试的被测对象是在概要设计中规划的模块及这些模块间的组合。

这里,不同模块往往是分配给不同的某个(或某组)程序人员开发。

单元测试的测试对象是这些模块下实现具体功能的单元,一般是对应详细设计中所描述的设计单位。

集成测试关注的是模块间的借口,接口之间的数据传递关系,单元组合后是否实现预计的功能等。

集成测试组装的对象比单元测试的对象级别要高。

如果说单元测试的对象是一个一个函数,那么集成测试组装的对象可能是一个一个接口函数(公共函数)。

对于那些非接口函数则直接挂在接口函数上集成到系统中去。

从现代的测试来看,单元测试和集成测试之间的界限也变得模糊起来。

单元测试方法中也引入了集成概念,如:

为了减少桩模块的设计,单元测试采由底向上的测试方法。

其目的是为了发现开发中的错误,提高产品的质量,文不是去追究单元测试和集成测试到底有多严格的区别。

如果这样,那么我们就走入歧途了。

27、单元测试和系统测试的区别

单元测试和系统测试之间的区别比较明显。

一般来说单元测试属于白盒测试,关注的是单元的具体实现、内部的逻辑结构、数据流向等;

单元测试使问题及早暴露,也便于问题的定位解决。

单元测试属于早期测试,因而错误发现后就能明确知道是由某一单元产生的;

单元测试允许多个被测单元的测试工作同时开展。

系统测试则属于黑盒测试,是站在用户的角度上来看待系统,队系统进行测试,证明系统是否已经满足了用户的需求。

气测试时基于需求规格说明书。

系统测试是一种后期测试,错误发现后的定位工作比较困难。

28、驱动模块

驱动模块只是一个接受测试数据,并把数据传送给(要测试的)模块,然后打印相关结果的“主程序”。

29、单元测试策略哪几种?

由顶向下的单元测试策略

由底向上的单元测试策略

孤立的单元测试策略

30、【策略一】由顶向下的单元测试策略

方法:

先对最顶层的单元进行测试,把顶层所调用的单元做成桩模块。

其次对第二层进行测试,使用上面已测试的单元错驱动模块。

如此类推直到测试完所有模块。

优点:

在集成测试前提供系统早期的集成途径。

由于详细设计一般都是由顶向下进行设计的,这样由顶向下的单元测试策略在执行上同详细设计的顺序一致。

该测试方法可以和详细设计及编码惊醒重叠操作。

缺点:

单元测试呗桩模块控制,随着单元一个一个被测试,测试过程将变得越来越复杂,并且开发和维护的成本将增加。

测试层次越到下层,结构覆盖率就越难达到。

同时任何一个单元的修改将影响到其下层调用的所有单元都被重新测试。

底层单元的测试须等待顶层单元测试完毕后才能进行,并行性不好,测试周期将延长。

总结:

该策略比基于孤立单元测试的成本要高的多。

不是单元测试的一个好的选择。

但是如果单元都已经被独立测试过了,可以使用该方法。

31、【策略二】由底向上的单元策略测试

先对模块调用层次图上最低层的模块进行单元测试,模块调用该模块的模块做驱动模块。

然后再对上面一层做单元测试,用下面已被测试过的模块做桩模块。

以此类推,知道测试完所有模块。

不需要桩模块。

测试用例可以直接从功能设计中获取,而不必从结构设计中获取。

该方法在详细设计文档缺乏结构细节时变得有用。

随着单元一个一个被测试。

测试过程将变得越来越复杂,开发和维护的成本将增加。

并且测试层次越到顶层,结构覆盖率就越难到达。

同时任何一个单元的修改将影响到直接或间接调用该单元的所有上层单元被重新测试。

顶层单元的测试需等待底层单元测试完毕后才能进行,并行性不好,测试周期将延长。

并且第一个被测试的单元一般都是组后一个被设计的单元,单元测试不能和详细设计、编码进行重叠。

该策略是一个比较合理的但愿测试策略,尤其当需要考虑到对象或复用时。

但由地向下的单元测试是面向功能的测试,而不是面向结构的测试。

这对于需要获得高覆盖率的测试目标来说是相当困难的。

并且该方法同紧凑的开发时间按表相冲突、

32、【策略三】孤立测试

不考虑每个模块与其他模块之间的关系,为每个模块设计桩模块和驱动模块。

每个模块进行孤立的单元测试。

该方法是最简单,最容易操作的。

可以达到高的结构覆盖率。

由于一次只需要测试一个单元,其驱动模块比由地向上策略的驱动模块设计简单,其桩模块比由顶向下策略的桩模块设计简单。

由于各模块不存在依赖性,所以单元测试可以并行进行,该方法对通过增加人员来缩短开发时间非常有效。

该方法是纯粹的单元测试,上面两种策略是单元测试同集成阶段的混合。

不提供一种系统早期的集成途径(这不一定真的是缺点)。

需要结构设计信息,使用到桩模块和驱动模块。

该方法是最好的单元测试策略。

如果辅助以集成测试策略,将可以缩短整个软件开发周期。

33、单元测试分析角度?

图6-3单元测试的5个分析角度

34、正向测试

测试用例的用例就是验证设计说明书所对应的功能项或性能指标能否兑现。

可使用的测试分析技术:

(1)规范导出法;

(2)等价类划分;

(3)状态转换测试。

35、逆向测试

逆向测试的用力就是用来验证被测试的软件单元有没有做它不应该做的事情,此步骤主要依靠错误猜测的方法进行测试用例的构造。

(1)错误猜测法;

(2)边界值分析;

(3)状态转换测试。

36、单元测试过程划分为哪3个阶段?

(1)完成测试计划(计划阶段)

(2)获取测试集(设计阶段)

(3)度量测试单元(执行和总结阶段)

37、测试工具

(1)代码静态分析工具:

Logiscope,McCabeQA,CodeTest等;

(2)代码检查工具:

PC--LINT,CodeChk,Logiscope等;

(3)测试脚本工具:

TCL、Python、Perl等;

(4)覆盖率检测工具:

Logiscope,PureCoverage,TrueCoverage,McCabeTest,CodeTest等;

(5)内存检测工具:

Purify,BoundsCheck,CodeTest等;

(6)专为单元测试设计的工具:

RTRT,Cantata,AdaTest等.

38、什么是集成测试?

集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统,进行集成测试。

39、集成测试与系统测试的区别?

系统测试所测试的对象是整个系统以及与系统交互的硬件和软件平台。

系统测试更多程度上是站在用户的角度上对系统做功能性的验证,同时还对系统进行一些非功能性的验证,包括性能测试、压力测试、容量测试、安全性测试、恢复性测试等。

系统测试的依据来自于用户的需求规格说明书和行业的已成文的或事实上的标准。

集成测试所测试的对象是模块间的接口,其目的是要找出在模块接口上面,包括整体体系结构上的问题。

其测试的依据来自于系统的高层设计。

40、集成测试关注的重点有哪些?

1.在把各个模块连接起来时,穿越模块接口的数据是否会丢失。

2.各个子功能组合起来,能否达到预期的要求的父功能。

3.一个模块的功能是否会对另一个模块的功能产生不利的影响。

4.全局数据结构是否有问题,会不会被异常修改。

5.单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。

41、集成测试可以划分为哪几个级别?

1.模块内即成测试。

2.子系统内集成测试。

3.子系统间集成测试。

42、大爆炸集成

概念:

属于非增值式集成的一种方法,也称为一次性组装或整体拼装。

该集成把所有系统组件一次性集合到被测系统中,不考虑组件之间的互相依赖性或者可能存在的风险。

策略:

首先对每个模块被分别进行单元测试,然后再把所有单元组装在一起进行测试,最终得到要求的软件系统。

图7-4一次性组装示意图

d1、d2、d3、d4、d5是对各个模块做单元测试时建立的驱动模块,s1、s2、s3、s4、s5是为单元测试而建立的桩模块。

适用范围:

(1)一个维护型项目,其以前的产品已经很稳定,并且新增的项目只有少数几个组件被添加或修改;

(2)被测系统比较小,并且它的每个组件都经过了充分的单元测试;

(3)产品使用了严格的净室软件工程过程,并且每个开发阶段的质量和单元测试的质量都相当高。

43、自顶向下的集成

目的:

从顶层控制开始,采用同设计顺序一样的思路对被测系统进行测试,一验证系统的接口稳定性。

(1)以主模块为所测模块兼驱动模块,所有直属于主模块的下属模块全部用桩模块对主模块进行测试.

(2)采用深度优先或宽度优先的策略,用实际模块替换相应桩模块,再用桩代替它们的直接下属模块,与已测试的模块或子系统集成为新的子系统.

(3)进行回归测试,排除集成过程中引起错误的可能.

(4)判断是否所有的模块都已集成到系统中.如果是,则结束测试,否则转到步骤2去执行.

其中,s1、s2、s3、s4、s5代表桩模块,图形中的集成顺序为自左到右,由上到下。

图7-5深度优先组装方式

图7-6广度优先组装方式

产品控制结构比较清晰和稳定;

产品的高层接口变化较小;

产品的底层接口未定义或经常可能被修改;

产品的控制组件具有较大的技术风险,需要尽早被验证;

希望尽早能够看到产品的系统功能行为;

在极端编程中使用探索式开发风格时,其继承策略可以采用自顶向下策略。

44、自底向上集成

(1)起始于模块依赖关系树的底层叶子模块,也可以把两个或多个叶子模块合并到一起进行测试,或者把只有一个子节点的父模块与其子模块结合在一起进行测试;

(2)使用驱动模块对步骤1选定的模块进行测试;

(3)用实际模块代替驱动模块,与它已测试的直属子模块组装成为一个更强大的模块组进行测试;

(4)重复上面的行为直到系统的最顶层模块被加入到已测系统中。

图7-7自底向上集成示意图

45、三明治集成

三明治集成就是这样一种方法,他把系统划分成三层,中间一层为目标层。

测试的时候,对目标层上面的一层使用由顶向下的集成策略,对目标层下面的一层使用自底向上的集成策略,最后测试在目标层会合。

图7-8三明治测试策略

46、基干集成

基干集成策略首先应识别应用的控制组件部分、基干部分和应用子系统部分。

测试的顺序是基于这个分析结果的。

其具体的测试步骤大致可以表述如下:

对基干中的每个模块进行单独的、充分的测试,必要时使用驱动模块和桩模块;

对基干中所有的模块进行大爆炸集成,形成基干子系统,并使用一个驱动模块检查经过大爆炸的基干;

对应用的控制子系统进行自顶向下的集成;

把基干和控制子系统进行集成,重新构造控制子系统;

对各应用子系统采用自底向上的集成策略;

集成基干子系统、控制子系统和各应用子系统形成整个系统。

使用范围:

基干集成策略比较适合大型复杂项目,一般来说,对于具有如下特定的项目可以优先考虑:

(1)具有多层协议的嵌入式系统开发

(2)操作系统产品

47、基于事件的集成

从系统的外部看,分析系统可能输入的消息集;

选取一条消息,分析其穿越的模块;

集成这些模块进行消息接口测试;

选取下一条消息,重复步骤2和3,直到所有模块都被集成到系统中。

面向对象系统;

基于有限状态机的嵌入式系统。

48、客户/服务器的集成

单独测试每个客户端和服务器端,必要时使用驱动和桩;

把第一个客户端与服务器进行集成;

把下一个客户端与步骤2完成的系统进行集成;

重复步骤3直到所有客户端都被加入到系统中。

客户/服务器结构的系统

49、分布式集成

风险驱动。

即从最可能出现问题的接口和组件开始进行集成。

反风险驱动。

即从最不可能出现问题的接口和开始进行集成。

依赖性驱动。

从可以被单独测试或依赖性最小的组件接口开始集成。

优先驱动。

从功能或性能优先级高的组件和接口开始进行集成。

分布式系统

50、系统测试概念

系统测试是将已经集成好的软件系统,作为整个软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,与实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。

51、系统测试的目的

系统测试的目的通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求。

52、功能测试概念

功能测试是系统测试中最基本的测试,它不管软件内部的实现逻辑,主要根据产品的需求规格说明书和测试需求列表,验证产品的功能实现是否符合产品的需求规格。

53、功能测试主要是为了发现哪几类错误?

是否有不正确或遗漏了的功能?

功能实现是否满足用户需求和系统设计的隐藏需求?

能否正确地接受输入?

能否正确地输出结果?

54、协议测试种类有哪些?

协议一致性测试

协议性能测试

协议互操作性测试

协议健壮性测试

55、性能测试

性能测试就是用来测试软件在集成系统中的运行性能的。

56、压力测试的目的是什么?

压力测试的目的是调查系统在其资源超负荷的情况下的表现

例如:

1)当平均每秒出现1个或2个中断的情形下,应当对每秒出现10个中断的情形来进行特殊的测试;

2)把输入数据的量提高一个数量级来测试输入功能会如何响应;

3)应当执行需要最大的内存或其他资源的测试实例;

4)使用一个虚拟的操作系统中会引起颠簸的测试实例;

5)可能会引起大量的驻留磁盘数据的测试实例。

57、敏感测试概念?

敏感测试就是要发现在有效数据输入中可能会引发不稳定或者错误处理的数据组合。

58、容量测试与压力测试的区别:

容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。

压力测试主要是使系统承受速度方面的超额负载。

容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。

59、GUI测试主要包括哪两方面的内容?

一方面是界面实现与界面设计的吻合情况;

另一方面是确认界面处理的正确性。

60、健壮性测试概念?

健壮性测试有时也叫容错性测试。

主要用于测试系统在出现故障时,是否能够自动恢复或者忽略故障继续运行。

61、兼容性测的目的是什么?

兼容性测试的目的是测试应用对其他应用或者系统的兼容性。

例题、题目

P28必考

P32必考

图3-2一个继承例子

图3-4完全测试继承的测试用例

P34必考

图3-8BoundedStack的状态迁移图

图3-9基于状态转移图的测试用例

P39必考

P46

图3-18计算最少测试用例数

图3-19最少测试用例数计算

P52

图4-2一个断言的例子

P53

图4-3变量在程序中的4种状态图4-5针对变量x进行插装后的数据流图

P56

P68

例:

一个计算平方根函数的规范可以表示如下:

输入:

实数

输出:

实数

规范:

当输入一个0或比0大的数时,返回其正的平方根;

当输入一个小于0的数时,显示错误信息“平方根非法──输入值小于0”,并返回0;

库函数Print_Line可以用来输出错误信息。

在这个规范中有3个陈述,可以用两个测试用例来对应:

Print_Line用来传送错误信息。

测试用例1:

输入4,输出2

对应规范中的第一句陈述:

“当输入一个0或比0大的数时,返回其正的平方根”。

测试用例2:

输入-1,输出“平方根非法──输入值小于0”

对应规范中的第二、第三句陈述:

当输入一个小于0的数时,显示错误信息“平方根非法──输入值小于0”,并返回0。

P117必考题目43、自顶向下的集成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1