数据库测试 – 面试问题



数据库测试包括执行数据有效性、数据完整性测试、与数据库相关的性能检查以及数据库中过程、触发器和函数的测试。

执行数据库测试有多个原因。由于后端系统负责存储数据并被用于多种目的,因此需要对数据库进行数据完整性、验证和数据一致性检查。

需要执行数据库测试的一些常见原因如下:

  • 为了简化对数据库后端的调用复杂性,开发人员增加了视图存储过程的使用。

  • 这些存储过程和视图包含关键任务,例如插入客户详细信息(姓名、联系信息等)和销售数据。这些任务需要在多个级别进行测试。

  • 对前端执行的黑盒测试很重要,但难以隔离问题。对后端系统的测试提高了数据的稳健性。这就是为什么对后端系统进行数据库测试的原因。

  • 在数据库中,数据来自多个应用程序,并且有可能将有害或不正确的数据存储在数据库中。因此,需要定期检查数据库组件。此外,应定期检查数据完整性和一致性。

执行数据库测试时,您需要遵循以下步骤:

  • 必须验证数据库中的数据。
  • 验证是否维护了约束条件。
  • 必须检查过程的性能和触发器的执行。
  • 必须检查事务的回滚和提交。

根据数据库的功能和结构,数据库测试可以分为以下几类:

  • 结构化数据库测试 - 它处理表和列测试、模式测试、存储过程和视图测试、触发器检查等。

  • 功能测试 - 它涉及从用户角度检查数据库的功能。最常见的函数测试类型是白盒测试和黑盒测试。

  • 非功能测试 - 它涉及数据库中的负载测试、风险测试、压力测试、最低系统要求,并处理数据库的性能。

用于执行存储过程测试的最常用工具是 LINQ、SP Test 工具等。

连接用于以某种逻辑方式连接两个或多个表。常见的连接类型包括:内部连接、非等值连接、外部连接、自连接和交叉连接。

您可以将单个表连接到自身。在这种情况下,您将使用同一个表两次。

步骤 1 - 连接到数据库

db_connect(query1 DRIVER {drivername};SERVER server_name;UID uidname;
   PWD password;DBQ database_name );

步骤 2 - 执行数据库查询 -

db_excecute_query (write the required query that is to execute); Specify the appropriate condition

步骤 3 - 使用以下方法断开数据库连接

db_disconnect(query);

使用输出数据库检查点,必须选择 SQL 手动查询选项。在这里,可以选择编写查询。

首先,检查存储过程的要求。下一步是检查索引、连接、删除、更新是否与存储过程中提到的表一致。

接下来,执行以下任务:

  • 验证调用过程名称、调用参数和不同输入参数集的预期响应。

  • 使用 TOAD 或 MySQL 或 Query Analyzer 执行过程。

  • 通过发送不同的参数重新执行可用的过程,并根据预期值检查结果。

  • 最后,使用 WinRunner 自动化测试。

测试人员应使用 EXEC 命令在数据库中调用存储过程。如果需要任何参数,则必须传递它们。必须传递不同的参数值以确认存储过程是否执行。调用此命令时,它必须检查和验证数据库的性质和行为。

示例 - 如果编写存储过程是为了填充某些表,则必须检查表值。

SQL 语句有三种类型:

  • 数据操纵语言 (DML)
  • 数据定义语言 (DDL)
  • 数据控制语言 (DCL)

DDL 语句用于定义数据库结构或模式。一些例子:

  • CREATE - 在数据库中创建对象

  • ALTER - 更改数据库的结构

  • DROP - 从数据库中删除对象

操作符用于在 SQL 语句中指定条件,并作为语句中多个条件的连接词。

  • 算术运算符
  • 比较/关系运算符
  • 逻辑运算符
  • 集合运算符
  • 用于否定条件的操作符

Union 用于组合两个或多个 Select 语句的结果。但是,它将消除重复的行。Union 是一个集合运算符。

Union 用于组合两个或多个 Select 语句的结果。但是,它将消除重复的行

Union All 操作类似于 Union,但它也显示重复的行。

触发器用于维护数据库的完整性。要检查触发器是否被触发,您可以检查审计日志。

触发器不能按需调用。当在其定义的表上发生关联操作(插入、删除和更新)时,它们就会被调用。触发器用于应用业务规则、审核以及引用完整性检查。

首先,获取功能需求。然后,了解使用的表结构、连接、游标和触发器、存储过程以及其他参数。接下来,您可以使用不同的值作为这些对象的输入来编写测试用例。

数据库测试涉及测试对用户不可见的后端组件。它包括数据库组件和数据库管理系统,例如 MySQL 和 Oracle。

