软件测试与质量保证 | 云班课简答题库

发布于:2024-07-03 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

第14章 质量相关简答题

第15章 测试实际相关简答题

第16章 测试基本相关简答题


第14章 质量相关简答题

1. 简述基本的测量原则。

  • 测量应该基于该应用领域正确的理论之上,并在测量的定义中确定测度的目标;
  • 每一个技术测量的定义应该具有一致性和客观性、无二义性;
  • 测量在经验和直觉上也应该有说服力;
  • 测量的方法力求简单、可计算性;
  • 测量应该被剪裁以最适应特定的产品和过程,而且任何时候应尽可能使得收集和分析自动化;
  • 应该用正确的统计技术来建立内部产品属性和外部待测量特征的关系;
  • 测量结果应该是可靠的,不会因为一些技术问题导致测量结果很大的偏离;
  • 测量应该建立反馈机制。

2. 请指出走查、审查这两种同行评审方法的不同?

  • 走查和审查的区别是其正式性的等级。其中,审查是两者之中更为正式。
  • 走查的发现限于被评审文档的意见,而审查的发现还同改进开发方法自身的工作相结合。
  • 所以和走查相比,审查对一般的SQA做出了更大贡献。

3. 简述什么是软件缺陷。

  • 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;
  • 从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。

4. 简述三种SQA的组织结构以及各自的优缺点。

① 独立的SQA部门:

在整个企业的组织结构中设立一个独立的职能和行政部门—SQA部门,该部门和其他职能部门平级。

优点:保护SQA工程师的独立性和客观性;有利于资源的共享。

缺点:SQA对流程的跟踪和控制难于深入,往往流于形式,难于发现流程中存在的关键问题;由于和项目组的相互独立,SQA工程师发现的问题不能得到及时有效的解决。

② 独立的SQA工程师:

在这种组织结构中,SQA工程师属于项目成员,向项目经理汇报。  

优点:SQA工程师能够深入项目,较容易发现实质性问题;对于SQA工程师发现的问题,能够得到较快短的解决。  

缺点:项目之间相互独立, SQA工程师之间的沟通和交流有所缺乏,不利于经验的共享和SQA整体的培养和发展;由于SQA工程师隶属于项目组,独立性和客观性有所欠缺。

③ 独立的SQA小组:

该组织结构是前面两种组织结构的综合结果。

特点:SQA组虽然不算一个行政部门,但具有相对的独立性。同时,SQA工程师有隶属于不同的项目组,在工作上向项目经理汇报。该结构综合了上面两种结构的优点,既便于QA融入项目组,又便于部门之间经验的分享,还利于QA能力的提高。

5. 简述软件开发人员和质量保证人员的区别。

  • 软件开发人员负责技术工作,质量保证人员负责质量保证的计划、监督、记录、分析及报告工作。
  • 软件开发人员通过采用可靠的技术方法和措施,进行正式的技术评审,执行计划周密的软件测试来保证软件产品的质量。软件质量保证人员则辅助软件开发组得到高质量的最终产品。

6. 简述质量保证人员的主要工作内容。

  • 为项目制定SQA计划。该计划在制定项目计划时制定,由相关部门审定。它规定了软件开发小组和质量保证小组需要执行的质量保证活动。
  • 参与开发该软件项目的软件过程描述。
  • 评审各项软件工程活动,核实其是否符合已定义的软件过程。
  • 审计指定的软件工作产品,核实其是否符合已定义的软件过程中的相应部分。
  • 确保软件工作及工作产品中的偏差已被记录在案,并根据预定规程进行处理。
  • 记录所有不符合部分,并向上级管理部门报告。跟踪不符合的部分直到问题得到解决。
  • 协调变更的控制与管理,并帮助收集和分析软件度量的信息。

7. 简述为什么需要评审?

  • 从成本上来衡量:缺陷发现得越晚纠正费用越高,而软件评审的重要目的就是通过软件评审尽早的产品中的缺陷,减少大量的后期返工。
  • 从技术上来衡量:前一阶段的错误自然会导致后一阶段的工作结果中有相应的错误,而且错误会逐渐累积,越来越多。
  • 从效率上来衡量:

开发工程师:减少修订缺陷的时间,提高编程效率;减少测试和调试时间

项目负责人:缩短开发周期;减少维护费用;项目风险和质量问题得到很好控制

测试工程师:可以将更多精力放到测试用例的设计上,提高测试效率

维护人员:维护工作减少;产品的可维护性增强

8. 什么是质量管理体系?

质量管理体系是在质量方面指挥和控制组织的管理体系。组织为了实现所确定的质量方针和质量目标,经过质量策划将管理职责、资源管理、产品实现、测量、分析和改进等相互关联或相互作用的过程有机的组成一个整体,构成质量管理体系。

9. 如何辨证的看待质量和客户的关系?

  • 客户与质量的基本关系是相互依赖的关系。
  • 客户是质量的接受者,可以直接观察或感觉到质量的存在。
  • 质量相对于客户存在,服务于客户,而且由客户判定。

10. 简单评价ISO模型、McCall模型和Boehm模型3种软件质量模型。

  • 存在差别:软件质量特性、影响因素或质量指标的定义不完全一致;总体上要表达的思想非常接近;
  • 目的相同:构造软件质量因素-准则-度量,3者综合的软件质量结构模型;
  • ISO模型第一层(质量特性)和第二层(准则)的关系非常清楚,不像McCall模型和Boehm模型那样存在交叉关系。

