考试题型为:

1.名词解释题 6题 * 5

2.简答题 5题 * 8

3.计算题 3题 * 10

软件测试复习题

1.什么是软件测试?

在规定的条件下,对程序进行操作,以发现程序错误

软件测试发现一个应用从开始到结束时的错误,测试是一个过程。
(Glenford J.Myers 提出对软件测试的定义)

测试是发现错误而执行的一个程序或系统的过程
测试以发现故障为目的,是为了发现故障而执行程序过程。

IEEE给出了以下两个规范的软件测试的定义:

(1)在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价。

(2)分析某个软件项以发现和现存的,以及要求的条件之差别(即错误 并评价此软件项的特性)

2.软件测试涉及哪几个关键问题?

谁来测试(who)
测试什么(what)
什么时候测试(when)
怎样进行测试(how)
测试的停止标准是什么(which)

3.简述软件测试的复杂性和经济性。

1.4.2

复杂性
1.完全测试是不现实的
2.软件测试是有风险的
3.杀虫剂现象
4.缺陷的不确定性

经济性
软件测试是软件生命期中费用消耗最大的环节。

测试费用除了测试的直接消耗外,还包括其他的相关费用。

为了降低测试成本,选择测试用例时应该注意遵守测试的“经济性”原则

1.要根据程序的重要性和一旦发生故障要造成的损失来确定他的测试等级

2.要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的程序错误

4.软件测试应遵循哪些重要的原则或方针?

1.完全测试程序是不可能的

2.软件测试是有风险的

3.测试无法显示隐藏的软件故障

4.存在的故障数量和发现的故障数量成正比

5.杀虫剂现象

6.并非所有软件故障现象都能修复

7.一般不要丢弃测试用例

8.应避免测试自己编写的程序

9.软件测试是一项复杂并且具有创造性的和需要高度智慧的挑战性任务

原则1: 测试显示缺陷的存在
原则2: 穷尽测试是不可能的
原则3: 测试的尽早介入
原则4:缺陷集群性
原则5: 杀虫剂悖论
原则6: 测试活动依赖于测试背景
原则7: 不存在缺陷的谬论

5.软件测试与软件开发有何关系?

软件开发是生产制造软件;

软件测试是验证开发出来软件的质量。

类比传统加工制造企业,软件开发人员就是生产加工的工人,软件测试人员就是质检人员。

关系:
软件测试是在软件开发基础上完成的。
没有软件开发就没有测试,软件开发提供软件测试的对象。
软件开发和软件测试都是软件生命周期中的重要组成部分
软件开发和软件测试都是软件过程中的重要活动。
软件测试是保证软件开发产物质量的重要手段。

软件开发是一个自顶向下,逐步细化的过程

软件测试是依相反顺序自底向上,逐步集成的过程

6.软件开发模型在软件开发过程中起到什么作用?没有它可以吗?

作用

软件开发模型是软件开发全部过程、活动和任务的结构框架。

它是对软件过程的建模,即用一定的流程将各个环节连接起来,并可用规范的方式操作全过程,好比工厂的流水线。

软件开发模型能清晰、直观地表达软件开发全部过程,明确规定要完成的主要活动和任务,它用来作为软件项目工作的基础。

软件开发模型应该是稳定和普通适用的。

在软件开发模型的选择上,应该根据项目和应用的特点、采用的方法和工具、需要控制和交付的特点这3个特点上进行选择。

没有软件开发模型是不可以的

7.软件测试中检测到的错误都是由编码错误引起的吗?为什么?

测试过程中计划-需求-设计-编码,前面3个阶段也可能引进错误,不单单是由编码错误引起。

8.简述软件测试的流程。

(1)测试计划和控制。
(2)测试分析与设计。
(3)测试实现和执行。
(4)评估出口准则和报告。
(5)测试活动结束。

9.静态测试和动态测试分别都应用在什么场景下?

静态测试:通过评审文档、阅读代码等方式测试软件。

主要包括各阶段的评审、代码检查、程序分析、软件质量度量等,用于对被测程序进行特性分析。

其中评审通常有人来执行;代码检查程序分析、软件质量度量等即可人工完成,也可用工具来完成,但工具的作用和效果相对更大更好一些。

动态测试:通过运行程序测试软件。

主要运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标;

这种方法包括三部分:构造测试用例、执行程序、分析程序的输出结果。

10.黑盒测试和白盒测试的区别是什么?可以同时使用这两种测试方法吗?

image-20221101202014642

image-20221109163022656

image-20221101202036760

image-20221101202047046

白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。

黑盒测试:是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收和正确的输出。

