数据库测试 – 面试问题
数据库测试 – 面试问题
数据库测试包括执行数据有效性、数据完整性测试、与数据库相关的性能检查以及数据库中的程序、触发器和功能的测试。
执行数据库测试有多种原因。需要对数据库进行数据完整性、验证和数据一致性检查,因为后端系统负责存储数据并被用于多种用途。
需要执行数据库测试的一些常见原因如下 –
-
为了减轻调用数据库后端的复杂性,开发人员增加了视图和存储过程的使用。
-
这些存储过程和视图包含关键任务,例如插入客户详细信息(姓名、联系信息等)和销售数据。这些任务需要在多个级别进行测试。
-
在前端执行的黑盒测试很重要,但很难隔离问题。在后端系统进行测试可提高数据的稳健性。这就是为什么在后端系统上执行数据库测试的原因。
-
在数据库中,数据来自多个应用程序,并且有可能在数据库中存储有害或不正确的数据。因此,需要定期检查数据库组件。此外,应定期检查数据完整性和一致性。
执行数据库测试时需要遵循的步骤如下 –
- 必须验证数据库中的数据。
- 验证是否保持约束。
- 必须检查程序的性能和触发器的执行。
- 必须检查事务的回滚和提交。
根据数据库的功能和结构,数据库测试可以分为以下几类 –
-
结构数据库测试– 它处理表和列测试、模式测试、存储过程和视图测试、检查触发器等。
-
功能测试– 它涉及从用户的角度检查数据库的功能。最常见的功能测试类型是白盒测试和黑盒测试。
-
非功能测试– 它涉及负载测试、数据库风险测试、压力测试、最低系统要求以及处理数据库的 wot 性能。
用于执行存储过程测试的最常用工具是 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 语句用于定义数据库结构或模式。一些例子 –
-
CREATE – 在数据库中创建对象
-
ALTER – 改变数据库的结构
-
DROP – 从数据库中删除对象
运算符用于指定 SQL 语句中的条件,并用作语句中多个条件的连接词。
- 算术运算符
- 比较/关系运算符
- 逻辑运算符
- 设置运算符
- 用于否定条件的运算符
Union 用于组合两个或多个 Select 语句的结果。但是它会消除重复的行。Union 是一个集合运算符。
Union用于组合两个或多个 Select 语句的结果。但是它会消除重复的行
Union All操作类似于 Union,但它也显示重复的行。
触发器用于维护数据库的完整性。要检查触发器是否被触发,您可以检查审计日志。
不能按需调用触发器。当在定义它们的表上发生关联操作(插入、删除和更新)时调用它们。触发器用于应用业务规则、审计以及参照完整性检查。
首先,获取功能需求。然后,了解表结构、联接、游标和触发器、使用的存储过程以及其他参数。接下来,您可以编写具有不同值的测试用例作为这些对象的输入。
数据库测试涉及对用户不可见的后端组件的测试。它包括数据库组件和 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 数据生成器
- 涡轮数据
有两种类型的备份可以使用 –
-
物理备份– 物理备份包括使用 3 个备份rd 方备份工具,如 Veritas net back、IBM Tivoli Manager 或使用操作系统实用程序的用户管理器备份。
-
逻辑备份– 数据库的逻辑备份包括备份逻辑对象,如表、索引、过程等。
进行数据备份的常用工具是 Oracle 恢复管理器 (RMAN),它是一种用于进行数据库备份的 Oracle 实用程序。
在数据库恢复测试中执行以下操作 –
- 数据库系统测试
- 测试 SQL 文件
- 部分文件的测试
- 数据备份测试
- 备份工具测试
- 测试日志备份
进行数据库安全测试是为了发现安全机制中的漏洞,以及发现数据库系统的漏洞或弱点。
执行数据库安全测试以检查以下方面 –
- 验证
- 授权
- 保密
- 可用性
- 正直
- 弹力
SQL注入威胁是数据库系统中最常见的攻击类型,恶意SQL语句被插入数据库系统并执行以从数据库系统获取关键信息。这种攻击利用了用户应用程序实现中的漏洞。为防止这种情况,应谨慎处理用户输入字段。
以下工具可用于执行数据库安全测试:Zed Attack Proxy、Paros、Social Engineer Toolkit、Skipfish、Vega、Wapiti 和 Web Scarab。
执行数据库测试时面临的常见挑战如下 –
- 测试范围太大
- 缩小的测试数据库
- 数据库结构的变化
- 复杂的测试计划
- 对SQL有很好的理解