Testing 如何为计算引擎开发回归测试

Testing 如何为计算引擎开发回归测试,testing,integration-testing,regression-testing,Testing,Integration Testing,Regression Testing,我在一个开发金融信息网络应用程序的团队中。我们还没有为它编写很多自动测试,所以我们决定将回归测试添加到程序的最关键部分。不过,我对自动化测试非常陌生,所以我不完全确定应该如何编写测试 这篇文章很长,所以这里是tl;问:我如何编写一个回归测试来检查某些计算是否有效?不过,我不只是想测试计算,我还想知道计算所依赖的任何组件是否使其输入中断。我不需要特别知道哪个部件坏了,只是有些东西不工作。我应该使用什么方法 这就是我们的情况:我们使用分层架构开发应用程序,如下所示: Views | V Lo

我在一个开发金融信息网络应用程序的团队中。我们还没有为它编写很多自动测试,所以我们决定将回归测试添加到程序的最关键部分。不过,我对自动化测试非常陌生,所以我不完全确定应该如何编写测试

这篇文章很长,所以这里是tl;问:我如何编写一个回归测试来检查某些计算是否有效?不过,我不只是想测试计算,我还想知道计算所依赖的任何组件是否使其输入中断。我不需要特别知道哪个部件坏了,只是有些东西不工作。我应该使用什么方法

这就是我们的情况:我们使用分层架构开发应用程序,如下所示:

Views
  |
  V
Logic Managers <--> Financial Calculation Engines
  |
  V
Data Accessors
  |
  V
Database
视图
|
v
逻辑管理器财务计算引擎
|
v
数据存取器
|
v
数据库
我们已经确定,计算引擎是我们程序中最需要回归测试套件的部分。这些组件包含我们用于将原始财务数据处理为有用结果的计算和算法。他们相应的经理通过调用公共方法来使用它们,公共方法接受原始财务数据作为参数。当引擎方法返回时,它们将返回一个包含已处理财务结果的对象。同时,管理者从数据访问器获取原始财务数据,而数据访问器又从数据库获取数据

我们决定,我们希望在财务计算“中断”时尽快知道,这样我们就可以知道,自上次运行测试以来,程序的任何部分中都存在缺陷。这将使我们能够使用连续测试来保护我们不让引擎产生错误的结果,也不知道该去哪里寻找

当我们思考这意味着什么时,我们意识到向每个引擎添加单元测试是不够的。例如,假设对数据访问器的错误更改意味着它们开始提取错误的数据。然后,这些数据将通过管理器发送到引擎,这将产生错误的结果。然而,引擎的算法本身仍然可以完美地工作,因此单元测试仍然可以通过。这意味着,当我们注意到错误的数字生成时,我们将无法知道错误是何时引入的,这使得跟踪和修复变得更加困难

相反,我们希望进行回归测试,能够在任何地方出现可能导致引擎输出的最终结果不正确的错误时立即进行检测,即使问题是向引擎发送了错误的数据,而不是引擎本身有问题。当这些测试失败时,他们不会告诉我们问题出在哪里,但是如果我们继续测试,我们会在一个bug被检入时立即知道,并且会有一小部分更改来修复它


这就是我们想要做的。不幸的是,我们不知道如何创建这些测试。哪些方法或模式对编写这些类型的回归测试有用?

只是一个提示:您应该每次使用相同的输入检查金融计算引擎的每个部分,并且每次返回的对象都应该相同。 使用相同的逻辑分别测试数据访问器:相同的输入,相同的输出。
为此,您需要修改系统的某些部分(例如,模拟数据访问器以始终返回相同的数据集)

对每个部分进行单独的单元测试也可以更精确地定位缺陷

有几个链接可以了解这个想法:

有很多模拟框架可以帮助您编写测试代码,比如Java项目