{"id":511347,"date":"2020-06-11T09:00:00","date_gmt":"2020-06-11T07:00:00","guid":{"rendered":"https:\/\/www.johner-institut.de\/blog\/?p=511347"},"modified":"2024-05-31T15:23:59","modified_gmt":"2024-05-31T13:23:59","slug":"code-coverage","status":"publish","type":"post","link":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/","title":{"rendered":"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen"},"content":{"rendered":"\n<p><strong>Code Coverage<\/strong> dient den meisten Software-Entwicklern als die wichtigste Metrik f\u00fcr die Vollst\u00e4ndigkeit von Software-Tests.<\/p>\n\n\n\n<div class=\"blog-column\">Dieser Artikel verschafft Ihnen einen \u00dcberblick \u00fcber die Abdeckungsgrade und gibt Tipps zum deren Bestimmung.<\/div>\n\n\n\n<div class=\"blog-column\">\n<table class=\"table-blog\" style=\"width: 110.862%; height: 120px;\">\n<tbody>\n<tr style=\"height: 24px;\">\n<th class=\"table-blog-header\" style=\"height: 24px; width: 100%;\"><i class=\"fa fa-play\" style=\"color: red;\" aria-hidden=\"true\"> &nbsp;<\/i>Inhalts\u00fcbersicht<\/th>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px; width: 100%;\"><a href=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#coverage\">1. Varianten des Code Coverage \u00bb<\/a><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px; width: 100%;\"><a href=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#regularien\">2. Regulatorische Anforderungen \u00bb<\/a><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px; width: 100%;\"><a href=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#bewertung\">3. Bewertung der Code Coverage \u00bb<\/a><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px; width: 100%;\"><a href=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#tipps\">4. Bestimmen der Code Coverage \u00bb<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n\n\n<div class=\"blog-clear\">\u00a0<\/div>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"coverage\">1. Was Code Coverage ist<\/h2>\n\n\n\n<p>Code Coverage \u00fcbersetzt man meist mit <strong>Abdeckungsgrad<\/strong>, <strong>Testabdeckung<\/strong> oder <strong>Code-Abdeckung<\/strong>. Diese Ma\u00dfzahl gibt das Verh\u00e4ltnis von tats\u00e4chlich durchgef\u00fchrten Tests und den theoretisch m\u00f6glichen Tests an.<\/p>\n\n\n\n<p>Abh\u00e4ngig davon, wie man die Anzahl theoretisch m\u00f6glicher Tests bestimmt, unterscheidet man zwischen Statement Coverage, Branch Coverage, Decision Coverage und weiteren Abdeckungsgraden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">a) Statement Coverage \u2013 Anweisungsabdeckung<\/h3>\n\n\n\n<p>Die <strong>Anweisungsabdeckung<\/strong> (englisch: Statement Coverage) entspricht den beim Test durchlaufenen Anweisungen im Verh\u00e4ltnis zu allen Anweisungen. Beispiele f\u00fcr Anweisungen w\u00e4ren Wertezuweisungen bei Variablen, Fallunterscheidungen, Schleifen und Methodenaufrufe. Bei vielen Programmiersprachen ist es gute Praxis, pro Code-Zeile (nur) eine Anweisung zu schreiben.<\/p>\n\n\n\n<p><strong>Beispiel<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"806\" height=\"482\" src=\"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png\" alt=\"Code Coverage: Ein Beispiel\" class=\"wp-image-512594\" srcset=\"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png 806w, https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54-300x179.png 300w, https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54-768x459.png 768w, https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54-150x90.png 150w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><\/a><figcaption>Abb. 1: Farbliche Markierung der beim Testen durchlaufenen Code-Abschnitte<\/figcaption><\/figure>\n\n\n\n<p>Ruft man in diesem Beispiel die Methode einmal mit den Werten (23, 80) und einmal mit den Werten (160, 80) auf, so werden nicht alle Zeilen durchlaufen: Rot steht f\u00fcr nicht durchlaufene Zeilen und gr\u00fcn f\u00fcr durchlaufene Zeilen. \u00dcber die gelben sprechen wir gleich.<\/p>\n\n\n\n<p>Die Anweisungsabdeckung z\u00e4hlt zu den schwachen Abdeckungsgraden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">b) Branch Coverage \u2013 Zweigabdeckung<\/h3>\n\n\n\n<p>Ein st\u00e4rkerer Abdeckungsgrad ist die <strong>Zweigabdeckung.<\/strong> Sie entspricht dem Verh\u00e4ltnis der beim Test durchlaufenen Zweige (auch Kanten genannt). Was ein Zweig bzw. eine Kante ist, l\u00e4sst sich am Beispiel eines Programmgrafs (passend zum obigen Code-Ausschnitt) verstehen.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/10\/program-graf.png\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"753\" height=\"153\" src=\"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/10\/program-graf.png\" alt=\"Programmgraf zum Bestimmen des Code Coverage\" class=\"wp-image-511376\" srcset=\"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/10\/program-graf.png 753w, https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/10\/program-graf-300x61.png 300w, https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/10\/program-graf-150x30.png 150w\" sizes=\"auto, (max-width: 753px) 100vw, 753px\" \/><\/a><figcaption>Abb. 2: Programmgraf des in Abb. 1 gezeigten Codes<\/figcaption><\/figure>\n\n\n\n<p>Wenn die in Abb. 1 gezeigte Funktion mit den Werten (23, 80), (160, 80), (180, 40) und (160, 60) aufgerufen wird, werden zwar alle Anweisungen durchlaufen, aber nicht alle Zweige. In unserem Beispiel fehlt der Zweig, der die Anweisungen 11 und 15 verbindet (Abb. 2).<\/p>\n\n\n\n<p>Eine 100%ige Zweigabdeckung bedingt eine 100%ige Anweisungsabdeckung. Das Umgekehrte gilt nicht. Damit ist die Zweigabdeckung das st\u00e4rkere Ma\u00df und nicht die Anweisungsabdeckung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">c) Condition Coverage \u2013 Bedingungsabdeckung<\/h3>\n\n\n\n<p>Viele Bedingungen (if-Bedingungen, Schleifenk\u00f6pfe) bestehen aus Teilbedingungen. In unserem Beispiel enth\u00e4lt die Bedingung in Zeile 6 insgesamt vier atomare Teilbedingungen.<\/p>\n\n\n\n<p>Die Zweigabdeckung unterscheidet nicht, aufgrund welcher Teilbedingungen eine Bedingung als wahr oder falsch ausgewertet wird. Dies erreicht die <strong>Bedingungsabdeckung<\/strong>. Man unterscheidet dabei zwischen der Einfach- und der Mehrfachbedingungsabdeckung.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Einfachbedingungsabdeckung<\/h4>\n\n\n\n<p>Die Einfachbedingungsabdeckung gibt den Anteil der atomaren Teilbedingungen an, die mindestens einmal den Wert wahr und mindestens einmal den Wert falsch angenommen haben.<\/p>\n\n\n\n<p>Eine 100%ige Einfachbedingungsabdeckung f\u00fchrt nicht zu 100%iger Zweigabdeckung, wie folgendes Beispiel zeigt:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Gesamtbedingung = (Teilbedingung_1 OR Teilbedingung_2)<\/pre>\n\n\n\n<p>Testf\u00e4lle<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Teilbedingung_1 =&nbsp;wahr, Teilbedingung_2 =&nbsp;falsch (nicht erf\u00fcllt)<\/li><li>Teilbedingung_1 =&nbsp;falsch, Teilbedingung_2 =&nbsp;wahr (erf\u00fcllt)<\/li><\/ul>\n\n\n\n<p>Obwohl jede der beiden Teilbedingungen einmal erf\u00fcllt und einmal nicht erf\u00fcllt war, wurde die Gesamtbedingung immer als \u201ewahr\u201c ausgewertet. Das hei\u00dft, der Test f\u00fchrte den \u201efalsch-Zweig\u201c nie aus.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Mehrfachbedingungsabdeckung<\/h4>\n\n\n\n<p>Bei der Mehrfachbedingungsabdeckung werden die Testf\u00e4lle so gew\u00e4hlt, dass alle Kombinationen dieser&nbsp;Bedingungen getestest werden. Bei vier atomaren Teilbedingungen (wie im obigen Beispiel) bedarf es somit mindestens 4<sup>2<\/sup> = 16 Testf\u00e4lle. F\u00fcr 5 Teilbedingungen w\u00e4ren es 32 Testf\u00e4lle, da der Anzahl 2<sup>n<\/sup> ist, wobei n die Anzahl der Teilbedingungen angibt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">d) Weitere Code-Coverage-Ma\u00dfe<\/h3>\n\n\n\n<p>Zu den weiteren&nbsp;Abdeckungsgraden z\u00e4hlen die Schleifenabdeckung und die&nbsp;Pfadabdeckung.<\/p>\n\n\n\n<div class=\"defbox\">\n    <div class=\"definition\">\n        <i class=\"fa fa-external-link\"><\/i> Weiterf\u00fchrende Informationen\n    <\/div>\n    <p>Bitte beachten Sie auch den <a href=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/kombinatorische-testen-nicht-nur-bei-software\/\">Artikel zum kombinatorischen Testen<\/a>, der weitere &#8222;Coverage-Grade&#8220; einf\u00fchrt, die sich sogar f\u00fcr Blackbox-Tests eigenen.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"regularien\">2. Regulatorische Anforderungen an das Code Coverage<\/h2>\n\n\n\n<p>In vielen regulierten Branchen wie der Flugzeugindustrie oder der Medizintechnik gibt es normative Anforderungen. Sie finden diese am Beispiel der Medizintechnik hier vorgestellt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">a) Europa<\/h3>\n\n\n\n<p>Immerhin kennt die <a href=\"https:\/\/www.johner-institut.de\/blog\/category\/iec-62304-medizinische-software\/\">IEC 62304<\/a> (Version 1.1) den Begriff Code Coverage. Die Norm fordert aber nicht, dass diese Metrik \u00fcberhaupt erhoben wird. Sie empfiehlt aber im nicht-normativen Teil, die Code Coverage zu erh\u00f6hen.<\/p>\n\n\n\n<p>Ein <a href=\"https:\/\/www.johner-institut.de\/blog\/qualitaetsmanagement-iso-13485\/interne-audits-interner-auditor\/\">Auditor<\/a> kann somit keine Nicht-Konformit\u00e4t bescheinigen, wenn Sie die Code Coverage nicht bestimmen. Er oder sie kann aber durchaus eine Begr\u00fcndung verlangen, weshalb man die Festlegung und die \u00dcberpr\u00fcfung der Akzeptanzkriterien f\u00fcr eine <a href=\"https:\/\/www.johner-institut.de\/blog\/category\/iec-62304-medizinische-software\/\">Software-Einheit<\/a> als ausreichend vollst\u00e4ndig betrachtet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">b) USA, FDA<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Die Forderungen<\/h4>\n\n\n\n<p>Die <a href=\"https:\/\/www.johner-institut.de\/blog\/category\/fda\/\">FDA<\/a> geht auf die Code Coverage im Guidance Document <em>General Principles of Software Validation<\/em> ein. Sie schreibt:<\/p>\n\n\n\n<p><cite>\u201eMeasures such as [&#8230;] testing coverage [&#8230;] are all used to develop an acceptable level of confidence before shipping the product.\u201c<\/cite><\/p>\n\n\n\n<p>Die FDA diskutiert die verschiedenen Abdeckungsgrade und stellt fest:<\/p>\n\n\n\n<p><cite>\u201eIt [Decision Coverage] is considered to be a minimum level of coverage for most software products, but decision coverage alone is insufficient for high-integrity applications.\u201c<\/cite><\/p>\n\n\n\n<p>Dabei versteht die FDA unter <strong>\u201eCoverage\u201c eine 100%ige Abdeckung<\/strong> \u2013 gleich f\u00fcr welchen Typ an Abdeckungsgrad.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Die Realit\u00e4t<\/h4>\n\n\n\n<p>Wir haben in unserer langj\u00e4hrigen Beratungspraxis keinen Medizinproduktehersteller kennengelernt, der Produkte in den USA zugelassen und eine 100%ige Code-Abdeckung erreicht hat. Wir haben sehr selten F\u00e4lle erlebt, in denen ein FDA Inspektor dies thematisierte.<\/p>\n\n\n\n<p>Wie Sie vorgehen k\u00f6nnen, um diesbez\u00fcglich Schwierigkeiten bei FDA-Inspektionen zu vermeiden, lesen Sie weiter unten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bewertung\">3. Kritische Bewertung der Code Coverage<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">a) Vorteile<\/h3>\n\n\n\n<p>Ein Hersteller kann ohne \u201eausreichendes\u201c Testen nicht vermuten, dass seine Software ausreichend fehlerfrei ist. Eine notwendige (aber nicht hinreichende) Voraussetzung f\u00fcr die Annahme, dass das Testen \u201eausreichend\u201c ist, besteht darin, dass der Code beim Testen \u00fcberhaupt (vollst\u00e4ndig) durchlaufen wird.<\/p>\n\n\n\n<p>Die Abdeckungsgrade sind eine (Dank Werkzeugen) einfach zu erhebende, quantitative Metrik f\u00fcr die Vollst\u00e4ndigkeit von Tests. Damit k\u00f6nnen Entwickler, F\u00fchrungskr\u00e4fte und Auditoren erkennen, welche Teile der Software intensiver getestet werden m\u00fcssen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">b) Nachteile<\/h3>\n\n\n\n<p>Beim Bestimmen der Code Coverage sollten Sie beachten:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Source Code notwendig<\/strong><br>Eine Voraussetzung stellt der Source Code dar. Bibliotheken und kompilierte Artefakte k\u00f6nnen zwar als Blackbox getestet werden, die Abdeckungsgrade lassen sich aber meist nicht bestimmen.<\/li><li><strong>Nicht vollst\u00e4ndig testbar<\/strong><br>Ebenso widersetzen sich Teile des Codes wie sehr hardwarenahe Anweisungen dem Testen und damit dem Bestimmen der Code Coverage.<\/li><li><strong>Kein Korrektheitsbeweis<\/strong><br>Selbst eine vollst\u00e4ndige Testabdeckung von 100 % Decision Coverage stellt keinen Korrektheitsbeweis der Software dar. Dazu m\u00fcssten alle m\u00f6glichen Inputwerte getestet werden, was kombinatorisch in fast allen F\u00e4llen unm\u00f6glich ist.<\/li><li><strong>Aufwand<\/strong><br>Das Aufsetzen der Werkzeuge zum Bestimmen der Code Coverage bedeutet einen (einmaligen) Aufwand. Das Schreiben des Tests ebenso.<\/li><li><strong>Timing-Verhalten<\/strong><br>Werkzeuge ver\u00e4ndern den Source Code z.B. dadurch, dass sie<em> Z\u00e4hlen<\/em> einf\u00fcgen. Diese Instrumentierung kann das Timing-Verhalten \u00e4ndern und dadurch ggf. Fehler maskieren, die ohne die Instrumentierung sichtbar w\u00e4ren.<\/li><li><strong>Werkzeugunterst\u00fctzung<\/strong><br>Die markt\u00fcblichen Werkzeuge erlauben es nicht, alle der o.g. Varianten der Testabdeckung zu bestimmen (was auch nicht immer notwendig ist).<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tipps\">4. Tipps zum Bestimmen der Code Coverage<\/h2>\n\n\n\n<p>Eine Software-Entwicklung, die den Anspruch der Professionalit\u00e4t erhebt, wird auf das Bestimmen der Code Coverages nicht verzichten. Daher folgen einige Tipps.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">a) Integration im Entwicklungsprozess<\/h3>\n\n\n\n<p>Legen Sie in der entsprechenden Verfahrensanweisung, der Arbeitsanweisung oder im Software-Entwicklungsplan fest,&nbsp;<span class=\"s1\">welche Variante der Code Coverage zu welchem Grad erreicht werden muss<\/span>. Fordern Sie auch, dass die Unit-Tests parallel zum Code entwickelt werden und nicht erst am Ende der Software-Entwicklung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">b) Umgang mit altem Code<\/h3>\n\n\n\n<p>Damit Sie sich mit altem Code nicht \u00fcbernehmen, k\u00f6nnen Sie fordern, dass (nur) jede neue und jede ge\u00e4nderte Methode zu testen und damit die Code Coverage zu bestimmen ist.<\/p>\n\n\n\n<p>Alternativ k\u00f6nnen Sie mit sehr niedrigen Zielwerten starten und diese im Lauf der Zeit langsam erh\u00f6hen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">c) Risikobasierter Ansatz<\/h3>\n\n\n\n<p>Wenn Sie mit weniger als 100 % arbeiten, dann bestimmen Sie die Abdeckungsgrade f\u00fcr verschiedene Komponenten unterschiedlich, z.B. abh\u00e4ngig von<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>der Sicherheitsklasse (d.h. dem maximalen Schaden, den ein Fehler verursachen w\u00fcrde),<\/li><li>der Bew\u00e4hrtheit der Komponente oder<\/li><li>der Komplexit\u00e4t der Komponente, die Sie mit dem McCabe-Ma\u00df quantifizieren.<\/li><\/ul>\n\n\n\n<p>Im letzteren Fall lie\u00dfe sich beispielsweise fordern, dass f\u00fcr alle Methoden mit einer zyklomatischen Komplexit\u00e4t (McCabe-Ma\u00df) von acht oder gr\u00f6\u00dfer die Zweigabdeckung 100 % betragen muss. Bei Methoden mit einer Komplexit\u00e4t von drei bis sieben muss eine Zweigabdeckung von \u00fcber 50 % erreicht werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">d) Refactoring<\/h3>\n\n\n\n<p>Eine h\u00e4ufig genannte Begr\u00fcndung f\u00fcr niedrige Coverage-Grade lautet, dass sich der Code \u00fcberhaupt nicht testen lie\u00dfe. Das ist ein starkes Indiz f\u00fcr eine schlechte Architektur, z.B. f\u00fcr einen fehlenden Hardware Abstraction Layer (HAL) oder f\u00fcr Komponenten, die nicht funktional gebildet sind. Nutzen Sie diese niedrigen Testabdeckungen als Indikator daf\u00fcr, wo ein Refactoring notwendig ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">e) Werkzeuge<\/h3>\n\n\n\n<p>Vergessen Sie nicht, das Code-Coverage-Werkzeug in Ihre Liste der zu validierenden Werkzeuge aufzunehmen. Das bedingt, dass Sie das Werkzeug einschlie\u00dflich der Konfigurationsdateien unter Versionskontrolle halten, ggf. auf allen Entwickler-Maschinen.<\/p>\n\n\n\n<p>Sie finden hier eine <a href=\"https:\/\/de.wikipedia.org\/wiki\/Testabdeckung#Tools_zur_Messung_der_Codeabdeckung\">Liste von Werkzeugen zum Bestimmen der Abdeckungsgrade<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">f) FDA-Inspektionen<\/h3>\n\n\n\n<p>Bereiten Sie sich argumentativ auf die Frage eines FDA-Inspektors vor, warum Sie eine Testabdeckung unter 100 % erreicht haben. Folgende Argumente k\u00f6nnen Ihnen dabei dienlich sein:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Eine Testabdeckung (z.B. eine Zweigabdeckung) von 100 % ist in der Regel nicht m\u00f6glich.<\/li><li>Sie sind der Empfehlung der FDA nach einem risikobasierten Ansatz gefolgt und haben kritische Methoden in der Tat mit dem geforderten Abdeckungsgrad getestet.<\/li><li>Sie flankieren Ihre analytische Qualit\u00e4tssicherung mit weiteren Ma\u00dfnahmen wie Code Review und statischer Code-Analyse.<\/li><li>An der steigenden Testabdeckung erkennt man, dass Sie kontinuierlich besser werden.<\/li><\/ul>\n\n\n\n<div class=\"defbox\">\n    <div class=\"definition\">\n        <i class=\"fa fa-external-link\"><\/i> Weiterf\u00fchrende Informationen\n    <\/div>\n    <p>Tipp: Nutzen Sie die Coverage-Grade auch dazu, um die Wahrscheinlichkeit von Software-Fehlern abzusch\u00e4tzen. Lesen Sie <a href=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/fehlerwahrscheinlichkeit-bei-software\/\">dazu hier mehr<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Code Coverage dient den meisten Software-Entwicklern als die wichtigste Metrik f\u00fcr die Vollst\u00e4ndigkeit von Software-Tests. Dieser Artikel verschafft Ihnen einen \u00dcberblick \u00fcber die Abdeckungsgrade und gibt Tipps zum deren Bestimmung. &nbsp;Inhalts\u00fcbersicht 1. Varianten des Code Coverage \u00bb 2. Regulatorische Anforderungen \u00bb 3. Bewertung der Code Coverage \u00bb 4. Bestimmen der Code Coverage \u00bb \u00a0<\/p>\n","protected":false},"author":85,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[184],"tags":[364],"ppma_author":[1223],"class_list":["post-511347","post","type-post","status-publish","format-standard","hentry","category-iec-62304-medizinische-software","tag-software-testing","category-184","description-off"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen<\/title>\n<meta name=\"description\" content=\"Die Code Coverage ist eine Metrik, die angibt, wie vollst\u00e4ndig Software getestet wird. Was Sie als Medizinprodukte-Hersteller beachten sollten.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen\" \/>\n<meta property=\"og:description\" content=\"Die Code Coverage ist eine Metrik, die angibt, wie vollst\u00e4ndig Software getestet wird. Was Sie als Medizinprodukte-Hersteller beachten sollten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/\" \/>\n<meta property=\"og:site_name\" content=\"Regulatorisches Wissen f\u00fcr Medizinprodukte\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/JohnerInstitut\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-11T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-31T13:23:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png\" \/>\n<meta name=\"author\" content=\"Urs M\u00fcller\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Urs M\u00fcller\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/\"},\"author\":{\"name\":\"Urs M\u00fcller\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#\\\/schema\\\/person\\\/4c70917482b3c6eea6f21274fad28e49\"},\"headline\":\"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen\",\"datePublished\":\"2020-06-11T07:00:00+00:00\",\"dateModified\":\"2024-05-31T13:23:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/\"},\"wordCount\":1525,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/Bildschirmfoto-2016-09-19-um-13.47.54.png\",\"keywords\":[\"Software-Testing: Die Forderungen der IEC 62304 und FDA erf\u00fcllen\"],\"articleSection\":[\"Software &amp; IEC 62304\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/\",\"url\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/\",\"name\":\"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/Bildschirmfoto-2016-09-19-um-13.47.54.png\",\"datePublished\":\"2020-06-11T07:00:00+00:00\",\"dateModified\":\"2024-05-31T13:23:59+00:00\",\"description\":\"Die Code Coverage ist eine Metrik, die angibt, wie vollst\u00e4ndig Software getestet wird. Was Sie als Medizinprodukte-Hersteller beachten sollten.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/Bildschirmfoto-2016-09-19-um-13.47.54.png\",\"contentUrl\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/Bildschirmfoto-2016-09-19-um-13.47.54.png\",\"width\":806,\"height\":482,\"caption\":\"Code Coverage: Ein Beispiel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/iec-62304-medizinische-software\\\/code-coverage\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software &amp; IEC 62304\",\"item\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/category\\\/iec-62304-medizinische-software\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/\",\"name\":\"Regulatorisches Wissen f\u00fcr Medizinprodukte\",\"description\":\"Fachartikel zur Entwicklung und Zulassung von Medizinprodukten und weiteren regulatorischen Themen\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#organization\",\"name\":\"Johner Institut GmbH\",\"url\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/07\\\/Johner-Institut.png\",\"contentUrl\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/07\\\/Johner-Institut.png\",\"width\":1213,\"height\":286,\"caption\":\"Johner Institut GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/JohnerInstitut\\\/\",\"https:\\\/\\\/x.com\\\/christianjohner\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/JohnerInstitut\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/#\\\/schema\\\/person\\\/4c70917482b3c6eea6f21274fad28e49\",\"name\":\"Urs M\u00fcller\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/Urs_Mueller_300x300.png8ba2aed015c39b7100fd17f459d456d6\",\"url\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/Urs_Mueller_300x300.png\",\"contentUrl\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/Urs_Mueller_300x300.png\",\"caption\":\"Urs M\u00fcller\"},\"description\":\"Informatiker; Experte f\u00fcr Computerized Systems Validation (CSV) und Prozessvalidierung; Senior Berater am Johner Institut; Leiter des Seminars zur CSV\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/urs-mueller-1506997b\\\/\"],\"url\":\"https:\\\/\\\/www.johner-institut.de\\\/blog\\\/author\\\/ursmueller\\\/\"}]}<\/script>\n<meta name=\"copyright\" content=\"Johner Institut GmbH\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen","description":"Die Code Coverage ist eine Metrik, die angibt, wie vollst\u00e4ndig Software getestet wird. Was Sie als Medizinprodukte-Hersteller beachten sollten.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/","og_locale":"de_DE","og_type":"article","og_title":"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen","og_description":"Die Code Coverage ist eine Metrik, die angibt, wie vollst\u00e4ndig Software getestet wird. Was Sie als Medizinprodukte-Hersteller beachten sollten.","og_url":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/","og_site_name":"Regulatorisches Wissen f\u00fcr Medizinprodukte","article_publisher":"https:\/\/www.facebook.com\/JohnerInstitut\/","article_published_time":"2020-06-11T07:00:00+00:00","article_modified_time":"2024-05-31T13:23:59+00:00","og_image":[{"url":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png","type":"","width":"","height":""}],"author":"Urs M\u00fcller","twitter_misc":{"Verfasst von":"Urs M\u00fcller","Gesch\u00e4tzte Lesezeit":"7\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#article","isPartOf":{"@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/"},"author":{"name":"Urs M\u00fcller","@id":"https:\/\/www.johner-institut.de\/blog\/#\/schema\/person\/4c70917482b3c6eea6f21274fad28e49"},"headline":"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen","datePublished":"2020-06-11T07:00:00+00:00","dateModified":"2024-05-31T13:23:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/"},"wordCount":1525,"commentCount":5,"publisher":{"@id":"https:\/\/www.johner-institut.de\/blog\/#organization"},"image":{"@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#primaryimage"},"thumbnailUrl":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png","keywords":["Software-Testing: Die Forderungen der IEC 62304 und FDA erf\u00fcllen"],"articleSection":["Software &amp; IEC 62304"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/","url":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/","name":"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen","isPartOf":{"@id":"https:\/\/www.johner-institut.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#primaryimage"},"image":{"@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#primaryimage"},"thumbnailUrl":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png","datePublished":"2020-06-11T07:00:00+00:00","dateModified":"2024-05-31T13:23:59+00:00","description":"Die Code Coverage ist eine Metrik, die angibt, wie vollst\u00e4ndig Software getestet wird. Was Sie als Medizinprodukte-Hersteller beachten sollten.","breadcrumb":{"@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#primaryimage","url":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png","contentUrl":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2016\/09\/Bildschirmfoto-2016-09-19-um-13.47.54.png","width":806,"height":482,"caption":"Code Coverage: Ein Beispiel"},{"@type":"BreadcrumbList","@id":"https:\/\/www.johner-institut.de\/blog\/iec-62304-medizinische-software\/code-coverage\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.johner-institut.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Software &amp; IEC 62304","item":"https:\/\/www.johner-institut.de\/blog\/category\/iec-62304-medizinische-software\/"},{"@type":"ListItem","position":3,"name":"Code Coverage: Vollst\u00e4ndigkeit von Software-Tests bestimmen"}]},{"@type":"WebSite","@id":"https:\/\/www.johner-institut.de\/blog\/#website","url":"https:\/\/www.johner-institut.de\/blog\/","name":"Regulatorisches Wissen f\u00fcr Medizinprodukte","description":"Fachartikel zur Entwicklung und Zulassung von Medizinprodukten und weiteren regulatorischen Themen","publisher":{"@id":"https:\/\/www.johner-institut.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.johner-institut.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.johner-institut.de\/blog\/#organization","name":"Johner Institut GmbH","url":"https:\/\/www.johner-institut.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.johner-institut.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2015\/07\/Johner-Institut.png","contentUrl":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2015\/07\/Johner-Institut.png","width":1213,"height":286,"caption":"Johner Institut GmbH"},"image":{"@id":"https:\/\/www.johner-institut.de\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/JohnerInstitut\/","https:\/\/x.com\/christianjohner","https:\/\/www.youtube.com\/user\/JohnerInstitut"]},{"@type":"Person","@id":"https:\/\/www.johner-institut.de\/blog\/#\/schema\/person\/4c70917482b3c6eea6f21274fad28e49","name":"Urs M\u00fcller","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2024\/05\/Urs_Mueller_300x300.png8ba2aed015c39b7100fd17f459d456d6","url":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2024\/05\/Urs_Mueller_300x300.png","contentUrl":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2024\/05\/Urs_Mueller_300x300.png","caption":"Urs M\u00fcller"},"description":"Informatiker; Experte f\u00fcr Computerized Systems Validation (CSV) und Prozessvalidierung; Senior Berater am Johner Institut; Leiter des Seminars zur CSV","sameAs":["https:\/\/www.linkedin.com\/in\/urs-mueller-1506997b\/"],"url":"https:\/\/www.johner-institut.de\/blog\/author\/ursmueller\/"}]}},"authors":[{"term_id":1223,"user_id":85,"is_guest":0,"slug":"ursmueller","display_name":"Urs M\u00fcller","avatar_url":{"url":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2024\/05\/Urs_Mueller_300x300.png","url2x":"https:\/\/www.johner-institut.de\/blog\/wp-content\/uploads\/2024\/05\/Urs_Mueller_300x300.png"},"author_category":"","first_name":"Urs","last_name":"M\u00fcller","user_url":"","user_url_2":"","job_title":"","description":"Informatiker; Experte f\u00fcr Computerized Systems Validation (CSV) und Prozessvalidierung; Senior Berater am Johner Institut; Leiter des Seminars zur CSV"}],"_links":{"self":[{"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/posts\/511347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/comments?post=511347"}],"version-history":[{"count":15,"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/posts\/511347\/revisions"}],"predecessor-version":[{"id":5378826,"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/posts\/511347\/revisions\/5378826"}],"wp:attachment":[{"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/media?parent=511347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/categories?post=511347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/tags?post=511347"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.johner-institut.de\/blog\/wp-json\/wp\/v2\/ppma_author?post=511347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}