二者最大的区别应该就是测试对象不一样,白盒测试主要针对的是程序代码逻辑,黑盒测试主要针对的是程序所展现给用户的功能,简单的说就是前者测试后台程序后者测试前台展示功能。

不可以同时使用,一般是先黑盒测试后白盒测试。

11.黑盒测试中,测试人员和程序员应该相互独立。解释其合理性。

12.若测试机器学习程序,请设计出一些蜕变关系。

13.如何识别等价类?运用示例给出解释。

(1)建立等价类表,为每个等价类规定一个唯一的编号。

(2)设计测试用例,尽可能覆盖未被覆盖的有效等价类,重复这个步骤,直到所有有效等价类被覆盖。

(3)设计测试用例,尽可能覆盖未被覆盖的无效等价类,重复这个步骤直到所有无效等价类被覆盖。

14.对 NextDate 示例,运用等价类划分法给出测试用例(PPT)

image-20221104223156740

15.对于三角形问题,给出弱健壮等价类测试用例(PPT)

image-20221105234334586

给出一个符合要求的示例,然后逐步

16.什么是边界值分析法?程序的边界是指什么?

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。

通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

边界条件即输入定义域或输出值域的边界,而不是内部。

17.有一个饮料自动售货机的控制处理软件。若投入 5 角钱的硬币,按下橙汁或啤酒的按钮,则相应的饮料就送出来。若投入1元的硬币,同样也是按下橙汁或啤酒的按钮,则相应的饮料会送出来并退还 5 角硬币。试画出因果图,并 给出对应的测试用例。

image-20221108155143900

18.逻辑覆盖指的是什么?

根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖可以进一步分为语句覆盖,判定覆盖,条件覆盖,条件/判定组合覆盖,多条件覆盖,修正条件判定覆盖,组合覆盖和路径覆盖

19.程序变异的基本思想是什么?

程序变异是一项用来评价测试优良程度的有效技术,它为测试评价和测试增强提供了一套严格的标准

程序变异是一种评价测试和增强测试的技术。

给定一个程序p和一个测试数据集t,

通过变异算子为p产生一组变异体Mi,对p和m都使用t进行测试运行,

如果某mi在某个测试输入t上与p产生不同的结果,则该mi被杀死,若某mi在所有的测试数据集上都与p产生不同的结果,则该mi被杀死;若某mi在所有的测试数据集上都与p产生相同的结果,则称其为活的变异体。接下来对活的变异体进行分析,检查其是否等价于p;对不等价于p的变异体m进行进一步的测试,直到充分性度量达到满意的程度。

20.什么是变异算子?

变异算子定义了从原有程序生成差别极小程序的转换规则。

21.一阶变异和高阶变异有什么区别?

image-20221104230725203

22.软件测试包括哪几个阶段?

(1)测试需求的分析和确定
(2)测试计划
(3)测试设计
(4)测试执行
(5)测试记录和缺陷跟踪
(6)回归测试
(7)测试总结报告

23.需要从哪几个方面对测试需求进行评审?

测试需求评审的内容包括完整性审查和准确性审查。
完整性审查是检查测试需求是否覆盖了所有的软件需求,以及软件需求的各项特则,关注功能要求、数据定义、接口定义、性能要求、安全性要求、可靠性要求、系统约束、行业标准等。同时还要关注系统隐含的用户需求。

准确性审查是检查测试需求是否清晰、没有歧义、描述准确,是否能获得评审各方的一致理解,每一项测试需求是否都可以作为设计测试用例的依据。

24.请简述等价类划分法的操作流程。

(1)划分等价类
(2)确定测试用例
(3)用等价类划分法设计测试用例的实例

25.请简述软件缺陷的级别。

(1)按严重程度划分
系统崩溃、严重、一般、次要、建议。
(2)按优先级划分
高、中、低。
(3)按测试种类划分
逻辑功能类、性能类、界面类、易用性类、兼容性类。
(4)按功能模块划分

26.请说明测试执行过程中所要做的主要工作。

(1)测试用例的选择
(2)测试人员的分工
(3)测试环境的搭建
(4)BVT测试与冒烟测试
(5)每日构建介绍

BVT测试:

BVT测试只验证构建(Build)的成功与失败,不深入测试构建好的Build 的功能、性能等。BVT是在所有开发工程师都已经检查完自己的代码,项 目组编译生成当天的版本之后进行。 • 主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特性 是否正确。如无大的问题,就可以进行相应的功能测试。 • BVT的优点是时间短,验证了软件的基本功能。BVT的缺点是覆盖率低, 因为其运行时间短,不可能把所有的情况都测试到。

冒烟测试

