{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/vecka8-automatiska-test/automatiska-tester",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV613"}},"mdx":{"fields":{"id":"fe96e5e2-2141-51a1-96cc-9afd4f1a0afe","title":"Automatiserad testning","slug":"/vecka8-automatiska-test/automatiska-tester"},"body":"var _excluded = [\"components\"];\n\nfunction _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/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Automatiserad testning\",\n  \"metaTitle\": \"1DV613 | Automatiserad testning\",\n  \"metaDescription\": \"metaDescription\",\n  \"order\": 1\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 Youtube = makeShortcode(\"Youtube\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", null, \"Varf\\xF6r automatisera tester?\"), mdx(\"p\", null, \"Automatiserade tester k\\xF6rs varje g\\xE5ng du pushar kod, vilket g\\xF6r att du snabbt m\\xE4rker om en f\\xF6r\\xE4ndring g\\xE5tt s\\xF6nder n\\xE5got. Det \\xE4r s\\xE4rskilt v\\xE4rdefullt n\\xE4r projektet v\\xE4xer.\"), mdx(\"p\", null, \"T\\xE4nk p\\xE5 att designa koden s\\xE5 att den g\\xE5r att testa \\u2014 varje funktion/modul b\\xF6r g\\xF6ra en sak och ha minimala beroenden.\"), mdx(\"h2\", null, \"Testramverk\"), mdx(\"p\", null, \"V\\xE4lj ett testramverk som passar din teknikstack:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Plattform\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Ramverk\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"JavaScript / Node.js\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://jestjs.io\"\n  }, \"Jest\"), \", \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://mochajs.org\"\n  }, \"Mocha\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Python\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://pytest.org\"\n  }, \"pytest\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Java\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://junit.org\"\n  }, \"JUnit\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"C#\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://xunit.net\"\n  }, \"xUnit\"), \", \", mdx(\"a\", {\n    parentName: \"td\",\n    \"href\": \"https://nunit.org\"\n  }, \"NUnit\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Go\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"inbyggt (\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"go test\"), \")\")))), mdx(\"h4\", null, \"Jest \\u2014 JavaScript exempel\"), mdx(Youtube, {\n    link: \"https://www.youtube.com/embed/ajiAl5UNzBU\",\n    mdxType: \"Youtube\"\n  }), mdx(\"h2\", null, \"Enhetstester vs integrationstester\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Enhetstester\"), \" \\u2014 testar en enskild funktion/klass isolerat. Snabba och enkla att skriva.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Integrationstester\"), \" \\u2014 testar att flera delar fungerar ihop (t.ex. API + databas). L\\xE5ngsammare men testar mer realistiska fl\\xF6den.\")), mdx(\"p\", null, \"B\\xF6rja med enhetstester. L\\xE4gg till integrationstester f\\xF6r kritiska delar.\"), mdx(\"h2\", null, \"Dokumentera automatiska tester i testspecifikationen\"), mdx(\"p\", null, \"Automatiserade testfall dokumenteras med \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"testkoden sj\\xE4lv\"), \" \\u2014 ge varje test ett tydligt namn som beskriver vad det testar:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// Bra\\ntest('returns error when username is empty', () => { ... })\\n\\n// D\\xE5ligt\\ntest('test1', () => { ... })\\n\")), mdx(\"p\", null, \"I testspecifikationen r\\xE4cker det att referera till testsviten och l\\xE4nka till koden. I testrapporten, bifoga en screenshot eller output fr\\xE5n testk\\xF6rnigen.\"), mdx(\"h2\", null, \"Koppling till CI/CD\"), mdx(\"p\", null, \"N\\xE4r du satt upp en pipeline k\\xF6rs testerna automatiskt vid varje push. Se \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/kurser/mjukvaruutvecklingsprojekt/vecka6-ci-cd\"\n  }, \"Vecka 6 - CI/CD\"), \" f\\xF6r hur du kopplar ihop testning med din pipeline.\"));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#varför-automatisera-tester","title":"Varför automatisera tester?"},{"url":"#testramverk","title":"Testramverk","items":[{"items":[{"url":"#jest--javascript-exempel","title":"Jest — JavaScript exempel"}]}]},{"url":"#enhetstester-vs-integrationstester","title":"Enhetstester vs integrationstester"},{"url":"#dokumentera-automatiska-tester-i-testspecifikationen","title":"Dokumentera automatiska tester i testspecifikationen"},{"url":"#koppling-till-cicd","title":"Koppling till CI/CD"}]},"parent":{"relativePath":"vecka8-automatiska-test/automatiska-tester.md"},"frontmatter":{"metaTitle":"1DV613 | Automatiserad testning","metaDescription":"metaDescription","fullWidth":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/","title":"🎉 Välkommen till Mjukvaruutvecklingsprojekt (1DV613)"}}},{"node":{"fields":{"slug":"/video-loggar","title":"Videologgar"}}},{"node":{"fields":{"slug":"/studieguiden","title":"Studieguiden"}}},{"node":{"fields":{"slug":"/studieguiden/kommunikationsstrategi","title":"Kommunikationsstrategi"}}},{"node":{"fields":{"slug":"/studieguiden/kursledning","title":"Kursledning"}}},{"node":{"fields":{"slug":"/studieguiden/kursplan","title":"Kursplan och betyg"}}},{"node":{"fields":{"slug":"/studieguiden/litteratur","title":"Kurslitteratur"}}},{"node":{"fields":{"slug":"/studieguiden/schema","title":"Schema och deadlines"}}},{"node":{"fields":{"slug":"/studieguiden/studieanvisningar","title":"Studieanvisningar"}}},{"node":{"fields":{"slug":"/studieguiden/utvarderingar","title":"Kursvärderingar"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/dokumentation","title":"Dokumentation"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision","title":"Vecka 1/2 - Planering och vision"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/todo","title":"📅 Att göra-lista"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/vision","title":"Projektvision"}}},{"node":{"fields":{"slug":"/vecka10-etik","title":"Vecka 10 - Etik & överlämning"}}},{"node":{"fields":{"slug":"/vecka10-etik/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/arbeta-i-projekt","title":"Att arbeta i projekt"}}},{"node":{"fields":{"slug":"/vecka3-krav-test","title":"Vecka 3 - Krav och testning"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/testning","title":"Testning"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/vecka3-krav-test","title":"Kravhantering"}}},{"node":{"fields":{"slug":"/vecka4-implementation/arkitektur","title":"Introduktion till mjukvaruarkitektur"}}},{"node":{"fields":{"slug":"/vecka4-implementation/docker-teori","title":"Introduktion till containers"}}},{"node":{"fields":{"slug":"/vecka4-implementation","title":"Vecka 4 - Implementation"}}},{"node":{"fields":{"slug":"/vecka4-implementation/just-task-it-docker","title":"Introduktion till Docker"}}},{"node":{"fields":{"slug":"/vecka4-implementation/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering","title":"Vecka 5 - Versionshantering"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering/jobba-med-git","title":"Jobba med Git"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering/versionshantering","title":"Versionshantering"}}},{"node":{"fields":{"slug":"/vecka6-drift/docker-compose-teori","title":"Introduktion till Docker compose"}}},{"node":{"fields":{"slug":"/vecka6-drift","title":"Vecka 6 - Driftsättning"}}},{"node":{"fields":{"slug":"/vecka6-drift/just-task-it-docker-compose","title":"JTI - Docker Compose"}}},{"node":{"fields":{"slug":"/vecka6-drift/just-task-it-production","title":"JTI - Production"}}},{"node":{"fields":{"slug":"/vecka6-drift/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd/ci-cd","title":"CI/CD"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd","title":"Vecka 7 - CI/CD"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd/just-task-it-deploy-pipeline","title":"JTI - Deploy through a pipeline"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka8-automatiska-test/automatiska-tester","title":"Automatiserad testning"}}},{"node":{"fields":{"slug":"/vecka8-automatiska-test","title":"Vecka 8 - Automatiserad testning"}}},{"node":{"fields":{"slug":"/vecka8-automatiska-test/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/extern-updragsgivare","title":"Extern uppdragsgivare"}}},{"node":{"fields":{"slug":"/vecka9-leverans","title":"Vecka 9 - Slutleverans"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/extern-updragsgivare/extern-uppdragsgivare-samverkan","title":"Samverkansinformation: studentprojekt med extern uppdragsgivare"}}},{"node":{"fields":{"slug":"/vecka9-leverans/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/extern-updragsgivare/vagledning","title":"Vägledning för arbete med extern uppdragsgivare"}}}]}},"pageContext":{"id":"fe96e5e2-2141-51a1-96cc-9afd4f1a0afe"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}