在本节中,我们将了解数据库测试,它检查被测数据库的模式、表、触发器等。
我们还要了解以下数据库测试的概念:
- 为什么我们需要使用数据库测试
-
数据库测试过程
-
数据库测试的类型
-
如何手动和借助自动化工具执行数据库测试
-
在数据库测试期间,我们可能面临哪些不同的挑战?
- 数据库测试的组件
在讨论数据库测试之前,我们首先要了解数据库的定义。
1. 什么是数据库?
数据库是包含信息的预先安排的数据集合,有助于数据操作。数据库可以轻松管理和由用户检索。我们可以将数据建立到表、行、列和索引中,从而更容易识别适当的数据。
在数据库中,数据管理变得非常简单,因为我们可以将数据库用作数据库来检索信息,例如用于存储数据的表、函数、用于数据操作的触发器和数据表示的视图。
注意:由于软件系统中存储了大量数据,数据库随着时间的推移变得更加困难。 |
在理解了数据库概念之后,我们现在开始主要讨论数据库测试。
2. 数据库测试简介
在软件测试中,数据库测试是测试,用于分析被测数据库的模式、表、触发器等。它还评估数据完整性和一致性,这可能包括创建困难的查询来加载和压力测试数据库并审查其响应性。
通常,它包含分层流程,其中涉及数据访问、用户界面 [UI]、业务层以及数据库层。
在数据库测试期间,我们可以涵盖以下数据库活动,例如:
- 测试数据完整性
-
检查数据有效性
-
性能检查相关
-
数据库中的触发器和函数
-
测试各种程序
3. 为什么我们需要执行数据库测试?
如果我们执行数据库测试,它将确保数据库的效率、最大的稳定性、性能和安全性。
这些功能可以偶尔放在一边检查,以确认软件应用程序在竞争环境中部署后立即稳定。要执行数据库测试,我们必须具备SQL的基本知识。
4. 数据库测试的目的是什么?
执行数据库测试的主要目标是确保它们遵循如下方面:
- 事务的ACID属性
- 数据映射
- 业务规则的准确性
- 数据完整性
1. 事务的ACID属性
数据库测试将确保事务的 ACID 属性。
数据库执行这四个 ACID 属性。如下:
原子性
- 事务细节中的术语原子性表示数据保持原子性,这意味着如果对数据执行任何操作,则应完全执行或实现,或者根本不应实现。
-
它也被称为全有或全无。
一致性
-
术语一致性指定在事务中完成事务后应始终保留值。
-
因此,数据的完整性非常重要,因此,数据库在事务之前和之后保持一致。数据应始终正确。
隔离
- 在事务中,术语隔离意味着分离,它指定多个事务可以一次实现所有事务,而不会相互影响和更改数据库状态。
-
或者,如果同时发生两个或多个事务,则应保持一致性。
持久性
- 持久性这个词确保了某事的持久性,这进一步意味着如果提交交易,无论外部因素的影响如何它都将保持修改而不会失败。
-
即使系统出现故障,数据的持久性也应该如此完美,数据库仍然存在。
2. 数据映射
数据映射是数据库测试中必不可少的功能,主要集中在验证应用程序和后端数据库之间来回传递的数据。
以下是在数据映射中测试的一些重要功能:
- 我们分析用户界面或前端方法是否不断与数据库表中的等效字段映射。
-
通常,此映射信息在需求文档中指定。
-
在应用程序的前端执行特定操作时,将在后端使用等效的创建、检索、更新和删除 [CRUD] 活动。
-
然后,测试工程师必须评估是否使用了正确的活动,以及用户操作本身是否有效。
3. 业务规则的准确性 -
数据库测试可确保业务规则的准确性,因为我们知道复杂的数据库会导致复杂的组件,例如存储过程触发器和关系约束。
-
因此,测试工程师将提出适当的SQL命令来验证复杂对象。
4. 数据完整性 -
数据库测试还确保数据完整性,我们可以在其中更新,并且最新的共享数据值应出现在所有表单和屏幕上。
-
如果不应在一个屏幕上修改该值并在另一个屏幕上显示较旧的值,则可以同时更新状态。
5. 如何执行数据库测试
我们可以手动或借助某些自动化工具执行数据库测试。
如何手动执行数据库测试
要手动执行数据库测试,需要遵循以下过程:
- 首先,我们将在本地系统中打开SQL服务器。
-
之后,我们将打开查询分析器来编写命令并检索数据。
-
一旦我们可以检索到指定的数据,我们将详细数据与预期结果进行比较。
-
然后我们可以更新或删除数据以检查软件应用程序的性能。
-
测试数据库的一般测试过程与任何其他应用程序没有什么不同。因此,要运行测试,我们可以按照以下步骤操作:
步骤 1:设置测试环境
首先,我们需要准备测试环境来测试软件应用程序。
步骤 2:执行测试
设置测试环境后,我们将运行特定的测试用例。
步骤3:检查结果
当测试用例成功执行而没有任何问题时,我们将检查指定的测试用例结果。
步骤 4:使用预期的输出验证输出
检查测试用例结果后,我们将验证与例外输出相同的输出。如果结果满足例外输出,则测试用例将被视为通过;否则,它将被标记为失败。
步骤5:向利益相关者报告结果
最后,我们将向特定软件应用程序的利益相关者报告结果。
注意:如果我们设置环境,测试工程师和开发人员将开发所有可能的场景,这些场景可以通过应用程序执行。 |
然后,测试将涉及运行这些查询并检查数据完整性,这意味着生成的数据需要真实、准确、完整、可检索和可验证。
测试还可以包括监视数据映射、不同的 ACID 属性以及确保已实现的业务规则的准确性。
自动化如何帮助数据库测试
在软件测试中,自动化测试用于减少重复的手动工作,这有助于测试工程师更多地关注关键功能,这些功能与数据库测试的工作方式相同。
让我们看看自动化对测试工程师非常有用的几个场景:
修改每个架构时,数据库需要进行深入测试,以确保事情就位。以及根据数据库大小要涵盖的方案数。如果我们手动完成此过程,则此过程非常耗时。
在某些情况下,由于人为错误或其他问题,一组数据在恢复或其他操作中损坏。
但是,如果我们考虑自动监控过程,就更容易找到这些变化,我们可以尽快修复它们。
众所周知,敏捷方法是测试的新时代,我们将在每个冲刺结束时发布新版本,这意味着每 2-3 周需要完成一轮测试。
但是在自动化功能的帮助下,在最近的冲刺中完全不变且保持不变,我们可以专注于新的修改要求。
6. 数据库测试组件
以下是数据库测试的组件:
1. 数据库架构
数据库架构用于描述数据库中数据及其组织的工作。换句话说,我们可以说它只不过是对如何在数据库中规划数据的正确分类。
为了测试这些条件,我们有两种方法,如下所述:
根据工具的重要性,可以使用以下方法之一:
- 我们可以使用 SchemaCrawler 工具,这是一个免费的数据库模式发现和理解工具。
-
正则表达式是验证特定字段的名称及其值的好方法。
-
要验证模式,我们可以使用以下 SQL 命令:
根据数据库操作找到需求
- 字段名称以显式字符开头或结尾。
-
在设计任何其他字段之前,需要生成主键。
-
特定值可以插入,也可以不能插入到具有约束的字段中。
-
为了便于恢复和搜索,必须完全索引外键。
2. 交易
最重要的数据库测试组件之一是事务,因为在执行数据库测试时,需要满足 ACID 属性。
-
为了确保数据库保持一致的状态,我们可以使用以下 ROLLBACK 命令:
- 为了确保修改已经重现,我们可以在实现上述命令后使用 SELECT
命令:
3. 存储过程
存储过程与用户定义的函数相对并行。整个系统以最一致和正确的结果在若隐若现中工作。
它可以由执行或调用过程命令使用,通常,输出采用结果集的格式。存储过程系统用于数据保存在 RDBMS
中的多个应用程序。
我们可以在整个白盒和黑盒测试中测试存储过程。
- 白盒测试:在白盒测试中,存根用于调用存储过程,然后验证输出是否与预期值相矛盾。
-
黑盒测试:在这种情况下,我们可以操作应用程序的前端(UI)。并评估存储过程及其输出的实现。
4. 字段约束
接下来的数据库测试组件是字段约束,其中整个系统处理默认值、独占值和外键。
在这种情况下,我们可以轻松验证从 SQL 命令中检索到的结果,并且为了确保数据库中的对象条件得到实现,我们可以执行前端(用户界面)操作。
5. 触发器
触发器组件用于独立实现整个表以记录输出。换句话说,我们可以说,如果特定事件发生在精确的表上,则可以自动指示触发器(一段代码)执行。
让我们看一个示例,我们可以了解数据库测试中触发器组件的工作:
- 假设一名新员工加入了一家公司。员工正在做两项任务,即开发和测试。然后,该员工将添加到“雇员”表中。
-
将他/她添加到员工表后,触发器可以将员工添加到等效任务的
-
之后,我们可以按照通用过程对其进行测试,首先将 SQL 命令独立植入 Trigger 中,然后记录结果。
-
最后,我们可以按照此过程将触发器作为整个系统执行,然后比较结果。
这些类型的测试以两种方式完成,如下所示
白盒和黑盒测试都有其程序和规则集,这有助于我们获得准确的结果。
7. 数据库测试的类型
数据库测试分为三种不同类型的测试,如下所示:
让我们逐一了解每种类型:
结构数据库测试 -
它是一种最重要的数据库测试技术,用于验证数据存储库内的所有元素,这些元素主要用于数据存储,不允许最终用户直接操作。
-
如果我们想成功完成此测试,我们必须对 SQL 命令有完整的了解。
-
在结构数据库测试中,我们可以测试用户不可见的数据库组件。
-
结构数据库测试主要用于验证数据库。
功能数据库测试 -
最重要的数据库测试方法是功能数据库测试,它用于从最终用户的解释中授权数据库的功能需求。
-
功能数据库测试的主要目的是测试最终用户的事务和操作是否按预期连接到数据库工作。
非功能性测试
在数据库测试的主题中,非功能性测试可以分为几种类型,这些类型根据业务需求至关重要。
下面列出了非功能测试的一些重要部分:
- 负载测试
-
压力测试
-
安全测试
-
可用性测试
-
兼容性测试
注意:负载测试和压力测试属于性能测试,这有助于两个特定的非功能性测试目标。 |
8. 数据库测试有哪些不同的挑战?
在执行数据库测试时,我们可能会遇到以下挑战。
在下表中,我们列出了一些常见的挑战及其解决方案:
9. 与数据库测试相关的误解或神话
当我们执行数据库测试时,我们可能会对数据库测试产生一些误解。
让我们一个一个来看看,也来了解一下相关神话的真实性:
10. 数据库测试中使用的自动化工具
我们市场上有几种数据库测试工具,但在这里我们讨论一些最常用的数据库测试自动化工具,如下所示:
- Data factory
-
SQL test
-
Mockup data
-
MS SQL Server
-
DbUnit
Data factory
- Data factory是用于数据库测试的最常用工具之一。
- 它主要用于商业数据库测试工具,这意味着可以通过Data factory测试庞大的项目。
- 它在数据库测试的上下文中用作数据生成器和数据管理器。
- 对于处理具有大量数据的复杂命令,它是最有效的工具。
- 该工具为我们提供了一个平台,可以轻松地对数据库执行压力或负载测试。
SQL test
-
SQL测试是市场上最常用的数据库测试工具。
-
它是一个开源工具tSQLt框架,这意味着所有数据库测试工程师至少可以使用一次。
-
它允许我们对SQL Server数据库执行单元测试。
-
借助此工具,我们可以轻松执行广泛的SQL测试。
-
该工具的主要缺点是与市场上的其他数据库测试工具相比,它很慢。
Mockup data
- Mockup data测试工具也属于测试数据生成器类别,它是商业测试工具。
- 在此工具中,我们需要在表中添加列来验证输出。
- 它帮助我们创建具有准确数据的大量数据,CSV文件和数据库。
- 它快速创建大量数据,并测试多个表与外键的关系。
MS SQL Server
-
Microsoft SQL 服务器工具广泛用于执行单元测试。
-
它是一种商业工具,我们可以在其中生成 VB 或 C# 项目,测试工程师应在开始测试之前了解项目模式。
-
即使我们从数据库项目创建测试,我们也可以使用 SQL Server 对象资源管理器。
-
该工具的主要缺点是它没有任何良好的用户界面。
DbUnit
-
它是一个开源工具,也称为 JUnit 扩展。
-
它可以帮助我们将数据导出和导入到数据库中,从 XML 数据集中导入数据,并在大型数据库上工作。
-
它最初执行清理插入操作;这就是为什么它不执行任何进一步的清理。
-
在DBUnit工具的帮助下,我们可以探索数据并连接关系和多维数据库。
11. 结论
在数据库测试部分,我们学习了以下主题:
- 数据库测试是测试,用于分析被测数据库的模式、表、触发器等。
- 要了解数据库测试过程的关键概念,数据库测试工程师必须了解数据库测试的各种功能、类型、手动和自动化过程以及数据库测试工具。
- 在本教程的帮助下,我们了解了数据库测试的误解或解决方案。
|