在多层系统中智能测试(smart test)的实现和应用

本文探讨了一种针对多层软件架构的有效测试方法。通过分析每次提交的变更记录,确定受影响的模块及其依赖关系,从而精准定位需要重新测试的部分。这种方法能够显著减少测试周期,提高反馈效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多层或者额外的中间层永远是解决软件设计中的一个有效手段,可以有效的实现隔离变化,内部封装的功能。

当前参与的一个项目就是这样的一个多层的软件架构,这并不是指MVC的多层,因为这个软件并没有V,也可以说没有M,只有C,而这个C在设计中也是多层分级的。

每一层我们可以简单的定义为一个模块,每一个模块都有其对应的测试模块.

对这个项目的痛点是单次测试的时间要很长,一般需要2~3个小时才能运行完,在某些设备上,需要7~8个小时。而且这是一个一旦有问题,可能是会导致进不了系统的软件。

问题就归结于:如何在保证可靠性的情况下,更有效的测试?

解决的思路,与上篇的智能编译(smart build)类似,同样检测每次commit的change log文件,解析得出哪些模块的更改,根据这些被改动模块的相互依赖性,可以得出需要运行的测试模块。这里面的一个特别之处是,一旦有一个底层模块的改动,所有上层模块都需要被测试。这有点违背通常的认识,只要保证本模块对外接口的准确性,上层模块不需要再被测试。请参考本项目的第二个痛点,潜台词就是这是一个和操作系统紧密相关的软件,而操作系统的源码?对不起,黑盒子。

而这个解决方案中,有三个需要前置解决的因素,1), change log file的获得,请参考上篇。 2),预定义的模块依赖性,请问软件的开发人员或架构师。 3)模块和change log的对应性,请详细比较各模块在SVN中的文件目录。

这个解决法案带来的一个效果,就是在保证有效性的情况下,可以大大缩短整个的测试时间,给每一个的commit以尽快的feedback。

因为在这样一个特殊的软件中,不能轻视每一个commit,因为每一个commit的潜在破坏性极大,查找regression的代价极大。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值