Test unitaireEn programmation informatique, le test unitaire (ou « T.U. », ou « U.T. » en anglais) est une procédure permettant de vérifier le bon fonctionnement d'une partie précise d'un logiciel ou d'une portion d'un programme (appelée « unité » ou « module »). Dans les applications non critiques, l'écriture des tests unitaires a longtemps été considérée comme une tâche secondaire. Cependant, les méthodes Extreme programming (XP) ou Test Driven Development (TDD) ont remis les tests unitaires, appelés « tests du programmeur », au centre de l'activité de programmation.
Documentation logicielleLa documentation logicielle est un texte, généralement accompagné de captures d'écran, qui concerne un logiciel informatique. Elle explique comment le logiciel fonctionne, et/ou comment on doit l'employer. Le terme peut avoir des significations différentes pour des personnes de différents profils. La documentation constitue une partie importante de l'ingénierie logicielle, qui est souvent négligée. La documentation peut être de plusieurs types : L'expression de besoin - Définit le besoin du métier lors d'une demande.
Test de validationUn test de validation est un type de test informatique qui permet de vérifier si toutes les exigences client, décrites dans le document de spécification du logiciel, sont respectées. Les tests de validation se décomposent généralement en plusieurs phases : Validation fonctionnelle : les tests fonctionnels assurent que les différents modules ou composants implémentent correctement les exigences client. Ces tests peuvent être de type valide, invalide, inopportuns, etc.
Couverture de codeEn génie logiciel, la couverture de code est une mesure utilisée pour décrire le taux de code source exécuté d'un programme quand une suite de test est lancée. Un programme avec une haute couverture de code, mesurée en pourcentage, a davantage de code exécuté durant les tests ce qui laisse à penser qu'il a moins de chance de contenir de bugs logiciels non détectés, comparativement à un programme avec une faible couverture de code.
Méthode agilevignette|Daily stand-up, rituel quotidien des méthodes agiles. En ingénierie logicielle, les mettent en avant la collaboration entre des équipes auto-organisées et pluridisciplinaires et leurs clients. Elles s'appuient sur l'utilisation d'un cadre méthodologique léger mais suffisant centré sur l'humain et la communication. Elles préconisent une planification adaptative, un développement évolutif, une livraison précoce et une amélioration continue, et elles encouragent des réponses flexibles au changement.
Bug (informatique)vignette|upright=1|Le Mac triste : écran indiquant un code erreur sur les premières versions du MacIntosh d'Apple. En informatique, un bug (prononcé en français : ) ou bogue est un défaut de conception d'un programme informatique à l'origine d'un dysfonctionnement. La gravité du dysfonctionnement peut aller de bénigne, causant par exemple des défauts d'affichage mineurs à majeure, tels un plantage du système pouvant entraîner de graves accidents, par exemple la destruction en vol de la première fusée Ariane 5, en 1996.
Extreme programmingL’extreme programming (ou XP), en français « la programmation extrême », est une méthode agile de génie logiciel privilégiant l'aspect réalisation d'une application, sans pour autant négliger l'aspect gestion de projet. Elle pousse à l'extrême des principes simples, d'où son nom. La programmation poussée à l'extrême est adaptée aux équipes réduites ayant des besoins changeants. La programmation extrême a été inventée par Kent Beck, Ward Cunningham et Ron Jeffries pendant leur travail sur un projet « C3 » de calcul des rémunérations chez Chrysler.
Génie logicielLe génie logiciel, l'ingénierie logicielle ou l'ingénierie du logiciel (en software engineering) est une science de génie industriel qui étudie les méthodes de travail et les bonnes pratiques des ingénieurs qui développent des logiciels. Le génie logiciel s'intéresse en particulier aux procédures systématiques qui permettent d'arriver à ce que des logiciels de grande taille correspondent aux attentes du client, soient fiables, aient un coût d'entretien réduit et de bonnes performances tout en respectant les délais et les coûts de construction.
Automatisation de testL'automatisation de test permet de jouer à volonté des tests de régression à la suite de la livraison d'une nouvelle version d'une application. L'automatisation d'un test n'a de sens que si le test répond à un certain nombre de critères : le test est systématique : il doit être exécuté à chaque nouvelle version de l'application. le test est répétitif : il est présent dans de nombreux scénarios de test. le test est automatisable : il est possible techniquement de faire jouer le test par un robot.
Qualité logicielleEn informatique et en particulier en génie logiciel, la qualité logicielle est une appréciation globale d'un logiciel, basée sur de nombreux indicateurs. La complétude des fonctionnalités, la correction et précision des résultats, la fiabilité, la tolérance de pannes, la facilité et la flexibilité de son utilisation, la simplicité, l'extensibilité, la compatibilité et la portabilité, la facilité de correction et de transformation, la performance, la cohérence et l'intégrité des informations qu'il contient sont tous des facteurs de qualité.
Software development processIn software engineering, a software development process is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design and/or product management. It is also known as a software development life cycle (SDLC). The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.
Test driven developmentTest-Driven Development (TDD), ou développement piloté par les tests en français, est une méthode de développement de logiciel qui consiste à concevoir un logiciel par des itérations successives très courtes (ou petits pas), telles que chaque itération est accomplie en formulant un sous-problème à résoudre sous forme d'un test avant d'écrire le code source correspondant, et où le code est continuellement remanié dans une volonté de simplification. À l'origine, il s'agissait simplement d'écrire les tests avant de coder, et cette méthode s'appelait le Test-First Design.
Intégration continuevignette|ZAPTEST screenshot L'intégration continue est un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l'application développée. Le concept a pour la première fois été mentionné par Grady Booch et se réfère généralement à la pratique de l'extreme programming. Le principal but de cette pratique est de détecter les problèmes d'intégration au plus tôt lors du développement.
Cycle de vie d'un logicielvignette| Le cycle de vie d'un logiciel (à traduire) Le cycle de vie d'un logiciel désigne l'ensemble des étapes de développement d'un logiciel, du début de son développement jusqu'à la fin de vie. Ces étapes incluent également les potentielles mises à jour du logiciel, une fois une version publiée (à des fins de perfectionnement ou de correction de bugs encore présents dans le logiciel) L'utilisation de la terminologie de test alpha / bêta a commencé chez IBM.
Développement de logicielLe développement de logiciel consiste à étudier, concevoir, construire, transformer, mettre au point, maintenir et améliorer des logiciels. Ce travail est effectué par les employés d'éditeurs de logiciels, des entreprises de services du numérique (ESN), des travailleurs indépendants (freelance) et des membres de la communauté du logiciel libre. Un logiciel est créé petit à petit par une équipe d'ingénieurs conformément à un cahier des charges établi par un client demandeur ou une équipe interne.
DebuggingIn computer programming and software development, debugging is the process of finding and resolving bugs (defects or problems that prevent correct operation) within computer programs, software, or systems. Debugging tactics can involve interactive debugging, control flow analysis, unit testing, integration testing, , monitoring at the application or system level, memory dumps, and profiling. Many programming languages and software development tools also offer programs to aid in debugging, known as debuggers.
Analyse statique de programmesEn informatique, la notion d’analyse statique de programmes couvre une variété de méthodes utilisées pour obtenir des informations sur le comportement d'un programme lors de son exécution sans réellement l'exécuter. C'est cette dernière restriction qui distingue l'analyse statique des analyses dynamiques (comme le débugage ou le profiling) qui s'attachent, elles, au suivi de l’exécution du programme. L’analyse statique est utilisée pour repérer des erreurs formelles de programmation ou de conception et pour déterminer la facilité ou la difficulté à maintenir le code.
FuzzingLe fuzzing (ou test à données aléatoires) est une technique pour tester des logiciels. L'idée est d'injecter des données aléatoires dans les entrées d'un programme. Si le programme échoue (par exemple en plantant ou en générant une erreur), alors il y a des défauts à corriger. Exemples de points d'entrée d'un programme : Fichiers Périphériques (clavier, souris, etc.) Variables d'environnement Réseau Limitation des ressources (mémoire, disque dur, temps CPU, etc.) etc.
Métrique (logiciel)Une métrique logicielle est une compilation de mesures issues des propriétés techniques ou fonctionnelles d'un logiciel. Il est possible de classer les métriques logicielles en trois catégories : Maintenance applicative Qualité applicative Respect des processus de développement Elles peuvent être simples ou plus complexes. Elles se composent toujours de mesures dites « de base », par exemple le nombre de lignes de code, la complexité cyclomatique, le nombre de commentaires.
UtilisabilitéL’utilisabilité, ou encore aptitude à l'utilisation est définie par la norme ISO 9241-11 comme « le degré selon lequel un produit peut être utilisé, par des utilisateurs identifiés, pour atteindre des buts définis avec efficacité, efficience et satisfaction, dans un contexte d’utilisation spécifié ». C'est une notion proche de celle d'affordance, ou même d’ergonomie qui est cependant plus large. Les critères de l’utilisabilité sont : l’efficacité : le produit permet à ses utilisateurs d’atteindre le résultat prévu.