IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

test unitaire micro-controleur


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 69
    Points : 53
    Points
    53
    Par défaut test unitaire micro-controleur
    Boujour a tous,

    On m'a donnée une carte éléctronique qui tourne avec un micro-controleur (18F), le programme du micro-controleur a été codé en C avec MPLAB v8.36.
    Il m'a été demandé de faire des test unitaire sur les fonctions du micro.

    Pour cela je souhaiterais créer une routine en C et dans cette routine inclure les fonctions a tester, en envoyant des données et regarder les sorties.

    Mon probleme est le suivant: j'aimerai voir les sorties de ma fonction. Comment je peux faire cela?
    Je sais que sous MPLAB il y a un mode simulation, mais testé avec un programme basic (affichage de bonjour) je n'ai rien qui apparait dans la fenetre MPLAB SIM comment faire?

    Peut être que cela n'est pas judicieux d'essayer de developper cela sous MPLAB, dans ce cas quel IDE me conseiller vous?

    (Je ne suis pas très bon en C, et j'ai pris comme premier choix MPLAB, car d'une part le micro est codé avec cette IDE et d'autre par, il posséde une librairie qui me permet de déclarer les variables en bit ( variable qui sont nombreuse dans le micro)).
    Mais si un IDE répond a toutes ces problematiques, je suis preneur

    Merci

  2. #2
    Membre éclairé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 471
    Points : 831
    Points
    831
    Par défaut
    Bonjour boubouboy

    Sur les PIC, je ne connais pas d'autre environnement de développement. Mais bon, il faut dire que je ne suis pas expert dans les PIC.

    Tu parle de fonctions unitaires , je voudrais bien comprendre ce que tu souhaite réellement. Pour moi, un test unitaire se fait sur une fonction C, tu impose des valeurs d'entrées à cette fonction, tu exécute la fonction, puis tu vérifie que les sorties de la fonction ont la bonne valeur.

    par test unitaire, on test donc qu'une seul fonction, si cette fonction appelle d'autres fonctions, elles doivent être stubbées.

    Qu'appelle tu les
    fonctions du micro.
    parle tu des périphériques du micro-contrôleur ou la couche logicielle accédant à ces périphériques?
    Page sur Developpez : http://pbriand.developpez.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 69
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    En fait, ce que je souhaiterai faire, c'est vérifier les entrées et les sorties de mes fonctions du micro-controleurs. Les fonctions du µC, sont codées en C avant d'être compilées et ecrites dans le µC.

    Ce que je souhaite, c'est donc créer une routine dans laquelle j'envoie des données dans la fonction que je teste, et observer les sorties de ma fonction.

    Ce que j'appelle les fonctions du micro sont en faites les fonctions codés en C, qui ont été compilé et ecrite dans le µC.

    Mais pour les tests unitaires je comprend bien que cela se fait sur une fonction en C. Je veux donc tester mes fonctions en .C en les incluant dans une routine .C qui me permettrais de les tester. Je me suis peu être mal :expliqué tout a l'heure, mais il n'est pas du tout question de tester les E/S du µC

  4. #4
    Membre éclairé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 471
    Points : 831
    Points
    831
    Par défaut
    Dans ce cas, tu as deux solutions

    Soit tu passe par un outil (Rational Test Real Time par exemple) pour rédiger des scénarios de tests , soit tu les écrits directement en C dans un fichier.

    Dans ce fichier , il y aura bien sur un main qui appellera tes fonctions de tests (une par scenario de test), Pour chacun des cas de test, du devras fixer des valeurs pour tes entrées, exécuter la fonction C et vérifier l'état des variables de sorties.

    Tu aura autant de fichiers de test que de modules dans ton application.

    Pour un test unitaire, il vaut mieux le faire sur la cible si possible, sinon sur un simulateur (cela permet aussi de contrôler ton compilateur)
    Page sur Developpez : http://pbriand.developpez.com

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 69
    Points : 53
    Points
    53
    Par défaut
    bonjour,

    Merci pour votre réponse. Qu'est ce que vous entendez par simulateur?
    Sur quel logiciel je peux faire la programmation de mon test unitaire?

    Je comptais le faire sous MPLAB mais je ne sais pas comment réccupérer les information de sortie avec MLAB SIM avez vous une idée?

    il y a peut être aussi les probleme de librairies, puisque dans les fonctions il y a des variables bit ( comme int ou float) qui ne sont pas reconnu dans d'autre programme que MPLAB

    merci

  6. #6
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Un test unitaire est un test qui vérifie la valeur de retour d'une fonction avec les paramètres d'entrée qu'on lui fournit. Ce qui élimine d'office les functions mettant en oeuvre le hardware. Comme la valeur d'entrée n'est pas connue à ce moment là, on ne peut pas prévoir la sortie. Le header à utiliser est assert.h assert pour "assertion", bien sûr. La macro à utiliser est assert(). Quand le resultat est faux, le programme s'arrête avec un message d'erreur explicite. On peut par exemple tester une fonction qui met en majuscule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <assert.h>
     
    char upper(char inputchar)
    {
        char tempchar = inputchar;
        if(inputchar >= 'a' &&  inputchar <= 'z')
        {
            tempchar = inputchar - 32;
        }
        return tempchar;
    }
     
    int main(int argc, char** argv)
    {
        assert(upper('a') == 'A');
        assert(upper('A') == 'A');
        assert(upper('b') == 'C');
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Assertion failed: upper('b') == 'C', file D:\faller\languages\C\codeblocks\dummy\main.c, line 18
    Il est clair que le test ci dessus ne teste pas grand chose. C'est un exemple. Les test unitaires sont de la responsabilité du programmeur. Ils ne font pas forcément partie du programme embarqué, mais peuvent être objet d'un programme séparé embarquant la bibliothèque de fonctions. On peut aussi les embarquer dans le programe en mode debug en les entourant du #ifdef qui va bien _RELEASE_, _DEBUG_ ou quelque chose du genre, je te laisse chercher.

    A+

    Pfeuh

Discussions similaires

  1. Tests unitaires & base de données
    Par lalystar dans le forum Test
    Réponses: 15
    Dernier message: 18/06/2010, 16h50
  2. Tests Unitaires - Production de documents
    Par giviz dans le forum Test
    Réponses: 13
    Dernier message: 07/02/2005, 08h41
  3. Tests unitaires en C#
    Par Bouboubou dans le forum Test
    Réponses: 2
    Dernier message: 01/10/2004, 13h03
  4. [TESTS] Tests unitaires
    Par mathieu dans le forum Test
    Réponses: 4
    Dernier message: 08/01/2004, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo