在开发一个新项目需要检验各个模块的功能时,我们需要使用测试数据逐个验证功能的正常性,以及是否需要完善的地方,但大多数后端程序员苦于测试数据不够用,造数据也很麻烦。大多数时候用的都是一些奇形怪状不符合实际的数据内容去测试。
造数据的烦恼可以包括以下几个方面的困扰:
数据可信度:一个常见的问题是如何保证所造数据的可信度。由于是人为制造的数据,可能存在主观性、偏差或者不真实的情况。因此,需要在造数据时尽量保持客观性和真实性,采用科学的方法和适当的采样策略来尽量减少这种问题的发生。
数据量和代表性:在造数据时,需要考虑数据量的大小和代表性。如果所造的数据量太小,可能无法满足需要的统计分析和模型训练的要求;而如果数据不具备代表性,则所得到的结论可能不具有普适性和可靠性。因此,在造数据时需要尽量保证数据量的足够大,并保证样本的代表性。
数据一致性:当需要造的数据之间存在关联或者依赖性时,如何保证数据之间的一致性是一个挑战。例如,在制造时间序列数据时,需要保证数据的趋势、周期性和相关性等特征的一致性。这需要在造数据时仔细考虑数据生成的方法和模型,以确保所得到的数据符合预期的一致性要求。
缺乏真实数据:有时候,造数据是因为缺乏真实数据。但由于真实数据往往包含大量的噪声、缺失值和异常值等问题,所以造数据时可能难以模拟出真实数据的复杂性和多样性。因此,在造数据时可能需要做一些假设和简化,这可能会对最终的分析结果产生影响。
总之,造数据的烦恼主要包括数据可信度、数据量和代表性、数据一致性以及缺乏真实数据等方面的困扰。要克服这些困扰,需要仔细考虑数据生成的方法和模型,尽量保持数据的客观性和真实性,并在造数据过程中注意控制所做的假设和简化。
自己也是做了很多年的后端程序员,也只是一名菜鸟码农,零开始开发的项目做过十几个,在做每个项目功能的时候,大多数时候为了检验功能是否正常,基本上是造一两条相关的测试数据,然后验证是否ok。但这么做大多数时候会产生一些问题,一般小公司也不会配备好测试等着给他测,然后我们自己也是要做自测的
1.数据的真实程度
很多情况下为了方便节省时间,都是使用固定的一些字符快速填充各个数据项内容,然后设定不同的业务类型或者状态不同,这样的数据完全无法反应数据的真实程度,甚至可以说偏离较远
2.测试数据的量问题
同样的,业务的数据项稍微多点,就懒得去造数据,造一条或者2条,大多数不会超过5条,然后反复使用,这样的数据量太少,也无法反应正式上线,可能会出现的情况
基本上以上两点最基础也能够想到的,其实测试数据的重要性也不止这些
以上我们讲到,大多数后端程序员基本上都是手动造数据,那有没有其他方式可以轻松快速的造更多的数据出来,能够全面完整去测试呢?为此我去通过百度,必应,也进行了相关关键词的搜索,如“测试sql数据生成器”,"数据生成"等等,没有找到一款能够快速且能匹配稍微接近测试数据的工具
我自己之前做过几款工具类网站,并自己独立开发上线运营,大多数是属于失败的,也有成功的,但由于资质问题,最终只能暂停运营,想到测试数据的重要性,而开发者又在这上面有花一定时间去做,却没有一个好的工具去实现,我自己萌生了自己实现的想法,并持续完善迭代,使其能够逐渐接近且确实能够提高后端程序员的工作效率的工具,哪怕是减少10%的工作量
数据最终还是存储在数据库中,而目前大多是基于MYSQL关系型数据库进行开发,所以考虑先基于SQL方式的形式去造数据,后续在考虑搭配接口json数据的方式去生成数据。
提供一个工具使用,需要做的就不仅仅是去生成数据就行了
1.提供会员账号系统,便于用户存储生成数据的设定以及导入
2.数据库建立,便于区分不同项目数据生成,同时也对应不同项目数据库名称
3.DDL建表语句的导入,为了快速让用户进入数据生成的设定,需要将表和表数据项快速导入到工具中
4.数据项生成设定,系统提供多种生成数据的方式,可灵活搭配
5.数据SQL导出,导出需要生成的数据SQL,在放到业务数据库中执行
工具的基础功能如上,基本能满足与实现生成数据的作用了,但要发挥其更有效的功能使得造数据工作效率提高,还需更多努力,同时也需要从数据生成这个核心环境细节慢慢的深究
为了应对不同业务生成数据,工具实现了以下几种数据生成的方式
1.随机
支持雪花唯一ID、姓名、手机号码、电话号码、身份证、邮箱、布尔、UUID、IPV4、银行卡号、银行名称、统一社会信用代码、公司名称、日期、时间、详细地址。
该模式比较固定,只能通过工具后台设定好的方式进行随机生成,但也具有一定的方便性
2.自增
设定一个数字初始值,然后+1
3.固定
该方式也是考虑许久增加的,确实存在一些情况,我们在生成数据的时候,只需要输入固定的业务标识的字符
4.正则
属于最灵活的方式,用户可编写固定正则,系统可进行反向通过正则生成想要的内容。但由于反向解析具有一定限制性,因此正则不能写的过于复杂,否则方向解析出来的就不匹配。
5.函数
顾名思义,该函数的意思就是mysql中的函数,我们有时会用到now这种类似的情况
6.更新
为了应对生成数据出现的各种问题,我想到了同一条数据中,可能存在不同数据项具有依赖设定的情况,通过该模式,可在INSERT之后,在对某个数据项进行update
有了不同的数据生成方式,就能应对其中一些情况,但对于函数和正则灵活的数据生成方式,还是需要用户自行编写,为了更方便的去使用,工具提供了一个数据生成仓库,可通过一些关键词去搜索想要生成数据的名称。但个人能力有限,该库内容目前只添加了一些简单的方式,后续该功能影响扩大还是需要用户逐渐完善该库。
我想提供一个数据生成方式表达库,也仅仅是提供了一个参考建议,也需要用户自己搜索寻找匹配,在进行生成,此过程我越想越费时间,为了使得生成数据更加的便捷,快速,节约时间且得到想要的数据。最终在导入DDL建表语句时,增加了数据智能匹配
基于工具内数据生成的方式,通过导入DDL建表的注释,表字段以及数据类型,对其匹配方式进行映射关联,使其达到导入DDL建表语句就将数据项生成数据方式已设定完成。该功能做起来令人惊喜,虽然目前不能完全匹配到想要的数据模式和方式,但的确节省了不少时间,哪怕提供一个参考建议也是好的。
但该智能匹配也处于起步阶段,需要大量的数据生成+大量的建表语句进行分析完善,才能令该功能达到一个更好的使用。
一个网站业务模块的数据生成,远没有这样简单,还有很多情况没有考虑,想到了,也还没有排进计划去完善
1.不同数据表关系对应,也就是主外键
目前这种方式,系统只能设定固定的自增方式手动对应。
2.一对多,多对一的生成方式
目前都是1对1进行生成,但确实存在情况,我们需要主表一条数据,子表2条以及以上的数据,才能真是反应线上真实情况
3.强大的数据词库
目前所有的数据生成方式以及生成出来的数据,距离真实数据还有很大的一个距离,要想令一条数据内的数据项存在前后关联,如用户信息,需要不同行业的词库对其匹配,但这项工作,我想我可能永远做不到吧。
其他等等
测试数据在程序开发测试过程中具有极其重要的作用。下面是说明测试数据重要性的几个关键点。
验证程序的完整性和正确性:测试数据用于验证程序的完整性和正确性,确保程序能够按照预期的功能运行。通过使用不同类型、规模和边界值的测试数据,可以检测和识别可能存在的错误和缺陷,从而提高程序的质量和可靠性。
模拟真实环境和用户行为:测试数据可以模拟真实环境和用户行为,以测试程序的适应性和兼容性。通过使用真实的、多变的测试数据,可以模拟各种真实情况和使用场景,从而更好地发现和解决可能存在的问题,提高程序的稳定性和性能。
提高测试覆盖率:测试数据用于提高测试覆盖率,即通过不同的测试数据覆盖程序的各个方面和功能。通过使用具有不同特征、范围和变在程序开发测试过程中,测试数据的重要性不可忽视。测试数据是用于验证和评估程序正确性、性能和可靠性的关键元素。以下是测试数据在程序开发测试中的重要性:
发现潜在错误:测试数据的主要目的是发现程序中的潜在错误和漏洞。通过使用各种测试数据,可以验证程序在不同条件下的预期行为,从而找出可能导致程序崩溃、功能失效或性能下降的错误。
验证程序功能:使用合适的测试数据可以验证程序的功能是否按照需求和设计来执行。这些测试数据应该涵盖不同的输入变体和边界条件,以确保程序可以正确地处理各种情况。
边界值测试:测试数据通常包括边界值,即接近和超出允许最小和最大值的输入。这是因为边界值常常是程序中错误发生的地方。测试边界值可以帮助发现例如整数溢出、数组越界等常见错误。
测试覆盖率:测试数据在评估测试覆盖率方面起着重要作用。通过使用不同类型和范围的测试数据,可以确保测试用例覆盖到程序中的各个分支和路径。这有助于提高测试的全面性和准确性。
性能测试:测试数据还可以用于评估程序的性能。使用不同数据量和数据类型的测试数据可以模拟实际应用场景,并评估程序在不同负载下的响应时间、吞吐量等性能指标。
辅助调试和排查问题:测试数据不仅可用于发现错误,还可在程序调试和故障排除过程中提供有价值的信息。使用具有特定特征和边界条件的测试数据,可以帮助开发人员更容易地确定问题所在,并定位错误。
总之,测试数据对于程序开发测试过程的成功至关重要。适当的测试数据可以提高测试覆盖率、发现潜在错误、验证程序功能和性能,并在调试和故障排除过程中提供有价值的信息。因此,在进行任何软件开发测试之前,准备和使用适当的测试数据是不可或缺的
最后
愿IT行情变好,坑变少。
黑鸣SQL数据生成 黑鸣SQL数据生成 - 一键生成SQL测试数据 - 后端程序员数据测试工具