软件测试与维护-期末复习【核心理论知识+复习题(选择、判断、简答、综合大题)】


一、核心理论知识(围绕核心考点)

1.软件测试的基本概念

软件测试的一般步骤
单元测试、集成测试、系统测试、验收测试
在这里插入图片描述
单元测试中主要的测试方法:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
集成测试中主要的测试方法:增量式组装(自顶向下、自底向上)、非增量式组装(不推荐)
确认测试中主要的测试方法:有效性测试(功能测试)、软件配置审查(文档、程序、报告、数据)
系统测试中主要的测试方法:非功能测试(性能测试、压力测试、安全性测试、配置测试、异常测试…)
验收测试中主要的测试方法:α测试(真实用户测试软件,开发者记录问题)、β测试(真实用户测试软件,用户记录问题并提交)
软件缺陷产生的原因?
① 需求不明确或变更频繁
② 不合理的系统设计
③ 编码错误,如语法错误、逻辑错误等。
④ 复杂的软件系统容易引入缺陷,难以预测所有可能的交互和边界情况。
⑤ 时间不足会导致快速编码和测试不足。
⑥ 缺乏有效的沟通可能导致开发人员和测试人员之间的理解差异
⑦ 外部环境变化

软件测试的经济学和心理学原理:
① 经济学原理:

  • 边际效益递减: 随着测试投入的增加,发现新缺陷的成本逐渐上升,因此需要在成本和风险之间找到平衡点。
  • 投资回报率: 测试的投资应该在降低缺陷成本的同时,提高软件质量,从而提高软件的价值。

② 心理学原理:

  • 测试的不可见性: 软件测试的价值通常在软件发布前难以直观地展示,这可能导致在测试方面投入不足。
  • 测试过早饱和: 在测试的初期可能找到大量的缺陷,但在后期可能会变得更难找到新的缺陷,这可能导致测试投入减少。

软件测试的基本原则:
完备性: 测试应该尽可能地覆盖所有可能的输入、路径和边界条件,以确保软件的全面测试。
独立性: 测试应该独立于开发,以确保测试人员能够独立地评估软件的质量。
早期测试: 测试应该在软件开发的早期阶段开始,以便尽早发现和修复缺陷。
尽早失败: 软件测试的目标之一是尽早地发现缺陷,使得缺陷能够在更早的阶段得以修复。

软件测试的生命周期:
计划阶段: 制定测试计划,确定测试范围、资源、时间表和测试目标。
设计阶段: 根据需求和设计文档,制定测试用例和测试数据。
执行阶段: 执行测试用例,记录测试结果,并提交缺陷报告。
评估阶段: 对测试结果进行评估,确定是否满足退出标准。
复审阶段: 对整个测试过程进行回顾,总结经验教训,为未来的项目提供改进建议。

2.软件测试的需求分析

业务逻辑分析模型:
业务逻辑分析模型是为了深入理解和描述系统中的业务流程、规则和逻辑关系而创建的模型。在软件开发中,它有助于捕捉和表达系统中各种业务规则和流程的关系,为后续的系统设计和实现提供基础。以下是一些常见的业务逻辑分析模型:
① 数据流图(DFD): 描述系统内部数据的流动和处理过程,帮助理解数据如何在系统中传递和处理。
② 流程图: 用于描述业务过程中各个步骤和决策的流程图,有助于理解业务逻辑的执行顺序。
③ 状态图: 描述系统中各个对象的状态及其状态之间的转换,有助于理解业务规则中状态的变化。
④ 决策表: 用于表示不同条件下可能的决策结果,有助于清晰地呈现业务规则。
⑤ 用例图: 用于描述系统与外部参与者之间的交互,有助于理解系统的功能和用户需求。

软件测试调研方法:
文献调研: 查阅相关学术论文、专业书籍和技术文档,了解最新的测试方法、工具和最佳实践。
案例研究: 分析已经成功实施测试的项目案例,从中学习成功的测试策略和经验。
行业标准: 研究并遵循行业内的测试标准和最佳实践,如ISTQB(国际软件测试资格委员会)制定的测试标准。
专业培训: 参与测试培训和研讨会,通过与业内专业人士的交流学习测试的最新动态。
社区参与: 参与测试社区,通过与同行交流,分享经验和获取实际项目中的测试问题解决方法。

测试需求分析的基础知识和工程学分析方法:
① 需求分析: 理解项目的功能需求、性能需求、安全需求等,明确系统的预期行为和性能指标。
② 用户故事和用例: 使用用户故事和用例描述系统的功能,以便更好地理解和捕捉测试需求。
③ 需求评审: 参与需求评审会议,确保对需求的理解一致,并及时发现潜在的问题。
④ 需求跟踪: 使用需求跟踪矩阵追踪需求和相应的测试用例,确保每个需求都有相应的测试覆盖。
⑤ 工程学分析方法: 使用工程学的分析方法,如系统工程学、风险分析、决策分析等,深入分析需求的复杂性、系统交互和潜在的风险。

3.软件测试的用例设计

