{"componentChunkName":"component---src-templates-lecture-template-js","path":"/lectures/semaine10/type-portee-exercices","result":{"data":{"mdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"slug\": \"semaine10/type-portee-exercices\",\n  \"title\": \"Questions sur les types et portées des tests\",\n  \"type\": \"exercise\",\n  \"time\": \"20 minutes\"\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Solution = makeShortcode(\"Solution\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", null, \"Question 1\"), mdx(\"p\", null, \"Est-il important d'avoir des tests non-unitaires? Pourquoi?\"), mdx(Solution, {\n    mdxType: \"Solution\"\n  }, mdx(\"p\", null, \"Une bonne couverture de tests unitaires s'assure que chaque classe individuellement fait ce qu'elle doit faire.\\nCependant, les tests unitaires ne peuvent pas garantir le bon fonctionnement de l'application dans son ensemble.\"), mdx(\"p\", null, \"Par exemple, \\xE7a ne peut pas garantir la performance, la s\\xE9curit\\xE9, le UX, etc.\")), mdx(\"h2\", null, \"Question 2\"), mdx(\"p\", null, \"Doit-on utiliser des mocks dans les tests de haut niveau?\"), mdx(Solution, {\n    mdxType: \"Solution\"\n  }, mdx(\"p\", null, \"Les tests unitaires de classe doivent mocker les classes externes \\xE0 celle test\\xE9e.\\nC'est un peu le m\\xEAme principe pour les tests de plus haut niveau.\"), mdx(\"p\", null, \"Cependant, vu que le comportement test\\xE9 a une plus grosse port\\xE9, il est important de ne pas doubler l'ensemble des classes test\\xE9es.\"), mdx(\"p\", null, \"L'utilisation de doublures va donc dependre de la port\\xE9e du test.\"), mdx(\"p\", null, \"Un test medium va doubler ce qui n'est pas important pour le test.\\nTandis qu'un test large n'aura g\\xE9n\\xE9ralement aucune doublure.\")), mdx(\"h2\", null, \"Question 3\"), mdx(\"p\", null, \"Quels sont les diff\\xE9rences entre la \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"port\\xE9e d'un test\"), \" et le \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"type de test\"), \"?\"), mdx(Solution, {\n    mdxType: \"Solution\"\n  }, mdx(\"p\", null, \"La port\\xE9e d\\xE9termine le \\\"comment\\\", c'est-\\xE0-dire la taille du test (small/unitaire, medium, large/end-to-end).\"), mdx(\"p\", null, \"Tandis que le type va pr\\xE9ciser le \\\"pourquoi\\\", c'est-\\xE0-dire ce qu'on d\\xE9sire tester (bordure, performance, acceptation).\")), mdx(\"h2\", null, \"Question 4\"), mdx(\"p\", null, \"Comment testeriez-vous le bon fonctionnement de plusieurs services qui communiquent ensemble via un protocole REST?\"), mdx(Solution, {\n    mdxType: \"Solution\"\n  }, mdx(\"p\", null, \"Les tests end-to-end servent \\xE0 tester le flow complet d'une application.\"), mdx(\"p\", null, \"Dans le cas o\\xF9 nous avons qu'une seule application, c'est relativement simple: il faut tester de l'entr\\xE9e jusqu'\\xE0 la sortie.\"), mdx(\"p\", null, \"Mais lorsqu'il y a plusieurs services qui communiquent ensemble, il est recommand\\xE9 de tester \\xE0 plusieurs niveaux.\"), mdx(\"p\", null, \"On commence par tester du d\\xE9but jusqu'\\xE0 la fin chaque service individuellement.\"), mdx(\"p\", null, \"Ensuite, on ajoute une couche de tests qui parcours multiples services, pour assurer la bonne int\\xE9gration entre les services.\")), mdx(\"h2\", null, \"Question 5\"), mdx(\"p\", null, \"Nommez autant de types de test que vous pouvez.\"), mdx(Solution, {\n    mdxType: \"Solution\"\n  }, mdx(\"p\", null, \"Voici quelques exemples:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Performance/Stress/Load: Assure le respect d'un niveau raisonable de performance. D\\xE9tecte les probl\\xE8mes de configuration de servers ou de r\\xE9gression.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Securit\\xE9: Utilis\\xE9 pour identifier les failles de s\\xE9curit\\xE9 dans un syst\\xE8me (ex. blue team/red team, penetration testing).\")), mdx(\"p\", null, \"Visitez le lien suivant pour plus d'exemple de types de test:\\n\", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.tutorialspoint.com/agile_testing/agile_testing_quadrants.htm\"\n  }), \"https://www.tutorialspoint.com/agile_testing/agile_testing_quadrants.htm\"))));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"slug":"semaine10/type-portee-exercices","title":"Questions sur les types et portées des tests","type":"exercise","time":"20 minutes"}}},"pageContext":{"slug":"semaine10/type-portee-exercices","previous":"/lectures/semaine10/type-portee-conference","next":"/lectures/semaine10/strategie-test-exercice","breadcrumbs":[{"url":"/curriculum","label":"Curriculum"},{"label":"Semaine 10"},{"label":"Tests non unitaires"},{"url":"/lectures/semaine10/type-portee-exercices","label":"Questions sur les types et portées des tests"}]}}}