11. 请详细描述软件质量费用的经典模型?

在经典软件质量费用模型中,软件质量费用可以划分为控制费用、控制失效费用。

其中,控制费用被进一步细化为预防费用和评价费用;

控制失效费用进一步细化为内部失效费用、外部失效费用。

(1)预防费用包括建立软件质量基础设施、更新并改进基础设施以及完成其运行所需的常规活动的投资。

(2)评价费用花在特定项目或软件系统中软件错误的检测上。

(3)内部失效费用是指改正在顾客现场安装软件之前实施设计评审、软件测试及验收测试时检测到的错误而产生的费用。

(4)外部失效费用限定为改正由顾客或维护组在顾客现场安装软件系统之后检测到的失效的费用。

第15章 测试实际相关简答题

1. 什么是性能测试?性能测试主要包括什么内容?

是指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

主要包括以下三个方面:应用在客户端性能的测试,应用在网络上性能的测试和应用在服务器端性能的测试

2. 简单对比白盒测试与黑盒测试。

白盒测试
已知产品的内部工作过程,可以对程序每一行语句、每一个条件或分支进行测试
适合单元测试、集成测试
不适合系统测试


黑盒测试
不考虑程序内部结构和内部特性,而是从用户观点出发,针对程序接口和用户界面进行测试
适合功能测试、易用性测试,验收测试、确认测试;
不适合单元测试、集成测试

3. 测试用例设计

有函数f(x,y),其中x∈[100,200],y∈[5,15]。

请写出该函数采用一般边界值分析法计(自己百度)的测试用例(提示:共9个测试用例)。

参考答案

(100,Y),(200,Y),(101,Y),(199,Y),(X,5),(X,15),(X,6),(X,14),(X,Y)共9组

其中(101<X<199),(6<Y<14)

4. 单元测试、集成测试、系统测试的侧重点是什么?

① 单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试,测试重点是系统的模块,包括子程序的正确性验证等。

② 集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统,进行集成测试。测试重点是模块间的衔接以及参数的传递等。

③ 系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。测试重点是整个系统的运行以及与其他软件的兼容性。

5. 简述负载测试,容量测试和强度测试。

  • 负载测试:在一定的工作负荷下,系统的负荷及响应时间。
  • 强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
  • 容量测试:是通过测试预先分析出反映软件系统应用特征的某项指标的极限值,系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。

6. 白盒测试的重点以及相应的对策是什么?

1、模块接口测试,重点检查进出模块的数据是否正确

2、模块局部数据结构测试,重点检查局部数据结构能否保持完整性

3、模块边界条件测试,重点检查临界数据是否正确处理

4、模块独立执行路径测试,重点检查由于计算错误,判定错误,控制流错误导致的程序错误

5、模块内部错误处理测试,重点检查内部错误处理设施是否有效

7. 什么是回归测试?回归测试的目的是什么?

① 回归测试是指在修改了源代码后,用原有的测试用例进行重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

② 回归测试的目的是所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等,不影响软件原有功能的正确性。

第16章 测试基本相关简答题

1. 什么是桩模块,什么是驱动模块?

桩模块是在进行单元测试时所设置的一种辅助测试模块,它用来模拟被测试模块工作过程中所调用的模块。

桩模块由被测模块调用,它们一般只进行很少的数据处理,以便检验被测模块与其下级模块的接口。

驱动模块是在进行单元测试时所设置的一种辅助测试模块,它用来模拟被测试模块的上一级模块,相当于被测模块的主程序。

驱动模块在单元测试中接收数据,把相关的数据传送给被测试的模块,启动被测模块,并给出相应的结果。

2. 简述驱动程序以及如何构建测试驱动程序。

  • 测试驱动程序是一个运行测试用例并收集运行结果的程序。
  • 测试驱动程序的设计应该相对简单。
  • 测试驱动程序必须是严谨的、结构清晰、简单,易于维护。
  • 对所测试的类说明变化具有很强的适应能力。
  • 理想情况下,在创建新的测试驱动程序时,应该能够复用已存在的驱动程序的代码

3. 什么是软件测试?

  • 软件测试是为了发现错误而执行程序的过程。
  • 软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。

4. 软件测试和软件开发过程具有怎么样的关系?

  • 软件测试贯穿在软件的开发过程中,在每个开发阶段具有不同的任务,
  • 在需求分析阶段,主要测试需求分析,以及进行系统测试计划的制定。
  • 在详细设计和概要设计阶段,主要确保集成测试计划和单元测试计划完成。
  • 在编码阶段,主要由开发人员测试自己负责开发的模块的代码。对于大型项目则需要有专门人员进行编码阶段的测试任务。
  • 在测试阶段,主要对系统进行测试,并提交相应的测试结果报告和测试分析报告。

5. 什么是测试用例?

  • 测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。
  • 测试用例是执行的最小实体。

6. 软件测试与调试有什么区别?

  • 软件测试与调试在目的、技术和方法等方面存在很大的区别
  • 测试是为了发现软件中存在的错误;调试是为了证明软件开发的正确性。
  • 测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
  • 测试是有计划的,需要进行测试设计;调试是不受时间约束的。
  • 测试经历发现错误、改正错误、重新测试的过程;调试是一个推理的过程。
  • 测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的"飞跃"。
  • 测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。
  • 大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。