Linux 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的开发或测试,只是对其有兴趣,于是在网上查阅了大量文档,有些信息可能已经过时或者与实际情况不符,仅供参考。 引用说明 网上链接 Crackerjack Project http://ossipedia.ipa.go.jp/crackerjack/index.html Linux命名争议 http://en.wikipedia.org/wiki/GNU/Linux_naming_controversy Linux Test Project,测试Linux kernel以及相关功能 http://ltp.sourceforge.net/ Linux测试工具 http://ltp.sourceforge.net/tooltable.php Linux 维基百科 http://en.wikipedia.org/wiki/Linux Linux Kernel维基百科 http://en.wikipedia.org/wiki/Linux_kernel 开发流程 http://linuxwireless.org/en/developers/process Autotest项目http://autotest.github.com/ Greg Kroah Hartman on the Linux Kernel视频http://www.youtube.com/watch?v=L2SED6sewRw http://stackoverflow.com/questions/3177338/how-is-linux-kernel-tested kernel官网 http://www.kernel.org Linux kernel邮件列表FQA http://ftp.osuosl.org/pub/linux/docs/lkml/ Pdf电子书 《Best Practices in Linux Kernel Testing》 《Linux Kernel Tester’s Guide》version 0.3,中文版《Linux 内核测试指南》 《How to Participate in the Linux Community》2008.8 《Linux Kernel Development:How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It》2012.3 文章来源:百度质量部 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |