首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为计算引擎开发回归测试

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

Stack Overflow用户
提问于 2013-01-10 05:59:40
回答 1查看 466关注 0票数 0

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

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

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

代码语言:javascript
复制
Views
  |
  V
Logic Managers <--> Financial Calculation Engines
  |
  V
Data Accessors
  |
  V
Database

我们已经确定,计算引擎是我们的程序中最需要回归测试套件的部分。这些组件包含我们用来将原始财务数据处理成有用结果的计算和算法。它们对应的管理器通过调用它们的公共方法来使用它们,这些公共方法接受原始财务数据作为参数。当引擎方法返回时,它们将返回一个包含已处理的财务结果的对象。与此同时,管理人员从数据访问器获取原始财务数据,而数据访问器又从数据库获取数据。

我们决定,一旦财务计算“中断”,我们就想知道错误在程序的哪个部分自上一次运行测试以来被触及。这将让我们使用连续测试来保护我们的引擎不会产生错误的结果,并且不知道去哪里看。

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 17:23:05

只需提示一下:每次使用检查财务计算引擎的每个部分时,都应该使用相同的输入,并且每次返回的对象都应该是相同的。使用相同的逻辑分别测试数据访问器:相同的输入,相同的输出。

要做到这一点,您需要mock系统的某些部分(例如,模拟数据访问器以始终返回相同的数据集)。

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

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

http://www.ibm.com/developerworks/library/j-mocktest/index.html

http://www.slideshare.net/joewilson123/unit-testing-and-mocking

有很多模拟框架可以帮助你编写测试代码,比如Mockito for Java project。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14247271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档