标签: 软件测试

  • 软件测试复习

    题型

    判断、简答、应用、综合

    重点

    软件测试的定义

    使用人工或自动手段来运行和测定某个系统的过程,其目的在于检验系统是否 满足规定的需求 或是弄清预期结果与实际结果之间的差异。

    缺陷的概念

    质量的含义

    是产品或服务所满足明示或暗示需求能力的固有属性和特征的集合

    质量的特性

    1. 功能适应性
    2. 效率
    3. 兼容性
    4. 易用性
    5. 可靠性
    6. 安全性
    7. 可维护性
    8. 可移植性

    缺陷的定义

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

    缺陷的来源、构成

    1. 需求定义
    2. 初步设计
    3. 详细设计
    4. 代码

    集成

    集成是指将各个独立的软件组件(模块、子系统等)合并在一起,以验证它们在整体系统中的交互和协作是否正常工作。集成测试旨在检测不同组件之间的接口问题、数据传递问题、功能一致性以及整体系统的稳定性和可靠性。

    自动化测试的概念

    自动化测试是指使用软件来控制测试设备,执行测试用例,比较实际结果和预期结果,从而自动化地完成测试过程。

    了解什么是压力、动态、静态、回归、阿尔法(伽马、贝塔)测试

    压力测试

    压力测试是指在系统正常工作负载的情况下,通过长时间或超大负荷地运行测试软件,来测试系统的性能指标。可以了解系统可靠性、性能瓶颈。

    动态测试

    动态测试是指在软件运行时,通过运行测试用例来检测软件的功能、性能、安全性等特性。

    静态测试

    静态测试是指在软件运行之前,通过检查源代码、设计文档、用户手册等来检测软件的功能、性能、安全性等特性。

    回归测试

    回归测试是指在软件发生变更之后,通过运行测试用例来检测软件的功能、性能、安全性等特性。

    阿尔法(伽马、贝塔)测试(α测γ测β测)

    阿尔法测试是指在软件开发过程中,由软件开发者在开发环境下,通过运行测试用例来检测软件的功能、性能、安全性等特性。

    黑白盒测试

    黑盒测试

    黑盒测试是指在软件运行时,通过运行测试用例来检测软件的功能、性能、安全性等特性,但是不考虑软件内部的结构和工作原理。

    白盒测试

    白盒测试是指在软件运行时,通过运行测试用例来检测软件的功能、性能、安全性等特性,同时考虑软件内部的结构和工作原理。

    语句覆盖

    语句覆盖是指在软件运行时,要求每个语句至少被执行一次。

    判定覆盖

    判定覆盖是指在软件运行时,要求每个判定的每个可能的结果至少被执行一次。

    条件覆盖

    条件覆盖是指在软件运行时,要求每个判定的每个条件的每个可能的结果至少被执行一次。

    因果图

    因果图是一种图形化的测试用例设计方法,它将程序的逻辑结构表示为一个有向图,图中的节点表示程序中的语句,图中的边表示程序中的控制流。

    测试过程的目的是什么?

    1. 功能测试:验证每个功能是否按照事先定义的要求工作。
    2. 性能测试:评测分析系统在不同负载下的运行情况、性能指标。
    3. 安全性测试:测试系统在应对非授权的访问、故意损坏时的系统防护能力。
    4. 兼容性测试:测试系统在不同的硬件、软件、网络环境下的运行情况。也包括共存、互操作性测试。
    5. 可靠性测试:检验系统是否能保持长期稳定、正常地运行。
    6. 易用性测试:测试系统是否容易学习、使用、理解,界面美观、交互友好。
    7. 回归测试:测试系统在发生变更之后,是否仍然能够正常工作。

    软件缺陷的分级

    分级

    1. 致命的:系统崩溃、数据丢失、系统不可用、系统不稳定、系统不可恢复。
    2. 严重的:系统功能不完整、系统功能不正确、系统性能不足、系统安全性不足。
    3. 一般的:系统界面不美观、系统界面不友好、系统易用性不足、系统易学性不足。
    4. 微小的:错别字、文字排列不整齐等。

    完整软件测试的流程

    软件工程过程来看

    1. 需求评审
    2. 设计评审
    3. 单元测试
    4. 集成测试
    5. 系统测试
    6. 验收测试

    项目管理的角度看

    1. 测试计划
    2. 测试设计
    3. 执行与监控
    4. 结果分析与评估
    5. 项目总结

    接口测试概念

    验证不同软件系统、模块或组件之间的接口是否正常工作。

    接口是不同软件实体之间进行通信和交互的方式,接口测试的目的是确保这些接口能够按照规范进行正确的数据传递、请求处理和响应。

    自动化测试流程

    什么是自动化测试

    把以人为驱动的测试行为转化为机器执行的一种过程。

    流程

    1. 测试环境的搭建和设置
    2. 基于模型实现测试设计的自动化
    3. 脚本自动生成
    4. 测试数据的自动产生
    5. 测试操作步骤的自动执行
    6. 测试结果分析
    7. 测试流程的自动处理
    8. 测试报告自动生成

    上机实验的内容和原理(等价类、决策表、有效等价类和无效等价类)【不会很复杂】

    等价类

    等价类是指在测试过程中,将输入域划分为若干个子集,使得每个子集中的输入数据对于测试来说是等价的。

    1. 弱一般等价类测试
    2. 强一般等价类测试
    3. 弱健壮等价类测试
    4. 强健壮等价类测试

    一般/健壮:是否考虑无效等价类 强/弱:单缺陷假设还是多缺陷假设

    如果实现语言是强类型,则不必使用健壮形式测试。

    决策表

    决策表是一种测试设计技术,它是一种表格,用来描述系统的行为,它的每一行代表一个测试用例,每一列代表一个输入条件或一个动作。

    有效等价类和无效等价类

    有效等价类是指在测试过程中,将输入域划分为若干个子集,使得每个子集中的输入数据对于测试来说是有效的。

    无效等价类是指在测试过程中,将输入域划分为若干个子集,使得每个子集中的输入数据对于测试来说是无效的。

    边界值分析

    边界值测试是软件测试中的一种策略,旨在检测系统在边界条件下的行为和处理能力。边界值测试的基本概念是,错误和异常往往在接近数据范围的边界处发生。

    目前流行的技术怎么进行测试

    1. 单元测试
    2. 集成测试
    3. 系统测试
    4. 专项测试
    5. 软件本地化测试

    笔记

    软件测试-Sofeware Test

    测试用例-Test Case

    测试执行前设计的一套详细测试方案,包括测试环境(硬件、软件、网络)、测试步骤、测试数据、预期结果等。

    SQA – Software Quality Assurance-软件质量保证

    是一项管理性工作,侧重于对流程的评审和监控。

    Test – 测试

    是一项技术性工作,侧重于对产品的评估和验证。

    TDD – Test Driven Development-测试驱动开发

    是一种敏捷开发的技术,它要求在编写功能代码之前,先编写单元测试代码,然后只编写使单元测试通过的功能代码,从而达到测试驱动开发的目的。

    ALAC – Act Like A Customer-像一个客户一样做

    基于客户使用产品的知识开发出的测试方法

    如何降低测试规模,并保证测试的典型性?

    组合分析是一种基于每对参数组合的测试技术。

    V 模型

    一种软件开发过程模型,它将软件开发过程分为软件开发和软件测试两个部分,两个部分是对称的,相互对应。

    W 模型

    V 模型的修改版。

    1. 测试过程和开发过程同步
    2. 测试过程是对开发过程中阶段性成果和最终的产品进行验证的过程。两者相互依赖
    3. 两者各有特点,存在差异。

    判定表

    条件桩:条件(就是表头)

    动作桩:动作(结果的取值)

    条件项:条件桩中的一项的取值

    动作项:在各种条件项组合下采取的动作

    驱动程序和桩模块

    这是单元测试中的概念,在单元测试中为了隔离单元,需要用到驱动程序和桩程序。

    驱动程序:用于驱动被测程序的模块,它调用被测模块,给被测模块传递参数。

    桩程序:模拟被测模块调用的下级模块。当被测模块依赖于其它单元,测试时为了隔离被测模块,需要用桩程序来模拟被测模块调用的下级模块。

    JUnit 5 的常用注解

    1. @Test:标记测试方法
    2. @ParameterizedTest:参数化测试
    3. @RepeatedTest:重复测试
    4. @TestFactory:动态测试
    5. @BeforeEach:在每个测试方法之前执行
    6. @AfterEach:在每个测试方法之后执行
    7. @BeforeAll:在所有测试方法之前执行
    8. @AfterAll:在所有测试方法之后执行
    9. @TestTemplate:测试模板
    10. @TestMethodOrder:测试方法的执行顺序
    11. @DisplayName:测试方法的显示名称