冒烟测试是对软件的基本功能进行测试,测试的对象是每个新编译的需 要正式测试的软件版

image-20221108191746220

27.软件测试度量是出于什么原因才进行的?是不可或缺的吗?

目的:
(1)判断测试的有效性;
(2)判断测试的完整性;
(3)判断工作产品的质量;
(4)分析和改进测试过程。
重要性:
(1)度量可以用来提高质量、产品生产力、以及服务,从而提高客户满意度;
(2)对于管理组织很容易分析数据并且深入下去;
(3)对过程不受控时有不同的度量方式作为监控者;
(4)度量提供当前过程改进。

28.软件测试对工作人员有什么要求?

软件测试对测试人员有素质要求和技术要求。

素质要求:

1.责任心

2.沟通能力

3.团队合作精神

4.耐心、细心、信心

5.时时刻刻保持怀疑态度,并且有缺陷预防的意识

6.不断学习的能力

技能要求:

1.业务知识

2.产品设计知识

3.测试人员需要了解软件架构知识

4.测试人员需要了解统一建模语言UML

5.测试人员的“法宝”----测试工具

6.测试人员需要掌握相应的测试工具

7.测试人员需要掌握开发工具

8.用户心理学

9.界面设计中的三种模型【设计者模型,实现者模型,用户模型】

10.人机交互认知心理学

11.测试人员需要编程技能

12.掌握编程技能的好处

13.脚本语言

14.文档能力

29.代码行覆盖率如何计算?功能覆盖率如何计算?数据库覆盖率如何计算?

代码行覆盖率 =(已执行测试的代码行/总的代码行)* 100%
功能覆盖率 =(已执行测试的功能模块数/总的功能模块数)* 100%
数据库覆盖率 =(sql中出现的数据库的对象数/数据库总的对象数)* 100%

30.软件测试度量涉及哪几个关键问题?

31.软件测试度量应遵循哪些重要的原则或方针?

原则:
(1)要制定明确的度量目标;
(2)度量标准的定义应该具有一致性、客观性;
(3)度量方法应该尽可能简单,可计算;
(4)度量数据的收集应该尽可能自动化。

32.自动化测试与测试自动化有什么区别?

image-20221109214221799

自动化测试和测试自动化。

所谓自动化测试,一般是指在测试执行过程中,通过自动化的工具或手段来代替人工执行的过程。它强调的是解决“测试执行过程”的效率;

测试自动化,是指在测试领域中的任何方面都可以通过各种自动化的方式和手段来加快测试的效率,保证测试的质量,缩短软件交付的周期。

所以它强调的范围是整个测试的过程而不仅仅是测试执行过程。比如说测试数据准备的自动化、测试环境搭建的自动化都可以包含在测试自动化这个概念里面。从这个角度来说,测试自动化所包括的范围更广,而我们在项目中,更应该从自动化测试思维转变到测试自动化思维中,从整个测试生命周期 STLC(Software Testing LifeCycle)中去寻找可以自动化的点,全方位的提升测试的效率,这也是外国同行经常使用的一句话:Automate Everything!

33.Web 系统具有什么特征?

Web 系统具有动态性、异构性、并发性和分布性等特征

1.B/S架构采用Internet上标准的通信协议。对外采用标准的通信协议,以便数据共享

2.在服务器上对数据进行处理,就处理的结果生成网页,以方便客户端直接再现

3.在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程序,以实现对数据的显示。

34.简述性能测试的基本步骤和流程。

image-20221109214255349

35.请说明什么是第三方测试。

第三方测试是指独立于软件开发方和用户方之外的测试组织实 施的测试。

第三方测试也称为独立测试,它有独立的验证和确 认活动。在模拟用户真实应用的环境下,进行软件确认测试。

36.请简述第三方测试的意义和模式。

image-20221104232341909

image-20221108164542653

37.请说明第三方测试的实施主体和定义。

image-20221104232923413

38.请说明第三方测试的测试范围。

image-20221104233008965

测试阶段:● 集成测试 ● 系统测试 ● 验收测试

常见的测试内容:软件: ● 功能性 ● 易用性 ● 容错性 ● 安全性 ● 性能

文档: ● 正确性 ●一致性

39.请简述第三方测试的测试过程。

image-20221104233044335

40.请简述第三方测试的核心内容。

image-20221104233053944

41.简述数据库应用软件与数据库管理系统软件的区别与联系。

答:

数据库应用软件是基于数据库管理系统软件之上开发的应用层软件

而数据库管理系统软件属于重要的、复杂基础软件。

数据库管理系统是为数据库应用软件提供底层的数据管理功能,客户通常使用数据库应用软件操作数据,对底层DBMS系统基本不用关心。

