📜  数据库测试–面试问题

📅  最后修改于: 2020-12-06 11:31:59             🧑  作者: Mango


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

执行数据库测试有多种原因。由于后端系统负责存储数据并且出于多种目的而被访问,因此需要在数据库上执行数据完整性,验证和数据一致性检查。

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

  • 为了减轻对数据库后端的调用的复杂性,开发人员增加了查看存储过程的使用。

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

  • 在前端执行黑匣子测试很重要,但是很难找出问题所在。在后端系统上进行测试可以提高数据的健壮性。这就是为什么在后端系统上执行数据库测试的原因。

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

执行数据库测试时需要遵循的步骤如下-

  • 必须验证数据库中存在的数据。
  • 验证是否保持约束。
  • 必须检查过程的性能和触发器的执行。
  • 必须检查回滚和事务提交。

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

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

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

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

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

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

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

步骤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或查询分析器执行该过程。

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

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

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

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

我们有三种类型的SQL语句-

  • 数据处理语言(DML)
  • 数据定义语言(DDL)
  • 数据控制语言(DCL)

DDL语句用于定义数据库结构或架构。一些例子-

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

  • ALTER-更改数据库的结构

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

运算符用于指定SQL语句中的条件,并用作语句中多个条件的联合。

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

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

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

联合所有操作与联合类似,但也显示重复的行。

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

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

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

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

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

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

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

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

示例-创建,插入,选择,更新等。

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

基本表的增长和重组未反映在视图中。因此,该视图可以使用户与数据库中的更改隔离。因此,说明了逻辑数据的独立性。

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

这是将一个表分解为多个表而不会丢失任何信息的过程。进行标准化以实现以下目标-

  • 为了最大程度地减少冗余。
  • 为了最大程度地减少插入,删除和更新异常。

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

  • 二进制搜索样式索引
  • B树索引
  • 倒排列表索引
  • 内存驻留表
  • 表索引

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

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

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

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

冷备份-冷备份被称为在实例关闭时备份数据库文件,重做日志和控制文件。这是文件副本,通常从磁盘直接复制到磁带。您必须关闭实例以确保副本一致。

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

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

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

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

  • 多值依赖
  • 功能依赖
  • 候选键
  • 主键
  • 外键

您可以转到数据库并运行相关的SQL查询。在WinRunner中,可以使用数据库检查点函数。如果应用程序提供了查看函数,那么您可以从前端进行验证。

数据驱动的测试定义为自动化测试过程,其中将使用多个测试数据来测试应用程序。这比重新测试简单而又容易,在这种情况下,测试人员只需坐在系统的前面,并从前端界面手动输入不同的新输入值即可。

一旦执行了测试用例并找到了已经发现并修复的缺陷。使用不同的输入值重新执行同一测试以确认原始缺陷已被成功消除的方法称为“重新测试”。

重新测试也称为数据驱动测试,差异很小-

  • 重新测试-这是一个手动测试过程,而应用程序测试则使用整个新数据集。

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

有四种类型的数据驱动测试-

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

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

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

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

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

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

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

  • 数据工厂
  • DTM数据生成器
  • Turbo数据

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

  • 物理备份-物理备份包括采取备份使用第三方备份工具,如船级社净回,IBM的Tivoli管理器或使用操作系统工具用户管理备份。

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

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

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

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

执行数据库安全性测试以发现安全性机制中的漏洞,并且还可以发现数据库系统的漏洞或弱点。

执行数据库安全性测试以检查以下方面-

  • 认证方式
  • 授权书
  • 保密
  • 可用性
  • 廉洁
  • 弹性

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

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

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

  • 测试范围太大
  • 缩小测试数据库
  • 数据库结构的变化
  • 复杂的测试计划
  • 对SQL有很好的了解