第一章 软件测试概述
什么是软件缺陷,发生软件缺陷的原因是什么?
答:软件缺陷指的是在软件开发过程中出现的错误、缺陷或故障,导致软件无法按照预期的功能运行或者产生错误的结果。
导致软件缺陷的原因可能有:(1)编码错误:在软件开发过程中可能会出现编码错误,例如语法错误、逻辑错误、算法错误等。(2)不完全的需求定义,在软件开发的初期阶段,需求定义不够清晰、不完整或者存在歧义。(3)设计错误,软件设计不合理、不完善或者存在逻辑上的错误等。
软件测试的定义(什么是软件测试?)
答:软件测试是描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试的目的与原则
答:目的:1.验证软件是否满足开发合同、开发计划、需求规格说明和设计说明等规定的软件质量要求;2.发现尽可能多的软件缺陷,消除它们,提高软件质量;3.软件测试不仅是为了发现软件缺陷,还是对软件质量进行度量和评估的过程;4.通过分析软件缺陷产生的原因,可以有针对性地进行软件过程改进。
原则:1.软件测试不能证明程序无错;2.所有测试都应当追溯软件缺陷地起源;3.尽早和不断地进行软件测试;4软件测试应尽可能具有独立性;5.完全测试不可行,测试需要适时终止。
软件测试的过程与分类
答:过程:
1.指定测试计划:在需求评审和设计的基础上指定测试计划,确定测试策略和测试进度;
2.测试设计:设计测试用例和测试执行过程;
3.测试准备:为执行测试进行提前准备;
4.执行测试:执行测试用例,发现和修正软件缺陷;
5.测试评估:分析测试结果,为测试总结记录量化评测数据;
6.整体项目测试总结:总结整体项目的测试工作,为今后不断改进测试质量和效率做准备。
分类:
分为单元测试:对软件的最小可测试单元进行测试,如函数、方法等。集成测试:验证不同模块或组件之间的接口和协作是否正常。系统测试:在整个系统上对功能、性能、稳定性等进行综合测试。验收测试:由用户进行测试,验证软件是否满足用户需求和预期。黑盒测试:只关注软件的输入和输出,不考虑内部逻辑和实现细节。白盒测试:根据软件的内部逻辑和结构设计测试用例,覆盖不同的路径和条件等。
软件测试分为哪几个阶段,生命周期
答:阶段:
单元测试:测试最小可测试单元(如函数、方法等)的正确性,由开发人员负责。
集成测试:测试不同模块或组件之间的接口和协作是否正常。
系统测试:对整个系统进行综合的功能、性能、稳定性等方面的测试。
验收测试:由用户进行测试,验证软件是否满足用户需求和预期。
软件测试的生命周期:
计划阶段:确定测试的范围、目标、资源和时间等,编制测试计划和测试策略。
设计阶段:根据需求和设计文档编制测试用例和测试数据,设计测试环境和工具。
执行阶段:执行测试用例,记录测试结果和缺陷,进行错误重现和调试。
缺陷管理阶段:对发现的缺陷进行分类、分析、报告和跟踪,并与开发团队合作进行缺陷修复。
评估阶段:评估测试的覆盖率、效果和质量,检查测试的完整性和一致性。
维护阶段:在软件版本升级或修复缺陷后,重新执行测试用例,确保软件的正确性和稳定性。
软件测试过程模型与软件测试过程的关系
答:软件测试过程模型是指按照一定的规范和流程组织测试活动的模式或方法,用于指导和管理软件测试的实施。而软件测试过程是指具体的测试活动和任务,包括测试计划、测试设计、测试执行、缺陷管理等。软件测试过程模型与软件测试过程之间存在密切的关系,过程模型提供了对测试活动的组织和管理方法,将测试过程划分为不同的阶段和活动,确保测试的全面和有效进行。通过采用适当的过程模型,可以提高测试的效率、准确性和可重复性。
V模型
W模型
什么是测试用例?
答:测试用例是测试执行之前已经设计好的一套详细的测试方案,也是测试执行时的最小实体。其目的是确定应用程序的某个特性是否能够正常工作,并且满足特定用户需求和软件设计结果。
第二章 白盒测试
什么是白盒测试?
答:白盒测试也称为结构测试或透明盒测试,是一种测试技术,通过了解和分析被测试软件的内部结构、逻辑和代码来设计和执行测试用例。
静态测试与动态测试
答:静态:桌面检查、代码审查(开发者讲解,会议形式)、代码走查(会议形式)、代码扫描工具。
动态:逻辑覆盖法{语句、判定、判定条件、条件组合、路径}测试。基本路径测试法。、
什么是程序插装
答:程序插装是一种软件开发和测试技术,通过修改或插入代码来收集额外的运行时信息,以便于调试、性能分析、测试覆盖率分析等目的。
逻辑覆测试 省略。
基本路径测试 省略。
白盒测试应用策略
答:1.开始进行白盒测试时,首先应尽量使用测试工具进行程序静态结构分析;2.在测试中,建议采用先静态后动态的组合方式;3.利用静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态测试分析结果进行进一步确认;4.覆盖率测试是白盒测试的重点,是测试报告中可以作为量化指标的依据;5.在不同测试阶段,白盒测试的应用侧重点也不同。
第三章 黑盒测试
什么是黑盒测试?
答:黑盒测试是一种软件测试方法,该方法测试的焦点在于检查软件系统的功能,而不考虑其内部的实现细节。测试人员只关注输入和输出,而不关心系统的内部设计、代码结构和逻辑。
什么是等价类,基本思想是什么?
答:等价类是指在某个特定条件下,具有相同功能或特性的输入数据可以被划分为同一组或类别的概念。等价类划分的基本思想是将输入的数据集合划分为多个适当的数据子集合(即等价类),使得每个的等价类中选取的数据可以代表该类中得到其他数据。
等价类划分规则(p64)
答:按输入区间划分、按数值集合划分、按离散数值划分、按限制条件或规则划分、按布尔量取值划分、细分等价类。
健壮、弱健壮、一般、弱一般等价类都是等价类划分方法,用于测试设计中选择适当的测试用例。弱一般等价类划分是一种相对宽松的划分方法,既考虑了正常情况的一般等价类,又覆盖了一些边界条件和异常情况的特殊等价类。强一般等价类划分将输入数据严格地划分为一般的等价类,不考虑特殊情况。它主要关注正常情况下的一般等价类不考虑一些边界条件和异常情况。健壮等价类划分不仅关注正常情况下的一般等价类,还特别关注一些边界条件和异常情况的特殊等价类。
一般边界值分析测试用例的数量为4N+1,健壮性边界值分析测试用例的数量为6N+1。
边界值分析法、判定表驱动法、因果图法都在笔记本上。(正交实验法不考大题。)
场景法的过程、适用的场合?
答:场景法用于测试软件的业务过程或业务逻辑,是一种基于软件业务和用户行为的测试方法。侧重用户对软件的操作步骤。
过程:1.确定基本流和备选流;2.根据基本流和备选流生成不同的场景;3.对每一个场景设计测试用例。
使用场景:复杂系统、多用户角色和权限限制系统、需要测试真实环境下表现的系统,以及迭代开发或敏捷开发项目。
错误推测法的概念:
错误推测法基于经验和直觉推测程序中可能出现的各种错误和容易发生错误的特殊情况,将其列为清单,然后有针对性得到设计测试用例。
黑盒测试的应用策略(次重点)
答: 1.对于业务流程清晰的系统,可以利用场景法贯穿整个测试过程;2.对比其他测试方法,优先选用等价类测试方法;3.在任何情况下都应该考虑边界值分析法,该方法是发现软件缺陷最有效的方法之一。
白盒测试与黑盒测试的优缺点对比(次重点)
答:黑盒:优点:1.能直观反映软件是否满足需求;2.不需要了解软件内部的具体实现;3.适用于各阶段测试。
缺点:1.依赖规格说明书的正确性;2.代码覆盖率低;3.会有很多程序路径没有被测试到。
白盒:优点:1.可在系统未完成之前对各个已实现单元进行测试;2.可以检测代码中的每条分支和路径;3.对代码的测试比较彻底。
缺点:系统庞大时,测试工作量大,成本高;2.不能验证规格说明的正确性;3.不易生成测试数据。
第四章 软件测试的执行阶段
单元测试的概念,单元模块如何定义?
答:单元测试就是根据软件规格说明书、详细设计说明书等,对软件设计中的最小单元进行正确性检验的测试工作,主要测试软件单元在语法、逻辑和格式上的错误。单元测试是软件测试的第一个执行阶段,是软件测试的基础。
单元模块是软件开发中的最小功能单元,它应该具备单一职责、封装性、可测试性和可重用性。
能否跳过单元测试直接开始集成测试?
答:不建议跳过单元测试直接开始集成测试,因为单元测试可以帮助尽早发现和解决问题,如果在集成测试阶段才发现问题,可能需要花费更多的时间和精力来定位和解决问题。
四个注解:
(1)@Test 标注为测试方法
(2)@Before 在每个测试方法执行前都要执行
(3)@After 在每个测试方法执行后都要执行
(4)@Lgnore 在测试中被忽略
什么是集成测试?集成测试主要测试什么,测试依据是什么?
答:集成测试是在单元测试之后进行的一种测试方法,用于测试多个功能单元之间的协作和集成。集成测试旨在验证各个功能单元之间的接口和交互是否正确,并确保系统作为一个整体的功能正常。
集成测试主要测试模块或组件之间的交互和协作是否正确,测试依据是系统的需求规格和设计文档,以及模块或组件的接口定义。
集成测试的策略模式
答:非渐增式集成测试:首先对每一个模块进行单元测试,然后根据程序设计结构,将所有模块一次性集成在一起进行测试。
渐增式集成测试:采用逐步集成的方式,把单元测试和集成测试结合起来进行,将被测模块与已经测试好的模块结合在一起进行测试。
什么是系统测试?
答:系统测试是将经过集成测试之后的软件系统与计算机硬件、输入输出设备、所需要的其他支撑软件等系统运行必备的元素结合在一起,然后对用户实际运行环境下的完整计算机系统进行测试。
α测试与β测试的区别?
答:α测试是内部测试,由开发团队或专门测试团队执行。β测试是外部测试,由最终用户或外部测试团队执行。
什么是回归测试?
答:回归测试是指在对之前测试过的软件进行修改或扩充之后进行的重新测试,是为了保证对软件所做的修改和扩充没有引起新的错误而进行的重复测试。
第五章 功能测试与非功能测试
什么是功能测试?
答:功能测试是根据软件需求规格说明书,检验软件系统是否满足用户对于各方面功能的使用要求,确保软件以用户期望的方式运行。
功能测试的主要内容?
答:1.用户界面:测试界面是否规范、合理、是否方便;2.数据:能否接收和输出正确的数据;3.操作:各项操作是否符合用户的要求与习惯;4.逻辑:软件逻辑是否清晰合理;5.接口:能够配合接口使用连接外部设备。
什么是非功能测试?主要内容是什么?
答:相对与功能测试而言,针对软件非功能属性所进行的测试活动,面对的是软件“好不好用”的问题。
主要内容:性能测试(达到预期性能)、压力测试(大于预期工作负载)、负载测试(并发数)、可靠性测试(正常运行时长,自我恢复能力)、容量测试(最大存储量,最大用户数)、安全性测试(对非法入侵的防范呢个能力)、可用性测试(使用软件的学习成本)。
安全测试与常规测试的区别?
答:常规测试关注功能和性能,确保软件正常工作;安全测试评估和修复安全性,发现潜在风险。
TPS
答:指系统每秒能够处理的事务和交易的数量,是衡量系统能力的重要指标。
第六章 软件缺陷报告与测试评估
什么是软件缺陷,缺陷等级?
答:软件缺陷是指在软件开发或运行过程中发现的错误、缺陷或问题。它是指软件在设计、编码或集成过程中存在的不符合预期要求、功能错误或逻辑问题。
等级:
致命:系统的主要功能完全丧失,崩溃、死机甚至危及人身安全;
严重:系统的部分功能丧失,次要功能完全丧失,影响软件系统的正常使用;
重要:产生错误的运行结果,系统运行不稳定,业务流程不正确;
较小:错别字,界面不一致,使用户使用软件不方便。
软件缺陷的生命周期与处理流程?
答:软件缺陷的生命周期:
提交->打开:测试人员提交发现的软件缺陷;
打开->修复:开发人员修复缺陷后通知测试人员修复结果验证;
验证->重新打开:测试人员执行回归测试,若验证缺陷未被修复,再次打开缺陷等待开发人员修复;
验证->关闭:测试人员执行回归测试,确认缺陷被修复,将缺陷状态设置为随后的关闭状态。
如图:
软件测试的评估
答:再软件测试的过程中,需要阶段性地总结和分析测试结果,确保测试过程地有效性。
第七章 软件测试管理
什么是软件质量?
答:软件质量是与软件系统或软件产品满足明确或隐含需求的能有管的特征和特性的集合。软件质量反映的是软件的综合特征与用户期望。
软件质量与软件测试的关系?
答:软件测试是评估软件质量的方法,通过检查软件输出和执行测试用例,发现和修复问题。软件测试有助于提高软件质量,并提供决策依据。
测试计划
答:测试计划是为了确定各个测试阶段的目标和策略,明确需要完成的测试活动,合理安排测试所需要的时间和资源,说明完成测试的组织结构和岗位职责,确定对测试过程及结果运行控制和质量所需要的方法和活动,识别测试风险。
第八章 软件测试自动化
什么是软件测试自动化?
答:自动化测试是指通过软件工具、程序来代替或辅助手工测试的过程,目的是减少手工测试的工作量,提高测试的效率与质量。
软件测试自动化的过程?
答:自动化测试的一般过程是:首先启动被测软件和相应的测试工具,通过测试工具录制软件操作过程并且插入验证点,对录制好的脚步进行必要的测试,然后保存脚本作为测试用例。测试执行时,调用自动化测试脚本,通过脚本操纵被测软件执行,验证测试结果,根据测试工具的执行日志生成软件缺陷报告。
补充:
大题:(1)白盒测试的逻辑覆盖方法【5个】,基本路径测试法。
(2)黑盒测试,等价类测试法,决策树分析法(判定表驱动)。