白盒测试用例设计:
白盒测试关注内部结构和逻辑,主要目的是验证代码的执行路径、分支覆盖和逻辑正确性。以下是两种常用的白盒测试用例设计方法:

  1. 逻辑覆盖测试法:
    ① 语句覆盖:使被测程序中每个语句至少能执行一次。
    ② 判定覆盖:使被测程序中每个判定至少取TRUE 或FALSE各一次。
    ③ 条件覆盖:使判定中的每个条件式取得各种可能的结果。
    ④ 判定/条件覆盖:使判定表达式中的每个条件式取得各种可能的结果,而且每个判定表达式也都取到各种可能的结果。
    ⑤ 条件组合覆盖:使判定中的每个条件式的各种可能的组合至少出现各一次。
    ⑥ 路径覆盖:使程序的每条可能的路径都至少执行一次(如果程序图中有环路,则要求每个环路至少经过一次)。
    在这里插入图片描述

  2. 数据流测试法:
    ①定值测试: 选择输入值,使得它们满足等式、不等式等条件,以测试变量的取值范围。
       测试用例:设计测试输入,覆盖不同取值范围的输入。
    ②边界值测试: 测试输入数据在边界值上的表现,通常在边界值处发生错误的概率较高。
       测试用例:选择接近边界值的输入,测试系统在边界处的行为。
    ③路径测试: 通过控制流图和数据流图,设计测试用例覆盖不同的数据流路径。
       测试用例:设计测试输入,确保每个数据流路径都被覆盖。

黑盒测试用例设计:
黑盒测试关注系统的功能和接口,不关心内部结构和实现细节。以下是两种常用的黑盒测试用例设计方法:

  1. 等价类测试法:
    ①有效等价类: 选择有效输入值的集合,期望系统能够正常处理。
       测试用例:选择一组有效输入值进行测试。
    ②无效等价类: 选择无效输入值的集合,期望系统能够正确拒绝或处理。
       测试用例:选择一组无效输入值进行测试。
  2. 边界值测试法:
    ①边界值内: 选择输入值在边界值内的情况,验证系统对这些值的处理。
       测试用例:选择边界值内的输入进行测试。
    ②边界值上: 选择输入值在边界值上的情况,验证系统在边界处的行为。
       测试用例:选择边界值上的输入进行测试。

4.测试阶段的用例设计

单元测试、集成测试、系统测试与验收测试的定义和区别,如何设计各个阶段的测试用例。
单元测试:
定义: 单元测试是对软件中最小的可测试单元进行验证的过程。这个最小的单元通常是一个函数、方法或过程。
测试目标: 针对函数、方法等代码单元进行测试。
测试焦点: 验证代码单元的正确性,确保其按照设计规范和预期执行。
测试环境: 通常在开发环境中进行,以确保开发者的代码符合预期。
测试用例设计:
   正常情况测试: 针对函数的正常输入值设计测试用例。
   异常情况测试: 针对可能的异常输入或边界情况设计测试用例。
   边界值测试: 确保函数在边界输入值处能够正确处理。

集成测试:
定义: 集成测试是将已经通过单元测试的模块组合在一起,验证它们的交互是否正确。
测试目标: 针对已经通过单元测试的模块之间的交互进行测试。
测试焦点: 确保不同模块之间的接口能够正确通信和协作。
测试环境: 通常在开发或测试环境中进行,以确保模块之间的集成不会导致问题。
测试用例设计:
   逐步集成测试: 从少量模块开始,逐步增加模块进行测试。
   自顶向下测试: 从高层次模块逐步向底层模块进行测试。
   回归测试: 确保集成后修改代码不会破坏已有功能。

系统测试:
定义: 系统测试是对整个软件系统进行测试,以验证其是否满足规定的需求和功能。
测试目标: 针对整个系统进行测试,确保其满足用户需求和规格。
测试焦点: 系统功能、性能、安全性等方面的综合测试。
测试环境: 通常在测试环境中进行,模拟真实的使用场景。
测试用例设计:
   功能测试: 针对系统的各个功能进行测试,确保其符合用户需求。
   性能测试: 测试系统的性能指标,如响应时间、吞吐量等。
   安全性测试: 检测系统对潜在威胁和攻击的抵抗能力。

验收测试:
定义: 验收测试是由最终用户或客户执行的测试,以确保系统满足其预期需求。
测试目标: 确保系统满足用户或客户的实际需求。
测试焦点: 用户期望的系统功能和性能。
测试环境: 通常在生产环境中进行,以模拟真实的使用场景。
测试用例设计:
   验收标准: 根据用户需求和规格书定义的验收标准进行测试。
   用户场景测试: 模拟用户实际使用场景,确保系统能够胜任。
   完整性测试: 测试系统是否完整、可靠且符合用户期望。

5.功能测试

功能测试方法:
功能测试是验证系统的各个功能是否按照需求规格书的规定正常工作的过程。以下是一些常用的功能测试方法:
① 黑盒测试: 关注系统的输入和输出,测试人员不需要了解系统内部的实现细节。
② 白盒测试: 关注系统的内部逻辑和代码结构,测试人员需要了解系统的实现细节。
③ 验收测试: 由最终用户或客户执行,确保系统满足实际需求和期望。