前端测试涉及检查应用程序及其组件(如表单、图形、菜单、报表等)的功能。这些组件是使用前端开发工具(如 VB.net、C#、Delphi 等)创建的。

执行数据库测试的过程类似于测试其他应用程序。数据库测试可以用以下关键过程来描述:

  • 设置环境
  • 运行测试
  • 检查测试结果
  • 根据预期结果进行验证
  • 向相关利益者报告结果

各种 SQL 语句用于开发测试用例。用于执行数据库测试的最常见的 SQL 语句是 select 语句。除此之外,还可以使用各种 DDL、DML、DCL 语句。

示例 - Create、Insert、Select、Update 等。

视图是一个本身并不真正存在,而是从一个或多个基本表派生的表。换句话说,没有直接表示视图的存储文件,而是在数据字典中存储视图的定义。

基本表的增长和重组不会反映在视图中。因此,视图可以隔离用户与数据库中的更改。因此,它解释了逻辑数据独立性。

它指定用户视图及其到概念模式的映射。

它是一个将表分解成多个表而不丢失任何信息的过程。规范化的目的是为了实现以下目标:

  • 最小化冗余。
  • 最小化插入、删除和更新异常。

索引是一种确定可以多快找到特定数据的技术。它用于查询性能优化。索引可以是以下类型:

  • 二分查找式索引
  • B 树索引
  • 倒排列表索引
  • 内存驻留表
  • 表索引

SQL 是一种结构化查询语言,专门设计用于对规范化的关系数据库结构执行数据访问操作。

SQL 与其他传统编程语言的主要区别在于,SQL 语句指定应执行哪些数据操作,而不是如何执行它们。

存储过程用于执行用户定义的操作。存储过程可以有一组复合 SQL 语句。存储过程执行 SQL 命令并将结果返回给客户端。

PL/SQL 对所有数据库信息访问语句使用游标。该语言支持使用两种类型的游标:隐式游标和显式游标。

冷备份 - 冷备份是指在实例关闭时备份数据库文件、重做日志和控制文件。这是一个文件复制,通常直接从磁盘复制到磁带。您必须关闭实例才能保证一致的副本。

如果执行冷备份,则在数据文件丢失的情况下,唯一可用的选项是从最新备份还原所有文件。上次备份后执行的所有更改都将丢失。

热备份 - 一些数据库在制作文件的备份副本时无法关闭,因此冷备份不可用。对于这些类型的数据库,我们使用热备份。

SQL 子查询是一种同时查询两个或多个表的方法。子查询本身是一个 SQL SELECT 语句,包含在另一个 SQL SELECT 语句的 WHERE 子句中,并用括号括起来。一些子查询具有等效的 SQL 连接结构,但相关子查询不能被连接复制。

在这种情况下,您需要测试以下方面:

  • 多值依赖
  • 函数依赖
  • 候选键
  • 主键
  • 外键

您可以访问数据库并运行相关的 SQL 查询。在 WinRunner 中,您可以使用数据库检查点功能。如果应用程序提供查看功能,则可以从前端验证。

数据驱动测试定义为一种自动化测试过程,其中应用程序将使用多个测试数据进行测试。它比重新测试简单易行,在重新测试中,测试人员只需坐在系统前,手动从前端界面输入不同的新输入值。

执行测试用例并找到已检测到和修复的缺陷后。使用不同的输入值重新执行相同的测试以确认原始缺陷已成功删除的过程称为重新测试。

重新测试也称为数据驱动测试,但略有不同:

  • 重新测试 - 这是一种手动测试过程,其中使用全新的数据集进行应用程序测试。

  • 数据驱动测试 - 这是一种自动化测试过程,其中应用程序将使用多个测试数据进行测试。它比重新测试简单易行,在重新测试中,测试人员只需坐在系统前,手动从前端界面输入不同的新输入值。

数据驱动测试有四种类型:

  • 通过键盘动态提交测试数据
  • 通过 .txt、.doc 平文件进行数据驱动测试
  • 通过前端对象进行数据驱动测试
  • 通过 Excel 表格进行数据驱动测试

性能测试是一种软件测试技术,用于确定系统在繁重工作负载下的速度、灵敏度和稳定性。

执行数据库恢复测试时,应考虑以下关键点:

  • 数据库系统发生更改或修改的时间跨度。

  • 您希望执行恢复计划的期限。

  • 数据库系统中数据的敏感性。数据越关键,您就越需要定期测试软件。

以下工具用于生成测试数据:

  • Data Factory
  • DTM 数据生成器
  • Turbo Data

可以使用两种类型的备份:

  • 物理备份 - 物理备份包括使用第三方备份工具(如 Veritas NetBackup、IBM Tivoli Storage Manager)或使用操作系统实用程序进行用户管理备份。

  • 逻辑备份 - 数据库的逻辑备份包括备份逻辑对象,如表、索引、过程等。

一个常用的数据备份工具是 Oracle Recovery Manager (RMAN),它是一个用于进行数据库备份的 Oracle 实用程序。

数据库恢复测试中执行以下操作:

  • 数据库系统的测试
  • SQL 文件的测试
  • 部分文件的测试
  • 数据备份的测试
  • 备份工具的测试
  • 日志备份的测试

执行数据库安全测试是为了查找安全机制中的漏洞,以及查找数据库系统的漏洞或弱点。

执行数据库安全测试是为了检查以下方面:

  • 身份验证
  • 授权
  • 机密性
  • 可用性
  • 完整性
  • 弹性

SQL 注入威胁是数据库系统中最常见的攻击类型,其中恶意 SQL 语句被插入到数据库系统中并执行,以获取数据库系统的关键信息。此攻击利用用户应用程序实现中的漏洞。为防止这种情况,应仔细处理用户输入字段。

以下工具可用于执行数据库安全测试:Zed Attack Proxy、Paros、Social Engineer Toolkit、Skipfish、Vega、Wapiti 和 Web Scarab。

在执行数据库测试时,人们面临的常见挑战如下:

  • 测试范围过大
  • 缩小的测试数据库
  • 数据库结构的更改
  • 复杂的测试计划
  • 良好的 SQL 理解
广告