数据库测试的认知和分类详解

现在的软件系统,尤其是业务应用系统,后台都连接着一个数据库。数据库中存储了大量的数据,数据库的设计是否合理和完善,SQL语句编写是否正确、高效,都直接影响了一个软件系统的功能正确性和性能表现。今天跟大家分享一些自己的一些理解同时也希望跟大家能有效的交流和探讨。

从测试过程的角度来说我们也可以把数据库测试分为

系统测试

传统软件系统测试的测试重点是需求覆盖,而对于我们的数据库测试同样也需要对需求覆盖进行保证。那么数据库在初期设计中也需要对这个进行分析,测试.例如存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。

这个阶段我们的测试主要通过数据库设计评审来实现。

集成测试

集成测试是主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是

  • 数据项的修改操作
  • 数据项的增加操作
  • 数据项的删除操作
  • 数据表增加满
  • 数据表删除空
  • 删除空表中的记录
  • 数据表的并发操作
  • 针对存储过程的接口测试
  • 结合业务逻辑做关联表的接口测试

同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试

单元测试

单元测试侧重于逻辑覆盖,相对对于复杂的代码来说,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成

系统测试相对来说比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验。而集成测试和单元测试就相对简单了。

而我们也可以从测试关注点的角度对数据库进行分类

功能测试

对数据库功能的测试我们可以依赖与工具进行

DBunit

一款开源的数据库功能测试框架,可以使用类似与Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验

QTP

大名鼎鼎的自动测试工具,通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。个人觉得比较偏向灰盒。

DataFactory

一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。这是属于黑盒测试

数据库性能

虽然我们的硬件最近几年进步很快,但是我们需要处理的数据以更快的速度在增加。几亿条记录的表格在现在是司空见惯的,如此庞大的数据量在大量并发连接操作时,我们不能像以前一样随意的使用查询,连接查询,嵌套查询,视图,这些操作如果不当会给系统带来非常巨大的压力,严重影响系统性能

性能优化分4部分

  1. 物理存储方面
  2. 逻辑设计方面
  3. 数据库的参数调整
  4. SQL语句优化.

我们如何对性能方面进行测试呢,业界也提供了很多工具

通过数据库系统的SQL语句分析工具,我们可以分析得到数据库语句执行的瓶颈,从而优化SQL语句

Loadrunner

这个不用多说,我们可以通过对协议的编程来对数据库做压力测试

Swingbench(这是一个重量级别的feature,类似LR,而且非常强大,只不过专门针对oracle而已)

数据库厂商也意识到这点,例如

oracle11g已经提供了real application test,提供数据库性能测试,分析系统的应用瓶颈。

还有很多第三方公司开发了SQL语句优化工具来帮助你自动的进行语句优化工作从而提高执行效率。

安全测试

软件日益复杂,而数据又成为了系统中重中之重的核心,从以往对系统的破坏现在更倾向于对数据的获取和破坏。而数据库的安全被提到了最前端

自从SQL 注入攻击被发现,冒失万无一失的数据库一下从后台变为了前台,而一旦数据库被攻破,整个系统也会暴露在黑客的手下,通过数据库强大的存储过程,黑客可以轻松的获得整个系统的权限。而SQL的注入看似简单缺很难防范,对于安全测试来说,如何防范系统被注入是测试的难点。

业界也有相关的数据库注入检测工具,来帮助用户对自身系统进行安全检测。

对于这点来说业界也有标准,例如ISO IEC 21827,也叫做SSE CMM 3.0,是CMM和ISO的集成的产物,专门针对系统安全领域的

另外一方面,数据库的健壮性,容错性和恢复能力也是我们测试的要点

我们也可以发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员需要逐步掌握的技能,这也是以后公司对数据库测试人员的要求。

写在最后

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/153006.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】均值、中值和高斯滤波详解和示例

本文对均值、中值和高斯滤波进行详解,以帮助大家理解和使用。 这里写目录标题 均值滤波中值滤波高斯滤波核大小为(9,9)核大小为(51,51) 小结 下面是示例中使用的原图。 均值滤波 均值滤波是一种简单的平滑滤波器&…

猫罐头怎么选择?市面上最受欢迎的5款猫罐头推荐!

很多人在买猫罐头的时候,可是费了老鼻子劲儿了。他们浏览了各大平台,读了大量的评测文章,就想着找到最好的那一个。但最后他们发现,很多所谓的「实测」都是虚的,假的。花了几天时间,结果选了个质量不好的猫…

骨传导式蓝牙耳机值得入手吗?盘点最值得入手的5款骨传导耳机

在骨传导耳机还没有火之前,相信很多朋友都是使用入耳式和头戴式耳机比较多一点,但是慢慢的会发现,这两种耳机都存在很大的问题,比如说入耳式耳机,长时间佩戴会造成耳朵痛等问题,而头戴式耳机因为隔音效果好…

vue2项目从0搭建(二):配置代理,登录功能和菜单权限

前言: 发送ajax,fetch,websocket请求获取服务端的数据,配置代理是必须的环节 登录功能和菜单权限是后台管理系统中非常经典且十分重要的业务,这里涉及的知识点也是比较多的,坑也多,面试也是很重要的一环。 这里必须得会,没错是必须。 配置服务代理 创建两个node服务 在和…

