Linux Kernel:大开源合作项目初探
作者:网络转载 发布时间:[ 2013/1/15 10:57:55 ] 推荐标签:
4、硬件测试。验证kernel对不同平台的支持时,会使用些不常用的硬件,以及不常用的硬件组合,不同的体系架构。
5、对待变化。由于Linux kernel经常变化,不可能每次变动都同等对待。针对-rc候选发布版本,需要严格地测试,因为它们一旦被认为是稳定的之后会正式发布,并很可能由发行商选中到发行版中。而针对-next树或者以前的-mm树,因为它们太容易变化了,没有时间和资源运行全量测试,通常只执行基本的测试。
6、工具。Linux测试工具众多,可见http://ltp.sourceforge.net/tooltable.php,覆盖率、安全性、调试、网络、性能等方方面面工具都应有尽有。
7、性能测试。Linux kernel对性能要求也比较高,性能测试通常要注意的几点:(1)好是利用benchmark,以取得可信数据;(2)避免I/O缓存因素,缓存对性能影响较大;(3)确保测量环境的稳定性,特别是比较前后版本时。Autotest中也包含性能测试自动化,一次升级导致的性能问题和修复如下图六所示,2.6.14-rc2-mm1版本与2.6.14-rc1-mm1版本相比执行时间由101增加到了111,性能降低了10%,直到2.6.16-rc1-mm4版本才修复。
图六 Autotest性能测试执行结果图
8、可测性。Linux kernel在可测性方面也有较好支持。
(1)内核模块化。启动内核模块支持后,内核的某些部分可以在需要的时候才装载到内存中,使内核变得更小,运行更快。模块化的内核部分可以在系统运行期间装载或者卸载。
(2)内核hacking 选项,编译一个测试用的内核,有助有内核特定功能的调试,也需要注意有部分选项会导致性能降低。
(3)Magic SysRq键,神奇的键盘快捷键,可以利用快捷键直接向内核传递特定的指定。
(4)多种信息收集方式,内核的bug不一定是导致系统崩溃,一些严重的错误通过日志等表现出来,信息收集变得犹为重要了。可以通过Syslog, console,dmesg等方式dump和显示日志,除此之外,还可以通过串口和网络控制台远程收集信息。
(5)kexec快速重启系统,使用 kexec可以直接重新启动到另一个内核,不再必须通过固件和引导装载程序阶段,能为测试节省大量时间。
(6)使用biselect追查问题,当发现一个bug却不知道是由哪个补丁引入时,使用二分查找,代码管理系统git以及补丁管理工具quilt都支持二分查找。
9、覆盖率。关于Linux kernel的测试覆盖率,没有看到新的统计,不过以前数据多是在20%左右的分支覆盖率。
虽然说自动化测试越来越重要,但是将内核部分测试自动化却是非常困难的,自动化只涵盖了一少部分功能,性能的自动化看起来做得更多些。质量更多还是由开发人员以及社区测试来保证。另外一方面看,Linux kernel本身的架构应该也有较高的容错性和可扩展性,以支持如此大量又频繁的修改。
说明
写本文时,我还并没有实际参与过Linux kernel的开发或测试,只是对其有兴趣,于是在网上查阅了大量文档,有些信息可能已经过时或者与实际情况不符,仅供参考。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11