功能测试和关系映射将数据库与信息的前端信息源和该信息的后端使用相关联,以确保格式和编辑方面的一致性。然后是原子性、一致性、孤立性、持久性(ACID)验证。最后,还有数据库性能测试,包括负载测试。有些企业将数据库安全性和合规性测试放在最后一类中,或者创建第四类数据库测试类型。
下面让我们看看数据库测试类型和流行的数据库测试工具。
为什么数据库测试很重要?
如果没有数据库,几乎没有业务应用程序可以运行。
数据库和应用程序测试相关联,有些企业和项目团队会同时执行这两个测试。但是,应用程序组件间日益增长的相互依赖性意味着支持它们的数据库间的日益独立性。数据库元素通常是应用程序的独立组件,而不是与应用程序代码一起开发。考虑到这些原因,软件团队应测试数据库,并在设计测试方法时考虑其独特的属性和要求。
对于数据库测试,主要争论是应该在供应商级别还是在产品级别进行测试,以及是否通过查询功能(SQL)或更直接地通过API测试数据库。如果企业在IT领域仅使用一家供应商的数据库,则第一个问题没有意义。当混合使用不同供应商的数据库时,请考虑使用不同的工具测试每种产品,这通常会比在所有情况下使用一种工具产生更好的评估结果。对于第二个问题,与其他方法相比,基于SQL的测试通常对数据库管理员来说更容易,并且更容易与实际应用程序相关联。
最好在安装级别(或至少在开发团队级别),而不是在单个产品级别进行数据库测试。应用程序和企业之间越来越多地共享数据库;对特定任务进行测试会导致测试不完整或多余。这意味着开发人员和测试人员应广泛收集数据库测试要求,并通过常见工具和做法来满足这些要求。
功能测试
功能测试验证的是,用户和应用程序可以访问和更新数据库中的数据。有些测试人员更喜欢通过测试依靠数据库的应用程序来验证数据库功能。当应用程序测试无法使用数据库中的所有字段和条件时,这种方法会带来风险。
为确保测试完全探究数据库中的每个字段,请使用测试生成器并直接驱动数据库。这种方法的风险在于糟糕的分析,由于测试数据的原因。如果测试数据不是基于实际的应用程序输入,则很容易错过字段大小或数据格式的问题。
为确保数据库质量,请为项目选择最佳的功能数据库测试工具,然后为所需的其他测试功能进行补充。
功能测试工具。IT企业可以使用通用的或特定于数据库的功能测试工具。有些团队通过SQL来测试数据库,使用SeLite等工具来实现浏览器自动化。
通用产品包括:
SolarWinds Orion
Oracle SQL Developer for Oracle
tSQLtfor Microsoft SQL Server
ACID测试
对于数据库测试,大多数企业都会想到ACID测试。ACID验证整个数据库的完整性,这可以称为逻辑完整性:数据库的基本能力,反映其被设计为要记录的条件,而没有歧义或重复。
ACID测试类似于数据库编程。大多数测试方法都使用SQL来验证以下四个需求:
- 事务在其内部完成,并且整体通过或失败。
- 该活动不会导致数据库以意外方式运行。事务成功完成并创建新状态,或者失败,数据库又恢复到先前状态。
- 事务同时发生或按顺序发生,而不会为数据库创建不一致的状态。
- 数据库活动可承受电源故障和其他中断。
ACID测试、程序和工具在软件行业内广泛可用,并已经很成熟。由于ACID测试的盛行,软件团队可能已经掌握现有信息,可以轻松地部署其方法。但是,这可能会掩盖问题。很多用户将ACID视为他们唯一的数据库测试类型,因此,可能错过造成重大问题的错误。
ACID测试工具。DTM Data Generator和MockupData在此类测试以及功能测试中很受欢迎。很多用户喜欢使用更多特定于数据库的工具进行ACID测试,例如微软和Oracle的SQL开发工具。大多数公司使用大量数据生成器驱动SQL脚本来验证数据库。
非功能测试
负载和其他性能测试会检查数据库的运行,即数据库在生产中处理用户活动的能力。在过去,很多企业会同时测试数据库和应用程序,当时数据库绑定到单个软件,而不是在多个软件组件之间共享。现在,这些团队可能仍然同时执行所有性能测试,但是在相互关联和组件化的软件时代,这并不是正确做法。
其他性能问题源可能会影响压力、延迟、负载以及数据库在各种情况下如何运行的相关测试。为了测试性能,请在数据库本地而不是远程运行测试,因为网络延迟会影响测试结果。良好的性能测试可能需要使用多种工具。测试人员可以使用适当的工具在所选级别上针对测试类型生成负载,并使用另一个工具来监视性能。
性能测试工具。针对非功能测试的流行工具包括:
Database Performance Analyzer是广泛使用的数据库性能分析器之一,而Data Factory和MockupData是用于直接测试的测试数据生成器。