308 votes

Comment le noyau linux est testé ?

Comment les développeurs du noyau Linux testent leur code localement et après qu’ils ont commis ? Ils utilisent une sorte de tests unitaires, construction d’automatisation ? plans de test ?

97voto

JosephH Points 21074

Le noyau linux a un fort accent sur les tests de la communauté.

En règle générale, tout développeur de tester leur propre code avant de le soumettre, et, très souvent, ils seront à l'aide d'une version de développement du noyau de Linus, ou l'une de l'autre instable/arbres de développement pour un projet concernant leur travail. Cela signifie qu'ils sont souvent les tests à la fois leurs modifications et les changements d'autres personnes.

Il n'ont pas tendance à être beaucoup dans la façon de formelle des plans de test, mais à des contrôles supplémentaires peuvent être demandés avant les fonctionnalités sont regroupées en amont dans les arbres.

En tant que Doyen a souligné, il y a aussi certains tests automatisés, la linux projet de test et le noyau de l'autotest (bon aperçu).

Les développeurs vont souvent aussi écrire des tests automatisés ciblé pour tester leur changement, mais je ne suis pas sûre qu'il y a (souvent utilisé) mécanisme centralisée collecter ces adhoc tests.

Cela dépend beaucoup de la zone du noyau est en cours de changement de cours - les tests que vous feriez pour un nouveau pilote de réseau est tout à fait différente pour le test, tu le ferais quand remplacer le noyau de l'algorithme d'ordonnancement.

77voto

Karen Tsirunyan Points 407

Naturellement, le noyau lui-même et ses parties sont testés avant la mise en liberté, mais ces tests ne couvrent que les fonctionnalités de base. Il y a quelques essais de systèmes d'effectuer les tests de Noyau Linux:

Le Linux de Test du Projet (LTP) offre des suites de test pour la communauté open source qui permettent de valider la fiabilité et la stabilité de Linux. La LTP suite de test contient une collection d'outils pour tester le noyau Linux et des fonctions associées. http://ltp.sourceforge.net

Autotest - un cadre pour des tests automatisés. Il est conçu principalement pour tester le noyau Linux, mais il est utile pour de nombreuses autres fins, telles que la qualification de nouveau matériel, la virtualisation des tests, et d'autres générale de l'espace utilisateur du programme de test sous Linux. C'est un projet open-source sous licence GPL et est utilisée et développée par un certain nombre d'organisations, y compris Google, IBM, Red Hat, et beaucoup d'autres. http://autotest.kernel.org

Il y a aussi des systèmes de certification développé par certains grands GNU/Linux les sociétés de distribution. Ces systèmes habitude de vérifier compléter les distributions GNU/Linux pour la compatibilité avec le matériel. Il y a des systèmes de certification développé par Novell, Red Hat, Oracle, Canonique, Google.

Il existe aussi des systèmes pour l'analyse de la dynamique du noyau Linux:

Kmemleak est une fuite de mémoire détecteur inclus dans le noyau Linux. Il fournit un moyen de déceler les éventuelles noyau des fuites de mémoire dans une manière semblable à un traçage garbage collector avec la différence que les objets orphelins ne sont pas libérés, mais seulement signalé via l' /sys/kernel/debug/kmemleak.

Kmemcheck les pièges de tous les lire et à écrire à mémoire qui a été allouée dynamiquement (c'est à dire avec kmalloc()). Si une adresse de mémoire est en lecture qui n'a pas déjà été écrit, un message est imprimé à la journalisation du noyau. Est aussi une partie du Noyau Linux

Injection de fautes Cadre (inclus dans le noyau Linux) permet à l'infusion des erreurs et des exceptions dans une application logique de parvenir à une meilleure couverture et la tolérance aux pannes du système.

69voto

adobriyan Points 1443

Comment les développeurs du noyau Linux tester leur code en local et une fois qu'ils ont commis?

Utilisent-ils une sorte de test d'unité, l'automatisation de la compilation?

Dans le sens classique de mots, pas de.

E. g. Ingo Molnar est en cours d'exécution des charges de travail suivants: 1. construire un nouveau noyau avec un ensemble d'options de configuration 2. démarrage en elle 3. goto 1

Chaque échec, échec de démarrage, de BUG ou de l'exécution d'avertissement est traitée. 24/7. Multiplier par plusieurs cases, et l'on peut découvrir tout un tas de problèmes.

des plans de test?

Pas de.

Il y a peut être un malentendu qu'il est au centre de l'installation d'essai, il n'y a aucun. Chacun fait ce qu'il veut.

15voto

Vanwaril Points 2263

Son pas très facile à automatiser noyau de test. La plupart des développeurs de Linux, faire le test sur leur propre, un peu comme adobriyan mentionné.

Cependant, il ya quelques choses que d'aider au débogage du Noyau Linux:

  • kexec: Un appel système qui vous permet de mettre un autre noyau en mémoire et de redémarrer sans revenir sur le BIOS, et si elle échoue, redémarrez de nouveau.
  • dmesg: Certainement l'endroit à regarder pour plus d'informations sur ce qui s'est passé pendant le démarrage du noyau, et si il fonctionne/ne fonctionne pas.
  • Noyau Instrumentation: En plus de printk (et une option appelée "CONFIG_PRINTK_TIME' qui permet de voir (à la microseconde de la précision) lors de la sortie du noyau), la configuration du noyau permet de mettre BEAUCOUP d'indicateurs qui leur permettent de déboguer ce qui se passe.

Ensuite, les développeurs ont généralement d'autres personnes à un examen de leurs patchs. Une fois les patchs sont examinés localement et vu de ne pas interférer avec quoi que ce soit d'autre, et les patchs sont testés pour fonctionner avec le dernier noyau de Linus sans rien casser, les patchs sont poussés vers l'amont.

Edit: Voici une belle vidéo détaillant le processus d'un patch va de travers avant qu'il est intégré dans le noyau.

4voto

emcee Points 268

J’imagine qu’ils utilisent la virtualisation pour faire des tests rapides, quelque chose comme QEMU, VirtualBox ou Xen et quelques scripts pour effectuer des configurations et des tests automatisés.

Les tests automatisés sont probablement fait en essayant les nombreuses configurations aléatoires ou quelques unes spécifiques (si ils travaillent avec un problème spécifique). Linux a beaucoup d’outils de bas niveau (comme dmesg) à moniteur et journal des données de débogage du noyau, donc j’imagine qu’est également utilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X