少女祈祷中...

软件测试基础学习

  • 什么是静态测试:静态测试是指不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。

  • 什么是动态测试:动态测试是一种测试方法,通过运行软件程序并输入不同的数据和操作,以检查程序的实际行为和输出结果是否符合预期。 动态测试可以帮助发现软件程序中的错误和缺陷,包括功能错误、性能问题、安全漏洞等。

  • 什么是黑盒测试:黑盒测试又称为“功能测试”,是将测试对象看做一个黑盒,在并不考虑软件产品的内部结构和处理过程的基础上对软件产品进行功能测试。黑盒测试注重软件产品的“功能性需求”。

  • 什么是白盒测试:白盒测试,又称结构测试,主要用于单元测试阶段。它的前提是可以把程序看成装在一个透明的白箱子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否都能按预定要求正常工作。 白盒测试根据软件的内部逻辑设计测试用例,常用的技术是逻辑覆盖,即考察用测试数据运行被测程序时对程序逻辑的覆盖程度。主要的覆盖标准有 6 种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖和路径覆盖。

  • 什么是单元测试:单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。

  • 什么是集成测试:集成测试被定义为一种测试类型,其中软件的不同模块被集成并作为一个整体进行测试。一个典型的软件项目由多个软件模块组成,这些模块由不同的程序员进行编码。集成测试的目的是在集成这些不同的软件模块时揭示它们之间交互中的缺陷。集成测试专注于检查这些模块之间的数据通信。因此,它也被称为“ I&T” (集成和测试)。

  • 简述缺陷产生原因:

    • 软件缺陷就是通常所说的Bug,它是指软件中(包括程序和文档)存在的影响软件正常运行的问题。IEEE(Institute of Electrical and Electronics Engineers,电气电子工程师协会)729-1983标准对软件缺陷有一个标准的定义:从产品内部看,缺陷是产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统运行过程中某种功能的失效或违背。
    • 软件缺陷的产生主要是由软件产品的特点和开发过程决定的,比如需求不清晰、需求频繁变更、软件结构复杂、编码问题、项目期限短、使用新技术、开发人员水平有限等。
  • 静态测试与动态测试区别:

    • 它们的主要区别在于测试时是否需要运行被测试的程序。
    • 静态测试 主要是在不运行程序的情况下进行,通过分析代码、审查需求文档来查找错误, 动态测试 则是在程序运行的状态下执行,通过输入测试用例验证程序的实际运行结果和预期结果是否一致。
  • 黑盒与白盒测试的相关方法,黑盒白盒测试优缺点:

    • 白盒白盒详解黑盒

    • 黑盒测试:
      • 方法:等价类划分法、边界值分析法、因果图分析法、错误推断法,场景法。
      • 优点:独立性、用户视角、提早发现问题。
      • 缺点:不可见内部性、缺乏结构性反馈
    • 白盒测试:
      • 方法:分为两大类:静态测试方法和动态测试方法。
        • 静态:代码审查法、静态结构分析法
        • 动态:逻辑覆盖法、基本路径测试法
      • 优点:内部可见性、全面覆盖性、性能和安全性检查
      • 缺点:需要专业知识、依赖源码
  • 软件测试的复杂性:

    • 主要体现在:
      • 不可能对程序实现完全测试
      • 杀虫剂现象,必须不断尝试新的杀虫剂(写新的测试程序)
      • 代价会随着测试量的增加程指数增长
      • 风险的合理取舍,并不是所有故障都需要被修复
  • 单元测试的目标:确保每个单元都能独立地正常工作,从而提高整个程序的质量、可靠性和可维护性

  • 系统测试的流程:

    • 需求分析 -> 测试计划 -> 测试用例 -> 测试执行 -> 测试文档
  • 测试环境要素有哪些:

    • 软件、硬件、网络、数据准备、测试工具

