📅  最后修改于: 2020-12-06 11:25:58             🧑  作者: Mango
根据数据库的函数和结构,数据库测试可以分为三类:
结构数据库测试-处理表和列测试,模式测试,存储过程和视图测试,检查触发器等。
功能测试-它涉及从用户角度检查数据库的功能。功能测试最常见的类型是白盒和黑盒测试。
非功能测试-涉及负载测试,数据库中的风险测试,压力测试,最低系统要求,并处理数据库的性能。
结构化数据库测试涉及验证那些未暴露给最终用户的数据库组件。它涉及存储库的所有组件,这些组件用于存储数据,并且最终用户不会更改。对SQL存储过程和其他概念有良好命令的数据库管理员通常会执行此测试。
讨论了关于结构测试的通用组件-
它涉及使用数据库对象映射来验证前端应用程序的对象。
在模式测试中-
有时会发生最终用户应用程序对象未正确映射或与数据库对象不兼容的情况。因此,需要检查与数据库关联的各种模式格式的有效性。
需要在数据库中查找未映射的对象,例如表,视图,列等。
市场上有各种工具可用于在模式中执行对象映射。
示例-在Microsoft SQL Server中,测试人员可以编写简单的查询来检查和验证数据库中的架构。
如果测试人员想要更改表结构,则他/她应确保具有该表的所有存储过程都与此更改兼容。
在此测试中,测试人员确保手动执行存储过程和视图可生成所需结果。
测试人员确保-
如果启用,则可以按预期执行所需的触发器。
如果开发团队通过将输入传递给过程中的应用程序来涵盖所有循环和条件。
数据库中是否有未使用的存储过程。
从数据库中所需的表中提取数据时,将正确应用TRIM操作。
根据被测应用程序的要求,验证存储过程模块的整体集成。
遵循异常和错误处理机制。
用于执行存储过程测试的最常用工具是LINQ , SP测试工具等。
在触发测试中,测试人员需要确保以下内容-
在触发器的编码阶段是否遵循编码约定。
查看执行的触发器是否符合要求的条件。
一旦执行触发器,触发器是否正确更新数据。
验证更新/插入/删除触发了正在测试的应用程序的功能。
此测试涵盖的关键领域是-
将数据库中的数据类型验证为前端应用程序中的字段值。
将数据库中数据字段的长度验证为应用程序中数据类型的长度。
检查数据库中是否有来自应用程序字段对象的未映射表或列。
验证数据库表和列的命名约定是否符合业务需求。
验证数据库中的键和索引,即根据要求定义表中的主键和外键。
检查两个表中的主键及其对应的外键是否相同。
检查键的唯一和非空特性是否得到维护。
键和索引的长度和数据类型根据要求进行维护。
数据库服务器检查涉及验证-
数据库服务器是否可以根据业务需求处理预期的事务数。
数据库服务器的配置详细信息是否满足业务要求。
是否按照要求维护用户授权。
执行功能测试时要牢记最终用户的观点。最终用户进行的所需交易和操作是否满足业务规范。
黑匣子测试涉及验证数据库的集成以检查功能。测试用例很简单,用于验证来自函数的传入数据和传出数据。
使用各种技术(例如因果图技术,等价分区和边界值分析)来测试数据库的功能。
其优点如下-
它的缺点如下-
白盒测试处理数据库的内部结构,并且对用户隐藏了规范详细信息。它涉及数据库触发器和逻辑视图的测试,这将支持数据库重构。
它执行对数据库功能,触发器,视图,SQL查询等的模块测试。此类测试可验证数据库表,数据模型,数据库模式等。它检查引用完整性的规则。它选择默认表值以检查数据库一致性。
用于执行白盒测试的最常见技术是条件覆盖率,决策覆盖率,语句覆盖率等。
可以在白盒测试中检测到编码错误,因此可以消除数据库中的内部错误。白盒测试的局限在于不包含SQL语句。
非功能性测试包括执行负载测试,压力测试,检查满足系统规格的最低系统要求,风险发现和数据库性能优化。
负载测试的主要目标是检查大多数正在运行的事务是否对数据库性能产生影响。
在负载测试中,测试人员检查-
不同测试类型的负载测试示例–
执行压力测试以识别系统断点。在此测试中,应用程序的加载方式使系统在某一时刻发生故障。这一点称为数据库系统的断点。
确定数据库事务的状态需要大量的工作。需要进行适当的计划以避免任何基于时间和成本的问题。
最常用的压力测试工具是LoadRunner和WinRunner 。
让我们以压力测试为例。 CRM应用程序最多可容纳50000个并发用户。假设您将负载增加到51000,并进行一些事务,例如更新记录或添加条目。一旦完成事务,应用程序便可以与数据库系统同步。因此,下一个测试将在52000的用户负载下执行。有时,压力测试也称为疲劳测试。