我正在测试一个具有基于SQL Server后端的基于Web的金融应用程序。就数据库测试而言,我仅测试在UI应用程序中输入的任何值/输入是否成功保存在数据库中。有时我会使用哑数值测试存储过程和函数,然后验证输出。

我觉得我做的数据库测试不如我应该做的好。测试工程师可以使用哪些最佳实践/方法来进行更好的数据库测试。一个应测试哪些其他方面/因素,以便可以更有效地评估应用程序的质量?

评论

如果您看的话,Google上有很多文章。仅仅搜索数据库测试最佳实践就可以返回很多结果。 agiledata.org/essays/databaseTesting.html可能有用

freelancer.com/community/articles/…

所以SO也有同样的问题stackoverflow.com/questions/260342 / ...

另一个出色的链接:softwaretestingclass.com/category/database-testing-通常具有简短但即时的条目。 (免责声明:我不是在为他工作)

这个问题太笼统了,因为除非您的团队开发了新的数据库引擎,并且我认为情况并非如此,否则就不需要测试数据库,您是否要验证数据或架构?您想测试一下性能吗?如果是这样,是要使用特定的硬件资源测试数据库的性能,还是要通过特定的DAL查询数据库的性能?请添加更多信息。

#1 楼

从我的博客笔记中重新发布

数据库测试涉及OLTP系统的以下活动


根据设计文档验证表架构,列名
验证列长度​​和数据类型
验证Unicode支持(存储中/日字符)-NVARCHAR数据类型
验证表上的索引(群集,非群集),审核触发器
验证主键和外键如设计文档中在表上定义的约束
验证列,NOT NULLABLE列的默认值,在列上定义的约束

数据库测试(性能调整和功能测试)


这更多是针对白盒测试,即从性能的角度验证过程中的SQL语句,查询。此处的目的是确保
验证访问方法(在SCANS上进行搜索)
验证所使用的JOIN并确保其最佳(嵌套vs合并vs哈希)。 />验证错误已记录,并且包含错​​误消息,错误的支持详细信息
验证编码准则(基于集合的操作vs游标,尝试捕获块)。
验证使用的隔离级别。推荐使用已提交读快照隔离级别,以避免潜在的阻塞问题
验证在事务中处理回滚(例如,由于PK违规导致订单创建失败,应回滚整个事务,需要与事务关联的所有表待回滚)
使用事件探查器,活动监视器,DMV查询来查找顶级IO,消耗CPU的查询,您可以在性能调整部分中找到更多详细信息


#2 楼

研究:


SQL注入
负载测试(可能会暴露最大连接数和/或缓慢的查询)
边界测试


#3 楼

数据库测试可能包括验证数据库的架构,触发测试,过程测试,测试ACID属性以及许多其他事情。
您可能还包括安全性和性能方面。

有关详细信息,请访问以下网站:http://www.softwaretestinghelp.com/database-testing-process/http://www.guru99.com/data-testing.html

#4 楼

您可以对数据库执行多种类型的测试,下面给出一些建议:


数据验证和验证
进行负载测试以检查哪些查询需要很长时间才能获得数据并需要优化表结构和字段,在某些公司中,他们没有数据库专家的数据库专家,因此开发人员设计数据库,在某些情况下,他们添加了不必要的字段和表,从而降低了数据检索性能。因此,作为测试人员,您可以建议从同一表中删除可以管理的内容,而不是创建新表。
密码加密
活动/停用标志

以上列出的内容取决于应用程序。

#5 楼

数据库测试涉及三个关键方面:数据流,业务逻辑和性能。前两个包含功能测试,而后者包含性能测试。

确保有效的功能测试的最佳方法是同时使用白盒测试和黑盒测试。仅执行两者中的任一个是不够的。黑盒测试提供了清晰的用户体验思路,而白盒测试则有助于确保全面的测试范围,并迅速检测并修复与业务逻辑相关的一些错误。您还应该记住回归测试,这是功能测试工作的重要组成部分。即使您的团队遵循敏捷方法,也有很多技术可以在不延迟和不增加成本的情况下优化敏捷中的回归测试。

对于性能测试,这里的重点是做出两个选择: br />

手动或自动测试。这完全取决于项目。对于拥有10名员工的企业的CRM系统,您可以使用手动绩效测试。对于满足成千上万用户的Web应用程序来说,这当然是行不通的。
如果选择自动化,则应意识到其高昂的成本。甚至开源工具也以一定的价格提供扩展的(通常是非常必要的)功能。


#6 楼

在这一点上,我想您已经获得了所需的大部分信息,无论如何,我将根据您对我的评论的回答尝试提供一些输入:数据完整性和数据验证。

测试数据完整性:广义上讲,它甚至包括数据验证测试,但在简化检查中,它包括验证插入,更新和删除操作是否将数据保存到存储库中。您的检查将验证应用程序的数据访问层是否保持引用完整性,从而保护数据免受损坏。类型和预期范围。