功能测试用例:
功能测试用例是一组测试用例,旨在验证系统的各个功能是否按照规格要求正常工作。以下是编写功能测试用例的一般步骤:
理解需求: 仔细阅读需求文档和规格书,确保对系统功能的需求有充分理解。
识别功能: 根据需求文档,确定要测试的各个功能点。
编写测试用例: 针对每个功能点编写测试用例,包括输入数据、预期输出、测试步骤等。
设计测试数据: 为每个测试用例准备合适的测试数据,包括正常情况、异常情况和边界情况。
执行测试用例: 按照测试计划执行功能测试用例,记录测试结果。
分析结果: 对测试结果进行分析,确认每个功能点是否符合预期

如何使用功能测试工具完成Web功能测试:
功能测试工具可以帮助自动执行功能测试用例,提高测试效率。以下是使用功能测试工具完成Web功能测试的一般步骤:
选择测试工具: 选择适合Web功能测试的测试工具,如Selenium、JUnit、TestNG等。
录制测试脚本: 使用测试工具录制测试脚本,记录用户在Web应用程序中的交互步骤。
编辑测试脚本: 根据需要编辑录制的测试脚本,添加断言、循环、条件等控制流程。
设计测试数据: 准备测试数据,包括正常输入、异常输入和边界输入。
执行测试脚本: 运行测试脚本,测试工具模拟用户在Web应用程序中的操作,执行测试用例。
生成测试报告: 测试工具生成详细的测试报告,包括测试通过的用例、失败的用例和执行结果。
分析测试结果: 分析测试结果,确认每个功能点是否符合预期,定位和修复缺陷。
维护测试脚本: 随着系统的变化,及时更新和维护测试脚本,确保测试的持续有效性。

6.安全性测试

安全性测试方法:
安全性测试旨在评估系统的安全性,防止潜在的安全漏洞和风险。以下是一些常用的安全性测试方法:
① 渗透测试(Penetration Testing): 通过模拟攻击者的行为,尝试利用系统的漏洞和弱点,评估系统的安全性。
② 代码审查: 通过仔细审查系统的源代码,发现并修复潜在的安全漏洞。
③ 安全架构评估: 对系统的整体架构进行评估,确保安全措施被嵌入到系统设计中。
④ 网络扫描: 使用工具扫描系统的网络端口和服务,发现潜在的漏洞。
⑤ 安全策略评估: 评估系统的安全策略,包括访问控制、身份验证、加密等。

安全性测试用例:
安全性测试用例是一组测试用例,用于验证系统在面对潜在的安全威胁时的表现。以下是编写安全性测试用例的一般步骤:
① 识别潜在威胁: 根据安全标准和最佳实践,识别系统可能面临的潜在威胁和攻击。
② 编写测试用例: 针对每个潜在威胁编写测试用例,包括输入数据、预期输出、测试步骤等。
③ 设计攻击场景: 模拟攻击者的行为,设计测试用例以验证系统在攻击场景中的表现。
④ 测试身份验证: 测试系统的身份验证机制,确保只有合法用户能够访问系统。
⑤ 测试授权和访问控制: 确保系统按照规定的授权和访问控制规则工作。

如何使用安全性测试工具完成安全性测试:
安全性测试工具可以辅助进行安全性测试,以下是使用工具完成安全性测试的一般步骤:
选择安全性测试工具: 选择适合项目需求的安全性测试工具,如OWASP ZAP、Nessus、Burp Suite等。
配置工具: 配置工具,包括设置目标系统、选择测试策略、配置扫描参数等。
执行扫描: 运行安全性测试工具,进行系统的安全性扫描,发现潜在的漏洞和弱点。
分析扫描结果: 分析工具生成的扫描结果报告,确认每个漏洞的风险级别和建议修复措施。
修复漏洞: 根据扫描结果,修复系统中发现的漏洞和弱点。
重复测试: 在漏洞修复后,重复执行安全性测试,确保修复措施有效。
持续监控: 建立定期的安全性测试和监控机制,确保系统的安全性持续得到维护。

7.缺陷管理

缺陷管理和跟踪方法:

  1. 缺陷报告: 每当发现一个缺陷,都应该创建一个详细的缺陷报告。报告中应包括缺陷的描述、复现步骤、影响程度、紧急程度等信息。
  2. 缺陷分类: 将缺陷进行分类,例如按照严重性、优先级、缺陷类型等分类,以便更好地组织和处理缺陷。
  3. 缺陷跟踪工具: 使用专门的缺陷跟踪工具,如Jira、Bugzilla等,以便有效地记录、分配、追踪和解决缺陷。
  4. 队列管理: 管理缺陷队列,确保按照优先级和严重性处理缺陷,避免遗漏重要的问题。
  5. 缺陷生命周期管理: 追踪缺陷从被报告到解决的整个生命周期,确保每个缺陷都得到及时处理。

常用的软件质量保证流程:

  1. 需求分析: 确保充分理解和明确定义项目的需求,包括功能需求、性能需求、安全需求等。
  2. 设计评审: 在设计阶段对系统设计文档进行评审,确保设计满足需求并符合最佳实践。
  3. 编码标准: 制定和遵循统一的编码标准,以确保代码质量和可维护性。
  4. 单元测试: 针对每个模块进行单元测试,确保模块功能的正确性。
  5. 集成测试: 测试各个模块之间的集成,确保模块协同工作的正确性。
  6. 系统测试: 对整个系统进行全面测试,包括功能、性能、安全等方面。
  7. 用户验收测试: 由最终用户执行测试,确保系统满足用户的实际需求。
  8. 部署和维护: 系统正式部署后,持续监控和维护,确保系统的稳定性和性能。

如何对软件质量进行评估:

  1. 遵循标准和最佳实践: 确保软件开发团队遵循行业标准和最佳实践,如ISO 9001、CMMI等。
  2. 代码审查: 进行定期的代码审查,确保代码质量符合标准,发现并修复潜在的问题。
  3. 静态分析: 使用静态分析工具对代码进行分析,发现潜在的安全漏洞和代码质量问题。
  4. 动态分析: 运行动态分析工具进行性能测试、安全测试等,评估系统在不同条件下的表现。
  5. 测试覆盖率: 确保测试用例覆盖系统的各个功能和路径,以评估测试的全面性。
  6. 缺陷率和解决率: 跟踪缺陷率和解决率,了解系统中潜在的问题和团队的解决效率。
  7. 用户满意度: 收集用户反馈,了解用户对系统的满意度,从用户的角度评估软件质量。
  8. 性能监控: 在系统生产环境中实施性能监控,评估系统的响应时间、吞吐量等性能指标。

8.软件测试文档的撰写

  1. 测试计划:
    格式: 通常以文档的形式呈现,包括标题、目录、引言、测试目标、测试范围、资源需求、进度计划等。
    内容:
    引言:简要介绍测试计划的目的和范围。
    测试目标:明确测试的主要目标,例如功能测试、性能测试、安全性测试等。
    测试范围:定义测试的具体范围,包括测试的系统、模块、功能等。
    资源需求:说明测试所需的硬件、软件、人员和其他资源。
    进度计划:规划测试的时间表,包括各个测试阶段的开始和结束日期。
  2. 测试设计规格:
    格式: 通常以表格或文档形式呈现,包括测试用例的标识、标题、前提条件、测试步骤、期望结果等。
    内容:
    测试用例标识:为每个测试用例分配一个唯一的标识符。
    前提条件:描述测试执行前的系统状态或条件。
    测试步骤:详细描述执行测试的步骤,包括输入数据、操作等。
    期望结果:说明每个测试步骤执行后预期的系统状态或输出。
  3. 测试执行报告:
    格式: 通常以表格或文档形式呈现,包括测试执行的总体概述、通过和失败的测试用例列表、缺陷报告等。
    内容:
    测试执行概述:简要描述测试的执行情况,包括通过的用例数量、失败的用例数量等。
    通过的测试用例列表:列出通过的测试用例及其执行结果。
    失败的测试用例列表:列出失败的测试用例及其详细信息,包括缺陷报告链接。
    缺陷报告:列出已发现的缺陷,包括缺陷的严重性、状态、修复进度等。
  4. 缺陷报告:
    格式: 通常以表格或文档形式呈现,包括缺陷的标识、摘要、详细描述、严重性、状态、创建者等。
    内容:
    缺陷标识:为每个缺陷分配一个唯一的标识符。
    缺陷摘要:简要描述缺陷的主要问题。
    详细描述:详细说明缺陷的复现步骤、环境、截图等信息。
    严重性:定义缺陷的严重性级别,如高、中、低。
    状态:跟踪缺陷的状态,如新建、已修复、待验证等。
    创建者:标识报告缺陷的测试人员。

9.测试管理和维护

软件测试的组织管理和维护:
组织管理、测试过程管理、测试计划制定、配置管理、测试环境管理、测试环境搭建、资源协调、缺陷管理、性能管理。

测试工程师的职业素养和责任感:
专业技能、沟通协作、团队合作、有效沟通、质量意识、全局观念、学习与创新、持续学习、创新思维、自我管理、问题解决、文档管理

二、复习题

https://blog.csdn.net/weixin_43474701/article/details/118760558