image-20221107164152578

数据库应用软件

image-20221107163313225

42.如何对数据库应用软件中设计的数据库模式的好坏进行验证?

image-20221107222750379

43.简述MySQL的SQL功能回归测试过程。

MYSQL的SQL功能回归测试

可以使用MySqlTest这个测试框架进行,具体回归测试过程如下

首先需要按照新功能测试步骤生产基准文件,其次按照回归测试流程测试,将测试结果与基准文件进行自动对比

image-20221107164039722

44.请举例说明如何测试 DBMS 的事务特性。

image-20221107163855898

image-20221107163909656

image-20221107163950354

image-20221107163958181

##45.如何对 DBMS 进行性能测试?性能测试中重点需要考虑哪些内容?

针对DBMS可以采用TPC-C或者TPC-H等基于某种基准测试,也可以按照数据库系统特点设计独自的测试场景。

性能测试中重点需要考虑的因素可以包括

1.性能测试工具

2.性能度量指标

3.性能测试场景(基准OR自定义场景)

4.性能测试数据量和数据分布

5.被测DBMS的架构特征

6.其他等

46.DBMS 的高可用性测试的主要挑战有哪些?

开放性问题,挑战举例:搭建各种高可用架构,模拟高可用场景的复杂故障等

47.简述第十一章所讲的几种智能搜索算法的优劣性。

1.遗传算法

优点:搜索从群体出发,存在潜在的并行性,可以和多个个体同时比较;搜索使用评价函数启发, 过程简单;具有可拓展性,容易和其他算法结合

缺点:遗传算法的编程实现复杂,找到最优解以后还需要对问题进行编码,且因为不能及时利用网 络的反馈信息,导致算法的搜索速度较慢

2.蚁群算法

优点:采用正反馈机制,使得搜索过程不断收敛,最终逼近最优结果;搜索过程采用分布式计算方 式,多个个体同时进行并行计算,大大提高了算法的计算能力和运行效率

缺点:如果多样性过剩,系统过于活跃,会导致过多的随机运动,陷入混沌状态。如果多样性不 够,正反馈过强,会导致僵化,当环境变化时蚁群不能相应调整

1.遗传算法

2.蚁群算法

3.爬山算法

4.模拟退火算法

5.粒子群算法

6.人工鱼群算法

7.禁忌搜索算法

8.人工免疫算法

48.简述遗传算法的过程。

image-20221107163024652

49.云测试有哪两层含义?

1.有效利用云计算环境资源对其他软件进行测试,即基于云计算的测试

2.针对部署在云中的软件进行测试,即面向云计算的测试

50.针对云软件质量属性定量化描述的问题,最直接的思路有哪两种?

1.通过有效对的定义软件失效和选取恰当的工作负载度量方式,定义软件可靠性

2.通过诊断软件故障信息,结合软件内部度量,提供其他产品质量度量

51.请列举几种云安全技术。

云计算工作负载保护平台、云访问安全代理(CASB)、托管检测和响应(MDR)、微分区等

52.云计算安全与传统软件安全有哪些区别?

1、安全边界模糊化

2、数据安全要求更高

3、责任共担模型

4、新环境中的错误配置

5、合规性要求升级

53.安全测试包括哪些主要的挑战?

安全测试包括两个主要挑战

1.生成值(也叫测试有效载荷)目的是实施测试

2.评估这些测试有效载荷可以暴露一个真实的漏洞

54.简述 SOFIA 检测 SQL 注入的过程。

1.对sql语句进行解析

2.裁剪,替换所有常量数值和字符串

3.计算树编辑距离,利用approxlib 工具,该工具实现了计算树编辑距离的算法,利用树编辑距离 进行分类,往往是不够的。

4.聚类,利用K-中心算法进行分类,

image-20221107164837853

image-20221107164847970

55.企业的测试策略体现在几个方面?

1.合理地减少测试工作量

2.提高测试效率

图中是详细答案

image-20221107165010361

56.为什么要制订测试计划?

测试计划文档为完成测试的技术任务提供便利

测试计划文档改善测试任务和测试过程之间的联系

测试计划文档为组织、规划和管理测试项目提供结构

57.简述基于 CMMI 的测试流程和传统测试流程的区别。

基于 CMMI 的测试流程建立了一个自动的、可扩展的框架。

因而能够从总体上改进组织的质量和效率。

CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性4个方面。

image-20221107165148357

image-20221107165158014

58.了解当前互联网公司是如何将 DevOps 部署到企业的软件质量保障流程中的。

通过CI/CD持续部署,让开发运维成为一个统一的生态系统,并进行各个环境部署