软件测试复习

软件测试复习

1.什么是软件测试?

概念:

  • 在特定的条件下运行系统或构件,观察或记录结果,在系统的某个方面做出评价。(为了证明软件的缺陷)(测试是为了找到程序的错误)
  • 分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性。(测试是为了获得度量值)(质量的保证)

目的:

  • 测试是程序的执行过程,目的在于发现错误
  • 为了证明程序有错,而不是程序无错
  • 好的测试用例在于能发现至今未发现的错误
  • 一个成功的测试是发现了至今未发现的错误的测试
  • 回避潜在的软件错误和缺陷给软件造成的商业风险
  • 发现当前开发工作中所采用的软件过程的缺陷,修正软件开发规划
  • 对软件质量进行度量和评估

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

  1. 软件测试是证伪而非证真
  2. 尽早地和不断地进行软件测试(坚持在各个环节进行技术评审和验证)
  3. 重视无效数据和非预期使用习惯的测试
  4. 程序员应该避免检查自己的程序
  5. 充分注意测试中的群集现象
  6. 用例要定期评审
  7. 对测试结果做全面检查
  8. 测试现场保护和资料归档
  9. 经济型原则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M656qYSH-1668001625872)(D:/Typora Picture/image-20221108234851654.png)]

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

复杂性:

  • 穷举用例和穷举路径行不通
  • 测试所需要的输入量太大
  • 测试的输出结果太多
  • 软件实现的途径太多
  • 软件规格说明没有一个客观标准
  • 穷举路径测试不能保证程序实现符合规格说明的要求
  • 穷举路径测试不可能查出程序中因遗漏路径而出现的错误
  • 穷举路径测试可能发现不了有关数据的故障

经济性:

  • 根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级
  • 认真研究测试策略,以便能开发出尽可能少的测试用例,发现尽可能多的软件故障

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

  • 用户希望通过软件测试能充分暴露软件中存在的问题和故障
  • 开发者希望测试能表明软件产品已经正确地实现了用户的需求,没有软件故障存在
    1. 完全测试程序是不可能的(程序输入量太大、程序输出量太多、软件实现途径太多)
    2. 软件测试是有风险的
    3. 测试无法找到隐藏的软件故障
    4. 存在的故障数量与发现的故障数量成正比(程序员怠倦、程序员往往犯同样的错误、某些软件故障可能是冰山之巅)
    5. 杀虫剂现象(软件测试进行的越多,程序免疫力越强。应该根据不同的测试方法开发测试用例,对程序的不同部分进行测试,以找出更多的软件故障)
    6. 一般不要丢弃测试用例
    7. 应该避免测试自己编写的程序
    8. 并非所有软件故障都能修复(没有足够的时间;不值得修复;修复风险太大;不算真正的软件故障)
    9. 软件测试是一项复杂且具有创造性的和需要高度智慧的挑战性任务

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

  • 没有开发过程就没有测试过程
  • 测试过程是为保证开发过程的产出进行验证和确认的一系列活动
  • 不同的软件开发过程模型中,测试在其中所处的位置不同
  • **项目规划阶段:**负责监控整个测试过程。
  • **需求分析阶段:**确定测试需求分析,即确定在项目中需要测试什么,同时制订系统测试计划。
  • **概要设计和详细设计阶段:**制订集成测试计划和单元测试计划。
  • **程序编写阶段:**开发相应的测试代码和测试脚本。
  • **测试阶段:**实施测试,并提交相应的测试报告。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXp0xQWI-1668001625873)(D:/Typora Picture/image-20221108095012229.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xom3QP3V-1668001625873)(D:/Typora Picture/image-20221102140453844.png)]

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

软件开发过程是指软件生命周期中所涉及的一系列相关过程,过程是活动的集合,活动是任务的集合,任务是把输入转换为输出的操作。

软件开发过程对于整个软件工程来说是十分重要的,软件测试也是基于软件开发完成的

软件开发模型描述开发阶段如何组合到一起,是软件开发活动以及它们之间关系的结构框架,通过以下属性刻画:

  • 所执行的活动
  • 每种活动的可交付茶农i你
  • 可交付产品的确认方法
  • 活动序列
  • 每种活动的验证方法,包括活动之间的沟通机制

软件开发模型是软件开发全部过程、活动、任务的结构框架。它是对软件过程的建模,即用一定的流程将哥哥环节连接起来,并可用规范的方式操作全过程,好比工厂的流水线。软件开发模型能清晰、直观地表达软件开发全部过程,明确规定要完成的主要活动和任务,它用来作为软件项目工作的基础。软件开发模型应该是稳定和普遍适用的。

没有它会降低软件开发的效率,也会降低软件质量。

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

不是。因为有些错误是由于没有实现客户需求引起的,出现在软件前期阶段

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

需求分析阶段-软件设计和编码阶段(进行单元测试)-集成、系统、验收测试阶段

需求分析阶段、测试计划阶段、测试设计阶段、测试执行阶段、测试评估阶段

  • 测试计划和控制(测试策略的确定(重要性、优先级)、测试计划的要点)
  • 测试分析和设计(测试用例设计的方法和管理)
  • 测试实现和执行(完整性测试,运行主要功能)
  • 评估出口准则和报告
  • 测试结束活动

关键过程:

  • 单元测试
  • 集成测试
  • 系统测试
  • 验收测试
  • 文档测试/评审
  • 缺陷跟踪

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

静态测试:通过评审文档、阅读代码等方式测试软件。主要包括各阶段的评审、代码检查、程序分析、软件质量度量等,用于对被测程序进行特性分析。其中评审通常有人来执行;代码检查程序分析、软件质量度量等即可人工完成,也可用工具来完成,但工具的作用和效果相对更大更好一些。

动态测试:通过运行程序测试软件。主要运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标;这种方法包括三部分:构造测试用例、执行程序、分析程序的输出结果。

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

区别:

  1. 已知产品的因素
    • 黑盒测试:已知程序的功能需求、设计规格,可以通过测试验证程序需要的功能是否已被实现,是否符合要求
    • 白盒测试:已知程序的内部工作结构,可以通过测试验证程序的内部结构是否符合要求,是否含有缺陷
  2. 检查测试的主要内容
    • 黑盒测试:
      1. 功能是否都满足需求
      2. 是否有功能出现缺陷
      3. 接口上是否都能正确接受输入
      4. 输出结果是否正确
      5. 是否有数据结构信息或者外部信息访问错误
      6. 是否有初始化或终止性错误
    • 白盒测试:
      1. 所有程序模块的独立路径都需要至少被测试一遍
      2. 所有的逻辑判定的真值和假值都需要至少被测试一遍
      3. 在运行的界限内和循环的边界上执行循环体
      4. 测试内部的数据结构是否有效
  3. 静态测试方法
    • 静态黑盒测试方法:产品需求文档、用户手册、帮助文件等
    • 静态白盒测试方法:走查、复审、评审程序源代码、数据字典、系统设计文档、环境设置、软件配置项等
  4. 动态测试方法
    • 动态黑盒测试方法:通过数据输入并运行程序来检验输出结果,如功能测试、验收测试和一些性能测试(或兼容性、安全性)等
    • 动态白盒测试方法:通过驱动程序来调用,如进行单元测试、集成测试、和部分性能测试(或可靠性、恢复性)等

不可以同时使用这两种方法。一般先进行黑盒测试再进行白盒测试

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

  • 因为黑盒测试,测试人员不需要看到代码,不需要有任何特定编程语言的只是
  • 测试是从用户的角度进行的,而不是从设计者或者开发者的角度出发的
  • 一旦规格说明完成,就可以设计测试用例

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

假设一个模型的特征,比如年龄(x),机器学习模型(y)的输出是疾病患者的可能性估计,输入参数是年龄(x)。随着年龄的增长和其他重要特征的出现,患此病的可能性也随之增加。因此,在输入(年龄)和输出(疾病发生的可能性估计)之间建立了一种蜕变关系。

可以按以下方式计划一组测试用例:

假设年龄为x1=40,输出(y1)为0.36。

下一个测试用例:对于年龄x2=50,y2的值应该大于y1。

下一个测试用例:对于年龄x3=45,y3的值应该大于y1小于y2。