1.选择题(20%)

  1. 软件缺陷是由很多方面造成的,以下哪个方面是造成软件缺陷最多的地方( )
    A. 规格说明书 B. 系统设计结果 C. 编写代码 D. 其他
    答案:A
  2. 覆盖准则最强的是( )
    A. 语句覆盖 B. 判定覆盖 C. 条件覆盖 D. 路径覆盖
    答案:D
  3. 实际的逻辑覆盖测试中,一般以( )为主设计测试用例。
    A. 条件覆盖 B. 判定覆盖 C. 条件组合覆盖 D. 路径覆盖
    答案:C
  4. 发现错误能力最弱覆盖准则是( )。
    A. 语句覆盖 B. 判定覆盖 C. 条件覆盖 D. 路径覆盖
    答案:A
  5. 单元测试所使用的主要测试方法是( )
    A. 黑盒测试 B. 白盒测试 C. 集成测试 D. 验收测试
    答案:B
  6. 对于软件缺陷修复费用,在哪个阶段的费用花费最小( )
    A. 分析阶段 B. 设计阶段 C. 编码阶段 D. 发布阶段
    答案:A
  7. 静态测试的主要对象是( )
    A. 代码检查 B. 代码风格与规范 C. 软件的功能 D. 设计的合理性
    答案:AB
  8. 单元测试主要测试是模块在()上的错误。
    A. 语法 B. 格式 C. 逻辑 D. 功能
    答案:ABC
  9. 单元测试主要由( )完成?其中( )起主要作用。
    A. 开发人员 B. 测试人员 C. 开发人员和测试人员 D. 以上都不对
    答案:C A
  10. 集成测试所使用的主要测试方法是( )。
    A. 黑盒测试 B. 静态测试 C. 动态测试 D. 白盒测试
    答案:A
  11. 系统测试主要包括包含多种测试活动,主要分为( )。
    A. 功能性测试 B. 非功能性测试 C. 回归测试 D. 单元测试
    答案:AB
  12. 系统集成测试常见的有哪几种不同模式( )。
    A. 非渐增式测试模式 B. 渐增式测试模式 C. 独立测试模式 D. 非独立测试模式
    答案:AB
  13. 软件的兼容性测试包括( AD )。
    A. 向前和向后兼容 B. 多语言测试 C. 多版本测试 D. 横向测试
    答案:AD
  14. 软件的缺陷通常集中在()阶段
    A. 需求分析 B. 系统设计 C. 编写代码 D. 软件测试
    答案:AB
  15. 对于一些关键代码新人写的代码,主要采取( )方式。
    A. 走查 B. 会议审查 C. 代码互评 D. 自查
    答案:B
  16. 集成测试中,主要的集成方法有( )。
    A.自顶向下 B.自底向上 C.大爆炸 D.三明治
    答案:ABCD
  17. 文档测试主要检查文档的( )。
    A. 正确性 B. 完备性 C. 易理解性 D. 一致性
    答案:ABCD
  18. 验收测试完成后还需要提交( ),才可交付用户使用。
    A. 验收报告 B. 项目完成报告 C. 交付报告 D. 无需提供任何报告
    答案:AC
  19. 软件本地化工作中除了翻译之外还应该( )。
    A. 处理字符集问题 B. 数据格式 C. 页面显示和布局 D. 配置和兼容性等问题
    答案:ABCD
  20. 造成软件缺陷的主要原因可从( )方面来查找。
    A. 技术问题 B. 软件本身 C. 团队工作 D. 资金问题
    答案:ABC
  21. 代码评审有哪些方法( )。
    A. 代码走查 B. 正式会议审查 C. 代码会审 D. 代码咨询
    答案:ABCD
  22. 软件产品的质量中的非功能需求包括( )等。
    A. 适用性 B. 有效性 C. 可靠性 D. 性能
    答案:ABCD
  23. 当程序有修改,并且要求保证原有功能正常的情况下,必须采用( )方法。
    A. 单元测试 B. 集成测试 C. 系统测试 D. 回归测试
    答案:D
  24. 对于整个软件的本地化过程来说,需要解决的技术问题主要有()。
    A. 数据格式 B. 页面显示和布局 C. 配置和兼容性问题 D. 翻译问题
    答案:AC
  25. 测试团队基本责任应该是( )。
    A. 发现软件程序、系统或产品中的所有问题 B. 尽早地发现问题 C. 督促开发人员尽快地解决程序中的缺陷 D. 帮助团队解决资金问题
    答案:ABCD
  26. 驱动程序,用以模拟被测模块的( )模块。
    A. 上级模块 B. 下级模块 C. 同级模块 D. 其他
    答案:A
  27. 整体测试用例质量要求包括( )。
    A. 覆盖率 B. 易用性 C. 易维护性 D. 粒度适中
    答案:ABCD
  28. 易用性、兼容性、安装、文档测试等主要在( )阶段完成。
    A. 单元测试 B. 集成测试 C. 功能测试 D. 验收测试
    答案:A

2.判断题(10%)

  1. 能够尽可能早的发现软件缺陷,就能够尽可能地节约修复缺陷的成本,因此,在软件的设计阶段 修复缺陷费用最低。( F )
  2. 根据著名的瀑布模型软件测试应该处在“编程”的下游、在“软件维护”的上游先有编程,后有测试,测试的位置很清楚。( T )
  3. 为了能更多测试出软件的缺陷,测试用例的一般要求越复杂越好。( F )
  4. 因为软件开发人员不止一人,因此在测试时候,只能进行松散地实施测试。(F )
  5. 每一种测试方法都必须执行程序,才能得到最好的效果。( F )
  6. 单元测试主要人员构成是开发人员。( T )
  7. 集成测试就是系统测试。( F )
  8. 在进行系统测试的时候,当发现有错误时候,应该及时修正紧接着修正下一个错误。( T )
  9. 有的时候因为时间紧迫,可以临时安排几个程序员或者行业新手测试工作。(F)
  10. 在实际的运用中,无论对于白盒测试黑盒测试通常使用其中一种方法就可以完成对某一软件的测试工作。( F )
  11. 验收测试是测试的最后一个环节,该测试完成后,马上可以交付用户使用。( F )
  12. 软件质量的要求是要满足软件功能性需求。( F )
  13. 系统测试目的是检查已经 通过 单元测试的单元之间的接口是否存在问题。(T)
  14. 在软件的开发中,每次回归测试都要重新运行 完整的测试包。( F )
  15. 在整个软件团队中,对软件测试人员要求比较,会操作计算机、有一定的软件使用经验就可以。(F )
  16. 在对软件缺陷的描述中,测试人员可以对有个人的观点,也可以对开发人员进行评价,有利于开发人员提高开发质量。(F )
  17. 在整个软件生命周期中的每个阶段每个时刻都存在着软件测试活动,软件测试伴随着软件开发。( T )
  18. 验收测试是由用户完成的。( F )
  19. 在一个规范的软件的开发中,开发人员的人数一般 大于 测试人员的人数。( F )
  20. 在整个开发周期中要对测试用例进行有效的跟踪和维护。( T )
  21. 功能测试也可以采用白盒测试的方法。(F )

