Linux内核如何测试?

Linux内核开发者如何在本地测试他们的代码并在他们提交之后进行测试? 他们是否使用某种单元测试,建立自动化? 测试计划?


Linux内核高度重视社区测试。

通常,任何开发人员在提交之前都会测试自己的代码,并且很多时候他们会使用Linus的内核开发版本或其他不稳定/开发树中的某一个来开展与他们工作相关的项目。 这意味着他们经常测试他们的变化和其他人的变化。

在正式测试计划中通常不会有太多的问题,但是在功能合并到上游树中之前可能会要求额外的测试。

正如Dean指出的,还有一些自动化测试,linux测试项目和内核自动测试(很好的概述)。

开发人员通常也会编写自动化测试,目标是测试他们的变化,但我不确定是否有(经常使用的)机制来集中收集这些adhoc测试。

这很大程度上取决于内核的哪个区域正在发生变化 - 您为新的网络驱动程序所做的测试与您在更换核心调度算法时所进行的测试完全不同。


自然,内核本身及其部件在发布之前经过测试,但这些测试仅涵盖基本功能。 有一些测试系统可以执行Linux内核测试:

Linux测试项目(LTP)将测试套件交付给开源社区,以验证Linux的可靠性和稳定性。 LTP测试套件包含一系列用于测试Linux内核和相关功能的工具。 https://github.com/linux-test-project/ltp

自动测试 - 全自动测试的框架。 它主要是为了测试Linux内核而设计的,尽管它在许多其他用途上很有用,例如在Linux平台下验证新硬件,虚拟化测试和其他一般用户空间程序测试。 它是GPL下的一个开源项目,由许多组织使用和开发,包括Google,IBM,Red Hat和其他许多组织。 http://autotest.github.io/

还有一些主要的GNU / Linux发行公司开发的认证系统。 这些系统通常会检查完整的GNU / Linux发行版以与硬件兼容。 Novell,Red Hat,Oracle,Canonical,Google开发了认证系统。

还有一些用于Linux内核动态分析的系统:

Kmemleak是Linux内核中包含的内存泄漏检测器。 它提供了一种以类似于跟踪垃圾收集器的方式检测可能的内核内存泄漏的方法,不同之处在于孤立对象未被释放,但仅通过/ sys / kernel / debug / kmemleak进行报告。

Kmemcheck将每次读取和写入陷入动态分配的内存(即使用kmalloc())。 如果读取的内存地址先前未被写入,则会向内核日志中输出一条消息。 也是Linux内核的一部分

错误注入框架 (包含在Linux内核中)允许将错误和异常注入到应用程序逻辑中,以实现系统的更高覆盖率和容错性。


Linux内核开发者如何在本地测试他们的代码并在他们提交之后进行测试?

他们是否使用某种单元测试,建立自动化?

在经典的文字意义上,没有。

例如, Ingo Molnar正在运行以下工作:1.使用随机设置的配置选项构建新内核2.启动它3.转到1

每个构建失败,引导失败,BUG或运行时警告都会被处理。 24/7。 乘以几个盒子,可以发现相当多的问题。

测试计划?

没有。

可能存在误解,有中央测试设施,没有。 每个人都做他想做的事。

链接地址: http://www.djcxy.com/p/87879.html

上一篇: How is the Linux kernel tested ?

下一篇: Kernel thread exit in linux