下一个测试用例:对于年龄x4=30,y4的值应小于y1。

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

  • 等价类划分:将所有的可能输入数据,即程序的输入域,划分为若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例

  • 计算年终奖金的例子[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVwymFrr-1668001625874)(D:/Typora Picture/image-20221105163513823.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-drqaVjiE-1668001625874)(D:/Typora Picture/image-20221105163541265.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pbfrC2WJ-1668001625875)(D:/Typora Picture/image-20221105162902744.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-clB5l8XI-1668001625875)(D:/Typora Picture/image-20221105162925624.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sEnwmnrf-1668001625875)(D:/Typora Picture/image-20221105162944609.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RcBVlHNQ-1668001625875)(D:/Typora Picture/image-20221105164623763.png)]

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

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边杰值分析法是对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

边界值分析法的基本思想是在等价类的极端情况下考虑软件测试工作,因为错误很容易发生在输入值的关键点,即从合法变为非法的那一点。

程序的边界指的就是用户定义的范围值。输入定义域或输出值域的边界。最小值、略高于最小值、正常值、略低于最大值、最大值

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nF7ZZPP4-1668001625876)(D:/Typora Picture/image-20221105164009391.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FM8XpTmr-1668001625876)(D:/Typora Picture/image-20221105173435057.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PqyBWDxL-1668001625877)(D:/Typora Picture/image-20221105173558455.png)]

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

逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试

根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为:

  1. 语句覆盖(SC)
  2. 判定覆盖(DC)
  3. 条件覆盖(CC)
  4. 条件/判定覆盖(C/DC)
  5. 条件组合覆盖(MCC)
  6. 多条件覆盖(MCC)
  7. 修正判定条件覆盖(MCDC)
  8. 点覆盖
  9. 边覆盖
  10. 路径覆盖

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

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

变异是一种变更程序的行为

程序变异测试技术的基本思想:

(1)对于给定的程序P,先假定程序中存在一些小错误,每假设一个错误,程序P就变成P′,如果假设了n个错误:e1,e2,…,en,则对应有n个不同的程序:P1,P2,…,Pn,这里Pi称为P的变异因子。

(2)存在测试数据Ci,使得P和Pi的输出结果是不同的。因此,根据程序P和每个变异的程序,可以求得P1,P2…,Pn的测试数据集C={C1,C2,…,Cn}。

(3)运行C,如果对每一个Ci,P都是正确的,而Pi都是错误的,这说明P的正确性较高。如果对某个Ci,P是错误的,而Pi是正确的,这说明P存在错误,而错误就是ei

20.什么是变异算子?

定义了从原有程序生成差别极小程序(即变体)的转换规则。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8HqELqxl-1668001625877)(D:/Typora Picture/image-20221108103833860.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ouWjCg4b-1668001625877)(D:/Typora Picture/image-20221108103843791.png)]

语法正确性

典型性

最小性和有效性

明确定义

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

一阶变异指的是程序经过了一次变异

高于一阶的变体叫作高阶变体

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

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

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

测试需求评审的内容包括完整性审查和准确性审查

  • 完整性审查是检查测试需求是否覆盖了所有软件需求,以及软件需求的各项特征,关注功能要求、数据定义、接口定义、性能要求、安全性要求、可靠性要求、系统约束、行业标准等,同时还要关注系统隐含的用户需求。
  • 准确性审查是检查测试需求是否清晰、没有歧义、描述准确,是否能获得评审各方的一致理解,每项测试需求是否都可以作为设计测试用例的依据

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

等价类测试方法是把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。使用等价类划分方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。

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

按照严重程度由高到低的顺序可以将软件缺陷分为5个等级:系统崩溃、严重、一般、次要、建议。需要说明的是,在具体的项目中,需要根据实际情况来划分等级,不一定是5个等级。如果软件缺陷数比较少,就可以划分为3个等级:严重、一般、次要。一般的软件缺陷管理工具会自动给出一个默认的软件缺陷严重程度划分

按照缺陷修复的优先级由高到低可以划分为3个等级:高(high)、中(middle)、低(low)。其中,高优先级的软件缺陷是应该立即修复的软件缺陷;中优先级的软件缺陷是应该在产品发布之前修复的软件缺陷;低优先级的软件缺陷是指如果时间允许,应该修复的软件缺陷或是可以暂时存在的软件缺陷。优先级的这种分法也不是绝对的,需要根据实际情况灵活划分

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

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

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

为了评估软件过程、产品,以及服务而使用的度量称作软件度量。

软件测试的度量包括对软件测试产出物的测量,以及软件测试过程的测量。

