在使用数据库测试工具中发现的一些问题_测试工具

最近一直在进行一些数据库的测试工作,在使用测试工具的时候也发现了一些问题,有所感触,看看有没有有同感的同学。


 数据库的测试一直在进行,用了bench mark ,也用了一些部门开发的测试工具,也有数据库自带的测试工具,这些工具都有一个通病,为了测试而测试。


实际上数据库的测试除了跑分以外,还需要一些对数据库动态的测试工具,比如在测试过程中可以调整


1  测试的访问的并发度


测试时访问数据库的并发度是非常重要的,一个数据库可能在100并发下性能良好,但如果涨到1000,性能就惨不忍睹。目前的测试工具在这方面都是静态调整,使用起来非常的不友好,在测试中动态调整测试并发度并不是难事,但目前接触过的工具,都没有这个功能。导致每次测试数据库的时候,测试速度慢,测试结果不准确(每次数据的余热都不同,停下测试软件,在此修改并发度会改变当时数据库的数据状态,不同并发度的比对的准确性就降低了)


2  数据库稳定性测试工具是否可调


一般数据库稳定性的测试通过长时间运行测试程序,用时间的度量来说明数据库运行的稳定性,实际上这也是有问题的,数据稳定性的测量除了时间的度量以外,还与数据库在不同数据压力情况下的表现状态有关,并且数据库随着数据存量和增加量的上升,或降低稳定性都有不同的变化可能,目前的已知的数据库测试工具在稳定性方面除了时间方面的测量以外,并没有其他可以调整和匹配的方案。


3  测试工具的稳定性


测试工具本身在测试数据库的过程中也是需要具有稳定性的,在使用某些“小众” 的测试工具时,测试工具难以使用的程度和稳定性,尤其是稳定性成了问题。测试中测试工具崩溃,或者出现各种异常状态,在灌入大量的数据后,测试过程中,测试工具本身就占用大量的CPU资源,以及内存资源,在测试过程中测试程序自己崩溃。数据库本身可能还能承受测试工具的压力,但测试工具本身已经不能承受自身产生的压力。


4  测试工具测试模式的可调式性


目前的数据库种类众多,单体,分布式,NOSQL,时序性等等种类的数据库,测试工具基本上不具备可调性,不提测试非关系型的数据库,只从单体和分布式的关系型数据库看,测试工具在面对不同的数据库方面也不具备可调式性。

可调式性,就是针对要测试数据库的特点,有标准的调整数据测试方式,如发出的语句,可以选择是针对单体数据库测试SQL优化器的复杂SQL ,或者针对分布式数据库进行简单 SQL 的测试,并根据不同的数据库,产生不同难度级别的SQL。目前这些测试工具,都不具备这样的特性。


设定不同难度的SQL 语句的级别,在测试数据库中,用不同级别的语句去测试数据库,从获得的结果中,区分数据库的在那个级别的性能表现的更好,那些级别不擅长。



5   测试工具的可视化


目前大部分的测试工具基本上都没有好的测试界面,都需要比较复杂的配置和调试,测试前期的准备工作就比较繁琐和复杂,导致测试的过程中,测试难度加大,测试失败几率提高,同时测试的结果展示的也不明确。


6  测试工具的日志


测试工具的日志也是一个比较测试工具好坏的选项,目前使用的测试工具在这方面都比较欠缺,尤其是在测试中失败后,测试工具没有任何的报错信息,即使打印了测试的日志,从中找问题也是在猜,并没有明确的导向性。


终上所述,目前很难找到一个数据库测试中,具有权威性,便捷性(安装,调试),可靠性,可视化,分析性 完全具有这些功能的测试工具。