名词解析

  • 测试环境:为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称
  • 备份:为应付文件、数据丢失或损坏等可能出现的意外情况,将电子计算机存储设备中的数据复制到磁带等大容量存储设备中。
  • 恢复:使变成原来的样子,在计算机中指被删除的数据得到复原。
  • 硬件环境:指计算机系统中的硬件设备,如CPU、内存、硬盘等
  • 网络环境:网络环境是指将分布在不同地点的多个多媒体计算机物理上互联,依据某种协议互相通信,实现软、硬件及其网络文化共享的系统。
  • 软件环境:运行于计算机硬件之上的驱动计算机及其外围设备实现某种目的的软件系统
  • 面向对象:面向对象编程将一个系统抽象为许多对象的集合,每一个对象代表了这个系统的特定方面。对象包括函数(方法)和数据。
  • 消息:消息(message)是指在程序中传递的信息或指令。 它可以是用于传递数据的信息,也可以是用于触发特定操作的指令。 消息通常用于实现程序之间的通信和交互。 在面向对象编程中,对象之间通过消息进行通信。
  • 封装性:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
  • 继承性:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
  • 多态性:它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。
  • 类测试:用来对类中的方法功能进行有目的的测试,以保证程序的正确性和稳定性。

问答

  • 概述测试用例的设计过程:

    • 步骤为:测试需求分析 -> 业务流程分析 -> 测试用例设计 -> 测试用例评审 -> 测试用例更新完善
  • 测试文档的内容:

    • 1、测试范围(功能模块等);2、测试类型(功能、性能、安全等);3、测试资源(硬件、软件、人员等);4、人员、进度安排。
  • 软件生命周期各阶段的测试任务与可交付的文档:

    • 问题定义(问题定义报告)、可行性研究(可行性分析报告,粗略的开发计划)、需求分析(需求规格说明书)、总体设计(总体设计说明书)、详细设计(详细设计说明书)、编码与单元测试(程序清单、单元测试报告)、综合测试(测试报告)、维护()
  • 自动化测试的步骤、自动化测试工具的使用:

    • 暂略
  • 面向对象测试与传统测试有哪些区别与联系:

    • 面向对象测试更加关注对象的行为和交互,而传统测试更加关注系统的功能和流程。
    • 都需要进行测试计划和测试用例的编写,都需要测试执行和测试结果分析,都是为了保障软件的质量和功能的正确性可靠性。
  • 面向对象测试的步骤:

    • 步骤:为类创建一个实例,即对象,为构造函数传递合适的参数 -> 通过参数传递调用对象的方法并获取结果 -> 检查对象的内部数据
  • 压力测试作用:确定在交通繁忙的情况下网站或应用程序的稳定性和可靠性。向访问者显示相应的错误消息和其他信息。优化系统以防止故障。正确规划可伸缩性和资源需求。

  • 兼容性测试是什么:兼容性测试在软件测试中是一种非功能性测试方法,确保应用程序在不同硬件、操作系统、网络环境和其他软件应用的组合上正常运行。

  • 软件工程V模型流程包括哪些步骤:客户需求分析、软件需求分析、概要设计、详细设计、编码与实现、单元测试、集成测试、系统测试、验收测试。

  • 测试用例设计的主要影响因素:需求目标、实际使用场景、软件功能规格说明书、产品设计文档

  • 工程使用决策表有哪4部分组成:桩部分、条目部分、条件部分、行动部分

  • 在错误推测法中,根据什么因素进行判断好测试用例:

    • 客观因素:产品先前版本的问题
    • 已知因素:语言、操作系统、浏览器的限制可能带来的兼容性等问题
    • 经验:利用不同测试阶段的经验和对测试软件的需求理解以及设计实现的细节来整理归纳的测试点
  • 给出流程图G,设计环形复杂度V(G),三种常用计算机方法

    • 环路复杂度

    • V(G) = 区域数
    • V(G) = P + 1,判定结点数 + 1
    • V(G) = E - N + 2,边的条数 - 结点数 +2
  • 测试总结报告包括哪些内容:测试目的、重要项说明、系统概述、测试环境、差异测试项与设计说明之间的差别、测试充分性评价、质量评估、结果概述、测试结论。