如何使用合成数据通过 Neosync 捕获更多错误
使用合成数据开发稳健、可扩展且安全的应用程序的指南
在当今世界,开发人员面临着比以往更大的压力,他们需要开发出可靠、可扩展且安全、没有错误且性能出色的应用程序。用户希望他们的应用程序和软件能够完美运行,任何错误或工作流程中断的迹象都可能导致用户感到沮丧甚至失去用户。
挑战在于,手动编写测试用例和测试数据以尝试捕获每个极端情况非常困难且耗时。即便如此,它也不是完美的!许多团队会使用他们的生产数据在本地进行测试,但这存在很多隐私和安全风险,而且根据定义,您只能使用能够成功处理的数据。这意味着您无法捕获其他极端情况。
那么,作为一名开发人员,如果您只有“快乐路径”数据,您如何确保编写的代码和开发的应用程序具有弹性?答案是,您真的做不到。您需要一种更好的方法来测试和验证您的系统。
合成数据可以帮助您在投入生产之前发现更多错误。
什么是合成数据?
合成数据是人工生成的数据,其统计和结构与真实世界数据相同,但不包含任何实际的敏感信息或个人信息。合成数据通常是使用机器学习模型和模拟算法的组合创建的。
这些数据在统计上可能与源数据集几乎完全相同。例如,如果源数据集有一个年龄列,范围为 70,平均值为 25.8,我们可以使用机器学习模型创建一个完全相同的全新数据列,该列的范围也是 70,平均值也是 25.8。CTGAN 等机器学习模型非常擅长学习一组数据的统计特性,并使用全新数据复制这些特性。
此外,利用合成数据,我们可以复制源数据集的结构。这意味着保留引用完整性或主键和外键关系、循环依赖和其他约束。
通过结合使用机器学习和其他算法,我们可以在数据集中复制此结构,这样您就可以轻松地将其导入当前数据库而不会出现任何问题。这就是合成数据的强大之处。能够创建一个在统计和结构上与您的生产数据一样的数据集,而无需担心任何隐私和安全问题。
使用合成数据来捕获更多错误
合成数据可以成为一种强大的工具,可以在生产中报告错误之前发现更多错误。让我们来看看三种最常见的用例。
生成多样化数据以捕捉极端情况
测试驱动开发比以往任何时候都更受欢迎,这对于应用程序弹性来说是一件好事。但事实是,手动编写测试用例可能很繁琐,而且很难预测每个极端情况。大多数开发人员会先测试满意路径,然后再测试一些极端情况,然后再继续。
这正是合成数据可以提供帮助的地方。通过生成大量多样化的数据(手动编写这些数据可能需要几天时间),您可以检查应用程序是否可以处理许多不同的数据类型、格式和值。
最好的部分是生成数据的速度非常快。例如,使用 Neosync,您可以在不到 30 秒的时间内为 Neon 数据库生成 10,000 行数据。这就像创建与 Neon 数据库的连接并在 Neosync 中创建作业一样简单。有关更多信息,请查看此博客文章。
最终目标是,您可以在开发和准备环境中发现更多错误。这意味着您可以发布更具弹性的应用程序。
使用合成数据进行自动化测试
合成数据可以将自动化测试提升到一个新的水平。开发人员可以在他们的 CI 管道中设置自动化测试套件,并指向一个包含合成数据的数据库来测试他们的应用程序。开发人员不必使用相同的陈旧数据集,而是每次都可以生成全新的数据,从而增加了在投入生产之前发现错误的几率。
如果他们确实发现了错误,那么他们可以通过使用相同的数据集填充开发或本地数据库来在本地复制该错误并开始调试错误。这种使用合成数据在本地进行测试,然后使用合成数据在 CI 中进行测试的工作流程是发现错误并对应用程序的弹性充满信心的好方法。
使用合成数据进行性能测试
任何开发人员最不希望看到的就是他们的应用程序在高流量期间崩溃。想象一下 Shopify 在黑色星期五期间崩溃会怎样?对于像 Shopify 这样的公司来说,问题在于他们拥有大量敏感数据,并且无法轻松移动生产数据,否则会承担大量隐私和安全风险。那么他们如何获得足够的数据进行性能测试而不必担心隐私或安全呢?
这是合成数据的完美用例。由于合成数据是人工生成的,因此您可以根据需要创建任意数量的数据。这使得性能测试变得轻而易举,并消除了处理生产数据的隐私和安全风险。只需定义您需要多少数据,然后让系统为您创建这些数据。然后,您可以自动将其提取到您的应用程序中并监控任何性能问题,而无需等待查看它是否在生产中失败。
结论
合成数据是一种很好的工具,开发人员可以使用它来捕获更多错误并交付更具弹性的应用程序。它是一种测试应用程序功能和性能的强大方法,无需担心生产数据的隐私和安全问题。最棒的是,合成数据工具和平台只会变得更好、保真度更高、速度更快,这使得开发人员更愿意开始将其视为核心工作流程的一部分。