Linux – How is the Linux kernel tested


How do the Linux kernel developers test their code locally and after they have it committed? Do they use some kind of unit testing, build automation? test plans?

Best Solution

The linux kernel has a heavy emphasis on community testing.

Typically any developer will test their own code before submitting, and quite often they will be using a development version of the kernel from Linus, or one of the other unstable/development trees for a project relevant to their work. This means they are often testing both their changes and other people's changes.

There tend not to be much in the way of formal test plans, but extra testing may be asked for before features are merged into upstream trees.

As Dean pointed out, there's also some automated testing, the linux test project and the kernel autotest (good overview).

Developers will often also write automated tests targetted to test their change, but I'm not sure there's a (often used) mechanism to centrally collect these adhoc tests.

It depends a lot on which area of the kernel is being changed of course - the testing you'd do for a new network driver is quite different to the testing you'd do when replacing the core scheduling algorithm.