原因:

  • 判断软件测试的有效性。
  • 判断软件测试的完整性。
  • 判断所测试的软件产品的质量。
  • 分析和改进软件测试过程。

是不可或缺的。

重要性:

  • 度量可以用来提高质量、产品生产力,以及服务,从而提高客户满意度。
  • 对于管理组织很容易分析数据并且深入下去
  • 当过程不受控时有不同的度量方式作为监控者
  • 度量提供当前过程改进

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

素质要求:

  • 责任心
  • 沟通能力
  • 团队合作精神
  • 耐心,细心和信心
  • 时时刻刻保持怀疑态度,并且拥有缺陷预防的意识
  • 不断学习能力

技能要求:

  • 业务知识
  • 产品设计知识
  • 软件架构知识
  • 统一建模语言
  • 测试工具
  • 不同的测试手段和测试工具
  • 开发工具
  • 用户心理学
  • 界面设计中的三种模型(设计者模型、实现者模型、用户模型)
  • 人机交互认知心理学
  • 编程技能
  • 脚本语言
  • 文档能力

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

代码行覆盖率=(已执行测试的代码行/总的代码行)×100%

功能模块覆盖率=已执行测试的功能模块数/总的功能模块数×100%

数据库覆盖率=SQL中出现的数据库的对象数/数据库总的对象数×100%

需求覆盖率=被验证到的需求数量/总的需求数量×100%

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

不能直接从产品的质量反映测试的效果

应该从软件产品的度量转移到测试产出物的度量,以及测试过程的度量

影响产品质量的因素有很多,软件测试只占很小的一部分

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

  1. 要制定明确的度量目标
  2. 度量标准的定义应该具有一致性、客观性
  3. 度量方法应该尽可能简单、可计算
  4. 度量数据的手机应该尽可能自动化

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

自动化测试是通过自动化(例如一组回归测试)进行特定测试的行为,而不是手动进行,而测试自动化是指自动化跟踪和管理不同测试的过程。

自动化测试记忆是通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动化的测试。即程序测程序,通过使用脚本运行

自动化测试焦点集中在测试执行,主要是由测试工具自动地完成测试

测试自动化指一切可以由计算机系统自动完成的测试任务都已经由计算机系统或测试工具、程序承担并自动执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJX80foV-1668001625878)(D:/Typora Picture/image-20221108192527056.png)]

自动化测试优点:

  1. 效率更高,回归测试更方便
  2. 可靠性高,可重复利用
  3. 覆盖率高
  4. 适用范围广

缺点:

  1. 不能取代手动测试
  2. 不能用于测试周期很短的项目,不能保证 100%的测试覆盖率,不能测试不稳定的软件和软件易用性等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8FNgaTH-1668001625878)(D:/Typora Picture/image-20221108152032930.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tPLmj6n3-1668001625878)(D:/Typora Picture/image-20221108152040858.png)]

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

  • 动态性
  • 异构性
  • 并发性
  • 分步性

Web测试有五个方面

  1. 用户界面测试
    • 导航测试
    • 图形测试
    • 内容测试
    • 表格测试
  2. 功能测试
    • 链接测试
    • 表单测试
    • Cookies测试
    • 数据库测试
  3. 性能测试
    • 链接速度测试
    • 负载测试
    • 压力测试
  4. 兼容性测试
    • 平台兼容性测试
    • 浏览器兼容性测试
    • 分辨率兼容性测试
    • 打印机兼容性测试
    • 组合兼容性测试
  5. 安全性测试
    • 目录设置
    • SSL
    • 登录
    • 日志文件
    • 脚本语言

移动端软件测试的质量要求:

  1. 功能性
  2. 稳定性
  3. 可维护性
  4. 性能

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

  1. 性能测试需求分析
  2. 性能测试计划和方案
  3. 性能测试用例编写
  4. 性能测试执行
    • 编写\录制脚本
    • 搭建场景
    • 运行脚本
    • 系统性能调优
  5. 性能测试报告总结

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

第三方测试是指独立于软件开发方和用户方之外的测试组织实施的测试。第三方测试也称为独立测试,它有独立的验证和确认活动。在模拟用户真实应用的环境下,进行软件确认测试

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

意义

  • 客观性:第三方测试机构相对独立于软件的开发方与使用方,可以比较客观地开展工作。在测试中能抱着客观的态度,可以使其工作有更充分的条件按测试要求去做。
  • 专业性:独立测试作为一种专业工作,在长期的工作过程中势必能够积累大量的实践经验,形成自己的专业优势。同时,软件测试也是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。专业化分工是提高测试水平、保证测试质量、充分发挥测试效用的必然途径。
  • 权威性:由于专业优势,独立的第三方测试工作形成的测试结果更具信服力。由专业化的独立机构实施的全面的、规范化的测试更具公正性和权威性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jwrZYzHX-1668001625878)(D:/Typora Picture/image-20221108201623094.png)]

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

由开发者和用户以外的第三方进行的软件测试,其目的是保证测试的客观性。

狭义:独立的第三方测试机构

如:国家级软件评测中心,各省软件评测中心,有资质的软件评测企业

广义:非本软件的开发人员

如:QA部门人员测试、公司开发团队内部交叉测试

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

测试阶段可以分为集成测试、系统测试和验收测试。需要注意的是,单元测试通常是由开发方实施。第三方测试主要的测试方法是黑盒测试,采取的方式是手工测试加自动测试。常见的测试内容包括软件和文档,其中需要对软件的功能性、易用性、容错性、安全性和性能进行测试。而对于文档要检查它的正确性和一致性。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mCcXcP8y-1668001625879)(D:/Typora Picture/image-20221108202403332.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4k1Y6WYF-1668001625879)(D:/Typora Picture/image-20221108233851477.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7E7bpLpR-1668001625879)(D:/Typora Picture/image-20221108233900538.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yuQ4DpBa-1668001625879)(D:/Typora Picture/image-20221108233920816.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i80jdT0F-1668001625879)(D:/Typora Picture/image-20221108233928880.png)]

1)制定测试计划

2)理解被测软件

3)设计测试观点、用例 &测试脚本生成

4)测试实施

5)测试总结

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

包括:

  • 明确描述测试任务、
  • 所需的各种资源和技术方案、
  • 人员角色的进度安排、
  • 宏观测试观点、
  • 测试工具、
  • 预期测试目标、
  • 可能出现的问题和风险,

以指导测试的执行,最终实现测试的目标,保证软件产品的质量。

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

数据库应用软件是基于数据库管理系统软件之上开发的应用层软件,而数据库管理系统软件属于重要的、复杂基础软件。数据库管理系统是为数据库应用软件提供底层的数据管理功能,客户通常使用数据库应用软件操作数据,对底层DBMS系统基本不用关心。

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

数据库模式的设计主要通过以下步骤逐一验证。

编号数据库设计步骤和输出成果数据库设计验证观点
1需求分析输出:数据字典和数据流图- 是否反映所有的用户需求- 是否充分考虑系统的扩充和改变
2概念结构设计输出:关系实体(Entity-Relation,ER)图- 是否涵盖了系统涉及所有的实体和属性- 实体与属性的划分是否正确- 实体之间的联系与约束刻画是否准确全面- 不同的子ER图中是否存在命名、结构等冲突- 不同的子ER图中是否存在冗余
3逻辑结构设计输出:数据库表结构等- 是否符合关系型数据库设计的范式理论,通常应达到3NF或者BCNF- 是否考虑该系统的性能需求等进行去范式化- 是否考虑该系统的性能要求进行分库分表
4物理结构设计输出:存储、索引等- 索引设计(聚簇索引、唯一索引等)是否合理 - 存储结构(关系、索引、日志,备份等)是否合理

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

MySQL的SQL功能回归测试可以使用MySQLTest这个测试框架进行,具体回归测试过程如下,首先需要按照新功能测试步骤生成基准文件,其次按照回归测试流程测试,将测试结果与基准文件进行自动对比。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTeYaYj4-1668001625880)(D:/Typora Picture/wps1-1667836245578-1.jpg)]

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

测试时,同时开启多个客户端连接,设置合适的隔离级别,按照设计的测试场景进行并发操作。例如隔离性测试可以按照如下测试:

用户1用户2
SQL>begin work;SQL>begin work;
SQL>insert into test_1 values(3,1);SQL>insert into test_1 values(3,33);
—插入一条语句—插入一条语句
SQL>select * from test_1 where a=3;SQL>select * from test_1 where a=3;
A BA B
------------------
3 1—查询出一条数据,无法查询出用户 2 插入数据3 33—查询出一条数据,无法查询出用户 1 插入数据
SQL>commit;SQL>commit;
SQL>select * from test_1 where a=3;SQL>select * from test_1 where a=3;
A BA B
---------------------
3 13 1
3 333 33

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

针对DBMS可以采用TPC-C或者TPC-H等基于某种基准测试,也可以按照数据库系统特点设计独自的测试场景。性能测试中重点需要考虑的因素可以包括:

  1. 性能测试工具
  2. 性能度量指标
  3. 性能测试场景(基准 or 自定义场景);
  4. 性能测试数据量与数据分布
  5. 被测DBMS的架构特征
  6. 其他等。

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

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

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

搜索方法有三大类

  • 基于微积分的搜索方法
  • 带有向导的随机搜索方法
  • 枚举方法
  1. 遗传算法
    • 优点:是一种确定的搜索技术,在解决软件工程技术问题中显示出巨大的优势和价值。在函数和组合优化、生产调度、自动控制、智能控制、机器学习、数据挖掘、图像处理以及人工智能等领域得到了成功而广泛的应用,成为了21世纪的关键技术之一。
    • 缺点:具有不确定性的缺点,有可能在使用不当的情况下收敛于局部最优解。
  2. 蚁群算法
    • 优点:
      • 蚁群算法是一种自组织的算法
      • 蚁群算法是一种本质上并行的算法
      • 蚁群算法是一种正反馈的算法
      • 一群算法具有较强的鲁棒性
    • 缺点:迭代次数完成后,找到的不是最优解,而是次优解。
  3. 人工鱼群算法
    • 优点:利用鱼的觅食、聚群和追尾现象,构造个体的底层行为,通过鱼群中各个体的局部寻优,达到全局最优值在群体中凸显的目的。研究表明。该算法具有较好的收敛性
  4. 禁忌搜索算法
    • 优点:为了避免陷入局部最优解,采用了一种灵活的记忆技术,对已经进行的优化过程进行记录和选择,指导下一步的搜索方向。
  5. 人工免疫算法
    • 模拟了不同的自然机制,具有并行性,产生了高亲和度、长寿命的记忆细胞并不断对其更新
  6. 粒子群算法
    • 优点:搜索速度快,效率高,算法简单,适合于实值型处理
    • 缺点:对于离散的优化问题处理不佳,容易陷入局部最优
  7. 爬山算法
    • 一种局部搜索算法,采用启发式方法,是对深度优先搜索的一种改进,利用反馈信息帮助生成解的决策。可以明显避免遍历,通过启发选择部分节点,从而达到提高效率的目的
  8. 模拟退火算法
    • 是一种基于概率的算法。相对于爬山算法,模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局最优解

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ej9b2sxf-1668001625880)(D:/Typora Picture/image-20221109143056072.png)]

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

  • 第1种是有效利用云计算环境资源对其他软件进行测试,即基于云计算的测试
  • 第2种是针对部署在“云”中的软件进行测试,即面向云计算的测试

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

  • 通过有效的定义软件失效和选取恰当的工作负载度量方式,定义软件可靠性
  • 通过诊断软件故障信息,结合软件内部度量,提供其他产品质量度量

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

  1. 功能验证
  2. 漏洞扫描
  3. 模拟攻击实验
    • 冒充
      • 口令猜测
      • 缓冲区溢出
    • 重演
    • 消息篡改
      • DNS高速缓存污染
      • 伪造电子邮件
    • 服务拒绝
      • 死亡之ping
      • 泪滴
      • UDP洪水
      • SYN洪水
      • Land攻击
      • Smurf攻击
      • Fraggle攻击
      • 电子邮件炸弹
      • 畸形消息攻击
    • 内部攻击
    • 外部攻击
    • 陷阱们
    • 特洛伊木马
    • 侦听技术

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

云安全和传统安全的最大区别是责任范围,传统安全用户100%为自己的安全负责,云安全则由用户和云供应商共担责任,共同责任模型是云安全的典型特征。

