Que vous travailliez pour une grande entreprise, une startup ou vous-même, les tests unitaires sont non seulement utiles, mais sont souvent indispensables. Nous utilisons des tests unitaires pour tester le code, mais que se passe-t-il si nos tests sont mauvais ou incomplets? Que pouvons-nous utiliser pour tester nos tests? Qui supervisera l'inspecteur?
Points clés
- Le test de variation est une technique qui évalue sa qualité avec un petit nombre de tests modifiés et peut être utilisé pour tester le test lui-même. Il s'agit de créer une "variante" ou une variante du test d'origine et de vérifier si ces modifications sont détectées par le test.
- Humbug est un cadre de test variant pour PHP qui peut être utilisé pour générer une couverture de code. Cependant, il est spécifique au phpunit et peut être problématique pour les utilisateurs utilisant différents cadres de test.
- Bien que les tests de variantes soient précieux, il a également ses inconvénients, principalement reflétés dans les performances. Il s'agit d'un processus lent car il repose sur de nombreux facteurs tels que l'interaction entre les lignes de code, le nombre de tests, le niveau de couverture du code et les performances du code et des tests.
- à mesure que la complexité de l'application augmente, l'importance de maintenir une couverture de code à 100% augmente. Des outils comme Humbug sont essentiels pour maintenir une telle couverture, en particulier dans l'écosystème d'entreprise.
Test de mutation
Non, ce n'est pas ce genre de mutation. Le test de variation (ou analyse de variation ) est une technique utilisée pour créer et évaluer la qualité des tests logiciels. Cela implique de modifier le test d'une manière très faible. Chaque version modifiée est appelée variante, et le test détecte et rejette les variantes en faisant se comporter la version originale différemment de la variante. Les mutations sont des erreurs dans le code d'origine et l'analyse vérifie si nos tests détectent ces erreurs. En bref, si le test est toujours valable après la mutation, ce n'est pas un bon test.
Test de mutation en utilisant Humbug
Humbug est un cadre de test variant pour PHP. Pour que Humbug génère une couverture de code, nous devons installer et activer XDebug sur notre machine. Nous pouvons ensuite l'installer en tant qu'outil global.
composer global require 'humbug/humbug'Après
, si nous exécutons
humbugLa commande
devrait être en mesure de voir des informations d'installation de Humbug et une erreur indiquant que nous n'avons pas de fichier humbug.json.
Programme de démarrage
Avant de configurer et d'utiliser Humbug, nous avons besoin d'un projet qui peut être testé. Nous créerons un petit package de calculatrice PHP où nous exécutons nos tests unitaires et nos tests de mutation. Créons un dossier A / calculatrice. Dans ce document, créons nos dossiers / src et / tests. Dans notre dossier / src, nous aurons notre code d'application; Le dossier / tests contiendra nos tests unitaires. Nous devons également utiliser PHPUnit dans notre package. La meilleure fa?on est d'utiliser le compositeur. Installons PHPUnit en utilisant la commande suivante:
composer global require 'humbug/humbug'
Créons notre calculatrice. Dans le dossier / src, créez un fichier calculateur.php et ajoutez ce qui suit:
humbug
Il s'agit d'un programme assez simple. Une calculatrice simple avec des opérations et fonctions de base arithmétique, pourcentage et logarithmique qui renvoient les valeurs π. Ensuite, dans notre dossier / tests, créons des tests unitaires pour notre calculatrice. Si vous avez besoin d'aide pour les tests unitaires en PHP, consultez ce tutoriel. Créez un fichier calculatortest.php et ajoutez ce qui suit:
composer global require phpunit/phpunit
Ce sera notre pile de test initiale. Si nous exécutons la commande phpunit, nous le verrons exécuter avec succès et nos 4 tests et 4 assertions passeront. Il est important que tous les tests soient passés, sinon Humbug échouera.
Configuration Humbug
Humbug peut être configuré manuellement en créant un fichier humbug.json.dist, ou automatiquement en exécutant la commande suivante:
<?php namespace package\Calculator; class Calculator { /** * 基本運(yùn)算 */ public function add($a1, $a2) { return $a1 + $a2; } public function subtract($a1, $a2) { return $a1 - $a2; } public function multiply($a1, $a2) { return $a1 * $a2; } public function divide($a1, $a2) { if ($a2 === 0) { return false; } return $a1 / $a2; } /* * 百分比 */ // 這將返回 a1 的 a2 百分比 public function percentage($a1, $a2) { return ( $a1 / $a2 ) * 100; } /* * π */ // 返回 π 的值 public function pi() { return pi(); } /* * 對數(shù) */ // 返回以 10 為底的基本對數(shù) public function log($a) { return log10($a); } }
L'exécution de cette commande nous demandera de répondre à certaines questions:
- Quels répertoires source souhaitez-vous inclure? Ici, nous utiliserons SRC /, qui est notre répertoire de code source.
- Quels répertoires souhaitez-vous exclure du répertoire source? peut être utile dans certains cas, comme le répertoire du fournisseur externe que nous ne voulons pas tester. Il ne s'applique pas à notre situation actuelle.
- Timeout de suite de tests unique (secondes). Utilisons ceci pendant 30 secondes. C'est peut-être trop, mais nous voulons nous assurer que tout a assez de temps pour courir.
- Où souhaitez-vous stocker le journal de texte? Humblog.txt Comme valeur par défaut, nous le garderons.
- Où souhaitez-vous stocker les journaux JSON (si nécessaire)? La valeur par défaut est vide, mais nous le stockons dans humblogjson.json.
- Générer "humblog.json.dist"? Une fois ce fichier généré, il contiendra toutes les valeurs de configuration que nous venons de fournir. Si nous voulons changer quelque chose, nous pouvons le modifier manuellement.
Utilisez Humbug
Maintenant que nous avons exécuté l'application et l'avons testée, et nous avons installé Humbug, faisons courir Humbug et vérifions les résultats.
<?php use package\Calculator\Calculator; class CalculatorTest extends PHPUnit_Framework_TestCase { public function testAdd() { $calculator = new Calculator(); $result = $calculator->add(2, 3); $this->assertEquals($result, 5); } public function testSubtract() { $calculator = new Calculator(); $result = $calculator->subtract(6, 3); $this->assertEquals($result, 3); } public function testMultiply() { $calculator = new Calculator(); $result = $calculator->multiply(6, 3); $this->assertEquals($result, 18); } public function testDivide() { $calculator = new Calculator(); $result = $calculator->divide(6, 3); $this->assertEquals($result, 2); } }
Le résultat doit être proche de ceci:
Interprétation des résultats de l'humbug
Le nombre de mutations créées n'est que le nombre de petits changements introduits par Humbug pour tester nos tests. La mutation tuée (.) Est la mutation qui fait échouer le test. Ne soyez pas confus, c'est un résultat positif! La mutation d'échappement (M) est la mutation qui passe toujours le test. Ce n'est pas un résultat positif, nous devons revenir à nos tests et vérifier ce qui manque. Les mutations découvertes sont une mutation qui se produit dans les lignes qui ne sont pas couvertes par des tests unitaires. L'erreur mortelle (E) et le délai d'attente (T) sont les mutations qui créent une erreur fatale et créent des boucles infinies, respectivement.
qu'en est-il des indicateurs?
Les métriques du score de variation représentent le pourcentage de mutations détectées. Notre objectif est à 100%. La couverture du code de variation représente le pourcentage de tests couverts par la mutation. Les mesures de score de variation peuvent vous donner une idée de l'efficacité des tests existants. En analysant nos journaux Humbug, nous pouvons voir que nous avons 9 mutations découvertes, ainsi que de très mauvaises mesures. Découvrez le fichier Humblogjson.json. Ce fichier est automatiquement généré comme le fichier Humblog.txt et contient des informations plus détaillées sur les causes, l'emplacement et les raisons de l'échec. Nous n'avons pas testé nos fonctions pour pourcentage, π et logarithmiques. De plus, nous devons couvrir le cas où le nombre est divisé par 0. Ajoutons plus de tests pour couvrir la situation manquante:
composer global require 'humbug/humbug'
Cette fois, 100% signifie que toutes les mutations sont tuées et que nous avons une couverture complète du code.
Inconvénients
Le plus grand inconvénient des tests de mutation et de Humbug est la performance. Le test de variation est un processus lent car il repose sur de nombreux facteurs tels que les interactions entre les lignes de code, le nombre de tests, le niveau de couverture du code et les performances du code et des tests. Humbug effectue également des essais initiaux, la journalisation et la couverture du code, ce qui augmente la durée totale. De plus, Humbug est spécifique au phpunit et peut être un problème pour les utilisateurs utilisant d'autres cadres de test. Autrement dit, Humbug est en cours de développement actif et continuera de s'améliorer.
Conclusion
Humbug peut être un outil important pour maintenir la durée de vie de votre application. à mesure que la complexité des applications augmente, les tests de test de test - et il devient très important de toujours maintenir des tests à 100%, en particulier lorsqu'il s'agit de l'écosystème d'entreprise. Le code utilisé dans ce tutoriel peut être cloné ici. Avez-vous utilisé Humbug? Faites-vous des tests de mutation d'autres manières? Veuillez nous dire toutes vos réflexions à ce sujet!
Les questions fréquemment posées sur "Qui supervisera l'inspecteur?" Quelle est l'origine de cette phrase "Qui supervisera l'inspecteur?"
"Qui supervisera l'inspecteur?" Cette phrase est souvent utilisée dans des discussions qui remettent en question l'intégrité et la responsabilité des personnes au pouvoir. Il s'agit essentiellement de "qui gardera la garde?" Gardien".
Dans le contexte des tests de logiciels, comment la phrase "qui supervisera l'inspecteur?"
Dans le contexte des tests de logiciels, "Qui supervisera l'inspecteur?" Il s'interroge qui ou ce qui surveille les tests pour s'assurer qu'ils peuvent fonctionner correctement et produire des résultats précis. Il s'agit d'un aspect clé du développement de logiciels car il garantit la qualité et la fiabilité des logiciels développés.
Quelle est l'importance des tests et des tests dans le développement de logiciels?
Le test de test, également connu sous le nom de vérification des tests, est un élément clé du développement de logiciels. Il garantit que les tests mesurent avec précision la fonctionnalité et les performances du logiciel. S'il n'y a pas de vérification du test, il existe un risque que le test puisse produire de faux positifs ou des rapports manqués, ce qui entra?ne une évaluation inexacte de la qualité et de la fiabilité du logiciel.
Comment puis-je m'assurer que mes tests sont fiables et précis?
Assurer que la fiabilité et la précision du test impliquent plusieurs étapes. Tout d'abord, vous devez vérifier soigneusement vos tests pour vous assurer qu'ils sont con?us et mis en ?uvre correctement. Deuxièmement, vous devez vérifier régulièrement vos tests en comparant les résultats des tests avec des résultats connus. Enfin, vous devez surveiller et mettre à jour en permanence vos tests pour vous assurer qu'ils restent précis à mesure que le logiciel évolue.
Quels sont les pièges communs dans les tests de logiciels?
Certains pièges courants dans les tests de logiciels incluent des tests insuffisants, des tests mauvais et ne pas comprendre l'objectif des tests. D'autres pièges incluent la surdiffion sur les tests automatisés sans comprendre leurs limites, et l'examen périodique et la mise à jour des tests.
Quelle est la relation entre le roman graphique "Watchman" et les tests de logiciels?
Le roman graphique "Watchman" utilise la phrase "qui supervise l'inspecteur?" Dans le contexte des tests de logiciels, cette phrase peut être utilisée pour remettre en question la fiabilité et la précision du test lui-même. Tout comme l'observateur devrait protéger la société, les tests devraient protéger la qualité et la fiabilité des logiciels. Mais tout comme l'observateur doit être surveillé, le test doit être surveillé.
Quel est le r?le d'un testeur de logiciel?
Le r?le des testeurs de logiciels est d'assurer la qualité et la fiabilité du logiciel en concevant et en mettant en ?uvre des tests. Ces tests sont utilisés pour identifier et corriger les erreurs, vérifier les fonctionnalités et évaluer les performances. Les testeurs de logiciels doivent également surveiller et mettre à jour ces tests pour s'assurer qu'ils restent précis pendant le processus de développement des logiciels.
Comment améliorer mes compétences de test de logiciel?
Améliorer vos compétences de test de logiciels nécessite un apprentissage et une pratique continus. Vous devez être conscient des dernières méthodes et outils de test et de la pratique de la conception et de la mise en ?uvre de tests régulièrement. Vous devez également demander des commentaires sur vos tests et être heureux d'apprendre de vos erreurs.
Quelles sont les bonnes ressources pour en savoir plus sur les tests de logiciels?
Il existe de nombreuses ressources disponibles pour en savoir plus sur les tests de logiciels. Il s'agit notamment de cours en ligne, de livres, de blogs et de forums. Certains livres recommandés incluent "The Art of Software Testing" de Glenford J. Myers, "Software Testing: The Craftsman Method" de Paul C. Jorgensen, et Seim Karnar et Jack Falke "Testing Computer Software" par Huang Q. Ruan.
Quel est l'avenir des tests de logiciels?
L'avenir des tests de logiciels peut être fortement affecté par les progrès technologiques. Cela comprend l'utilisation croissante de l'automatisation et de l'intelligence artificielle dans les tests, ainsi que le développement de nouvelles méthodes de test pour s'adapter aux technologies émergentes telles que la réalité virtuelle et la blockchain. Cependant, les principes de base des tests de logiciels - pour garantir la qualité et la fiabilité du logiciel - resteront les mêmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les problèmes et les solutions courants pour la portée de la variable PHP incluent: 1. La variable globale ne peut pas être accessible dans la fonction, et elle doit être transmise en utilisant le mot-clé ou le paramètre global; 2. La variable statique est déclarée avec statique, et elle n'est initialisée qu'une seule fois et la valeur est maintenue entre plusieurs appels; 3. Des variables hyperglobales telles que $ _get et $ _post peuvent être utilisées directement dans n'importe quelle portée, mais vous devez faire attention au filtrage s?r; 4. Les fonctions anonymes doivent introduire des variables de portée parents via le mot clé Utiliser, et lorsque vous modifiez les variables externes, vous devez passer une référence. La ma?trise de ces règles peut aider à éviter les erreurs et à améliorer la stabilité du code.

Pour gérer en toute sécurité les téléchargements de fichiers PHP, vous devez vérifier la source et taper, contr?ler le nom et le chemin du fichier, définir les restrictions du serveur et traiter les fichiers multimédias deux fois. 1. Vérifiez la source de téléchargement pour empêcher le CSRF via le jeton et détecter le type de mime réel via FINFO_FILE en utilisant le contr?le de liste blanche; 2. Renommez le fichier à une cha?ne aléatoire et déterminez l'extension pour la stocker dans un répertoire non Web en fonction du type de détection; 3. La configuration PHP limite la taille de téléchargement et le répertoire temporaire Nginx / Apache interdit l'accès au répertoire de téléchargement; 4. La bibliothèque GD résait les images pour effacer des données malveillantes potentielles.

Il existe trois méthodes courantes pour le code de commentaire PHP: 1. Utiliser // ou # pour bloquer une ligne de code, et il est recommandé d'utiliser //; 2. Utiliser /.../ pour envelopper des blocs de code avec plusieurs lignes, qui ne peuvent pas être imbriquées mais peuvent être croisées; 3. Compétences combinées Commentaires tels que l'utilisation / if () {} / pour contr?ler les blocs logiques, ou pour améliorer l'efficacité avec les touches de raccourci de l'éditeur, vous devez prêter attention aux symboles de fermeture et éviter les nidification lorsque vous les utilisez.

AgeneratorInphpisamemory-EfficientwaytoterateOrgedatasetsByyieldingValuesonEatatimeIntedofreturningThemallAtonce.1.GeneratorsUsEtheieldKeywordToproduceValuesondemand, ReducingMemoryUsage.2.TheyAreusefulForHandlingBigloops, ReadingLargeFiles, OR OR.

La clé pour rédiger des commentaires PHP est de clarifier l'objectif et les spécifications. Les commentaires devraient expliquer "pourquoi" plut?t que "ce qui a été fait", en évitant la redondance ou trop de simplicité. 1. Utilisez un format unifié, tel que DocBlock (/ * /) pour les descriptions de classe et de méthode afin d'améliorer la lisibilité et la compatibilité des outils; 2. Soulignez les raisons de la logique, telles que pourquoi les sauts JS doivent être sortis manuellement; 3. Ajoutez une description d'une vue d'ensemble avant le code complexe, décrivez le processus dans les étapes et aidez à comprendre l'idée globale; 4. Utilisez TODO et FIXME Rationalement pour marquer des éléments et des problèmes de taches pour faciliter le suivi et la collaboration ultérieurs. De bonnes annotations peuvent réduire les co?ts de communication et améliorer l'efficacité de la maintenance du code.

Toinstallphpquickly, usexAmpPonWindowsorHomebrewonMacos.1.onwindows, downloadAndInstallxAmppp, selectComponents, startapache et placefilesInhtdocs.2.

En PHP, vous pouvez utiliser des crochets ou des accolades bouclées pour obtenir des caractères d'index spécifiques à la cha?ne, mais les crochets sont recommandés; L'index commence à partir de 0 et l'accès à l'extérieur de la plage renvoie une valeur nulle et ne peut pas se voir attribuer une valeur; MB_substr est nécessaire pour gérer les caractères multi-octets. Par exemple: $ str = "Hello"; echo $ str [0]; sortie h; et les caractères chinois tels que MB_substr ($ str, 1,1) doivent obtenir le résultat correct; Dans les applications réelles, la longueur de la cha?ne doit être vérifiée avant le boucle, les cha?nes dynamiques doivent être vérifiées pour la validité et les projets multilingues recommandent d'utiliser des fonctions de sécurité multi-octets uniformément.

Toléarnphpeffective, startBySettingUpAlocalServerERironmentUsingToolsLILYXAMPPANDACODEDITERLIGHILLEVSCODE.1) INSTRUSITIONXAMPFORAPACHE, MYSQL, ANDPHP.2) USACODEDEDITORFORSYNTAXSUPPORT.3)