3.简答题(20%)

  1. 测试用例有哪些属性
    用例的标题、测试的操作系统、测试的浏览器、测试步骤、预期结果。

  2. 简述几种常用的集成测试方法
    自顶向下集成测试、自底向上集成测试、核心系统先行集成测试、高频集成测试、三明治集成测试等

  3. 简述测试工程师日常的关键测试活动
    制定测试计划、设计测试用例、编写测试脚本、执行测试、报告缺陷

  4. 软件缺陷生命周期中有哪些基本状态?简述状态的变化
    New:缺陷被提交到系统。
    Open:缺陷被分配给开发人员。
    Fixed:缺陷被开发人员修复。
    Closed: 缺陷被测试人员验证已经被修复,测试人员关闭缺陷。

  5. 单元测试、集成测试、系统测试的侧重点是什么?
    单元测试侧重点是单元模块的内容逻辑结构和算法是否正确。
    集成测试的侧重点是模块与模块之间链接起来以后,模块之间的接口是否正确,数据流是否正确。
    系统测试侧重点是考察系统整体的功能、性能是否满足用户的需求

  6. 简述web测试的主要测试内容?
    web测试的主要内容: 界面测试、功能测试、表单测试、安全性测试、安装测试、兼容性测试、性能测试等

  7. 软件测试过程中,应该遵循的原则是?
    (1)尽早可能展开预防性测试;
    (2)可追溯性;
    (3)投入/产出原则;
    (4)80/20原则;
    (5)独立的软件测试机构或委托第三方测试,即避免开发人员一边开发,一边测试的情况的出现

  8. 测试用例设计的步骤一般包括?
    (1)测试需求分析;
    (2)业务流程分析;
    (3)测试用例设计;
    (4)测试用例评审;
    (5)测试用例更新完善。

  9. 测试用例的原则?
    (1)测试用例的代表性;
    (2)测试结果的可判断性;
    (3)测试结果的可再现性。

  10. 常用到的软件质量模型有哪些?并简述一下。
    (1)软件测试瀑布模型:分为测试计划、需求分析、概要设计、详细设计、软件测试、运行和维护7个阶段,自顶向下执行。强调阶段划分及顺序性、各阶段工作及其文档的完备性。
    (2)软件测试V模型:也称为RAD模型,即快速应用开发模型。属于线性顺序一类的软件开发模型。

  11. 什么是软件测试计划?
    软件测试计划是指导测试过程的纲领性文件,包含产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流和风险分析等内容。

  12. 制定软件测试的计划的原则有?
    (1)制定测试计划应尽早开始;
    (2)保持测试计划的灵活性;
    (3)保持测试计划简洁和易读;
    (4)尽量争取多渠道评审测试计划;
    (5)计算测试计划的投入。

  13. 制定软件测试的技术的步骤有?
    (1)产品基本情况调研;
    (2)测试需求说明;
    (3)测试的策略和记录;
    (4)测试资源配置;
    (5)计划表;
    (6)问题跟踪报告;
    (7)测试计划的评审

  14. 什么是静态测试、动态测试?
    静态测试:是一种不通过执行程序而进行测试的技术,只是检测和评审。
    动态测试:直接执行被测试程序以提供测试支持。

  15. 什么是白盒测试、黑盒测试?二者的关系是什么?
    (1)白盒测试:又称功能功能测试、数据驱动测试和行为测试,是一种从用户观点出发的测试,被测程序为黑盒子,通过测试来检测每个功能是否能够正常使用
    (2)黑盒测试:又称结构测试和逻辑驱动测试,是知道产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书的规定去正常运行。
    二者的关系:白盒测试偏重实现方式,注重局部;黑盒测试偏重业务方面,注重整体。有着本质区别,又是相互联系、相辅相成。

  16. 软件测试的过程是什么?
    (1)测试一致性;
    (2)可持续改进测试过程;
    (3)便于管理;
    (4)系统测试;
    (5)验收测试;

  17. 软件测试与软件开发的过程的关系是什么?
    (1)测试工程师与开发工程师目标一致、行为对立、并行工作,有生产就必然有质检,二者的工作相辅相成,开发人员和测试人员的主要矛盾就集中在对bug的定义上。
    (2)软件测试工程师:查找bug、管理bug、质量保证。软件开发:系统设计、编码、修改bug

  18. 白盒测试的覆盖准则有哪些?
    (1)语句覆盖 ;
    (2)判定覆盖;(即分支覆盖);
    (3)条件覆盖 ;
    (4)判定-条件覆盖 ;
    (5)条件组合覆盖 ;
    (6)路径覆盖 。

  19. 白盒测试的常用工具有哪些?各适用于什么情况?
    (1)静态白盒测试:在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。
    (2)动态白盒测试:需要对各个模块功能、模块间的接口、局部数据结构、主要执行路径、错误处理等反面的测试

  20. 单元测试是什么?
    单元测试是在软件开发过程中要进行的最低级别的测试活动,起目的在于发现每个模块内部可能存在的差距。

  21. 单元测试的原则有哪些?
    (1)单元测试越早进行越好;
    (2)单元测试应该根据《软件详细设计规格说明》进行;
    (3)对于修改过的代码应该重做单元测试,以保证对已发现错误的修改没有引入新的错误;
    (4)当测试用例的测试结果与设计规格说明书的预期结果不一致时,测试人员应该如实记录实际的测试结果;
    (5)单元测试应注意选择好被测试软件单元的大小;
    (6)一个完整的单元测试说明应该包含软件证明测试和负面测试;
    (7)注意使用单元测试工具。

  22. 单元测试的重要性及目的是什么?
    重要性如下
    (1)提前发现问题并解决可以节约时间
    (2)是测试阶段的基础,为后期的集成测试和系统测试做好准备;
    (3)对单元独立测试,容易发现问题,减少成本。
    目的:是暴漏出失败和错误。失败的可能性是可预期的,并且可以使用断言来进行检查。而错误则是不可预期的问题

  23. 简述单元测试的过程?
    (1)准备阶段;
    (2)编制阶段
    (3)代码审查阶段;
    (4)单元测试阶段;
    (5)评审、提交阶段。

  24. 什么是插桩程序设计?
    是在保证被测程序原有逻辑完整性的基础上在程序中插于一些探针,通过探针的执行抛出程序运行的特征数据,通过这些数据的分析,可以获得程序的控制流和数据信息,进而得到逻辑覆盖等动态信息,从而实现测试目标的方法。

  25. 集成测试是什么?
    是在假定各个软件单元已经通过了单元测试的前提下,检测各个软件单元之间相互接口是否正确。

  26. 集成测试的主要任务是什么?
    (1)将各个模块连接起来,检查模块相互调用时,数据结构接口是否丢失;
    (2)将各个子功能组合起来,检查能否达到预期要求的各项功能;
    (3)一个模块的功能是否会对另一个模块的功能产生不利的影响;
    (4)全局数据结构是否有问题,会不会被异常修改;
    (5)单个模块的误差积累起来,是否被放大,从而达到不可接受的程度。

  27. 集成测试与单元测试,系统测试的区别是什么?
    集成测试与单元测试的区别:
    (1)集成测试关注的是模块间的接口、接口之间的数据传递关系、单元组合后是否实现预计的功能
    (2)集成测试组装的对象比单元测试的对象级别要高。
    集成测试与系统测试的区别:
    (1)系统测试对象是整个系统以及与系统交互的硬件和软件平台;
    (2)集成测试所测试的对象是模块间的接口,其目的是在找出在模块接口上面,包括整体体系结构上的问题;
    (3)软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。

  28. 集成测试的内容有哪些?
    (1)制定集成测试计划;
    (2)设计集成测试;
    (3)实施集成测试;
    (4)执行集成测试;
    (5)评估集成测试。

  29. 如何进行集成测试的用例设计?
    (1)为系统运行设计用例;
    (2)为正向测试设计用例;
    (3)为逆向测试设计用例;
    (4)为满足特殊需求设计用例;
    (5)为高覆盖设计用例;
    (6)测试用例补充;
    (7)注意事项。

  30. 集成测试的方法有哪些?分别适用于哪些情况?
    (1)非增式集成;将所有经过单元测试的模块一次性组装到被测系统中进行测试,不考虑模块之间的依赖性和可能的风险;
    (2)自顶向下集成;从控制模块开始,沿着程序的控制层向下移动,逐渐把各个模块结合起来。
    (3)自底向上集成;从最底层的模块开始,按结构图自下而上和自底向上的集成方法;
    (4)混合集成;对高风险模块优先进行重点测试,保证系统稳定性。

  31. 系统测试是什么?
    是指测试整个系统已确定其是否能够提供应用的所有需求行为,包含了多种测试活动,主要分为功能性测试和非功能测试。

  32. 系统测试与用户测试有何不同?
    系统测试是测试整个系统已确定其是否能够提供应用的所有需求行为;用户测试分为体验、界面、验收、用户测试报告组成

  33. 简述系统测试的主要内容?
    (1)功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如《产品需求规格说明书》。
    (2)健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力

  34. 容量测试与压力测试的区别有哪些?
    (1)压力测试是在给系统不断加压,增加并发量,直到崩溃,找到系统所能承受的极限值。
    (2)容量测试是在预先分析的极限值下,系统能否正常运行。

  35. 什么是性能测试?
    通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者结合进行。

  36. 什么是回归测试?它有什么好处?一般如何进行回归测试?
    回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
    好处是大幅降低系统测试、维护升级等阶段的成本。
    回归测试基础步骤
    (1)为每个项目创建用例基线库;
    (2)标识每个用例的重要性及有线级;
    (3)建立用例直接的关系。

  37. 验收测试是什么?
    是在软件产品完成了功能测试和系统测试之后,产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段,是将程序与其最初的需求及最终用户当前的需要进行比较的过程,也叫交付测试。

  38. 验收测试的主要内容是什么?
    (1)文档审查
    (2)安装测试
    (3)功能测试
    (4)性能测试
    (5)界面测试
    (6)加载测试
    (7)配置测试
    (8)恢复测试
    (9)安全性测试。

  39. α测试和β测试有什么不同?
    a 测试是在公司内部由用户组织与的测试;a 测试对发现缺陷是可控的,但缺陷是人数有限、地域限制。b测试是在外部有用户进行的测试;b测试不会认真地去发现缺陷,有时仅仅是为了抢占市场。

  40. 如何组织软件测试团队?
    (1)建立合理、高效的组织结构
    (2)建立正确的分工体系,即角色与职责;
    (3)培养合格的测试人员。

  41. 如何进行软件测试人员的培养?
    (1)人员选择要求;
    (2)人员培训与培养;
    (3)测试人员职业发展规划;

4.综合题(50%)

(1)覆盖测试方法【白盒测试】

题目1:请对下面代码进行语句覆盖、判定覆盖测试、条件覆盖测试和条件组合测试和路径覆盖测试,分别写出相应的测试用例。
在这里插入图片描述
题解如下:
在这里插入图片描述

知识补充:
① 语句覆盖:使被测程序中每个语句至少能执行一次。
② 判定覆盖:使被测程序中每个判定至少取TRUE 或FALSE各一次。
③ 条件覆盖:使判定中的每个条件式取得各种可能的结果。
④ 判定/条件覆盖:使判定表达式中的每个条件式取得各种可能的结果,而且每个判定表达式也都取到各种可能的结果。
⑤ 条件组合覆盖:使判定中的每个条件式的各种可能的组合至少出现各一次。
⑥ 路径覆盖:使程序的每条可能的路径都至少执行一次(如果程序图中有环路,则要求每个环路至少经过一次)。

题目2:请对下面代码进行语句覆盖测试、判定覆盖测试、条件覆盖测试和条件组合测试和路径覆盖测试,分别写出相应的测试用例。

void DoWork(int x,int y,int z)
{
	int k = 0,j = 0;------------------------------------------1
	if((x>3)&&(z<10))----------------------------------2
	{
	 	k = x*y-1;
	  	j = sqrt(k);----------------------------------------3
	}
	if((x==4) || (y>5))----------------------------------4
	{
  		j = x*y+10;-----------------------------------------5
	}
	j = j%3;-------------------------------------------------6
}