共同责任模型概述了由云服务提供商或用户处理的安全要素。责任范围因客户使用云的服务而异。这些服务包括软件即服务(SaaS)、平台即服务(PaaS)和基础架构即服务(IaaS)。

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

  • 生成值(测试有效载荷),目的是实施测试
  • 评估这些测试有效载荷可以暴露一个真实的漏洞

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

  1. 解析,对SQL语句进行解析

![img](D:/Typora Picture/6G86$H}CM]HIR3VB0_%I.jpg)

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ukB0Recf-1668001625880)(D:/Typora Picture/image-20221109151528552.png)]

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

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

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

  1. 合理地减少测试工作量
    • 减少冗余的测试
    • 减少无价值的测试
  2. 提高测试效率

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

  1. 良好的测试计划文档可以提供以下3个主要作用
    • 测试计划文档为完成测试的技术任务提供便利
    • 测试计划文档改善测试任务和测试过程之间的联系
    • 测试计划文档为组织、规划与管理测试项目提供结构
  2. 测试文档有助于测试技术任务的完成
    • 提高测试覆盖率
    • 避免不必要的重复
    • 分析程序并快速挑选好的测试用例
    • 提供最终测试的结构
    • 检查完整性
  3. 测试文档增进了测试任务和测试过程之间的交流
  4. 测试文档提供了组织、安排,以及管理测试项目的结构
  5. 测试计划可以帮助度量项目状态并增加项目的透明度,通过创建及执行测试计划的进展报告,对项目的进度进行有效度量

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

CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成

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

CMMI的测试流程从全局上看,主要是在V模型的基础上在需求分析、概要设计和详细设计阶段增加了需求测试、概要设计测试金额详细设计测试三个环节,测试流程的总的流程依次是需求测试、概要设计测试、详细设计测试、单元测试、集成测试、系统测试和验收测试,每个测试环节里面的具体过程又遵循X模型的流程。这三个环节可以分别在需求分析阶段、概要设计、详细设计开发阶段之后进行,也可以与3个对应的阶段并行或者交叉进行,从而缩短开发的周期同时确保产品质量。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zbfMDTfD-1668001625881)(D:/Typora Picture/image-20221109174729906.png)]

  • 需求管理:需求管理工具、用户故事、任务、迭代等

  • 开发:开发语言、开发工具、技术框架、运行环境、组件划分及依赖关系等

  • 代码管理:代码及文档管理工具、代码库分支及用途、分支策略、代码质量检测工具及质量指标等

  • 构建:构建工具、构建过程及构建策略、构建介质策略、中间介质及最终介质管理等

  • 测试:用例和Bug管理、自动化测试工具、验收标准等

  • 部署:环境规划、环境配置、部署方式、依赖的中间件和公共组件等

  • 发布:上线交付物、发布流程、应用及数据备份方式、回滚方式等
    结构

    • 检查完整性
  1. 测试文档增进了测试任务和测试过程之间的交流
  2. 测试文档提供了组织、安排,以及管理测试项目的结构
  3. 测试计划可以帮助度量项目状态并增加项目的透明度,通过创建及执行测试计划的进展报告,对项目的进度进行有效度量

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

CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成

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

CMMI的测试流程从全局上看,主要是在V模型的基础上在需求分析、概要设计和详细设计阶段增加了需求测试、概要设计测试金额详细设计测试三个环节,测试流程的总的流程依次是需求测试、概要设计测试、详细设计测试、单元测试、集成测试、系统测试和验收测试,每个测试环节里面的具体过程又遵循X模型的流程。这三个环节可以分别在需求分析阶段、概要设计、详细设计开发阶段之后进行,也可以与3个对应的阶段并行或者交叉进行,从而缩短开发的周期同时确保产品质量。

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

[外链图片转存中…(img-zbfMDTfD-1668001625881)]

  • 需求管理:需求管理工具、用户故事、任务、迭代等

  • 开发:开发语言、开发工具、技术框架、运行环境、组件划分及依赖关系等

  • 代码管理:代码及文档管理工具、代码库分支及用途、分支策略、代码质量检测工具及质量指标等

  • 构建:构建工具、构建过程及构建策略、构建介质策略、中间介质及最终介质管理等

  • 测试:用例和Bug管理、自动化测试工具、验收标准等

  • 部署:环境规划、环境配置、部署方式、依赖的中间件和公共组件等

  • 发布:上线交付物、发布流程、应用及数据备份方式、回滚方式等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值