【SOLO】实例分割论文SOLO: Segmenting Objects by Locations详解

🚩🚩实例分割论文专栏快速跳转🚩🚩【实例分割】 目录 🌞🌞1.摘要 🌳🌳2.创新点 🌼🌼3.网络结构 🎃🎃3.1背景 🎃&…

4-flask-cbv源码、Jinja2模板、请求响应、flask中的session、flask项目参考

1 flask中cbv源码 2 Jinja2模板 3 请求响应 4 flask中的session 5 flask项目参考 1 flask中cbv源码 ***flask的官网文档:***https://flask.palletsprojects.com/en/3.0.x/views/1 cbv源码执行流程1 请求来了,路由匹配成功---》执行ItemAPI.as_view(item…

【java学习—十五】线程的生命周期(4)

文章目录 线程的生命周期1. 相关概念 线程的生命周期 1. 相关概念 线程的生命周期:线程从生到死的整个经历。 JDK 中用 Thread.State 枚举表示了线程的几种状态 要想实现多线程,必须在主线程中创建新的线程对象。 Java 语言使用 Thread 类及其子类的…

UnitTest + Selenium 完成在线加法器自动化测试

1. 任务概述 利用 UnitTest 与 Selenium 编写自动化用例,测试在线加法器中的整数单次加法功能【如123 】 人工操作流程(测试 12 是否等于 3): 打开在线加法器点击按钮1,再点击按钮,再点击按钮2&#xff0c…

adb手机调试常用命令

查看手机型号 adb shell getprop ro.product.model 查看电池状况 adb shell dumpsys battery 查看分辨率 adb shell wm size 查看屏幕密度 adb shell wm density 查看显示屏参数 adb shell dumpsys window displays 查看android_id adb shell settings get secure android…

安科瑞为数据中心绿色高质量发展贡献力量

安科瑞 崔丽洁  0前言 目前,数字经济的迅猛发展激发了数据中心的算力需求,数据中心规模与功耗密度不断提高,能耗问题日益突出。短期内,数据中心的能耗、碳排放量仍会呈现上升趋势。面对国家“双碳”压力,我国数据中心…

Active Directory 域服务基础知识

Active Directory 域服务(AD DS)是 Microsoft 提供的传统本地域服务,它是 Active Directory(AD)中的核心组件和服务器角色,Active Directory(AD)是 Windows 操作系统环境中的专用专有…

vue2项目修改编译巨慢

前言:我们的一个vue项目在给新同事后他说编译贼慢,一个小修改项5分钟才能自动编译成功,我把项目放到新电脑上也巨慢,升级了nodejs好使了一些,但还是慢,最后引入webpack后巨快, 在项目的package…

初识Java 18-1 泛型

目录 简单泛型 元组库 通过泛型实现栈类 泛型接口 泛型方法 可变参数和泛型方法 通用Supplier 简化元组的使用 使用Set创建实用工具 本笔记参考自: 《On Java 中文版》 继承的层次结构有时会带来过多的限制,例如:编写的方法或类往往…

前端学习笔记--React

1. 什么是React? React 是一个用于构建用户界面的JavaScript库核心专注于视图,目的实现组件化开发我们可以很直观的将一个复杂的页面分割成若干个独立组件,每个组件包含自己的逻辑和样式 再将这些独立组件组合完成一个复杂的页面。 这样既减少了逻辑复杂度,又实现…

12-1- GAN -简单网络-线性网络

功能 随机噪声→生成器→MINIST图像。 训练方法 1 判别器的训练,首先固定生成器参数不变,其次判别器应当将真实图像判别为1,生成图像判别为0 loss=loss(real_out, 1)+loss(fake_out, 0) 2 生成器的训练,首先固定判别器参数不变,其次判别器应当将生成图像判别为1 loss…

你应该知道关于Python的这几个技巧!

随着大数据时代的到来,我们每天都在接触爬虫相关的事情,这其中就不得不提及Python这门编程语言。我已经使用Python编程有多年了,即使今天我仍然惊奇于这种语言所能让代码表现出的整洁和对DRY编程原则的适用。这些年来的经历让我学到了很多的小…

MySQL覆盖索引的含义

覆盖索引:SQL只需要通过索引就可以返回查询所需要的数据,而不必通过二级索引查到主键之后再去查询数据,因为查询主键索引的 B 树的成本会比查询二级索引的 B 的成本大。 也就是说我select的列就是我的索引列(或者主键,…

XD6500S— LoRa SIP模块

XD6500S是一系列LoRa SIP模块,集成了射频前端和LoRa射频收发器SX1262系列,支持LoRa和FSK调制。收发器SX1262系列,支持LoRa和FSK调制。LoRa技术是一种扩频协议,针对LPWAN 应用的低数据速率、超远距离和超低功耗通信进行了优化。通信…

KMP算法详讲(问题导向,通俗易懂)

KMP算法是一种高效的字符串匹配算法,相比于BF算法的时间复杂度为O(n*m),它的时间复杂度降低到了O(nm)。这种算法的高效性在于它利用了主串的指针不回溯,而只移动模式串的指针位置。然而,对于初学者来说,KMP算法并不容易…