简略流程图如下:
在这里插入图片描述
解答如下:
在这里插入图片描述

(2)判定表法【黑盒测试】

题目:某软件的一个模块的需求规格说明书中描述:“……对于功率大于50马力的机器或者维修记录不全的或已经运行10年以上的机器应予以优先的维修处理……”这里假定“维修记录不全”和“优先维修处理”有严格的定义。请建立该需求的判定表,并绘制出化简(合并规则)后的判定表。
题解如下:
在这里插入图片描述

知识补充:
对于输入输出条件存在各种组合,且不同组合走不同的逻辑时,优先使用判定表法。
基本概念:
条件桩:输入条件,列出了系统的所有输入,列出的输入次序无关紧要
动作桩:结果,列出了系统可能采取的操作,这些操作的排列顺序没有约束
条件项:输入条件取值的全部组合,列出针对它左列输入的取值,在所有可能情况下的真假值
动作项:条件项对应的所有的结果,列出在输入项的各种取值情况下应该采取的动作
规则:一组条件与动作的组合,一条规则对应一条测试用例

(3)等价类划分、边界值分析法【黑盒测试】

题目1:输入条件是金额字段的一个取值范围,要求为0.01~10元,精度为小数点后两位。
题解如下:
有效等价类:
   1、amount=5(中间有效值)
   2、amount=0.01(边界值)
   3、amount=10.00(边界值)
无效等价类:
   1、amoun=0.00(小于最小值)
   2、amount=10.01(大于最大值)
   3、amount=9.999(精度错误)
   4、amount= 1(前带空格)
   5、amount=“”(空值)
   6、amount=ab(异常格式)

知识补充:对于各种输入或输出,必须考虑等价类和边界值,并补充一些特殊值,如空值、空格、0、异常格式等特殊值。

题目2:报表日期:设某公司要打印2001~2005年的报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。请用等价类划分法写出测试用例。
题解如下:
在这里插入图片描述
题目3:有函数f(x,y),其中x∈[1900,2100],y∈[1,12]的。请写出该函数采用边界值法设计的测试用例。
题解如下:测试用例为(1900,6),(1901,6),(2099,6),(2100,6)(1950,6)
(1950,1),(1950,2),(1950,11),(1950,12)
解释:答案包含x的边界值1900,1901,2099,2100,y的边界值1,2,11,12,以及一个中间取值。

(4)因果图法【黑盒测试】

题目1:系统只接收50或100元纸币,一次只能使用一张纸币,一次充值金额只能是50或100元,在请投币的后面按50元按钮,代表投入50元纸币;按100元按钮,代表投入100元纸币
在这里插入图片描述

题解如下:
第一步:分析输入条件和输出结果
在这里插入图片描述
第二步:找出输入条件之间的组合关系,得到的哪些输出结果(E表示互斥)
在这里插入图片描述
第三步:得到测试用例
在这里插入图片描述

(5)基本路径法【白盒测试】

题目1:参考如下代码使用基路径法测试函数
① 画控制流图(由程序流程图简化而来),计算环复杂度
② 找出独立路径集,设计用例

在这里插入图片描述

题解如下:
在这里插入图片描述

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PRINT!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值