我曾为一家负责退休金和投资银行的大型金融交易系统工作。经过15年的功能更改,手动回归测试成本已攀升至每个版本20万美元。(1000万本金,每天交易1000万美元)。该系统还与公司周围的其他19个系统对接,可移动大量数据。该系统是用Java实现的。
但是,我们观察到的是,我们做的“重用”越多,回归测试的成本就越高。(原因是您需要“测试您触摸过的代码”-并且重用/共享的代码在触摸时会影响多个地方。因此尽管“干-不要重复自己”-即不要复制和粘贴代码-我们注意到复制和粘贴代码的经济动机。这是为了降低回归测试的成本,因为我们不想修改可以共享的代码,因为这会带来很大的回归测试影响。
我的问题是,是否存在描述重复使用和回归测试成本之间关系的软件工程原理?
我问这个问题的原因是,将系统分解成要测试的较小部分可以说具有成本优势。
假设:
“回归测试”指的是“验收测试”,即另一个小组花时间代表企业针对系统编写新的测试和重用旧的测试,包括环境和数据设置。
我知道对大型回归测试成本的下意识反应是“更多自动化测试”。这是一个好原则。在这种环境下,存在两个挑战。
(a)自动化测试在系统边界上的用处不大,除非该系统也具有很高的自动化测试覆盖率。(势力范围挑战)。
(b)从文化上讲,当您的系统已经很大且很复杂时,很难在程序员的时间上获得动力,或者在高度自动化的测试覆盖率上进行资本投资。
(c)维护自动化测试的成本隐藏在项目中,因此很容易在项目级别将其丢弃。
(d)这只是在银行工作的文化现实。
(e)我正在以不同的方式(分解)解决此问题。