CINXE.COM
Strategien und Techniken zur Fehlerprävention | heise online
<!DOCTYPE html> <html lang="de" data-responsive data-consentmanagement class="article-content--scroll-behavior" > <head> <script>performance.mark('HEAD Anfang');</script> <script> var config = JSON.parse(window.localStorage["akwaConfig-v2"] || '{}') var scheme = config.colorScheme ? config.colorScheme.scheme : 'auto' if (scheme === 'dark' || (scheme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches)) { document.documentElement.classList.add('dark') } </script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> Strategien und Techniken zur Fehlerprävention | heise online </title> <!-- ########################################################################################################## %%% 888 d8b 888 d8b %%% 888 Y8P 888 Y8P %%% 888 888 %%% 88888b. .d88b. 888 .d8888b .d88b. .d88b. 88888b. 888 888 88888b. .d88b. %%% %%% 888 "88b d8P Y8b 888 88K d8P Y8b d88""88b 888 "88b 888 888 888 "88b d8P Y8b %%% %%% 888 888 88888888 888 "Y8888b. 88888888 888 888 888 888 888 888 888 888 88888888 %%% %%% 888 888 Y8b. 888 X88 Y8b. Y88..88P 888 888 888 888 888 888 Y8b. %%% %%% 888 888 "Y8888 888 88888P' "Y8888 "Y88P" 888 888 888 888 888 888 "Y8888 👩💻 Du interessierst dich für Code? Schau dir doch mal unsere Job-Angebote an und werde Teil unseres Teams: https://heise.de/s/qpVqX ########################################################################################################## --> <link rel="dns-prefetch" href="//heise.cloudimg.io"> <link rel="dns-prefetch" href="//cmp.heise.de"> <link rel="dns-prefetch" href="//data-fb7f8b3ae8.heise.de"> <link rel="dns-prefetch" href="//responder.wt.heise.de"> <link rel="dns-prefetch" href="//prophet.heise.de"> <link rel="preconnect" href="//heise.cloudimg.io"> <link rel="preconnect" href="//cmp.heise.de"> <link rel="preconnect" href="//data-fb7f8b3ae8.heise.de"> <link rel="preconnect" href="//responder.wt.heise.de"> <link rel="preconnect" href="//prophet.heise.de"> <script>performance.mark('CSS-Crit Anfang');</script> <style type="text/css" > a-img{box-sizing:border-box;display:block;overflow:hidden;width:100%}a-img *,a-img :after,a-img :before{box-sizing:inherit}a-img[box] img{height:100%;margin:auto;max-height:100%;width:auto}a-img img{height:auto;max-width:100%;width:100%}@supports not (aspect-ratio:1/1){a-img{height:0;padding-top:calc(var(--aspect-ratio-height, 9)/var(--aspect-ratio-width, 16)*100%);position:relative;will-change:padding}a-img img{left:0;position:absolute;top:0}}</style> <script> performance.mark('CSS-Crit Ende'); performance.measure('CSS-Crit', 'CSS-Crit Anfang', 'CSS-Crit Ende'); </script> <link as="font" crossorigin href="/assets/fonts/v1/source-sans-variable/ss3vf.woff2" rel="preload" type="font/woff2" > <link as="font" crossorigin href="/assets/fonts/v1/source-sans-variable/ss3vf-i.woff2" rel="preload" type="font/woff2" > <link as="image" href="/icons/common-icons.svg" rel="preload" > <link as="style" href="/assets/styles/index.css?.ltc.6156552861134bf8833a" rel="preload" > <link rel="preload" as="image" href="https://heise.cloudimg.io/width/610/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg" imagesrcset=" https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 1008w, https://heise.cloudimg.io/width/610/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 610w, https://heise.cloudimg.io/width/1220/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 1220w " imagesizes=" (max-width: 991px) 95vw, 610px " > <script>performance.mark('JS-Inline Anfang');</script> <script>!function(e){var t={};function o(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="/assets/heise/",o(o.s=474)}({342:function(e,t,o){"use strict";(function(t){var o=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}();e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.desktopUserAgents=/(Macintosh|X11|Windows NT|iPad|Tablet|Nexus 10|KF.*Silk)/i}return o(e,[{key:"forceDesktop",value:function(){return 1===parseInt(this.store.mobile_detect_force_desktop)}},{key:"forceMobile",value:function(){return 1===parseInt(this.store.mobile_detect_force_mobile)}},{key:"isDesktop",value:function(){return!/Windows Phone 10/.test(this.userAgent)&&(this.portraitWidth>640||!(!this.desktopUserAgents.test(this.userAgent)||/(ZuneWP7|Mobile Safari)/.test(this.userAgent)))}},{key:"isMobile",value:function(){return!!/Windows Phone 10/.test(this.userAgent)||!(this.portraitWidth>640)&&(!!/(Android|Phone|Mobile|iPod|ZuneWP7|NokiaN97)/i.test(this.userAgent)||!this.desktopUserAgents.test(this.userAgent))}},{key:"persistForce",value:function(){var e=t.window.document.location;"mobile_detect_force_desktop"===e.hash.slice(1)?(this.store.mobile_detect_force_desktop=1,this.store.mobile_detect_force_mobile=0):"unset_mobile_detect_force_desktop"===e.hash.slice(1)&&(this.store.mobile_detect_force_desktop=0),"mobile_detect_force_mobile"===e.hash.slice(1)?(this.store.mobile_detect_force_mobile=1,this.store.mobile_detect_force_desktop=0):"unset_mobile_detect_force_mobile"===e.hash.slice(1)&&(this.store.mobile_detect_force_mobile=0)}},{key:"userAgent",get:function(){return t.window.navigator.userAgent}},{key:"width",get:function(){return t.window.screen.width}},{key:"height",get:function(){return t.window.screen.height}},{key:"portraitWidth",get:function(){return Math.min(this.width,this.height)}},{key:"store",get:function(){return t.window.localStorage}}]),e}()}).call(t,o(43))},43:function(e,t,o){"use strict";var n,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"===("undefined"==typeof window?"undefined":i(window))&&(n=window)}e.exports=n},474:function(e,t,o){"use strict";var n=function(e){return e&&e.__esModule?e:{default:e}}(o(475));document.documentElement.setAttribute("data-device",n.default)},475:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=new(function(e){return e&&e.__esModule?e:{default:e}}(o(342)).default),i="desktop",r=window.matchMedia("(max-width: 768px)").matches,s=document.querySelector("html[data-responsive]");(n.isMobile()||r&&s)&&(i="mobile"),t.default=i}});</script> <script>performance.mark('JS-Kamel Anfang');</script> <script id="kameleoon-js"> var ls = JSON.parse(window.localStorage.getItem('akwaConfig-v2')) if (ls.consent && ls.consent[820]) { (function(){var a=1000;window.kameleoonQueue=window.kameleoonQueue||[];window.kameleoonStartLoadTime=new Date().getTime();if(!document.getElementById("kameleoonLoadingStyleSheet")&&!window.kameleoonDisplayPageTimeOut){var b=document.getElementsByTagName("script")[0];var c="* { visibility: hidden !important; background-image: none !important; }";var d=document.createElement("style");d.type="text/css";d.id="kameleoonLoadingStyleSheet";if(d.styleSheet){d.styleSheet.cssText=c}else{d.appendChild(document.createTextNode(c))}b.parentNode.insertBefore(d,b);window.kameleoonDisplayPage=function(e){if(!e){window.kameleoonTimeout=true}if(d.parentNode){d.parentNode.removeChild(d)}};window.kameleoonDisplayPageTimeOut=window.setTimeout(window.kameleoonDisplayPage,a)}; window.kameleoonIframeURL="https://www.heise.de/kameleoon-iframe.html";var f=document.createElement("a");window.kameleoonLightIframe=false;f.href=window.kameleoonIframeURL;window.kameleoonIframeOrigin=f.origin||(f.protocol+"//"+f.hostname);if(location.href.indexOf(window.kameleoonIframeOrigin)!=0){window.kameleoonLightIframe=true;var g=function(event){if(window.kameleoonIframeOrigin==event.origin&&event.data.slice&&event.data.slice(0,9)=="Kameleoon"){window.removeEventListener("message",g);window.kameleoonExternalIFrameLoaded=true;if(window.Kameleoon){eval(event.data);Kameleoon.Analyst.load()}else{window.kameleoonExternalIFrameLoadedData=event.data}}};if(window.addEventListener){window.addEventListener("message",g,false)}var h=document.createElement("iframe");h.src=kameleoonIframeURL;h.id="kameleoonExternalIframe";h.style="float: left !important; opacity: 0.0 !important; width: 0px !important; height: 0px !important;";document.head.appendChild(h)};})(); var kameleoonScript = document.createElement('script'); kameleoonScript.async = true; kameleoonScript.src = '//yxsu5ufd2m.kameleoon.eu/kameleoon.js'; document.getElementsByTagName('head')[0].appendChild(kameleoonScript); } </script> <script> performance.mark('JS-Kamel Ende'); performance.measure('JS-Kamel', 'JS-Kamel Anfang', 'JS-Kamel Ende'); </script> <script>performance.mark('JS-Cmp Anfang');</script> <script>function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){for(var t,e,o=[],n=window,r=n;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=n.parent}t||(function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))}();</script> <script> window._sp_queue = []; window._sp_ = { config: { accountId: 1603, baseEndpoint: 'https://cmp.heise.de', propertyId: 14602, gdpr: { }, events: { onMessageChoiceSelect: function() { console.log('[event] onMessageChoiceSelect', arguments); }, onMessageReady: function() { console.log('[event] onMessageReady', arguments); }, onMessageChoiceError: function() { console.log('[event] onMessageChoiceError', arguments); }, onPrivacyManagerAction: function() { console.log('[event] onPrivacyManagerAction', arguments); }, onPMCancel: function() { console.log('[event] onPMCancel', arguments); }, onMessageReceiveData: function() { console.log('[event] onMessageReceiveData', arguments); }, onSPPMObjectReady: function() { console.log('[event] onSPPMObjectReady', arguments); }, onConsentReady: function (consentUUID, euconsent) { console.log('[event] onConsentReady', arguments); }, onError: function() { console.log('[event] onError', arguments); }, } } } </script> <script src='https://cmp.heise.de/unified/wrapperMessagingWithoutDetection.js' async></script> <script> performance.mark('JS-Cmp Ende'); performance.measure('JS-Cmp', 'JS-Cmp Anfang', 'JS-Cmp Ende'); </script> <script type="application/json" data-akwa-config> { "channel": "developer", "contentId": "1904975", "isHeisePlus": false, "upscore": { "recommendations": { "config": { "config": { "reco_key": "FCD54E2B52", "template_selector": { "item_free": "#upscore-reco-template-free", "item_premium": "#upscore-reco-template-premium", "wrapper": "#upscore-reco-template-wrapper-article" } } } } }, "clickPerformance": { "keywords": ["Qualitätssicherung","TDD"], "pagetype": "Artikel_Standard" , "language": "de" } } </script> <script> performance.mark('JS-Inline Ende'); performance.measure('JS-Inline', 'JS-Inline Anfang', 'JS-Inline Ende'); </script> <script>performance.mark('CSS Anfang');</script> <link href="/assets/akwa/v24/css/akwa.css?.ltc.8bc725c02c47e78a2c3b" media="print" onload="this.media='all';this.onload='null'" rel="stylesheet" type="text/css" > <noscript> <link href="/assets/akwa/v24/css/akwa.css?.ltc.8bc725c02c47e78a2c3b" rel="stylesheet" type="text/css" > </noscript> <noscript> </noscript> <link href="/assets/styles/index.css?.ltc.6156552861134bf8833a" rel="stylesheet" type="text/css" > <link href="/assets/heise/ho/css/ho.css?.ltc.2b81df323fb5a2a87ee4" rel="stylesheet" type="text/css" > <noscript> </noscript> <script> performance.mark('CSS Ende'); performance.measure('CSS', 'CSS Anfang', 'CSS Ende'); </script> <script>performance.mark('JS Anfang');</script> <script defer src="/assets/akwa/v24/js/akwa.js?.ltc.36c1769a84f3508254a8"></script> <script defer src="/assets/heise/ho/js/ho.js?.ltc.abbb297b626579039365" ></script> <script> performance.mark('JS Ende'); performance.measure('JS', 'JS Anfang', 'JS Ende'); </script> <script>performance.mark('Meta Anfang');</script> <link rel="author" title="Kontakt" href="mailto:kontakt%40heise.de?subject=heise%20online"> <link rel="search" title="Suche" href="https://www.heise.de/suche/"> <link href="/icons/ho/touch-icons/manifest.json" rel="manifest" > <link color="#323232" href="/icons/ho/touch-icons/safari-pinned-tab.svg" rel="mask-icon" > <link href="/icons/ho/touch-icons/apple-touch-icon-180x180.png" rel="apple-touch-icon" sizes="180x180" > <link href="https://www.heise.de/rss/heise-atom.xml" rel="alternate" title="Aktuelle News von heise online" type="application/atom+xml" > <link href="https://www.heise.de/rss/heise.rdf" rel="alternate" title="Aktuelle News von heise online (für ältere RSS-Reader)" type="application/rss+xml" > <link href="/favicon.ico?v=JykvN0w9Yf" rel="icon" > <link href="/icons/ho/favicon/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png" > <link href="/icons/ho/favicon/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png" > <link href="/icons/ho/favicon/favicon.svg" rel="icon" type="image/svg+xml" > <meta content="heise online" name="application-name" > <meta content="heise online" name="msapplication-tooltip" > <meta content="https://www.heise.de" name="msapplication-starturl" > <meta content="#323232" name="msapplication-TileColor" > <meta content="/icons/ho/touch-icons/mstile-144x144.png" name="msapplication-TileImage" > <meta content="/icons/ho/touch-icons/browserconfig.xml" name="msapplication-config" > <meta content="#ffffff" name="theme-color" > <meta content="heise online" name="DC.creator" > <meta content="app-id=333214314" name="apple-itunes-app" > <meta name="publisher" content="Heise Medien"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <link rel="canonical" href="/ratgeber/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html"> <meta property="article:content_tier" content="free"> <meta property="article:opinion" content="false"> <meta name="robots" content="max-image-preview:large"> <meta name="format-detection" content="telephone=no"> <meta name="date" content="2016-10-17T07:36:00+02:00"> <meta name="author" content="Joachim Hofer"> <meta name="title" content="Strategien und Techniken zur Fehlerprävention"> <meta name="description" content="Irren ist menschlich, und Fehler passieren – insbesondere in der Softwareentwicklung. Qualitätssicherung soll dafür sorgen, dass die Software trotzdem fehlerarm zum Kunden geht. Aber vielleicht geht es ja besser? Können Entwickler Vorsorge betreiben, um das Entstehen von Fehlern zu verhindern?"> <meta name="keywords" content="Qualitätssicherung, TDD"> <meta name="DC.identifier" content="https://heise.de/-3345353"> <meta property="fb:pages" content="333992367317"> <meta property="og:description" content="Irren ist menschlich, und Fehler passieren – insbesondere in der Softwareentwicklung. Qualitätssicherung soll dafür sorgen, dass die Software trotzdem fehlerarm zum Kunden geht. Aber vielleicht geht es ja besser? Können Entwickler Vorsorge betreiben, um das Entstehen von Fehlern zu verhindern?"> <meta property="og:image" content="https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-42724cc1bf2aee12.jpeg"> <meta property="og:locale" content="de_DE"> <meta property="og:site_name" content="Developer"> <meta property="og:title" content="Strategien und Techniken zur Fehlerprävention"> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.heise.de/ratgeber/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:description" content="Irren ist menschlich, und Fehler passieren – insbesondere in der Softwareentwicklung. Qualitätssicherung soll dafür sorgen, dass die Software trotzdem fehlerarm zum Kunden geht. Aber vielleicht geht es ja besser? Können Entwickler Vorsorge betreiben, um das Entstehen von Fehlern zu verhindern?"> <meta property="twitter:image" content="https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-42724cc1bf2aee12.jpeg"> <meta property="twitter:site" content="@heisedc"> <meta property="twitter:title" content="Strategien und Techniken zur Fehlerprävention"> <link rel="home" type="text/html" title="Startseite" href="/developer/"> <link rel="copyright" title="Copyright" href="/developer/impressum.html"> <meta name="generator" content="InterRed V24.2.9, http://www.interred.de/, InterRed GmbH" /> <meta data-embetty-server="https://api.heise.de/svc/embetty"> <link rel="me" href="https://social.heise.de/@heiseonline"> <script> performance.mark('Meta Ende'); performance.measure('Meta', 'Meta Anfang', 'Meta Ende'); </script> <script>performance.mark('LDJSON Anfang');</script> <script type="application/ld+json"> {"@context":"https:\/\/schema.org","@type":"Guide","about":[],"alternativeHeadline":"Strategien und Techniken zur Fehlerprävention","author":[{"@id":"3195868","@type":"Person","name":"Joachim Hofer"}],"commentCount":"15","copyrightHolder":{"@id":"https:\/\/www.heise.de","@type":"Organization","name":"Heise Medien"},"copyrightYear":"2016","dateModified":"2016-10-17T07:36:00+02:00","datePublished":"2016-10-17T07:36:00+02:00","description":"Irren ist menschlich, und Fehler passieren – insbesondere in der Softwareentwicklung. Qualitätssicherung soll dafür sorgen, dass die Software trotzdem fehlerarm zum Kunden geht. Aber vielleicht geht es ja besser? Können Entwickler Vorsorge betreiben, um das Entstehen von Fehlern zu verhindern?","discussionUrl":"\/forum\/heise-Developer\/Kommentare\/Strategien-und-Techniken-zur-Fehlerpraevention\/forum-365593\/comment\/","headline":"Strategien und Techniken zur Fehlerprävention","identifier":1904975,"image":["https:\/\/heise.cloudimg.io\/v7\/_www-heise-de_\/imgs\/18\/1\/9\/0\/4\/9\/7\/5\/fehler-25dccc8627c8ff59.jpeg?force_format=avif%2Cwebp%2Cjpeg&org_if_sml=1&q=30&width=1920"],"inLanguage":"de","isAccessibleForFree":true,"isFamilyFriendly":true,"isPartOf":{"@type":["Product"],"name":"heise online","productID":"heise.de:basic"},"keywords":"Qualitätssicherung, TDD","mainEntityOfPage":{"@id":"https:\/\/www.heise.de\/ratgeber\/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html","@type":"WebPage","breadcrumb":{"@context":"http:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":{"@id":"https:\/\/www.heise.de\/","@type":"WebPage","name":"heise online"},"position":1},{"@type":"ListItem","item":{"@id":"https:\/\/www.heise.de\/ratgeber\/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html","@type":"WebPage","name":"Strategien und Techniken zur Fehlerprävention"},"position":2}]}},"provider":"","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https:\/\/www.heise.de\/icons\/ho\/opengraph\/opengraph.png"},"name":"heise online","url":"https:\/\/www.heise.de"},"sourceOrganization":{"@id":"https:\/\/www.heise.de\/developer","@type":"Organization","identifier":"developer","name":"Developer"},"thumbnailUrl":"https:\/\/heise.cloudimg.io\/v7\/_www-heise-de_\/imgs\/18\/1\/9\/0\/4\/9\/7\/5\/fehler-25dccc8627c8ff59.jpeg?force_format=avif%2Cwebp%2Cjpeg&org_if_sml=1&q=30&width=1920","timeRequired":"PT20M","url":"https:\/\/www.heise.de\/ratgeber\/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html","version":""} </script> <script> performance.mark('LDJSON Ende'); performance.measure('LDJSON', 'LDJSON Anfang', 'LDJSON Ende'); </script> <meta name="article-type" content="Ratgeber" /> <style type="text/css"> @media screen and (min-width: 768px) { a-collapse .header__content { height: auto !important; } a-menu:not([disabled]) [data-collapse-target]:not([is-open]) { height: 0; overflow: hidden; } a-paternoster[media="(min-width: 320px) and (max-width: 767px)"] { display: none; } .perf-cls-reduc-leaderboard { min-height: 90px; } .perf-cls-reduc-rectangle { min-height: 350px; margin-bottom: 3rem; } } a-pur-indicator { display: block; border-top-width: 5px; border-top-style: solid; } a-pur-indicator .close { display: none; } a-pur-indicator:not([disabled]) [data-collapse-target]:not([is-open]) { height: 0; } .a-login__link:link { color: var(--akwa-link-color); text-decoration: none; } body { overflow-y: scroll; } @media screen and (max-width: 767px) { a-collapse:not([disabled]) [data-collapse-target]:not([is-open]) { height: 0; overflow: hidden; } } @media screen and (min-width: 320px) and (max-width: 767px) { a-paternoster[media="(min-width: 320px) and (max-width: 767px)"] { display: block; min-height: 306px; margin-bottom: 1.5rem; } } .inread-cls-reduc:has(.ad) { min-height: 230px; } @media screen and (max-width: 767px) { .incontent3-cls-reduc:has(.ad) { min-height: 300px; } } @media screen and (min-width: 768px) { .inread-cls-reduc:has(.ad) { min-height: 350px; } } @media screen and (min-width: 992px) { #wtma_teaser_ho_vertrieb_mini_1 { min-height: 500px; } } .legacy-img { max-width: 100%; width: 100%; height: auto; } .article-image { display: block; margin-bottom: 1.5rem; } a-paid-content-teaser { display: none; } </style> <script> performance.mark('HEAD Ende'); performance.measure('HEAD', 'HEAD Anfang', 'HEAD Ende'); </script> </head> <body class="ho a-theme a-theme--ho" data-mapp-branding="HEISE_ONLINE" ad-targeting="{"cid":3345353,"kw":["Qualitätssicherung","TDD"],"themenhub":"yes"}" data-ad-targeting="{"cid":3345353,"kw":["Qualitätssicherung","TDD"],"themenhub":"yes"}" data-ad-unit="/6514/www.heise.de/developer/developer-inhalt" > <script>performance.mark('BODY Anfang');</script> <a-android-native-app-prompt></a-android-native-app-prompt> <a-analytics type="webtrekk"> <script type="application/json"> {"options":{},"vars":{"cid":"3345353","contentGroup":{"1":"www.heise.de","10":"beitrag","11":null,"12":"developer","13":"free","16":"3345353","18":"de","2":"developer","3":"ratgeber","4":"strategien-und-techniken-zur-fehlerpraevention-3345353","9":"strategien-und-techniken-zur-fehlerpraevention-3345353"},"contentId":"www.heise.de.ratgeber.strategien-und-techniken-zur-fehlerpraevention-3345353","customEcommerceParameter":{},"customParameter":{"1":"all\/4","10":"developer","14":"free","15":"Joachim Hofer","17":"undefiniert","2":"qualitaetssicherung;tdd","22":null,"25":"Strategien und Techniken zur Fehlerprävention","26":"v5","28":"developer","29":"free","31":"1200","36":"know-how","40":"0","42":"know-how","46":"de","47":"de","48":"3345353","6":"qualitaetssicherung;tdd","8":"2016-10-17T07:36:00"},"launchLiveaccount":"1","tiDomain":"responder.wt.heise.de","tiId":"288689636920174"}} </script> </a-analytics> <a-analytics type="infonline-base"> <script type="application/json"> { "vars": { "cp":"dev", "co":"%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html%3Fseite%3Dall", "dg": true }, "options": { "disableSurvey": false } } </script> </a-analytics> <a-analytics type="upscore"> <script type="application/json"> { "options": { "enableRecommendations": true, "enablePaywall": true }, "vars": { "config": { "article": ".js-upscore-article-content", "track_positions": false }, "data": { "section": "Developer", "custom_video": 0, "custom_audio": 0, "custom_pvg": 0, "taxonomy": "ratgeber,Rubrik_Know_how", "object_id": "3345353", "pubdate": "2016-10-17T07:36:00+02:00", "object_type": "article", "content_type":0} } } </script> </a-analytics> <script> (window.__ba = window.__ba || {}).publisher = window.__ba.publisher || {}; window.__ba.publisher.section = "rotation"; window.__ba.publisher.keywords = ""; </script> <a-script src="https://www.heise.de/assets/ad/adlib.js" needs-consent name='["GoogleAdvertisingProduct", "Stroer", "DoubleVerify"]' event-after-loading="__baCMPReady" ></a-script> <a-click-performance></a-click-performance> <a-script src="/js/ho/mbmedien-reporting.js" needs-consent name="Mbmedien" ></a-script> <div class=" topnavigation " > <header role="banner" class="topnavigation__header"> <div class="topnavigation__content"> <div class="topnavigation__logo"> <a href="/" title="heise online" name="topnavi.ho.news" data-google-interstitial=false class="topnavigation__logo-link topnavigation__item"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1504 214" role="img" preserveAspectRatio="xMinYMin" class="heise-online-logo topnavigation__heiseonline-logo" > <style> .heise-online-logo-svg-path-online { fill: #6f7d93; } .heise-online-logo-svg-path-heise { fill: #14315b; } .dark .heise-online-logo-svg-path-online, .dark .heise-online-logo-svg-path-heise { fill: #f2f2f2; } </style> <title>heise online Logo</title> <path class="heise-online-logo-svg-path-online" d="M869.84 139.56c0-43.75 29.74-69 62.47-69s62.47 25.25 62.47 69-29.74 68.79-62.47 68.79-62.47-25.25-62.47-68.79m93.29 0c0-26.32-11.55-43.86-30.81-43.86s-30.81 17.54-30.81 43.86 11.55 43.65 30.81 43.65 30.81-17.33 30.81-43.65m49.9-65.79h25.25l2.35 17.76h.86c11.77-11.45 25.14-20.97 43.11-20.97 28.13 0 40.44 19.04 40.44 52.2v82.37h-30.81v-78.41c0-21.61-6.2-29.74-20.43-29.74-11.55 0-19.15 5.67-29.95 16.37v91.78h-30.81V73.77Zm135.54 97.56V16.22h30.81v156.72c0 7.6 3.42 10.27 6.63 10.27 1.39 0 2.46 0 4.81-.54l3.85 23c-3.74 1.5-8.88 2.67-16.26 2.67-21.82 0-29.85-14.12-29.85-37.01Zm52.93-138c0-10.38 8.13-17.44 19.04-17.44s19.04 7.06 19.04 17.44-8.13 17.44-19.04 17.44-19.04-7.27-19.04-17.44m3.53 40.44h30.81v131.37h-30.81zm54.66 0h25.25l2.35 17.76h.86c11.77-11.45 25.14-20.97 43.11-20.97 28.13 0 40.44 19.04 40.44 52.2v82.37h-30.81v-78.41c0-21.61-6.2-29.74-20.43-29.74-11.55 0-19.15 5.67-29.95 16.37v91.78h-30.81V73.77Zm129.52 65.79c0-42.68 29.63-69 60.55-69 35.52 0 54.24 25.67 54.24 62.37 0 5.88-.64 11.77-1.34 14.98h-83.39c2.57 23.32 17.54 36.59 38.73 36.59 11.23 0 20.86-3.53 30.49-9.52l10.48 19.15c-12.52 8.45-28.35 14.23-45.04 14.23-36.26 0-64.72-25.46-64.72-68.79Zm88.15-12.62c0-20.22-8.99-32.52-26.96-32.52-15.3 0-28.78 11.45-31.45 32.52z"/><path class="heise-online-logo-svg-path-heise" d="M258.47 15.22h30.81v48.89L288 89.46c11.02-10.38 24.07-19.9 42.04-19.9 28.13 0 40.44 19.04 40.44 52.2v82.37h-30.81v-78.41c0-21.61-6.2-29.74-20.43-29.74-11.55 0-19.15 5.67-29.95 16.37v91.78h-30.81V15.22Zm129.58 123.34c0-42.68 29.63-69 60.55-69 35.52 0 54.24 25.67 54.24 62.37 0 5.88-.64 11.77-1.34 14.98h-83.39c2.57 23.32 17.54 36.59 38.73 36.59 11.23 0 20.86-3.53 30.49-9.52l10.48 19.15c-12.52 8.45-28.35 14.23-45.04 14.23-36.26 0-64.72-25.46-64.72-68.79Zm88.14-12.62c0-20.22-8.99-32.52-26.96-32.52-15.3 0-28.78 11.45-31.45 32.52zm41.46-93.6c0-10.38 8.13-17.44 19.04-17.44s19.04 7.06 19.04 17.44-8.13 17.44-19.04 17.44-19.04-7.27-19.04-17.44m3.53 40.43h30.81v131.37h-30.81zm44.04 116.29 14.33-19.58c11.66 9.09 22.95 14.66 36.26 14.66 14.33 0 21.07-6.74 21.07-15.72 0-11.02-14.23-15.94-28.24-21.29-17.22-6.47-36.91-16.37-36.91-38.3s18.4-39.26 47.82-39.26c18.29 0 32.95 7.43 43.65 15.73l-14.12 18.93c-9.2-6.74-18.45-11.45-28.78-11.45-13.21 0-19.47 6.31-19.47 14.55 0 10.38 13.27 14.33 27.49 19.58 17.76 6.63 37.65 15.19 37.65 39.69 0 22.57-17.86 40.76-51.03 40.76-17.97 0-36.91-7.7-49.74-18.29Zm111.39-50.5c0-42.68 29.63-69 60.55-69 35.52 0 54.24 25.67 54.24 62.37 0 5.88-.64 11.77-1.34 14.98h-83.39c2.57 23.32 17.54 36.59 38.73 36.59 11.23 0 20.86-3.53 30.49-9.52l10.48 19.15c-12.52 8.45-28.35 14.23-45.04 14.23-36.26 0-64.72-25.46-64.72-68.79Zm88.15-12.62c0-20.22-8.99-32.52-26.96-32.52-15.3 0-28.78 11.45-31.45 32.52zM114.88 2.89c15.41 7.19 22.08 25.51 14.89 40.92l-71.06 152.4c-7.19 15.41-25.51 22.08-40.92 14.9C2.38 203.92-4.29 185.6 2.9 170.18L73.95 17.79C81.14 2.38 99.46-4.29 114.88 2.9m49.2 97.26c-15.41-7.18-33.73-.52-40.92 14.9l-25.7 55.12c-7.19 15.41-.52 33.74 14.89 40.93s33.73.52 40.92-14.89l25.71-55.12c7.19-15.42.52-33.74-14.9-40.93"/> </svg> </a> <a href="/api/accountservice/subscribe/plus?affiliateId=32501_HP000028_21806_3_57&wt_mc=intern.abo.plus.hp_nk.navilink.desktop1.desktop1" class="abo-link " data-google-interstitial=false > <span class="abo-link"> heise+ gratis testen </span> </a> </div> <div class="topnavigation__actions"> <section class=" topnavigation-login topnavigation__item topnavigation__item " > <svg class="topnavigation-login__icon"> <use href="/icons/common-icons.svg#login"></use> </svg> <a-login label="" class="topnavigation-login__link" > <a href="/sso/login/" class="a-login__link a-login__link--sso" rel="nofollow">Anmelden</a> </a-login> </section> <form accept-charset="utf-8" method="get" action="/suche/" class="topnavigation-search" role="search" id="heisetopnavi_search" rel="nofollow" > <fieldset class="topnavigation-search__container"> <input type="text" class="topnavigation-search__input" value="" name="q" placeholder="Suchen" data-autocomplete="true" autocomplete="on" spellcheck="false" data-searchpath="/suche/" role="textbox" aria-autocomplete="list" aria-label="Suchen" > <input type="hidden" name="sort_by" value="date" > <button class="topnavigation-search__button" type="submit" aria-label="suchen" > <svg class="topnavigation-search__search-icon"> <use href="/icons/common-icons.svg#search"></use> </svg> </button> <input type="hidden" class="search_hidden" value="search" name="rm" > </fieldset> </form> <a href="#topnavigation__sub" class=" topnavigation-menu js-topnavigation-menu topnavigation-menu " aria-controls="topnavigation__sub" > <svg class="topnavigation-menu__icon js-topnavigation-menu__icon"> <use href="/icons/common-icons.svg#menu"></use> </svg> </a> </div> </div> <div id="topnavigation__sub" class="topnavigation__sub js-topnavigation__sub" > <div class="magazine-nav a-u-mb-3"> <ul class="magazine-nav__items a-u-remove-list-style"> <li class=" magazine-nav__item magazine-nav__item--ct a-theme a-theme--ct " > <a href="/ct/" title="c't – Magazin für Computertechnik" name="topnavi.ho.magazine-nav.ct" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--ct" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 370" class="ct-logo magazin-nav__svg" > <title>c't Magazin Logo</title> <path d="M329,0H429.54L406.65,93.08H500L477.72,183.7H384.29l-10.5,42.73s-3.22,10.79-2.08,17.61a26.5,26.5,0,0,0,5.07,12.62c3.63,5.13,6.81,7.56,12.56,10.09,5.46,2.39,15.07,2.51,15.07,2.51h73L452.6,370h-76c-66.62.67-108.38-45.12-108.38-101.55,0-12.32,3.53-32,11-66.06L284,183,329,0ZM231.46,0,211.65,80.56h42.5L228.78,183.7h43L317,0Zm-57.8,93.08C75.55,92.93,0,188.15,0,268.08,0,324.52,41.32,371.47,108.08,370H211.86l24.76-100.71H130.27c-21.92-.12-28.59-22.21-28.59-35.61,0-23.49,26.37-49.88,51.77-49.95H216.8l22.28-90.62Z" fill="#2288c6"/> </svg> <span class="magazine-nav__title"> c't – Magazin für Computertechnik </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--ix a-theme a-theme--ix " > <a href="/ix/" title="iX – Magazin für professionelle Informationstechnik" name="topnavi.ho.magazine-nav.ix" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--ix" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 610" class="ix-logo magazin-nav__svg" > <title>iX Magazin Logo</title> <path d="M238.41,610h-139L346.17,248.34,294.41,69.72H421.75l12.81,45.67,31.26-45.67H600L475.16,252.6l70.42,242.66H418.23L387.41,385.48Zm-100-20.61h89.17L395.36,337.6l38.47,137h84.33L452.68,249,561,90.34H476.67l-50,73.08-20.5-73.08H321.82l46.83,161.6Zm-2.07-95.46H0L186.69,220.48H323ZM39,473.31h86.47L284,241.1h-86.4ZM260.28,183.12A91.56,91.56,0,1,1,323,25l2,1.89L306.87,46.13l-2-1.88a65,65,0,1,0-21.15,108l2.56-1L295.83,176l-2.56,1A91,91,0,0,1,260.28,183.12Z" fill="#4c5c64"/> </svg> <span class="magazine-nav__title"> iX – Magazin für professionelle Informationstechnik </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--foto a-theme a-theme--foto " > <a href="/foto/" title="c't Fotografie - Das Magazin rund ums digitale Bild" name="topnavi.ho.magazine-nav.foto" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--foto" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 140" class="foto-logo magazin-nav__svg" > <title>c't Fotografie Logo</title> <path fill="#0a0a0a" d="M2 75.8h28.95v4.36H6.79v16.01h17.52v4.36H6.79v21.58H2zm27.75 29.53c0-2.57.44-4.93 1.31-7.08s2.08-4.02 3.63-5.59 3.41-2.8 5.59-3.67 4.55-1.31 7.12-1.31 4.93.44 7.08 1.31 4.02 2.1 5.59 3.67 2.8 3.44 3.67 5.59c.87 2.16 1.31 4.52 1.31 7.08s-.44 4.93-1.31 7.08c-.87 2.16-2.1 4.02-3.67 5.59s-3.44 2.8-5.59 3.67c-2.16.87-4.52 1.31-7.08 1.31s-4.94-.44-7.12-1.31-4.04-2.09-5.59-3.67c-1.55-1.57-2.76-3.44-3.63-5.59s-1.31-4.52-1.31-7.08m4.36 0c0 1.89.3 3.67.91 5.34s1.49 3.12 2.65 4.36c1.16 1.23 2.57 2.22 4.21 2.94 1.65.73 3.49 1.09 5.52 1.09s3.87-.36 5.52-1.09 3.05-1.71 4.21-2.94 2.05-2.69 2.65-4.36c.61-1.67.91-3.45.91-5.34s-.3-3.67-.91-5.34-1.49-3.12-2.65-4.36c-1.16-1.23-2.57-2.22-4.21-2.94-1.65-.73-3.49-1.09-5.52-1.09s-3.88.36-5.52 1.09c-1.65.73-3.05 1.71-4.21 2.94s-2.05 2.69-2.65 4.36c-.61 1.67-.91 3.45-.91 5.34m52.63-12.86h-8.96v21.87c0 1.5.41 2.66 1.23 3.49.82.82 1.96 1.23 3.41 1.23.82 0 1.66-.11 2.51-.33q1.275-.33 2.43-.84l.36 3.92c-.82.29-1.77.56-2.83.8-1.07.24-2.01.36-2.83.36-1.55 0-2.88-.23-4-.69-1.11-.46-2.01-1.08-2.69-1.85s-1.17-1.68-1.49-2.72-.47-2.17-.47-3.38V92.46h-6.64v-3.92h6.64V75.8h4.36v12.74h8.96v3.92Zm2.75 12.86c0-2.57.44-4.93 1.31-7.08s2.08-4.02 3.63-5.59 3.41-2.8 5.59-3.67 4.55-1.31 7.12-1.31 4.93.44 7.08 1.31 4.02 2.1 5.59 3.67 2.8 3.44 3.67 5.59c.87 2.16 1.31 4.52 1.31 7.08s-.44 4.93-1.31 7.08c-.87 2.16-2.1 4.02-3.67 5.59s-3.44 2.8-5.59 3.67c-2.16.87-4.52 1.31-7.08 1.31s-4.94-.44-7.12-1.31-4.04-2.09-5.59-3.67c-1.55-1.57-2.76-3.44-3.63-5.59s-1.31-4.52-1.31-7.08m4.35 0c0 1.89.3 3.67.91 5.34s1.49 3.12 2.65 4.36c1.16 1.23 2.57 2.22 4.21 2.94 1.65.73 3.49 1.09 5.52 1.09s3.87-.36 5.52-1.09 3.05-1.71 4.21-2.94 2.05-2.69 2.65-4.36.91-3.45.91-5.34-.3-3.67-.91-5.34-1.49-3.12-2.65-4.36c-1.16-1.23-2.57-2.22-4.21-2.94-1.65-.73-3.49-1.09-5.52-1.09s-3.88.36-5.52 1.09c-1.65.73-3.05 1.71-4.21 2.94s-2.05 2.69-2.65 4.36c-.61 1.67-.91 3.45-.91 5.34m72.1 13.45c0 4.18-.61 7.56-1.82 10.13-1.21 2.58-2.72 4.57-4.54 5.98s-3.77 2.36-5.85 2.84c-2.08.49-3.97.73-5.67.73s-3.35-.16-4.98-.47a23.7 23.7 0 0 1-4.61-1.39q-2.175-.915-3.96-2.22c-1.19-.87-2.22-1.87-3.09-2.99l3.41-3.21c1.55 2.19 3.49 3.79 5.81 4.81q3.48 1.53 7.41 1.53c2.23 0 4.1-.29 5.63-.87s2.78-1.35 3.78-2.3c.99-.95 1.77-1.99 2.32-3.13.56-1.14.97-2.29 1.23-3.43.27-1.14.42-2.22.47-3.24s.07-1.85.07-2.48v-3.4h-.15c-1.26 2.04-2.97 3.65-5.12 4.81-2.16 1.17-4.69 1.75-7.59 1.75-2.47 0-4.79-.45-6.97-1.35q-3.27-1.35-5.7-3.72a17.8 17.8 0 0 1-3.85-5.5c-.94-2.09-1.42-4.33-1.42-6.71s.47-4.62 1.42-6.71a17.5 17.5 0 0 1 3.85-5.47q2.43-2.325 5.7-3.72c2.18-.92 4.5-1.39 6.97-1.39 2.91 0 5.44.58 7.59 1.75s3.86 2.77 5.12 4.81h.15v-5.69h4.36v30.23Zm-4.22-13.89q0-2.76-1.05-5.19c-.7-1.62-1.65-3.03-2.83-4.21-1.19-1.19-2.59-2.13-4.21-2.83q-2.43-1.05-5.19-1.05c-2.76 0-3.57.35-5.19 1.05s-3.03 1.65-4.21 2.83c-1.19 1.19-2.13 2.59-2.83 4.21q-1.05 2.43-1.05 5.19c0 2.76.35 3.57 1.05 5.19s1.65 3.03 2.83 4.21c1.19 1.19 2.59 2.13 4.21 2.83q2.43 1.05 5.19 1.05c2.76 0 3.57-.35 5.19-1.05s3.03-1.65 4.21-2.83c1.19-1.19 2.13-2.59 2.83-4.21q1.05-2.43 1.05-5.19m13.36-6.9c0-.63-.03-1.39-.07-2.29-.05-.9-.09-1.8-.11-2.72-.03-.92-.06-1.78-.11-2.58s-.07-1.42-.07-1.85h4.36c.05 1.26.08 2.47.11 3.63q.03 1.74.18 2.25c1.11-1.99 2.54-3.61 4.29-4.87q2.61-1.89 6.39-1.89c.44 0 .86.04 1.27.11s.84.16 1.27.25l-.51 4.29c-.58-.19-1.14-.29-1.67-.29-1.89 0-3.52.3-4.9.91s-2.52 1.44-3.41 2.51c-.9 1.07-1.56 2.31-2 3.74s-.65 2.97-.65 4.61v18.31h-4.36V97.99Zm48.04 10.03c0 1.65.01 3.12.04 4.43a122 122 0 0 0 .29 6.75q.105 1.455.33 2.91h-4.07c-.29-1.65-.44-3.46-.44-5.45h-.15c-1.26 2.18-2.82 3.78-4.69 4.79q-2.805 1.53-7.08 1.53c-1.45 0-2.88-.18-4.29-.55-1.41-.36-2.66-.94-3.78-1.74a9.35 9.35 0 0 1-2.72-3.09c-.7-1.26-1.05-2.78-1.05-4.58 0-2.57.65-4.6 1.96-6.1s2.92-2.63 4.83-3.38 3.95-1.23 6.1-1.45 4.06-.33 5.7-.33h5.09v-2.03c0-2.91-.9-4.99-2.69-6.25s-4.04-1.89-6.76-1.89c-3.88 0-7.29 1.26-10.24 3.78l-2.54-2.98c1.6-1.55 3.58-2.72 5.96-3.52 2.37-.8 4.65-1.2 6.83-1.2 4.07 0 7.31.96 9.73 2.87s3.63 5 3.63 9.26v8.21Zm-8.72-2.76q-2.76 0-5.34.36t-4.65 1.23c-2.07.87-2.48 1.36-3.31 2.32q-1.23 1.455-1.23 3.63c0 1.02.23 1.93.69 2.72.46.8 1.05 1.45 1.78 1.96s1.54.9 2.43 1.16c.9.27 1.8.4 2.72.4 2.32 0 4.24-.34 5.74-1.02s2.7-1.56 3.6-2.65a9.14 9.14 0 0 0 1.85-3.71c.34-1.38.51-2.77.51-4.18v-2.25h-4.79Zm19.85-12.79h-6.36v-3.92h6.36v-5.14c0-2.18.33-3.98.98-5.41q.975-2.145 2.43-3.45c.97-.87 2.05-1.49 3.23-1.85 1.19-.36 2.31-.54 3.38-.54q3.045 0 5.01.87l-.87 3.78c-.97-.48-2.28-.73-3.92-.73q-5.88 0-5.88 8.94v3.54h8.46v3.92h-8.46v29.64h-4.36V92.48Zm18.54-13.71c0-.92.31-1.69.94-2.32s1.4-.94 2.32-.94 1.69.32 2.32.94c.63.63.94 1.41.94 2.32s-.32 1.7-.94 2.32c-.63.63-1.41.94-2.32.94s-1.7-.31-2.32-.94c-.63-.63-.94-1.4-.94-2.32m1.09 9.79h4.36v33.56h-4.36zm43.1 27.24c-1.7 2.57-3.79 4.41-6.28 5.52s-5.24 1.67-8.24 1.67c-2.57 0-4.89-.44-6.97-1.31s-3.87-2.09-5.38-3.67c-1.5-1.57-2.65-3.44-3.45-5.59s-1.2-4.54-1.2-7.16.41-4.84 1.24-6.97c.82-2.13 1.99-3.98 3.49-5.56 1.5-1.57 3.27-2.81 5.3-3.7 2.03-.9 4.29-1.34 6.76-1.34s4.83.45 6.79 1.34c1.96.9 3.61 2.08 4.94 3.56s2.34 3.16 3.01 5.05c.68 1.89 1.02 3.8 1.02 5.74v3.05h-28.19c0 .92.18 2.1.55 3.52.36 1.43 1.03 2.82 2 4.18s2.26 2.52 3.89 3.49c1.62.97 3.72 1.45 6.28 1.45 2.23 0 4.38-.53 6.47-1.6 2.08-1.06 3.68-2.52 4.79-4.36l3.2 2.69Zm-3.34-13.29c0-1.5-.3-2.91-.91-4.21-.61-1.31-1.43-2.46-2.47-3.45s-2.28-1.78-3.7-2.36c-1.43-.58-2.94-.87-4.54-.87-2.37 0-4.35.48-5.92 1.45s-2.82 2.08-3.74 3.34-1.57 2.48-1.96 3.67-.58 2-.58 2.43h23.83Z"/><path fill="#c3172e" d="M114.59 2v66.41h69.09V2zm31.36 62.44H133.5c-7.26 0-12.88-4.63-12.88-12.17 0-9.54 9.04-20.92 20.71-20.92h7.83l-2.63 10.82h-7.54c-3.06 0-6.19 3.2-6.19 5.98 0 1.64.78 4.27 3.42 4.27h12.67l-2.92 12.03Zm2.71-22.27 2.99-12.31h-5.76l2.35-9.61h9.54l-5.41 21.92h-3.7Zm28.96 0h-11.1l-1.28 5.12s-.36 1.28-.21 2.13c.36 2.06 1.92 2.99 3.84 2.99h8.75l-2.99 12.03h-9.04c-7.12 0-12.95-4.63-12.95-12.03 0-1.57.43-3.91 1.28-7.97l5.98-24.19h12.03l-2.78 11.1h11.17z"/> </svg> <span class="magazine-nav__title"> c't Fotografie - Das Magazin rund ums digitale Bild </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--macandi a-theme a-theme--macandi " > <a href="/mac-and-i/" title="Mac & i – Nachrichten, Tests, Tipps und Meinungen rund um Apple" name="topnavi.ho.magazine-nav.macandi" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--macandi" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 145" class="mac-logo magazin-nav__svg" > <title>Mac an i Logo</title> <path d="M115.67,142.81l8.41-57c2.33-15.42,4.66-29.45,7.1-42.59-6.78,15.58-13.49,30.1-19.25,41.61L84,140.61H59.55l-4.9-55.72c-.89-11-1.75-25.1-2.56-42q-1,4.95-2.07,9.94c-2.56,12.32-5,24-7.2,33.5L29.2,142.81H0L34.41,5.59H75.26l4.3,52.33c.2,3.22.44,6.59.69,10.1.62,8.54,1.3,18,1.59,27.5C87.05,81.44,93.6,67.27,98.27,57.44L123.59,5.59h41.35L146.41,142.81Zm115.07-16c-.07,1.09-.15,2.18-.22,3.25-.28,4-.55,7.77-.67,11.29l0,1.43H259l-.05-1.43c-.41-12.63,1.74-31.88,4-43.57l10.41-52.29-1.18-.37a115.86,115.86,0,0,0-32.73-4.86c-48.93,0-71.21,36-71.21,69.41,0,21.12,12.42,35.3,30.91,35.3C211.76,145,222.84,138.59,230.74,126.84Zm7-61.49L233.67,86.5c-4.61,24.06-14.94,32.59-22.38,32.59-9,0-10.39-9.25-10.39-14.77,0-18.27,13.43-39.51,30.74-39.51A38.56,38.56,0,0,1,237.79,65.35Zm115,74.12.79-.38-.23-24.64-1.88.75a47.9,47.9,0,0,1-18.83,3.89c-8.59,0-17.77-4.93-17.77-18.77C314.85,78,331.2,66,346.58,66a31.81,31.81,0,0,1,12.64,2.28l1.38.58L368.66,44l-1.26-.46A61.37,61.37,0,0,0,347,40.29c-37.07,0-65,27.19-65,63.23,0,25.08,16.67,41.28,42.48,41.28C335.29,144.8,345.88,142.81,352.77,139.47Zm222.05,3.34L593.9,42.49H562.36L543.28,142.81Zm6.84-109.72c10.62,0,18.34-7.38,18.34-17.54,0-9.3-6.41-15.55-16-15.55a17.65,17.65,0,0,0-17.94,17.74c0,9,6.23,15.35,15.15,15.35ZM510,140.52l2,2.29H474.44l-.41-.44a72.72,72.72,0,0,1-5.6-7l-.86-1.17c-10.26,7.29-22,10.83-35.81,10.83-26.17,0-43.07-14.48-43.07-36.89,0-17.69,10.88-31.92,32.36-42.3-4.79-8.23-7-15.42-7-22.53C414,20.16,432.3,3.39,457.5,3.39,478.73,3.39,493,16,493,34.7c0,15.14-10.48,27.18-33,37.82,5,7.75,11.49,16.76,16.31,23.38A88.38,88.38,0,0,0,489,74.78h29.56c-7.19,17.43-15.84,30.6-27.31,41.69A293,293,0,0,0,510,140.52Zm-55.62-25C447,105.82,438.81,94.22,432.2,84c-5.22,4-11.42,10.16-11.42,19.14,0,10.67,7.52,17.57,19.16,17.57A22,22,0,0,0,454.4,115.49ZM464.69,34.9c0-2.39-.71-10.19-9.79-10.19-6.94,0-12.38,6.84-12.38,15.57a25.7,25.7,0,0,0,5,15C455.61,51.41,464.69,44.82,464.69,34.9Z" fill="#2a2521"/> </svg> <span class="magazine-nav__title"> Mac & i – Nachrichten, Tests, Tipps und Meinungen rund um Apple </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--make a-theme a-theme--make " > <a href="/make/" title="Make – Kreativ mit Technik" name="topnavi.ho.magazine-nav.make" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--make" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 178" class="make-logo magazin-nav__svg" > <title>Make Logo</title> <path d="M559.08,49.1H600V85.87H559.08Zm0,89.6H600v36.77H559.08ZM430,112.34c0-49.1,37.39-66,63.39-66s58,13,58,70.41v5.76H467.76c1.92,20.91,13.51,28.89,29.33,28.89,14.92,0,28.83-7.37,37.4-15.15L549.2,159c-14.71,12.52-32.86,19-54.93,19C461.41,178,430,161.13,430,112.34ZM517.15,100c-1.91-17.78-9.88-26.26-24.19-26.26-11.89,0-22,7.77-24.79,26.26ZM319.3,0h38.1V96.17L396.71,49h40.92L396.41,96.17,440,175.37H400.74l-27.92-51.52L357.4,141.13v34.14H319.3V0ZM188.68,143.15c0-29.2,24.59-45.26,79.92-49.81V90.21c0-9.29-4.73-15.15-17-15.15-16,0-29.73,6.57-41.42,15.66l-16-21.82c12.5-11.32,31.45-22.53,62.89-22.53,34.47,0,48.79,17.07,48.79,49.5v48.69c0,15.16,1,24.45,3.52,30.81H271.43a61.15,61.15,0,0,1-2.83-18.48c-11.59,13-25.29,20.4-44,20.4C205.31,177.19,188.68,164.67,188.68,143.15Zm79.92-5.56V114.26c-30,3.13-42.83,10.7-42.83,22.22,0,8.08,5.74,12.12,13.91,12.12C253.08,148.6,262.25,144.06,268.6,137.59ZM0,0H50.8l39,129h.41L126.69,0h52V175.47H141.61V55.66h-.4c-2.62,15.16-6,26.27-9.68,39.1l-26.2,80.61H71.16l-26-80.61A322.28,322.28,0,0,1,35,53.74h-.4V175.37H0V0Z" fill="#e2001a"/> </svg> <span class="magazine-nav__title"> Make – Kreativ mit Technik </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--select a-theme a-theme--select " > <a href="/select/" title="Alle Magazine im Browser lesen" name="topnavi.ho.magazine-nav.select" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--select" > <span class="magazine-nav__title"> Alle Magazine im Browser lesen </span> </a> </li> </ul> </div> <nav class="sitemap topnavigation__sitemap" aria-label="Sitemap"> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header " data-collapse-trigger > IT News </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--newsticker"> <a href="/newsticker" title="heise online - Newsticker" name="topnavi.ho.sitemap.newsticker" data-google-interstitial=false class="sitemap-group__link " >Newsticker</a> </li> <li class="sitemap-group__item sitemap-group__item--Hintergründe"> <a href="/hintergrund" title="heise online - Hintergründe" name="topnavi.ho.sitemap.Hintergründe" data-google-interstitial=false class="sitemap-group__link " >Hintergründe</a> </li> <li class="sitemap-group__item sitemap-group__item--Ratgeber"> <a href="/ratgeber" title="heise online - Ratgeber" name="topnavi.ho.sitemap.Ratgeber" data-google-interstitial=false class="sitemap-group__link " >Ratgeber</a> </li> <li class="sitemap-group__item sitemap-group__item--Tests"> <a href="/tests" title="heise online - Testberichte" name="topnavi.ho.sitemap.Tests" data-google-interstitial=false class="sitemap-group__link " >Tests</a> </li> <li class="sitemap-group__item sitemap-group__item--Meinung"> <a href="/meinung" title="heise online - Meinungen" name="topnavi.ho.sitemap.Meinung" data-google-interstitial=false class="sitemap-group__link " >Meinungen</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header " data-collapse-trigger > Online-Magazine </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--heiseplus"> <a href="/plus/" title="heise+ - Immer mehr Wissen." name="topnavi.ho.sitemap.heiseplus" data-google-interstitial=false class="sitemap-group__link sitemap-group__link--heiseplus" >heise<span class="sitemap_group__heiseplus-icon">+</span></a> </li> <li class="sitemap-group__item sitemap-group__item--tp"> <a href="/tp/" title="Telepolis" name="topnavi.ho.sitemap.tp" data-google-interstitial=false class="sitemap-group__link " >Telepolis</a> </li> <li class="sitemap-group__item sitemap-group__item--autos"> <a href="/autos/" title="heise Autos – News, Tests, Technik, Service rund ums Auto" name="topnavi.ho.sitemap.autos" data-google-interstitial=false class="sitemap-group__link " >heise Autos</a> </li> <li class="sitemap-group__item sitemap-group__item--bestenlisten"> <a href="/bestenlisten" title="bestenlisten by TechStage" name="topnavi.ho.sitemap.bestenlisten" data-google-interstitial=false class="sitemap-group__link " >bestenlisten</a> </li> <li class="sitemap-group__item sitemap-group__item--tipps-tricks"> <a href="/tipps-tricks/" title="tipps+tricks" name="topnavi.ho.sitemap.tipps-tricks" data-google-interstitial=false class="sitemap-group__link " >tipps+tricks</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group sitemap-group--2-col" has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header " data-collapse-trigger > Services </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--Shop"> <a href="https://shop.heise.de/" title="heise Shop – IT Fachzeitschriften, Bücher, CD/DVD/Blu-ray" name="topnavi.ho.sitemap.Shop" data-google-interstitial=false class="sitemap-group__link " >heise Shop</a> </li> <li class="sitemap-group__item sitemap-group__item--Arbeiten bei Heise"> <a href="https://jobs.heise.de/" title="heise jobs – Jobbörse für qualifizierte Fach- und Führungskräfte aus der IT-Branche" name="topnavi.ho.sitemap.Arbeiten bei Heise" data-google-interstitial=false class="sitemap-group__link " >Stellenmarkt</a> </li> <li class="sitemap-group__item sitemap-group__item--heise academy"> <a href="https://heise-academy.de/" title="heise academy - Weiterbildung für IT-Profis von heise medien" name="topnavi.ho.sitemap.heise academy" data-google-interstitial=false class="sitemap-group__link " >heise academy</a> </li> <li class="sitemap-group__item sitemap-group__item--download"> <a href="/download/" title="heise Download – Software zum Download für Windows, Mac, Linux, iPhone, Symbian, Android" name="topnavi.ho.sitemap.download" data-google-interstitial=false class="sitemap-group__link " >heise Download</a> </li> <li class="sitemap-group__item sitemap-group__item--heise preisvergleich"> <a href="https://preisvergleich.heise.de" title="heise preisvergleich – Günstige Preise, Meinungen und Bewertungen zu vielen Produkten" name="topnavi.ho.sitemap.heise preisvergleich" data-google-interstitial=false class="sitemap-group__link " >heise preisvergleich</a> </li> <li class="sitemap-group__item sitemap-group__item--Tarifrechner"> <a href="https://www.heise.de/tarifrechner" title="Tarifrechner" name="topnavi.ho.sitemap.Tarifrechner" data-google-interstitial=false class="sitemap-group__link " >Tarifrechner</a> </li> <li class="sitemap-group__item sitemap-group__item--heise compaliate"> <a href="https://compaliate.heise.de/" title="heise compaliate – Entdecke die heise Affiliate Plattform" name="topnavi.ho.sitemap.heise compaliate" data-google-interstitial=false class="sitemap-group__link " >heise compaliate</a> </li> <li class="sitemap-group__item sitemap-group__item--Abo bestellen"> <a href="https://shop.heise.de/zeitschriften-abo/" title="Abo – c't, iX, c't Fotografie, Mac & i, Make" name="topnavi.ho.sitemap.Abo bestellen" data-google-interstitial=false class="sitemap-group__link " >Abo bestellen</a> </li> <li class="sitemap-group__item sitemap-group__item--Mein Abo"> <a href="https://www.heise.de/sso/registration/add_subscriber_id?forward=https%3A%2F%2Fwww.heise.de%2F" title="Abo verwalten - Mein persönlicher Abo-Bereich" name="topnavi.ho.sitemap.Mein Abo" data-google-interstitial=false class="sitemap-group__link " >Mein Abo</a> </li> <li class="sitemap-group__item sitemap-group__item--Netzwerktools"> <a href="https://www.heise.de/tools/" title="heise online - Netzwerktools" name="topnavi.ho.sitemap.Netzwerktools" data-google-interstitial=false class="sitemap-group__link " >Netzwerktools</a> </li> <li class="sitemap-group__item sitemap-group__item--iMonitor"> <a href="https://www.heise.de/netze/netzwerk-tools/imonitor-internet-stoerungen/" title="heise iMonitor" name="topnavi.ho.sitemap.iMonitor" data-google-interstitial=false class="sitemap-group__link " >iMonitor</a> </li> <li class="sitemap-group__item sitemap-group__item--loseblattwerke"> <a href="/loseblattwerke/" title="Loseblattwerke" name="topnavi.ho.sitemap.loseblattwerke" data-google-interstitial=false class="sitemap-group__link " >Loseblattwerke</a> </li> <li class="sitemap-group__item sitemap-group__item--spiele"> <a href="https://spiele.heise.de" title="heise Spiele" name="topnavi.ho.sitemap.spiele" data-google-interstitial=false class="sitemap-group__link " >Spiele</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header " data-collapse-trigger > Über Uns </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--heise medien"> <a href="https://www.heisegroup.de/artikel/heise-medien-3904998.html" title="heise medien - Hochwertiger und unabhängiger Journalismus" name="topnavi.ho.sitemap.heise medien" data-google-interstitial=false class="sitemap-group__link " >heise medien</a> </li> <li class="sitemap-group__item sitemap-group__item--heise regioconcept"> <a href="https://www.heise-regioconcept.de/" title="heise regioconcept - Regionales Marketing für Unternehmen" name="topnavi.ho.sitemap.heise regioconcept" data-google-interstitial=false class="sitemap-group__link " >heise regioconcept</a> </li> <li class="sitemap-group__item sitemap-group__item--heise Business Services"> <a href="https://business-services.heise.de/" title="heise Business Services – Produkte und Lösungen namhafter IT-Hersteller" name="topnavi.ho.sitemap.heise Business Services" data-google-interstitial=false class="sitemap-group__link " >heise Business Services</a> </li> <li class="sitemap-group__item sitemap-group__item--heise96"> <a href="https://www.heisegroup.de" title="Sponsoring Hannover 96" name="topnavi.ho.sitemap.heise96" data-google-interstitial=false class="sitemap-group__link " >Sponsoring<img src="/icons/ho/h96-logo.svg" width="48" height="55" alt="Logo Hannover 96" class="sitemap-group__img sitemap-group__img--h96" loading="lazy" /></a> </li> <li class="sitemap-group__item sitemap-group__item--mediadaten"> <a href="https://mediadaten.heise.de/" title="Mediadaten heise medien" name="topnavi.ho.sitemap.mediadaten" data-google-interstitial=false class="sitemap-group__link " >Mediadaten</a> </li> <li class="sitemap-group__item sitemap-group__item--Karriere"> <a href="https://www.heisegroup.de/artikel/heise-als-Arbeitgeber-1812545.html" title="Arbeiten bei heise – Heise als Arbeitgeber" name="topnavi.ho.sitemap.Karriere" data-google-interstitial=false class="sitemap-group__link " >Karriere</a> </li> <li class="sitemap-group__item sitemap-group__item--presse"> <a href="https://www.heisegroup.de/presse/" title="Pressemitteilungen und Interviews" name="topnavi.ho.sitemap.presse" data-google-interstitial=false class="sitemap-group__link " >Presse</a> </li> </ul> </div> </a-collapse> </nav> <div class="topnavigation__footer"> <div class="topnavigation__brandworld"> <span class="wrbg-note topnavigation__brandworld-label"> Anzeige </span> <a href="https://it-kenner.heise.de/it-summit-by-heise/" class=" topnavigation__brandworld-link a-tag a-tag--ad " name="dachzeile.ho.nativelink" title="IT Summit" > IT Summit </a> <a href="https://it-kenner.heise.de/secure-it-fuer-unternehmen/" class=" topnavigation__brandworld-link a-tag a-tag--ad " name="dachzeile.ho.nativelink" title="Secure IT für Unternehmen" > Secure IT für Unternehmen </a> </div> <div class=" notification-links " > <a href="/newsletter/" class=" link notification-links__link " name="topnavi.ho.sitemap.newsletter" data-google-interstitial=false > <svg class="link__svg" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin" viewBox="0 0 24 24"> <path id="paper-plane-outline" d="M24,3,0,10l7.92,4.4L8,20l3.78-3.46L18,20ZM17,17.34l-5.48-3L20.85,6.4ZM20.46,5.9,9.6,13.25,4.66,10.51Z" transform="translate(0)"/> </svg> <span > Newsletter </span> </a> <a href="/benachrichtigungen/heise-bot/" class=" link notification-links__link " name="topnavi.ho.sitemap.heisebotti" data-google-interstitial=false > <svg id="logo-botti" xmlns="http://www.w3.org/2000/svg" class="link__svg" viewBox="0 0 24 24" > <title>heise-Bot</title> <path d="M9.3,17.66c-.24.56-.62,1.21-1.32,1.21A.89.89,0,0,1,7.05,18a3,3,0,0,1,.36-1.14l3.18-7.26c.24-.55.55-.95,1.18-.95a.86.86,0,0,1,.89.89A3.36,3.36,0,0,1,12.25,11Zm2.76,1.21c.71,0,1.08-.63,1.34-1.2L14.58,15A3.74,3.74,0,0,0,15,13.59a.86.86,0,0,0-.89-.89c-.64,0-.94.43-1.19,1l-1.42,3.2A2.65,2.65,0,0,0,11.16,18,.86.86,0,0,0,12.06,18.87ZM23.64,8.3a1,1,0,0,0-1.53,1.08A9.42,9.42,0,0,1,19,10.68c-.52-4.49-4.34-7.14-8.87-7.14A10.33,10.33,0,0,0,4.4,5.22,11.49,11.49,0,0,1,2.09,1.78,1,1,0,0,0,2.51.91,1,1,0,0,0,.56,1a1,1,0,0,0,1,.91,15.71,15.71,0,0,1,1,4.84,10.36,10.36,0,0,0-2.58,7c0,5.77,4.64,9.85,10.27,9.85a10.08,10.08,0,0,0,7.47-3.53l-.42-.63a7.92,7.92,0,0,1-1,.86,10.65,10.65,0,0,1-6.16,1.94A7.51,7.51,0,0,1,2.7,14.53c0-4.82,1.92-9.13,7.37-9.13,4.07,0,7.37,2.74,7.37,7a6.65,6.65,0,0,1-1.46,4l.72.62a7.79,7.79,0,0,0,2.23-3.91,16,16,0,0,1,3.51-3.27,1,1,0,0,0,1.35-.17A1,1,0,0,0,23.64,8.3ZM10.08,21c.39.09.18-.36.48-.56s.75-.39.81-.69a1.58,1.58,0,0,1-.93.05,6.43,6.43,0,0,1-1.27-.49,2,2,0,0,0,.15,1A1,1,0,0,0,10.08,21Z" transform="translate(0 0)"/> </svg> <span > heise-Bot </span> </a> <a href="/benachrichtigungen" class=" link notification-links__link " name="topnavi.ho.sitemap.pushnachrichten" data-google-interstitial=false > <svg id="cp-bell-outline" xmlns="http://www.w3.org/2000/svg" class="link__svg" viewBox="0 0 24 24" > <title>Push Nachrichten</title> <path d="M15,20.9c0,1.6-1.3,2.9-3,3c-1.6-0.1-2.9-1.4-3-3h1.7c0,0,0,0,0,0.1c0,0.7,0.6,1.3,1.3,1.3 c0.7,0,1.3-0.6,1.3-1.3c0,0,0,0,0-0.1H15z M21.9,17.2v1.7H2.1v-1.7C6.9,15.6,4.2,6.7,8.9,4c0.6-0.4,1-1.1,1-1.8l0,0 c0-1,0.7-2,1.7-2.2C11.9,0,12.1,0,12.4,0c1,0.2,1.7,1.1,1.7,2.1l0,0c0,0.7,0.4,1.4,1,1.8C19.7,6.7,17.1,15.6,21.9,17.2z M19.2,16.9 c-4-2-1.4-9.6-5.8-12.2c-0.1-0.1-0.2-0.1-0.4-0.2c-0.3-0.2-0.6-0.3-1-0.3c-0.3,0-0.6,0.1-0.9,0.2c-0.2,0.1-0.3,0.1-0.5,0.2 C6.1,7.4,8.8,14.9,4.8,16.9H19.2z"/> </svg> <span class="a-u-hide-from-tablet"> Push </span> <span class="a-u-show-from-tablet"> Push-Nachrichten </span> </a> <a-color-scheme class="a-u-show-from-tablet a-cholor-scheme-tablet"></a-color-scheme> </div> </div> </div> </header> </div> <template id="upscore-reco-template-free"> <article class=" a-article-teaser a-article-teaser--mobile-in-list a-theme " data-upscore-object-id="${object_id}" data-cid="${object_id}" > <a href="${url}" title="${title}" class=" a-article-teaser__link " data-upscore-url > <figure class=" a-article-teaser__image-container" > <div > <a-img width="16" height="9" layout="responsive" src="${image}" alt="${title}" quality="85" high-dpi-quality="70" style=" aspect-ratio: 16 / 9;" > <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='696px' height='391px' viewBox='0 0 696 391'%3E%3Crect x='0' y='0' width='696' height='391' fill='%23f2f2f2'%3E%3C/rect%3E%3C/svg%3E" width="16" height="9" alt="${title}" style="aspect-ratio: 16 / 9; object-fit: cover;" > </a-img> <noscript> <img src="https://heise.cloudimg.io/width/16/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/$%7Bimage%7D" srcset=" https://heise.cloudimg.io/width/336/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 336w, https://heise.cloudimg.io/width/1008/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 1008w, https://heise.cloudimg.io/width/16/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 16w, https://heise.cloudimg.io/width/32/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 32w " sizes="" alt="${title}" width="16" height="9" class="legacy-img " loading="lazy" decoding="async" style="background-color: #f2f2f2;" onload="this.style=null;" > </noscript> </div> </figure> <div class=" a-article-teaser__content-container " > <header> <h3 class=" a-article-teaser__title " > <span class=" a-article-teaser__kicker " > ${intro} </span> <span class="a-article-teaser__title-text" data-upscore-title>${title} </span> </h3> </header> <p class=" a-article-teaser__synopsis " >${lead} </p> </div> </a> </article> </template> <template id="upscore-reco-template-premium"> <article class=" a-article-teaser a-article-teaser--mobile-in-list a-theme " data-upscore-object-id="${object_id}" data-cid="${object_id}" > <a href="${url}" title="${title}" class=" a-article-teaser__link " data-upscore-url data-google-interstitial=false > <figure class=" a-article-teaser__image-container" > <div > <a-img width="16" height="9" layout="responsive" src="${image}" alt="${title}" quality="85" high-dpi-quality="70" style=" aspect-ratio: 16 / 9;" > <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='696px' height='391px' viewBox='0 0 696 391'%3E%3Crect x='0' y='0' width='696' height='391' fill='%23f2f2f2'%3E%3C/rect%3E%3C/svg%3E" width="16" height="9" alt="${title}" style="aspect-ratio: 16 / 9; object-fit: cover;" > </a-img> <noscript> <img src="https://heise.cloudimg.io/width/16/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/$%7Bimage%7D" srcset=" https://heise.cloudimg.io/width/336/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 336w, https://heise.cloudimg.io/width/1008/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 1008w, https://heise.cloudimg.io/width/16/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 16w, https://heise.cloudimg.io/width/32/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/$%7Bimage%7D 32w " sizes="" alt="${title}" width="16" height="9" class="legacy-img " loading="lazy" decoding="async" style="background-color: #f2f2f2;" onload="this.style=null;" > </noscript> </div> </figure> <div class=" a-article-teaser__content-container " > <header> <h3 class=" a-article-teaser__title " > <span class=" a-article-teaser__kicker " > ${intro} </span> <span class="a-article-teaser__title-text" data-upscore-title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" preserveAspectRatio="xMinYMin" class="heise-plus-logo a-article-teaser__plus-icon" > <style> .plus-icon-svg-rec { fill: #14315b; } .plus-icon-svg-path { fill: #f2f2f2; } .dark .plus-icon-svg-rec { fill: #f2f2f2; } .dark .plus-icon-svg-path { fill: #323232; } </style> <rect class="plus-icon-svg-rec" width="32" height="32" rx="12" ry="12"/> <path class="plus-icon-svg-path" d="M24 14.3h-6.3V8h-3.4v6.3H8v3.4h6.3V24h3.4v-6.3H24z"/> </svg>${title} </span> </h3> </header> <p class=" a-article-teaser__synopsis " >${lead} </p> </div> </a> </article> </template> <template id="upscore-reco-template-wrapper-homepage"> <div class="teaser-grid teaser-grid--3 top-stage__row">${content}</div> </template> <template id="upscore-reco-template-wrapper-article-premium"> <aside class="stage stage--channel a-u-grid-pullout-mobile a-u-grid-pushin-mobile" aria-role="complementary"> <header class="a-container-header stage__header stage__header--no-mobile-padding a-container-header--bordered a-container-header--one-row"> <a href="/plus/" class="a-container-header__link"> <h2 class=" a-container-header__heading a-container-header__heading--small "> <span class=" a-container-header__logo a-container-header__logo--heiseplus a-container-header__logo--margin "> heise+ </span> <span class="a-container-header__slug"> Das Beste aus heise+ </span> </h2> <nav class="a-container-header__more"> <span class=" a-container-header__more-text a-u-show-from-tablet "> Zur heise+ Startseite </span> <span class="a-container-header__more-icon"></span> </nav> </a> </header> <div class=" teaser-grid teaser-grid--h-gutter teaser-grid--4 channel_ho "> ${content} </div> </aside> </template> <template id="upscore-reco-template-wrapper-article"> <aside class="stage stage--channel a-u-grid-pullout-mobile a-u-grid-pushin-mobile" aria-role="complementary"> <header class="a-container-header stage__header stage__header--no-mobile-padding a-container-header--bordered a-container-header--one-row"> <a href="/" class="a-container-header__link"> <h2 class=" a-container-header__heading a-container-header__heading--small "> <span class=" a-container-header__logo a-container-header__logo--ho a-container-header__logo--margin "> heise online </span> <span class="a-container-header__slug"> Top-Beiträge von heise online </span> </h2> <nav class="a-container-header__more"> <span class=" a-container-header__more-text a-u-show-from-tablet "> Zur heise online Startseite </span> <span class="a-container-header__more-icon"></span> </nav> </a> </header> <div class=" teaser-grid teaser-grid--h-gutter teaser-grid--4 channel_ho "> ${content} </div> </aside> </template> <template id="upscore-reco-template-wrapper-article-en"> <aside class="stage stage--channel a-u-grid-pullout-mobile a-u-grid-pushin-mobile" aria-role="complementary"> <header class="a-container-header stage__header stage__header--no-mobile-padding a-container-header--bordered a-container-header--one-row"> <a href="/" class="a-container-header__link"> <h2 class=" a-container-header__heading a-container-header__heading--small "> <span class=" a-container-header__logo a-container-header__logo--ho a-container-header__logo--margin "> heise online </span> <span class="a-container-header__slug"> Most popular articles by heise online </span> </h2> </a> </header> <div class=" teaser-grid teaser-grid--h-gutter teaser-grid--4 channel_ho "> ${content} </div> </aside> </template> <div class="a-layout a-layout--transparent a-u-no-margin-bottom"> <div class=" a-layout__container a-layout__container--full-width" > <div class="a-layout__item a-layout__item--full-width"> <div class="ad-ldb-container"> <script>performance.mark('FRAME-Ads Anfang');</script> <div class="perf-cls-reduc-leaderboard"> <div> <div id="HEI_D_Top" class="" ></div> </div> </div> <div class="ad ad--skyscraper a-u-show-from-tablet"> <div> <div id="HEI_D_Right" class="" ></div> </div> </div> <script> performance.mark('FRAME-Ads Ende'); performance.measure('FRAME-Ads', 'FRAME-Ads Anfang', 'FRAME-Ads Ende'); </script> </div> </div> </div> </div> <div class="a-layout a-u-mb-4" id="bottom-up"> <script>performance.mark('HEADER Anfang');</script> <div class=" a-layout__container a-layout__container--full-width a-layout__container--mobile-offset "> <div class="a-layout__item a-layout__item--full-width"> <header class="header "> <a-collapse media="(max-width: 767px)" toggle-attr-on-media="disabled" > <div class="header__menu"> <figure class="header-logo "> <a href="/" title="heise online" data-google-interstitial=false > <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1504 214" role="img" preserveAspectRatio="xMinYMin" class="heise-online-logo header-logo__svg header-logo__svg--mobile" > <style> .heise-online-logo-svg-path-online { fill: #6f7d93; } .heise-online-logo-svg-path-heise { fill: #14315b; } .dark .heise-online-logo-svg-path-online, .dark .heise-online-logo-svg-path-heise { fill: #f2f2f2; } </style> <title>heise online Logo</title> <path class="heise-online-logo-svg-path-online" d="M869.84 139.56c0-43.75 29.74-69 62.47-69s62.47 25.25 62.47 69-29.74 68.79-62.47 68.79-62.47-25.25-62.47-68.79m93.29 0c0-26.32-11.55-43.86-30.81-43.86s-30.81 17.54-30.81 43.86 11.55 43.65 30.81 43.65 30.81-17.33 30.81-43.65m49.9-65.79h25.25l2.35 17.76h.86c11.77-11.45 25.14-20.97 43.11-20.97 28.13 0 40.44 19.04 40.44 52.2v82.37h-30.81v-78.41c0-21.61-6.2-29.74-20.43-29.74-11.55 0-19.15 5.67-29.95 16.37v91.78h-30.81V73.77Zm135.54 97.56V16.22h30.81v156.72c0 7.6 3.42 10.27 6.63 10.27 1.39 0 2.46 0 4.81-.54l3.85 23c-3.74 1.5-8.88 2.67-16.26 2.67-21.82 0-29.85-14.12-29.85-37.01Zm52.93-138c0-10.38 8.13-17.44 19.04-17.44s19.04 7.06 19.04 17.44-8.13 17.44-19.04 17.44-19.04-7.27-19.04-17.44m3.53 40.44h30.81v131.37h-30.81zm54.66 0h25.25l2.35 17.76h.86c11.77-11.45 25.14-20.97 43.11-20.97 28.13 0 40.44 19.04 40.44 52.2v82.37h-30.81v-78.41c0-21.61-6.2-29.74-20.43-29.74-11.55 0-19.15 5.67-29.95 16.37v91.78h-30.81V73.77Zm129.52 65.79c0-42.68 29.63-69 60.55-69 35.52 0 54.24 25.67 54.24 62.37 0 5.88-.64 11.77-1.34 14.98h-83.39c2.57 23.32 17.54 36.59 38.73 36.59 11.23 0 20.86-3.53 30.49-9.52l10.48 19.15c-12.52 8.45-28.35 14.23-45.04 14.23-36.26 0-64.72-25.46-64.72-68.79Zm88.15-12.62c0-20.22-8.99-32.52-26.96-32.52-15.3 0-28.78 11.45-31.45 32.52z"/><path class="heise-online-logo-svg-path-heise" d="M258.47 15.22h30.81v48.89L288 89.46c11.02-10.38 24.07-19.9 42.04-19.9 28.13 0 40.44 19.04 40.44 52.2v82.37h-30.81v-78.41c0-21.61-6.2-29.74-20.43-29.74-11.55 0-19.15 5.67-29.95 16.37v91.78h-30.81V15.22Zm129.58 123.34c0-42.68 29.63-69 60.55-69 35.52 0 54.24 25.67 54.24 62.37 0 5.88-.64 11.77-1.34 14.98h-83.39c2.57 23.32 17.54 36.59 38.73 36.59 11.23 0 20.86-3.53 30.49-9.52l10.48 19.15c-12.52 8.45-28.35 14.23-45.04 14.23-36.26 0-64.72-25.46-64.72-68.79Zm88.14-12.62c0-20.22-8.99-32.52-26.96-32.52-15.3 0-28.78 11.45-31.45 32.52zm41.46-93.6c0-10.38 8.13-17.44 19.04-17.44s19.04 7.06 19.04 17.44-8.13 17.44-19.04 17.44-19.04-7.27-19.04-17.44m3.53 40.43h30.81v131.37h-30.81zm44.04 116.29 14.33-19.58c11.66 9.09 22.95 14.66 36.26 14.66 14.33 0 21.07-6.74 21.07-15.72 0-11.02-14.23-15.94-28.24-21.29-17.22-6.47-36.91-16.37-36.91-38.3s18.4-39.26 47.82-39.26c18.29 0 32.95 7.43 43.65 15.73l-14.12 18.93c-9.2-6.74-18.45-11.45-28.78-11.45-13.21 0-19.47 6.31-19.47 14.55 0 10.38 13.27 14.33 27.49 19.58 17.76 6.63 37.65 15.19 37.65 39.69 0 22.57-17.86 40.76-51.03 40.76-17.97 0-36.91-7.7-49.74-18.29Zm111.39-50.5c0-42.68 29.63-69 60.55-69 35.52 0 54.24 25.67 54.24 62.37 0 5.88-.64 11.77-1.34 14.98h-83.39c2.57 23.32 17.54 36.59 38.73 36.59 11.23 0 20.86-3.53 30.49-9.52l10.48 19.15c-12.52 8.45-28.35 14.23-45.04 14.23-36.26 0-64.72-25.46-64.72-68.79Zm88.15-12.62c0-20.22-8.99-32.52-26.96-32.52-15.3 0-28.78 11.45-31.45 32.52zM114.88 2.89c15.41 7.19 22.08 25.51 14.89 40.92l-71.06 152.4c-7.19 15.41-25.51 22.08-40.92 14.9C2.38 203.92-4.29 185.6 2.9 170.18L73.95 17.79C81.14 2.38 99.46-4.29 114.88 2.9m49.2 97.26c-15.41-7.18-33.73-.52-40.92 14.9l-25.7 55.12c-7.19 15.41-.52 33.74 14.89 40.93s33.73.52 40.92-14.89l25.71-55.12c7.19-15.42.52-33.74-14.9-40.93"/> </svg> </a> </figure> <div class="header_menu-group"> <a href="/plus" title="Jetzt heise+ abonnieren" name="header.ho.heiseplus" data-google-interstitial=false class="header_abo-link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" preserveAspectRatio="xMinYMin" class="heise-plus-logo navigation__heiseplus-logo" > <style> .plus-icon-svg-rec { fill: #14315b; } .plus-icon-svg-path { fill: #f2f2f2; } .dark .plus-icon-svg-rec { fill: #f2f2f2; } .dark .plus-icon-svg-path { fill: #323232; } </style> <rect class="plus-icon-svg-rec" width="32" height="32" rx="12" ry="12"/> <path class="plus-icon-svg-path" d="M24 14.3h-6.3V8h-3.4v6.3H8v3.4h6.3V24h3.4v-6.3H24z"/> </svg> Abo </a> <div class="header__collapse-toggle" data-collapse-trigger title="Menü auf-/zuklappen" > <svg class="menu-icon header__menu_mobile-icon"> <use href="/icons/common-icons.svg#menu-mobile"></use> </svg> </div> </div> </div> <div class="header__content" data-collapse-target> <form accept-charset="utf-8" method="get" action="/suche/" class="a-form header__search" role="search" id="volltextsuche" > <fieldset class="header__search-container"> <input type="search" class=" a-form__input header__search-input " value="" name="q" placeholder="Suchen" data-autocomplete="true" data-searchpath="/suche/" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true" aria-label="Suchen" spellcheck="false" > <button class="header__search-button" type="submit" aria-label="suchen"> <svg class="header__search-icon"> <use href="/icons/common-icons.svg#search"></use> </svg> </button> <input type="hidden" name="sort_by" value="relevance" > </fieldset> </form> <a-collapse-group target="a-menu"> <div class="header__nav"> <div class="magazine-nav header__magazine-nav"> <ul class="magazine-nav__items a-u-remove-list-style"> <li class=" magazine-nav__item magazine-nav__item--ct a-theme a-theme--ct " > <a href="/ct/" title="c't – Magazin für Computertechnik" name="topnavi.ho.magazine-nav.ct" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--ct" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 370" class="ct-logo magazin-nav__svg" > <title>c't Magazin Logo</title> <path d="M329,0H429.54L406.65,93.08H500L477.72,183.7H384.29l-10.5,42.73s-3.22,10.79-2.08,17.61a26.5,26.5,0,0,0,5.07,12.62c3.63,5.13,6.81,7.56,12.56,10.09,5.46,2.39,15.07,2.51,15.07,2.51h73L452.6,370h-76c-66.62.67-108.38-45.12-108.38-101.55,0-12.32,3.53-32,11-66.06L284,183,329,0ZM231.46,0,211.65,80.56h42.5L228.78,183.7h43L317,0Zm-57.8,93.08C75.55,92.93,0,188.15,0,268.08,0,324.52,41.32,371.47,108.08,370H211.86l24.76-100.71H130.27c-21.92-.12-28.59-22.21-28.59-35.61,0-23.49,26.37-49.88,51.77-49.95H216.8l22.28-90.62Z" fill="#2288c6"/> </svg> <span class="magazine-nav__title"> c't – Magazin für Computertechnik </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--ix a-theme a-theme--ix " > <a href="/ix/" title="iX – Magazin für professionelle Informationstechnik" name="topnavi.ho.magazine-nav.ix" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--ix" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 610" class="ix-logo magazin-nav__svg" > <title>iX Magazin Logo</title> <path d="M238.41,610h-139L346.17,248.34,294.41,69.72H421.75l12.81,45.67,31.26-45.67H600L475.16,252.6l70.42,242.66H418.23L387.41,385.48Zm-100-20.61h89.17L395.36,337.6l38.47,137h84.33L452.68,249,561,90.34H476.67l-50,73.08-20.5-73.08H321.82l46.83,161.6Zm-2.07-95.46H0L186.69,220.48H323ZM39,473.31h86.47L284,241.1h-86.4ZM260.28,183.12A91.56,91.56,0,1,1,323,25l2,1.89L306.87,46.13l-2-1.88a65,65,0,1,0-21.15,108l2.56-1L295.83,176l-2.56,1A91,91,0,0,1,260.28,183.12Z" fill="#4c5c64"/> </svg> <span class="magazine-nav__title"> iX – Magazin für professionelle Informationstechnik </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--foto a-theme a-theme--foto " > <a href="/foto/" title="c't Fotografie - Das Magazin rund ums digitale Bild" name="topnavi.ho.magazine-nav.foto" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--foto" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 140" class="foto-logo magazin-nav__svg" > <title>c't Fotografie Logo</title> <path fill="#0a0a0a" d="M2 75.8h28.95v4.36H6.79v16.01h17.52v4.36H6.79v21.58H2zm27.75 29.53c0-2.57.44-4.93 1.31-7.08s2.08-4.02 3.63-5.59 3.41-2.8 5.59-3.67 4.55-1.31 7.12-1.31 4.93.44 7.08 1.31 4.02 2.1 5.59 3.67 2.8 3.44 3.67 5.59c.87 2.16 1.31 4.52 1.31 7.08s-.44 4.93-1.31 7.08c-.87 2.16-2.1 4.02-3.67 5.59s-3.44 2.8-5.59 3.67c-2.16.87-4.52 1.31-7.08 1.31s-4.94-.44-7.12-1.31-4.04-2.09-5.59-3.67c-1.55-1.57-2.76-3.44-3.63-5.59s-1.31-4.52-1.31-7.08m4.36 0c0 1.89.3 3.67.91 5.34s1.49 3.12 2.65 4.36c1.16 1.23 2.57 2.22 4.21 2.94 1.65.73 3.49 1.09 5.52 1.09s3.87-.36 5.52-1.09 3.05-1.71 4.21-2.94 2.05-2.69 2.65-4.36c.61-1.67.91-3.45.91-5.34s-.3-3.67-.91-5.34-1.49-3.12-2.65-4.36c-1.16-1.23-2.57-2.22-4.21-2.94-1.65-.73-3.49-1.09-5.52-1.09s-3.88.36-5.52 1.09c-1.65.73-3.05 1.71-4.21 2.94s-2.05 2.69-2.65 4.36c-.61 1.67-.91 3.45-.91 5.34m52.63-12.86h-8.96v21.87c0 1.5.41 2.66 1.23 3.49.82.82 1.96 1.23 3.41 1.23.82 0 1.66-.11 2.51-.33q1.275-.33 2.43-.84l.36 3.92c-.82.29-1.77.56-2.83.8-1.07.24-2.01.36-2.83.36-1.55 0-2.88-.23-4-.69-1.11-.46-2.01-1.08-2.69-1.85s-1.17-1.68-1.49-2.72-.47-2.17-.47-3.38V92.46h-6.64v-3.92h6.64V75.8h4.36v12.74h8.96v3.92Zm2.75 12.86c0-2.57.44-4.93 1.31-7.08s2.08-4.02 3.63-5.59 3.41-2.8 5.59-3.67 4.55-1.31 7.12-1.31 4.93.44 7.08 1.31 4.02 2.1 5.59 3.67 2.8 3.44 3.67 5.59c.87 2.16 1.31 4.52 1.31 7.08s-.44 4.93-1.31 7.08c-.87 2.16-2.1 4.02-3.67 5.59s-3.44 2.8-5.59 3.67c-2.16.87-4.52 1.31-7.08 1.31s-4.94-.44-7.12-1.31-4.04-2.09-5.59-3.67c-1.55-1.57-2.76-3.44-3.63-5.59s-1.31-4.52-1.31-7.08m4.35 0c0 1.89.3 3.67.91 5.34s1.49 3.12 2.65 4.36c1.16 1.23 2.57 2.22 4.21 2.94 1.65.73 3.49 1.09 5.52 1.09s3.87-.36 5.52-1.09 3.05-1.71 4.21-2.94 2.05-2.69 2.65-4.36.91-3.45.91-5.34-.3-3.67-.91-5.34-1.49-3.12-2.65-4.36c-1.16-1.23-2.57-2.22-4.21-2.94-1.65-.73-3.49-1.09-5.52-1.09s-3.88.36-5.52 1.09c-1.65.73-3.05 1.71-4.21 2.94s-2.05 2.69-2.65 4.36c-.61 1.67-.91 3.45-.91 5.34m72.1 13.45c0 4.18-.61 7.56-1.82 10.13-1.21 2.58-2.72 4.57-4.54 5.98s-3.77 2.36-5.85 2.84c-2.08.49-3.97.73-5.67.73s-3.35-.16-4.98-.47a23.7 23.7 0 0 1-4.61-1.39q-2.175-.915-3.96-2.22c-1.19-.87-2.22-1.87-3.09-2.99l3.41-3.21c1.55 2.19 3.49 3.79 5.81 4.81q3.48 1.53 7.41 1.53c2.23 0 4.1-.29 5.63-.87s2.78-1.35 3.78-2.3c.99-.95 1.77-1.99 2.32-3.13.56-1.14.97-2.29 1.23-3.43.27-1.14.42-2.22.47-3.24s.07-1.85.07-2.48v-3.4h-.15c-1.26 2.04-2.97 3.65-5.12 4.81-2.16 1.17-4.69 1.75-7.59 1.75-2.47 0-4.79-.45-6.97-1.35q-3.27-1.35-5.7-3.72a17.8 17.8 0 0 1-3.85-5.5c-.94-2.09-1.42-4.33-1.42-6.71s.47-4.62 1.42-6.71a17.5 17.5 0 0 1 3.85-5.47q2.43-2.325 5.7-3.72c2.18-.92 4.5-1.39 6.97-1.39 2.91 0 5.44.58 7.59 1.75s3.86 2.77 5.12 4.81h.15v-5.69h4.36v30.23Zm-4.22-13.89q0-2.76-1.05-5.19c-.7-1.62-1.65-3.03-2.83-4.21-1.19-1.19-2.59-2.13-4.21-2.83q-2.43-1.05-5.19-1.05c-2.76 0-3.57.35-5.19 1.05s-3.03 1.65-4.21 2.83c-1.19 1.19-2.13 2.59-2.83 4.21q-1.05 2.43-1.05 5.19c0 2.76.35 3.57 1.05 5.19s1.65 3.03 2.83 4.21c1.19 1.19 2.59 2.13 4.21 2.83q2.43 1.05 5.19 1.05c2.76 0 3.57-.35 5.19-1.05s3.03-1.65 4.21-2.83c1.19-1.19 2.13-2.59 2.83-4.21q1.05-2.43 1.05-5.19m13.36-6.9c0-.63-.03-1.39-.07-2.29-.05-.9-.09-1.8-.11-2.72-.03-.92-.06-1.78-.11-2.58s-.07-1.42-.07-1.85h4.36c.05 1.26.08 2.47.11 3.63q.03 1.74.18 2.25c1.11-1.99 2.54-3.61 4.29-4.87q2.61-1.89 6.39-1.89c.44 0 .86.04 1.27.11s.84.16 1.27.25l-.51 4.29c-.58-.19-1.14-.29-1.67-.29-1.89 0-3.52.3-4.9.91s-2.52 1.44-3.41 2.51c-.9 1.07-1.56 2.31-2 3.74s-.65 2.97-.65 4.61v18.31h-4.36V97.99Zm48.04 10.03c0 1.65.01 3.12.04 4.43a122 122 0 0 0 .29 6.75q.105 1.455.33 2.91h-4.07c-.29-1.65-.44-3.46-.44-5.45h-.15c-1.26 2.18-2.82 3.78-4.69 4.79q-2.805 1.53-7.08 1.53c-1.45 0-2.88-.18-4.29-.55-1.41-.36-2.66-.94-3.78-1.74a9.35 9.35 0 0 1-2.72-3.09c-.7-1.26-1.05-2.78-1.05-4.58 0-2.57.65-4.6 1.96-6.1s2.92-2.63 4.83-3.38 3.95-1.23 6.1-1.45 4.06-.33 5.7-.33h5.09v-2.03c0-2.91-.9-4.99-2.69-6.25s-4.04-1.89-6.76-1.89c-3.88 0-7.29 1.26-10.24 3.78l-2.54-2.98c1.6-1.55 3.58-2.72 5.96-3.52 2.37-.8 4.65-1.2 6.83-1.2 4.07 0 7.31.96 9.73 2.87s3.63 5 3.63 9.26v8.21Zm-8.72-2.76q-2.76 0-5.34.36t-4.65 1.23c-2.07.87-2.48 1.36-3.31 2.32q-1.23 1.455-1.23 3.63c0 1.02.23 1.93.69 2.72.46.8 1.05 1.45 1.78 1.96s1.54.9 2.43 1.16c.9.27 1.8.4 2.72.4 2.32 0 4.24-.34 5.74-1.02s2.7-1.56 3.6-2.65a9.14 9.14 0 0 0 1.85-3.71c.34-1.38.51-2.77.51-4.18v-2.25h-4.79Zm19.85-12.79h-6.36v-3.92h6.36v-5.14c0-2.18.33-3.98.98-5.41q.975-2.145 2.43-3.45c.97-.87 2.05-1.49 3.23-1.85 1.19-.36 2.31-.54 3.38-.54q3.045 0 5.01.87l-.87 3.78c-.97-.48-2.28-.73-3.92-.73q-5.88 0-5.88 8.94v3.54h8.46v3.92h-8.46v29.64h-4.36V92.48Zm18.54-13.71c0-.92.31-1.69.94-2.32s1.4-.94 2.32-.94 1.69.32 2.32.94c.63.63.94 1.41.94 2.32s-.32 1.7-.94 2.32c-.63.63-1.41.94-2.32.94s-1.7-.31-2.32-.94c-.63-.63-.94-1.4-.94-2.32m1.09 9.79h4.36v33.56h-4.36zm43.1 27.24c-1.7 2.57-3.79 4.41-6.28 5.52s-5.24 1.67-8.24 1.67c-2.57 0-4.89-.44-6.97-1.31s-3.87-2.09-5.38-3.67c-1.5-1.57-2.65-3.44-3.45-5.59s-1.2-4.54-1.2-7.16.41-4.84 1.24-6.97c.82-2.13 1.99-3.98 3.49-5.56 1.5-1.57 3.27-2.81 5.3-3.7 2.03-.9 4.29-1.34 6.76-1.34s4.83.45 6.79 1.34c1.96.9 3.61 2.08 4.94 3.56s2.34 3.16 3.01 5.05c.68 1.89 1.02 3.8 1.02 5.74v3.05h-28.19c0 .92.18 2.1.55 3.52.36 1.43 1.03 2.82 2 4.18s2.26 2.52 3.89 3.49c1.62.97 3.72 1.45 6.28 1.45 2.23 0 4.38-.53 6.47-1.6 2.08-1.06 3.68-2.52 4.79-4.36l3.2 2.69Zm-3.34-13.29c0-1.5-.3-2.91-.91-4.21-.61-1.31-1.43-2.46-2.47-3.45s-2.28-1.78-3.7-2.36c-1.43-.58-2.94-.87-4.54-.87-2.37 0-4.35.48-5.92 1.45s-2.82 2.08-3.74 3.34-1.57 2.48-1.96 3.67-.58 2-.58 2.43h23.83Z"/><path fill="#c3172e" d="M114.59 2v66.41h69.09V2zm31.36 62.44H133.5c-7.26 0-12.88-4.63-12.88-12.17 0-9.54 9.04-20.92 20.71-20.92h7.83l-2.63 10.82h-7.54c-3.06 0-6.19 3.2-6.19 5.98 0 1.64.78 4.27 3.42 4.27h12.67l-2.92 12.03Zm2.71-22.27 2.99-12.31h-5.76l2.35-9.61h9.54l-5.41 21.92h-3.7Zm28.96 0h-11.1l-1.28 5.12s-.36 1.28-.21 2.13c.36 2.06 1.92 2.99 3.84 2.99h8.75l-2.99 12.03h-9.04c-7.12 0-12.95-4.63-12.95-12.03 0-1.57.43-3.91 1.28-7.97l5.98-24.19h12.03l-2.78 11.1h11.17z"/> </svg> <span class="magazine-nav__title"> c't Fotografie - Das Magazin rund ums digitale Bild </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--macandi a-theme a-theme--macandi " > <a href="/mac-and-i/" title="Mac & i – Nachrichten, Tests, Tipps und Meinungen rund um Apple" name="topnavi.ho.magazine-nav.macandi" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--macandi" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 145" class="mac-logo magazin-nav__svg" > <title>Mac an i Logo</title> <path d="M115.67,142.81l8.41-57c2.33-15.42,4.66-29.45,7.1-42.59-6.78,15.58-13.49,30.1-19.25,41.61L84,140.61H59.55l-4.9-55.72c-.89-11-1.75-25.1-2.56-42q-1,4.95-2.07,9.94c-2.56,12.32-5,24-7.2,33.5L29.2,142.81H0L34.41,5.59H75.26l4.3,52.33c.2,3.22.44,6.59.69,10.1.62,8.54,1.3,18,1.59,27.5C87.05,81.44,93.6,67.27,98.27,57.44L123.59,5.59h41.35L146.41,142.81Zm115.07-16c-.07,1.09-.15,2.18-.22,3.25-.28,4-.55,7.77-.67,11.29l0,1.43H259l-.05-1.43c-.41-12.63,1.74-31.88,4-43.57l10.41-52.29-1.18-.37a115.86,115.86,0,0,0-32.73-4.86c-48.93,0-71.21,36-71.21,69.41,0,21.12,12.42,35.3,30.91,35.3C211.76,145,222.84,138.59,230.74,126.84Zm7-61.49L233.67,86.5c-4.61,24.06-14.94,32.59-22.38,32.59-9,0-10.39-9.25-10.39-14.77,0-18.27,13.43-39.51,30.74-39.51A38.56,38.56,0,0,1,237.79,65.35Zm115,74.12.79-.38-.23-24.64-1.88.75a47.9,47.9,0,0,1-18.83,3.89c-8.59,0-17.77-4.93-17.77-18.77C314.85,78,331.2,66,346.58,66a31.81,31.81,0,0,1,12.64,2.28l1.38.58L368.66,44l-1.26-.46A61.37,61.37,0,0,0,347,40.29c-37.07,0-65,27.19-65,63.23,0,25.08,16.67,41.28,42.48,41.28C335.29,144.8,345.88,142.81,352.77,139.47Zm222.05,3.34L593.9,42.49H562.36L543.28,142.81Zm6.84-109.72c10.62,0,18.34-7.38,18.34-17.54,0-9.3-6.41-15.55-16-15.55a17.65,17.65,0,0,0-17.94,17.74c0,9,6.23,15.35,15.15,15.35ZM510,140.52l2,2.29H474.44l-.41-.44a72.72,72.72,0,0,1-5.6-7l-.86-1.17c-10.26,7.29-22,10.83-35.81,10.83-26.17,0-43.07-14.48-43.07-36.89,0-17.69,10.88-31.92,32.36-42.3-4.79-8.23-7-15.42-7-22.53C414,20.16,432.3,3.39,457.5,3.39,478.73,3.39,493,16,493,34.7c0,15.14-10.48,27.18-33,37.82,5,7.75,11.49,16.76,16.31,23.38A88.38,88.38,0,0,0,489,74.78h29.56c-7.19,17.43-15.84,30.6-27.31,41.69A293,293,0,0,0,510,140.52Zm-55.62-25C447,105.82,438.81,94.22,432.2,84c-5.22,4-11.42,10.16-11.42,19.14,0,10.67,7.52,17.57,19.16,17.57A22,22,0,0,0,454.4,115.49ZM464.69,34.9c0-2.39-.71-10.19-9.79-10.19-6.94,0-12.38,6.84-12.38,15.57a25.7,25.7,0,0,0,5,15C455.61,51.41,464.69,44.82,464.69,34.9Z" fill="#2a2521"/> </svg> <span class="magazine-nav__title"> Mac & i – Nachrichten, Tests, Tipps und Meinungen rund um Apple </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--make a-theme a-theme--make " > <a href="/make/" title="Make – Kreativ mit Technik" name="topnavi.ho.magazine-nav.make" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--make" > <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 178" class="make-logo magazin-nav__svg" > <title>Make Logo</title> <path d="M559.08,49.1H600V85.87H559.08Zm0,89.6H600v36.77H559.08ZM430,112.34c0-49.1,37.39-66,63.39-66s58,13,58,70.41v5.76H467.76c1.92,20.91,13.51,28.89,29.33,28.89,14.92,0,28.83-7.37,37.4-15.15L549.2,159c-14.71,12.52-32.86,19-54.93,19C461.41,178,430,161.13,430,112.34ZM517.15,100c-1.91-17.78-9.88-26.26-24.19-26.26-11.89,0-22,7.77-24.79,26.26ZM319.3,0h38.1V96.17L396.71,49h40.92L396.41,96.17,440,175.37H400.74l-27.92-51.52L357.4,141.13v34.14H319.3V0ZM188.68,143.15c0-29.2,24.59-45.26,79.92-49.81V90.21c0-9.29-4.73-15.15-17-15.15-16,0-29.73,6.57-41.42,15.66l-16-21.82c12.5-11.32,31.45-22.53,62.89-22.53,34.47,0,48.79,17.07,48.79,49.5v48.69c0,15.16,1,24.45,3.52,30.81H271.43a61.15,61.15,0,0,1-2.83-18.48c-11.59,13-25.29,20.4-44,20.4C205.31,177.19,188.68,164.67,188.68,143.15Zm79.92-5.56V114.26c-30,3.13-42.83,10.7-42.83,22.22,0,8.08,5.74,12.12,13.91,12.12C253.08,148.6,262.25,144.06,268.6,137.59ZM0,0H50.8l39,129h.41L126.69,0h52V175.47H141.61V55.66h-.4c-2.62,15.16-6,26.27-9.68,39.1l-26.2,80.61H71.16l-26-80.61A322.28,322.28,0,0,1,35,53.74h-.4V175.37H0V0Z" fill="#e2001a"/> </svg> <span class="magazine-nav__title"> Make – Kreativ mit Technik </span> </a> </li> <li class=" magazine-nav__item magazine-nav__item--select a-theme a-theme--select " > <a href="/select/" title="Alle Magazine im Browser lesen" name="topnavi.ho.magazine-nav.select" data-google-interstitial=false class="magazine-nav__link magazine-nav__link--select" > <span class="magazine-nav__title"> Alle Magazine im Browser lesen </span> </a> </li> </ul> </div> <nav class="navigation " aria-label="heiseonline-Navigation" role="navigation" > <ul class="navigation__list navigation__list--two-cols"> <li> <a href="/plus" title="heise+ - Immer mehr Wissen." name="header.ho.heiseplus" data-google-interstitial=false class="navigation__logo-link navigation__head"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 860 200" role="img" preserveAspectRatio="xMinYMin" class="heise-plus-logo navigation__heiseplus-logo" > <style> .plus-logo-svg-path-heise { fill: #6f7d93; } .plus-logo-svg-path-plus { fill: #14315b; } .dark .plus-logo-svg-path-heise, .dark .plus-logo-svg-path-plus { fill: #f2f2f2; } </style> <path class="plus-logo-svg-path-heise" d="M786.24 179.42v-45.19h-43.23v-25.54h43.23V63.5h26.53v45.19H856v25.54h-43.23v45.19z" /> <path class="plus-logo-svg-path-plus" d="M234.56 191.7V17.43h28.39v44.93l-.99 23.45c5.1-4.77 10.78-9.01 17.04-12.71 6.25-3.7 13.49-5.55 21.73-5.55 13 0 22.47 4.2 28.39 12.59 5.93 8.39 8.89 20.24 8.89 35.55v76.03h-28.39V119.4c0-10.04-1.48-17.11-4.44-21.23-2.96-4.11-7.82-6.17-14.57-6.17-5.27 0-9.92 1.28-13.95 3.83-4.04 2.55-8.6 6.29-13.7 11.23v84.67h-28.39ZM412 194.66c-11.19 0-21.32-2.51-30.37-7.53q-13.575-7.53-21.48-21.72c-5.27-9.46-7.9-20.86-7.9-34.19s2.67-24.52 8.02-34.06 12.3-16.87 20.86-21.97q12.84-7.65 26.91-7.65c11.02 0 20.24 2.43 27.65 7.28 7.41 4.86 13 11.6 16.79 20.24 3.78 8.64 5.68 18.64 5.68 29.99 0 5.92-.41 10.53-1.23 13.82H379.9c1.32 10.7 5.18 19.01 11.6 24.93s14.48 8.89 24.19 8.89c5.27 0 10.16-.78 14.69-2.35 4.52-1.56 9.01-3.74 13.46-6.54l9.63 17.77c-5.76 3.79-12.18 6.91-19.26 9.38s-14.49 3.7-22.22 3.7Zm-32.35-75.04h53.82c0-9.38-2.06-16.74-6.17-22.09-4.12-5.35-10.29-8.02-18.52-8.02-7.08 0-13.37 2.59-18.89 7.78-5.52 5.18-8.93 12.63-10.25 22.34Zm107.62-70.35c-5.1 0-9.22-1.48-12.34-4.44-3.13-2.96-4.69-6.91-4.69-11.85s1.56-8.64 4.69-11.6c3.12-2.96 7.24-4.44 12.34-4.44s9.22 1.48 12.34 4.44 4.69 6.83 4.69 11.6-1.57 8.89-4.69 11.85c-3.13 2.96-7.24 4.44-12.34 4.44M472.95 191.7V70.5h28.39v121.2zm85.47 2.96c-8.23 0-16.46-1.6-24.69-4.81s-15.31-7.2-21.23-11.97l13.33-18.27q8.145 6.18 16.29 9.87c8.145 3.69 11.19 3.7 17.28 3.7 6.58 0 11.44-1.4 14.57-4.2 3.12-2.8 4.69-6.25 4.69-10.37 0-3.46-1.28-6.29-3.83-8.52-2.55-2.22-5.8-4.2-9.75-5.92-3.95-1.73-8.07-3.41-12.34-5.06-5.27-1.97-10.49-4.4-15.68-7.28-5.18-2.88-9.42-6.58-12.71-11.11-3.29-4.52-4.94-10.16-4.94-16.91 0-10.7 3.95-19.42 11.85-26.17s18.6-10.12 32.1-10.12c8.56 0 16.21 1.48 22.96 4.44s12.59 6.34 17.53 10.12l-13.09 17.28q-6.42-4.68-12.96-7.53a34.1 34.1 0 0 0-13.7-2.84c-6.09 0-10.62 1.28-13.58 3.83s-4.44 5.72-4.44 9.5q0 7.155 7.41 10.86c4.94 2.47 10.7 4.86 17.28 7.16 5.59 1.97 11.02 4.4 16.29 7.28s9.67 6.63 13.21 11.23q5.31 6.915 5.31 18.27c0 10.37-4.03 19.22-12.1 26.54s-19.75 10.98-35.06 10.98Zm113.24 0c-11.19 0-21.32-2.51-30.37-7.53q-13.575-7.53-21.48-21.72c-5.27-9.46-7.9-20.86-7.9-34.19s2.67-24.52 8.02-34.06 12.3-16.87 20.86-21.97q12.84-7.65 26.91-7.65c11.02 0 20.24 2.43 27.65 7.28 7.41 4.86 13 11.6 16.79 20.24 3.78 8.64 5.68 18.64 5.68 29.99 0 5.92-.41 10.53-1.24 13.82h-77.03c1.32 10.7 5.18 19.01 11.6 24.93s14.48 8.89 24.19 8.89c5.27 0 10.16-.78 14.69-2.35 4.53-1.56 9.01-3.74 13.46-6.54l9.63 17.77c-5.76 3.79-12.18 6.91-19.26 9.38s-14.49 3.7-22.22 3.7Zm-32.34-75.04h53.82c0-9.38-2.06-16.74-6.17-22.09-4.12-5.35-10.29-8.02-18.52-8.02-7.08 0-13.37 2.59-18.89 7.78-5.52 5.18-8.93 12.63-10.25 22.34ZM107.25 4.65c14.12 6.58 20.23 23.36 13.65 37.48L55.79 181.71c-6.59 14.12-23.37 20.22-37.49 13.64-14.12-6.59-20.23-23.37-13.65-37.48l65.1-139.58C76.34 4.17 93.12-1.93 107.24 4.65m45.08 89.09c-14.12-6.58-30.91-.47-37.49 13.64l-23.55 50.48c-6.59 14.12-.48 30.9 13.65 37.48 14.12 6.58 30.91.47 37.49-13.64l23.55-50.49c6.59-14.12.47-30.9-13.65-37.48" /> </svg> </a> </li> <li class="navigation__item "> <a href="/newsticker/it/" class="navigation__head " name="rubriknavi.ho.it" >IT</a> </li> <li class="navigation__item "> <a href="/newsticker/wissen/" class="navigation__head " name="rubriknavi.ho.wissen" >Wissen</a> </li> <li class="navigation__item "> <a href="/newsticker/mobiles/" class="navigation__head " name="rubriknavi.ho.mobiles" >Mobiles</a> </li> <li class="navigation__item "> <a href="/developer/" class="navigation__head " name="rubriknavi.ho.developer" >Developer</a> </li> <li class="navigation__item "> <a href="/newsticker/entertainment/" class="navigation__head " name="rubriknavi.ho.entertainment" >Entertainment</a> </li> <li class="navigation__item "> <a href="/newsticker/netzpolitik/" class="navigation__head " name="rubriknavi.ho.netzpolitik" >Netzpolitik</a> </li> <li class="navigation__item "> <a href="/newsticker/wirtschaft/" class="navigation__head " name="rubriknavi.ho.wirtschaft" >Wirtschaft</a> </li> <li class="navigation__item "> <a href="/newsticker/journal/" class="navigation__head " name="rubriknavi.ho.journal" >Journal</a> </li> </ul> <div class="navigation__list navigation__list--horizontal"> <a href="/newsticker/" class=" link navigation__item " name="header.ho.newstickerdropdown.siebentage" > <span > Newsticker </span> </a> <a href="/forum/" class=" link navigation__item " name="header.ho.forum" > <span > Foren </span> </a> </div> </nav> </div> <nav class="top-topics"> <div class="top-topics__section"> <ul class="topics top-topics__list" > <li class="topics__item top-topics__item"> <a class="a-tag" href="/thema/K%C3%BCnstliche-Intelligenz" name="themen.developer.Künstliche Intelligenz 🤖" title="News und Artikel zum Thema Künstliche Intelligenz 🤖" > Künstliche Intelligenz 🤖 </a> </li> <li class="topics__item top-topics__item"> <a class="a-tag" href="/thema/Windows" name="themen.developer.Windows 🪟" title="News und Artikel zum Thema Windows 🪟" > Windows 🪟 </a> </li> <li class="topics__item top-topics__item"> <a class="a-tag" href="/thema/Energie" name="themen.developer.Energie 🔥" title="News und Artikel zum Thema Energie 🔥" > Energie 🔥 </a> </li> <li class="topics__item top-topics__item"> <a class="a-tag" href="/thema/elektronische-Patientenakte-%28ePA%29" name="themen.developer.ePA für alle 📂" title="News und Artikel zum Thema ePA für alle 📂" > ePA für alle 📂 </a> </li> <li class="topics__item top-topics__item"> <a class="a-tag" href="/thema/Raumfahrt" name="themen.developer.Raumfahrt 🚀" title="News und Artikel zum Thema Raumfahrt 🚀" > Raumfahrt 🚀 </a> </li> <li class="topics__item top-topics__item"> <a class="a-tag" href="https://www.heise.de/Hoeren-Sie-von-uns-unsere-Podcasts-4206659.html" name="themen.developer.Podcasts 🎙" title="News und Artikel zum Thema Podcasts 🎙" > Podcasts 🎙 </a> </li> <!-- Alle Themen-Link soll erst nach Launch der Ziel-Seite ausgegeben werden <li class="topics__item top-topics__item"> <a class="topics__arrow-link" href="/themen/" name="themen.developer.allethemen" title="Alle Themen" > Alle Themen <svg class="topics__arrow"> <use href="/icons/common-icons.svg#arrow-right"></use> </svg> </a> </li> --> </ul> </div> <div class="top-topics__section top-topics__ad"> <span class="wrbg-note top-topics__label"> Anzeige </span> <a href="https://it-kenner.heise.de/it-summit-by-heise/" class=" a-tag top-topics__item a-tag--ad " name="themen.ho.nativelink" title="IT Summit" > IT Summit </a> <a href="https://it-kenner.heise.de/secure-it-fuer-unternehmen/" class=" a-tag top-topics__item a-tag--ad " name="themen.ho.nativelink" title="Secure IT für Unternehmen" > Secure IT für Unternehmen </a> </div> </nav> </a-collapse-group> <div class=" notification-links navigation__list navigation__list--horizontal a-u-hide-from-tablet " > <a href="/newsletter/" class=" link navigation__item notification-links__link " name="header.ho.newstickerdropdown.newsletter" data-google-interstitial=false > <svg class="link__svg" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin" viewBox="0 0 24 24"> <path id="paper-plane-outline" d="M24,3,0,10l7.92,4.4L8,20l3.78-3.46L18,20ZM17,17.34l-5.48-3L20.85,6.4ZM20.46,5.9,9.6,13.25,4.66,10.51Z" transform="translate(0)"/> </svg> <span > Newsletter </span> </a> <a href="/benachrichtigungen/heise-bot/" class=" link navigation__item notification-links__link " name="header.ho.newstickerdropdown.heisebotti" data-google-interstitial=false > <svg id="logo-botti" xmlns="http://www.w3.org/2000/svg" class="link__svg" viewBox="0 0 24 24" > <title>heise-Bot</title> <path d="M9.3,17.66c-.24.56-.62,1.21-1.32,1.21A.89.89,0,0,1,7.05,18a3,3,0,0,1,.36-1.14l3.18-7.26c.24-.55.55-.95,1.18-.95a.86.86,0,0,1,.89.89A3.36,3.36,0,0,1,12.25,11Zm2.76,1.21c.71,0,1.08-.63,1.34-1.2L14.58,15A3.74,3.74,0,0,0,15,13.59a.86.86,0,0,0-.89-.89c-.64,0-.94.43-1.19,1l-1.42,3.2A2.65,2.65,0,0,0,11.16,18,.86.86,0,0,0,12.06,18.87ZM23.64,8.3a1,1,0,0,0-1.53,1.08A9.42,9.42,0,0,1,19,10.68c-.52-4.49-4.34-7.14-8.87-7.14A10.33,10.33,0,0,0,4.4,5.22,11.49,11.49,0,0,1,2.09,1.78,1,1,0,0,0,2.51.91,1,1,0,0,0,.56,1a1,1,0,0,0,1,.91,15.71,15.71,0,0,1,1,4.84,10.36,10.36,0,0,0-2.58,7c0,5.77,4.64,9.85,10.27,9.85a10.08,10.08,0,0,0,7.47-3.53l-.42-.63a7.92,7.92,0,0,1-1,.86,10.65,10.65,0,0,1-6.16,1.94A7.51,7.51,0,0,1,2.7,14.53c0-4.82,1.92-9.13,7.37-9.13,4.07,0,7.37,2.74,7.37,7a6.65,6.65,0,0,1-1.46,4l.72.62a7.79,7.79,0,0,0,2.23-3.91,16,16,0,0,1,3.51-3.27,1,1,0,0,0,1.35-.17A1,1,0,0,0,23.64,8.3ZM10.08,21c.39.09.18-.36.48-.56s.75-.39.81-.69a1.58,1.58,0,0,1-.93.05,6.43,6.43,0,0,1-1.27-.49,2,2,0,0,0,.15,1A1,1,0,0,0,10.08,21Z" transform="translate(0 0)"/> </svg> <span > heise-Bot </span> </a> <a href="/benachrichtigungen" class=" link navigation__item notification-links__link " name="header.ho.newstickerdropdown.pushnachrichten" data-google-interstitial=false > <svg id="cp-bell-outline" xmlns="http://www.w3.org/2000/svg" class="link__svg" viewBox="0 0 24 24" > <title>Push Nachrichten</title> <path d="M15,20.9c0,1.6-1.3,2.9-3,3c-1.6-0.1-2.9-1.4-3-3h1.7c0,0,0,0,0,0.1c0,0.7,0.6,1.3,1.3,1.3 c0.7,0,1.3-0.6,1.3-1.3c0,0,0,0,0-0.1H15z M21.9,17.2v1.7H2.1v-1.7C6.9,15.6,4.2,6.7,8.9,4c0.6-0.4,1-1.1,1-1.8l0,0 c0-1,0.7-2,1.7-2.2C11.9,0,12.1,0,12.4,0c1,0.2,1.7,1.1,1.7,2.1l0,0c0,0.7,0.4,1.4,1,1.8C19.7,6.7,17.1,15.6,21.9,17.2z M19.2,16.9 c-4-2-1.4-9.6-5.8-12.2c-0.1-0.1-0.2-0.1-0.4-0.2c-0.3-0.2-0.6-0.3-1-0.3c-0.3,0-0.6,0.1-0.9,0.2c-0.2,0.1-0.3,0.1-0.5,0.2 C6.1,7.4,8.8,14.9,4.8,16.9H19.2z"/> </svg> <span class="a-u-hide-from-tablet"> Push </span> <span class="a-u-show-from-tablet"> Push-Nachrichten </span> </a> <a-color-scheme class="a-u-show-from-tablet a-cholor-scheme-tablet"></a-color-scheme> </div> <nav class="sitemap sitemap-group--in-navigation" aria-label="Sitemap"> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header navigation__head " data-collapse-trigger > IT News </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--newsticker"> <a href="/newsticker" title="heise online - Newsticker" name="header.ho.sitemap.newsticker" data-google-interstitial=false class="sitemap-group__link " >Newsticker</a> </li> <li class="sitemap-group__item sitemap-group__item--Hintergründe"> <a href="/hintergrund" title="heise online - Hintergründe" name="header.ho.sitemap.Hintergründe" data-google-interstitial=false class="sitemap-group__link " >Hintergründe</a> </li> <li class="sitemap-group__item sitemap-group__item--Ratgeber"> <a href="/ratgeber" title="heise online - Ratgeber" name="header.ho.sitemap.Ratgeber" data-google-interstitial=false class="sitemap-group__link " >Ratgeber</a> </li> <li class="sitemap-group__item sitemap-group__item--Tests"> <a href="/tests" title="heise online - Testberichte" name="header.ho.sitemap.Tests" data-google-interstitial=false class="sitemap-group__link " >Tests</a> </li> <li class="sitemap-group__item sitemap-group__item--Meinung"> <a href="/meinung" title="heise online - Meinungen" name="header.ho.sitemap.Meinung" data-google-interstitial=false class="sitemap-group__link " >Meinungen</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header navigation__head " data-collapse-trigger > Online-Magazine </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--heiseplus"> <a href="/plus/" title="heise+ - Immer mehr Wissen." name="header.ho.sitemap.heiseplus" data-google-interstitial=false class="sitemap-group__link sitemap-group__link--heiseplus" >heise<span class="sitemap_group__heiseplus-icon">+</span></a> </li> <li class="sitemap-group__item sitemap-group__item--tp"> <a href="/tp/" title="Telepolis" name="header.ho.sitemap.tp" data-google-interstitial=false class="sitemap-group__link " >Telepolis</a> </li> <li class="sitemap-group__item sitemap-group__item--autos"> <a href="/autos/" title="heise Autos – News, Tests, Technik, Service rund ums Auto" name="header.ho.sitemap.autos" data-google-interstitial=false class="sitemap-group__link " >heise Autos</a> </li> <li class="sitemap-group__item sitemap-group__item--bestenlisten"> <a href="/bestenlisten" title="bestenlisten by TechStage" name="header.ho.sitemap.bestenlisten" data-google-interstitial=false class="sitemap-group__link " >bestenlisten</a> </li> <li class="sitemap-group__item sitemap-group__item--tipps-tricks"> <a href="/tipps-tricks/" title="tipps+tricks" name="header.ho.sitemap.tipps-tricks" data-google-interstitial=false class="sitemap-group__link " >tipps+tricks</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group sitemap-group--2-col" has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header navigation__head " data-collapse-trigger > Services </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--Shop"> <a href="https://shop.heise.de/" title="heise Shop – IT Fachzeitschriften, Bücher, CD/DVD/Blu-ray" name="header.ho.sitemap.Shop" data-google-interstitial=false class="sitemap-group__link " >heise Shop</a> </li> <li class="sitemap-group__item sitemap-group__item--Arbeiten bei Heise"> <a href="https://jobs.heise.de/" title="heise jobs – Jobbörse für qualifizierte Fach- und Führungskräfte aus der IT-Branche" name="header.ho.sitemap.Arbeiten bei Heise" data-google-interstitial=false class="sitemap-group__link " >Stellenmarkt</a> </li> <li class="sitemap-group__item sitemap-group__item--heise academy"> <a href="https://heise-academy.de/" title="heise academy - Weiterbildung für IT-Profis von heise medien" name="header.ho.sitemap.heise academy" data-google-interstitial=false class="sitemap-group__link " >heise academy</a> </li> <li class="sitemap-group__item sitemap-group__item--download"> <a href="/download/" title="heise Download – Software zum Download für Windows, Mac, Linux, iPhone, Symbian, Android" name="header.ho.sitemap.download" data-google-interstitial=false class="sitemap-group__link " >heise Download</a> </li> <li class="sitemap-group__item sitemap-group__item--heise preisvergleich"> <a href="https://preisvergleich.heise.de" title="heise preisvergleich – Günstige Preise, Meinungen und Bewertungen zu vielen Produkten" name="header.ho.sitemap.heise preisvergleich" data-google-interstitial=false class="sitemap-group__link " >heise preisvergleich</a> </li> <li class="sitemap-group__item sitemap-group__item--Tarifrechner"> <a href="https://www.heise.de/tarifrechner" title="Tarifrechner" name="header.ho.sitemap.Tarifrechner" data-google-interstitial=false class="sitemap-group__link " >Tarifrechner</a> </li> <li class="sitemap-group__item sitemap-group__item--heise compaliate"> <a href="https://compaliate.heise.de/" title="heise compaliate – Entdecke die heise Affiliate Plattform" name="header.ho.sitemap.heise compaliate" data-google-interstitial=false class="sitemap-group__link " >heise compaliate</a> </li> <li class="sitemap-group__item sitemap-group__item--Abo bestellen"> <a href="https://shop.heise.de/zeitschriften-abo/" title="Abo – c't, iX, c't Fotografie, Mac & i, Make" name="header.ho.sitemap.Abo bestellen" data-google-interstitial=false class="sitemap-group__link " >Abo bestellen</a> </li> <li class="sitemap-group__item sitemap-group__item--Mein Abo"> <a href="https://www.heise.de/sso/registration/add_subscriber_id?forward=https%3A%2F%2Fwww.heise.de%2F" title="Abo verwalten - Mein persönlicher Abo-Bereich" name="header.ho.sitemap.Mein Abo" data-google-interstitial=false class="sitemap-group__link " >Mein Abo</a> </li> <li class="sitemap-group__item sitemap-group__item--Netzwerktools"> <a href="https://www.heise.de/tools/" title="heise online - Netzwerktools" name="header.ho.sitemap.Netzwerktools" data-google-interstitial=false class="sitemap-group__link " >Netzwerktools</a> </li> <li class="sitemap-group__item sitemap-group__item--iMonitor"> <a href="https://www.heise.de/netze/netzwerk-tools/imonitor-internet-stoerungen/" title="heise iMonitor" name="header.ho.sitemap.iMonitor" data-google-interstitial=false class="sitemap-group__link " >iMonitor</a> </li> <li class="sitemap-group__item sitemap-group__item--loseblattwerke"> <a href="/loseblattwerke/" title="Loseblattwerke" name="header.ho.sitemap.loseblattwerke" data-google-interstitial=false class="sitemap-group__link " >Loseblattwerke</a> </li> <li class="sitemap-group__item sitemap-group__item--spiele"> <a href="https://spiele.heise.de" title="heise Spiele" name="header.ho.sitemap.spiele" data-google-interstitial=false class="sitemap-group__link " >Spiele</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header navigation__head " data-collapse-trigger > Über Uns </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--heise medien"> <a href="https://www.heisegroup.de/artikel/heise-medien-3904998.html" title="heise medien - Hochwertiger und unabhängiger Journalismus" name="header.ho.sitemap.heise medien" data-google-interstitial=false class="sitemap-group__link " >heise medien</a> </li> <li class="sitemap-group__item sitemap-group__item--heise regioconcept"> <a href="https://www.heise-regioconcept.de/" title="heise regioconcept - Regionales Marketing für Unternehmen" name="header.ho.sitemap.heise regioconcept" data-google-interstitial=false class="sitemap-group__link " >heise regioconcept</a> </li> <li class="sitemap-group__item sitemap-group__item--heise Business Services"> <a href="https://business-services.heise.de/" title="heise Business Services – Produkte und Lösungen namhafter IT-Hersteller" name="header.ho.sitemap.heise Business Services" data-google-interstitial=false class="sitemap-group__link " >heise Business Services</a> </li> <li class="sitemap-group__item sitemap-group__item--heise96"> <a href="https://www.heisegroup.de" title="Sponsoring Hannover 96" name="header.ho.sitemap.heise96" data-google-interstitial=false class="sitemap-group__link " >Sponsoring<img src="/icons/ho/h96-logo.svg" width="48" height="55" alt="Logo Hannover 96" class="sitemap-group__img sitemap-group__img--h96" loading="lazy" /></a> </li> <li class="sitemap-group__item sitemap-group__item--mediadaten"> <a href="https://mediadaten.heise.de/" title="Mediadaten heise medien" name="header.ho.sitemap.mediadaten" data-google-interstitial=false class="sitemap-group__link " >Mediadaten</a> </li> <li class="sitemap-group__item sitemap-group__item--Karriere"> <a href="https://www.heisegroup.de/artikel/heise-als-Arbeitgeber-1812545.html" title="Arbeiten bei heise – Heise als Arbeitgeber" name="header.ho.sitemap.Karriere" data-google-interstitial=false class="sitemap-group__link " >Karriere</a> </li> <li class="sitemap-group__item sitemap-group__item--presse"> <a href="https://www.heisegroup.de/presse/" title="Pressemitteilungen und Interviews" name="header.ho.sitemap.presse" data-google-interstitial=false class="sitemap-group__link " >Presse</a> </li> </ul> </div> </a-collapse> </nav> <div class="header__login"> <svg class="header__login-icon"> <use href="/icons/common-icons.svg#login"></use> </svg> <a-login label="" class="header__login-link"></a-login> </div> <a-color-scheme class="a-u-hide-from-tablet a-cholor-scheme-mobile"></a-color-scheme> </div> </a-collapse> </header> </div> </div> <script> performance.mark('HEADER Ende'); performance.measure('HEADER', 'HEADER Anfang', 'HEADER Ende'); </script> <div class="a-layout__container a-layout__container--full-width"> <div class="a-layout__item a-layout__item--full-width"> <div> <div id="HEI_D_Stage-label" style="display: none;" class="ad-label" >Anzeige</div> <div id="HEI_D_Stage" class="ad ad--stage" ></div> </div> </div> </div> <div class=" a-layout__container" > <div class=" a-layout__item " > <script>performance.mark('CONTENT Anfang');</script> <article class=" article-layout a-theme--developer js-upscore-article-content " id="meldung" data-article-type="Meldung" > <div class="article-layout__header-container"> <!-- RSPEAK_START --> <header class=" a-article-header "> <h1 class=" a-article-header__title " dir="ltr" >Strategien und Techniken zur Fehlerprävention </h1> <p class="a-article-header__lead" dir="ltr"> Irren ist menschlich, und Fehler passieren – insbesondere in der Softwareentwicklung. Qualitätssicherung soll dafür sorgen, dass die Software trotzdem fehlerarm zum Kunden geht. Aber vielleicht geht es ja besser? Können Entwickler Vorsorge betreiben, um das Entstehen von Fehlern zu verhindern? </p> <!-- RSPEAK_STOP --> <div class=" a-article-header__service a-article-header__service--right " > <a href="https://getpocket.com/save?url=https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html" class=" a-article-action a-article-action--pocket " name="meldung.developer.header.pocket" target="_blank" rel="nofollow noopener noreferrer" title="In Pocket speichern" > <svg class="a-article-action__icon"> <use href="/icons/common-icons.svg#pocket"></use> </svg> <span class="a-u-sr-only">In Pocket speichern</span> </a> <a href="//app-eu.readspeaker.com/cgi-bin/rsent?customerid=4407&lang=de_de&readid=meldung&url=https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html%3Fseite%3Dall" title="Beitrag vorlesen und MP3-Download" class="a-article-action js-article-header__readspeaker" name="meldung.developer.header.vorlesen" data-read-aloud-url="https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html%3Fseite%3Dall" data-iso-language-code="de" target="_blank" rel="nofollow noopener noreferrer" > <span class="a-u-sr-only">vorlesen</span> <svg class="a-article-action__icon"> <use href="/icons/common-icons.svg#readspeaker"></use> </svg> </a> <a href="/ratgeber/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html?view=print" class=" link a-article-action a-u-show-from-tablet " name="meldung.developer.header.drucken" title="Druckansicht" rel="nofollow" > <svg id="" xmlns="http://www.w3.org/2000/svg" class="a-article-action__icon" viewBox="0 0 24 24" > <path d="M22,7H19V2H5V7H2A2,2,0,0,0,0,9v7a2,2,0,0,0,2,2H5v4H19V18h3a2,2,0,0,0,2-2V9A2,2,0,0,0,22,7ZM7,4H17V7H7ZM17,20H7V15H17v5Zm5-5a1,1,0,0,1-1,1H19V13H5v3H3a1,1,0,0,1-1-1V10A1,1,0,0,1,3,9H21a1,1,0,0,1,1,1Z"/> </svg> <span class="a-u-sr-only" > Druckansicht </span> </a> <a href="/forum/heise-Developer/Kommentare/Strategien-und-Techniken-zur-Fehlerpraevention/forum-365593/comment/" class="a-article-action" name="meldung.developer.header.kommentarelesen" title="Kommentar lesen" > <svg class="a-article-action__icon"> <use href="/icons/common-icons.svg#comment-bubble"></use> </svg> <span class="a-article-action__label"> <span>15</span> <span class="a-u-sr-only">Kommentare lesen</span> </span> </a> </div> <a-lightbox class="article-image" tabindex="1" src="/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg" > <figure > <div class="article-image__gallery-container" > <img src="https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg" srcset=" https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 1008w, https://heise.cloudimg.io/width/610/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 610w, https://heise.cloudimg.io/width/1220/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/1/9/0/4/9/7/5/fehler-25dccc8627c8ff59.jpeg 1220w " sizes="(max-width: 991px) 95vw,610px" alt="Strategien und Techniken zur Fehlerprävention" width="610" height="342" class="legacy-img " loading="eager" decoding="async" style="background-color: #f2f2f2;" onload="this.style=null;" > </div> </figure> </a-lightbox> <!-- RSPEAK_START --> <div class="a-article-header__publish-info"> <div class="a-publish-info "> <time datetime="2016-10-17T07:36:00+02:00" class=" a-datetime a-publish-info__datetime" > <span class=" a-datetime__date a-publish-info__date" >17.10.2016, </span> <span class="a-datetime__time ">07:36 </span> <span class=" a-datetime__word " > <!-- RSPEAK_STOP -->Uhr<!-- RSPEAK_START --> </span> </time> <!-- RSPEAK_STOP --> <div class="a-publish-info__read-time"> <span class="a-publish-info__read-time-value"> Lesezeit: 20 Min. </span> </div> <div class="a-publish-info__branding"> <a href="/developer/"> <div class="a-article-branding a-article-branding--with-hover" title="Ein Beitrag von: Developer" > Developer </div> </a> </div> <!-- RSPEAK_START --> </div> <div class="creator"> <span class="creator__label"> Von </span> <ul class="creator__names"> <li class="creator__name">Joachim Hofer</li> </ul> </div> </div></header> <aside class="article-layout__header-wrbng"> <!-- RSPEAK_STOP --> <div> <div id="HEI_D_Incontent-1-label" style="display: none;" class="ad-label" >Anzeige</div> <div id="HEI_D_Incontent-1" data-size="300x250,300x600,300x3,fluid" class="ad ad--sticky" ></div> </div> <!-- RSPEAK_START --> </aside> </div> <div class="article-layout__content-container"> <div class="article-layout__content" dir="ltr" > <div class="article-content js-upscore-article-content-for-paywall"> <!-- RSPEAK_STOP --> <a-collapse class=" a-box a-box--collapsable a-box--full-bordered a-toc " has-indicator > <header data-collapse-trigger class=" a-box__header " > <span> Inhaltsverzeichnis </span> </header> <div data-collapse-target class="a-box__target"> <div class="a-box__content"> <nav> <ol class="a-toc__list"> <li class="a-toc__item a-toc__item--counter a-toc__item--current"> <span aria-current="page" class="a-toc__text a-toc__text--current" > Strategien und Techniken zur Fehlerprävention </span> <ul class="a-toc__sublist"> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_zwiefache__0" title="Zwiefache Komplexität" data-google-interstitial=false > Zwiefache Komplexität </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_lesbarkeit__1" title="Lesbarkeit, Typsystem, Nullreferenzen" data-google-interstitial=false > Lesbarkeit, Typsystem, Nullreferenzen </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_kognitive__2" title="Kognitive Entlastung durch Lesbarkeit" data-google-interstitial=false > Kognitive Entlastung durch Lesbarkeit </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_das_typsystem__3" title="Das Typsystem – Freund und Helfer" data-google-interstitial=false > Das Typsystem – Freund und Helfer </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_vom_umgang_mit__4" title="Vom Umgang mit Nullreferenzen" data-google-interstitial=false > Vom Umgang mit Nullreferenzen </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_zweierlei__5" title="Zweierlei Komplexität" data-google-interstitial=false > Zweierlei Komplexität </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_komplexität__6" title="Komplexität durch Redundanz" data-google-interstitial=false > Komplexität durch Redundanz </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_komplexität__7" title="Komplexität durch Zustand" data-google-interstitial=false > Komplexität durch Zustand </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_fazit_8" title="Fazit" data-google-interstitial=false > Fazit </a> </li> <li class="a-toc__item a-toc__item--sub"> <a class="a-toc__text a-toc__text--link" href="#nav_literatur__9" title="Literatur " data-google-interstitial=false > Literatur </a> </li> </ul> </li> </ol> </nav> </div> </div> </a-collapse> <!-- RSPEAK_START --> <p>Die klassische Qualitätssicherung ist oft hauptsächlich auf das Finden von Fehlern ausgerichtet, die bereits passiert sind. Im Idealfall findet sie die Fehler durch Einsatz mannigfaltiger Techniken wie statischer Codeanalyse, Reviews und Tests bereits so früh wie möglich nach dem Entstehungszeitpunkt. Aber wenn man Fehler von vornherein vermeiden will, muss man sich als Erstes fragen, wie Fehler überhaupt zustande kommen.</p> <!-- RSPEAK_STOP --> <div class="ad-label" id="HEI_M_Incontent-1-label" style="display: none;">Anzeige</div> <a-paternoster class="a-paternoster-ad" height="360" media="(min-width: 320px) and (max-width: 767px)"> <div> <div class="" id="HEI_M_Incontent-1"></div> </div> </a-paternoster> <!-- RSPEAK_START --> <p>Zur Klärung dieser Frage lohnt es sich, zunächst zu untersuchen, wodurch allgemein menschliche Fehler verursacht werden. Hierfür ist die Kognitionspsychologie eine Fundgrube: Die wesentliche Erkenntnis ist, dass Fehler entstehen, wenn der Mensch kognitiv überlastet ist. Ein typisches Beispiel dafür ist die Überlastung des Arbeitsgedächtnisses: Dieses kann nur etwa fünf bis neun Dinge gleichzeitig parat halten [1]. Das ist sehr wenig, sodass so gut wie alle Entwickler bei der täglichen Arbeit schnell an diese Grenze stoßen wird. Beispielsweise wenn sie sich bei Codeänderungen merken müssen, wo genau sie schon etwas geändert haben, an welchen Stellen welche Änderungen noch ausstehen und was jeweils die zugehörigen Anforderungen sind, während sie gleichzeitig noch die E-Mails im Auge behalten wollen oder gar zwischendurch von hilfesuchenden Kollegen unterbrochen werden. Ganz zu schweigen davon, dass sie vielleicht nicht immer alle Tastenkürzel der Entwicklungsumgebung, alle Syntaxkonstrukte der Programmiersprache und die Semantik der verwendeten Bibliotheken in- und auswendig kennen.<br> </p> <p>Ein Ansatz für das Verhindern von Fehlern ist also, die Komplexität der Arbeitsumgebung zu senken. Dazu gehört neben dem eigentlich bearbeiteten Programmcode das Umfeld, in dem er entsteht, wie am obigen Beispiel zu sehen.</p> <p>Komplexität im Arbeitsumfeld lässt sich oft durch organisatorische Maßnahmen senken: Weiterbildungen können dafür sorgen, kognitive Last vom Arbeits- ins Langzeitgedächtnis zu verlagern, wenn es um das Programmierhandwerk geht (Syntax, Bedienung der Entwicklungsumgebung, Tastaturkürzel, Schnittstellen zu Fremdbibliotheken oder -frameworks). Prozesse können helfen, unnötige Störungen von außen zu reduzieren. Zeitmanagement-Techniken wie <a href="http://pomodorotechnique.com/" rel="external noopener" target="_blank">Pomodoro</a> [a] oder "Getting Things Done" [2] unterstützen dabei, Ablenkungen und unnötigen kognitiven Ballast loszuwerden, der nicht die aktuell bearbeitete Aufgabe betrifft. Das simple Beenden des Mailprogramms während der Arbeit beseitigt einen der größten Störfaktoren. Und nicht zuletzt hat die Gestaltung des Arbeitsplatzes große Auswirkungen darauf, ob man fokussiert arbeiten kann.</p> <h3 class="subheading" id="nav_zwiefache__0">Zwiefache Komplexität</h3> <p>Eine das Arbeitsumfeld betreffende Ergänzung zum alleinigen Senken der kognitiven Last wäre, die eigene Leistungs-/Konzentrationsfähigkeit zu steigern. Dafür gibt es vor allem ein erprobtes Mittel ohne Nebenwirkungen: das hinreichende Entspannen in der Freizeit und das Vermeiden exzessiver Überstunden. Das oberste Ziel dabei ist immer: den Kopf für die eigentliche Arbeit frei zu haben. So profan das auch klingen mag, es hilft bereits dabei, Fehler zu vermeiden. Wenn das Arbeitsumfeld erst einmal stimmt, bleibt die für Entwickler spannendere Frage übrig: Welche Techniken gibt es in der Softwareentwicklung, die helfen, die Komplexität des entwickelten Codes zu reduzieren? Die Frage stellt sich zwar nur, wenn sich Entwickler überhaupt für die Qualität der erstellten Software verantwortlich fühlen, statt das der QS-Abteilung zu überlassen. </p> <p>An der Stelle ist aber glücklicherweise in letzter Zeit ein starkes Umdenken in Gang gekommen, gerade auch in Zusammenhang mit dem Einzug agiler Methoden in die Softwareentwicklung. Entsprechend ist es weit verbreitete Praxis, dass Entwickler Tests schreiben, bevor sie den getesteten Code dazu implementieren (bekannt als "Test-Driven Development" [3]; TDD). Tatsächlich kann dieses helfen, Fehler zu vermeiden. Denn durch TDD werden Entwickler gezwungen, die Sicht der Tester einzunehmen, bevor sie die Funktion "konstruktiv" betrachten, um sie zu implementieren.<br> </p> <p>Das verhindert eine andere Fehlerquelle, die beim nachträglichen Testen durch Entwickler immer eine Gefahr ist: den Bestätigungsfehler (auch "Confirmation Bias"). Er entsteht durch die menschliche Neigung, die Realität mit zuvor gestellten eigenen Erwartungen möglichst in Einklang zu bringen. Im Fall der klassischen Softwareentwicklung mit nachgelagertem Testen bedeutet das: Die Entwickler implementieren zunächst die Funktion, wobei sie ihre eigenen Erwartungen umsetzen und festigen, und danach testen sie die Implementierung gegen genau diese Erwartungen. Der Confirmation Bias sorgt so beim Testen dafür, dass sie unbewusst gar keine Fehler finden wollen.</p> <div class="ad-mobile-group-1"> <div class="ad-label" id="HEI_M_Incontent-3-label" style="display: none;">Anzeige</div> <div class="ad ad--sticky" id="HEI_M_Incontent-3"></div> </div> <p>Der klassische nachgelagerte Softwaretest kennt diese Fehlerquelle natürlich auch, weswegen dort zwischen Testern und Entwicklern meist strikt getrennt wird. Man sollte sich aber bewusst machen, dass dabei leicht über das Ziel hinaus geschossen wird, wenn von einem speziellen Tester-"Mindset" die Rede ist, das Entwickler gar nicht haben können. Entsprechend in Testmethoden ausgebildete Entwickler sind durchaus in der Lage, kritisch zu testen – solange er es im Sinne von TDD tut, bevor sie sich an die Implementierung setzen.</p> <p>So unabdingbar das Testen für die Softwarequalität ist, und so sinnvoll TDD in dem Zusammenhang ist, bleibt jedoch ein Nachteil: Man findet Fehler immer erst nach deren Entstehen. Es ist in diesem Sinne also von der Zielsetzung her immer noch keine echte Vorsorge.</p> <h3 class="subheading" id="nav_lesbarkeit__1">Lesbarkeit, Typsystem, Nullreferenzen</h3> <h3 class="subheading" id="nav_kognitive__2">Kognitive Entlastung durch Lesbarkeit</h3> <p>Was können qualitätsbewusste Entwickler also tun, um von vornherein die Code-Komplexität zu reduzieren? Hierzu können sie sich die Frage stellen, womit sie beim Implementieren die meiste Zeit verbringen. Im Normalfall dürfte das das Lesen (und nicht etwa das Schreiben) von Quelltext sein. Das bedeutet, dass Entwickler ihre kognitive Belastung am besten entlasten können, wenn sie Code so schreiben, dass er möglichst leicht lesbar ist (für ihn selbst und für die Kollegen im Team). Diese Erkenntnis ist Kernthese der "Clean Code"-Bewegung. Tatsächlich sind alle (teils provokanten) Thesen aus Robert C. Martins Buch zu Clean Code [4] darauf ausgerichtet, die Lesbarkeit und Verständlichkeit von Quelltext zu erhöhen.</p> <p>Es ist alles andere als neu, dass kurze Klassen und Methoden besser verständlich und deswegen weniger fehleranfällig sind als lange oder tief verschachtelte. Hierfür gibt es klassische Metriken wie McCabes zyklomatische Komplexität, die sich auch im Rahmen einer statischen Codeanalyse automatisch prüfen lässt. Aber dann ist es bereits wieder zu spät für die Vorsorge. Es ist auch nicht neu, dass sprechende Benennungen helfen, Code verständlicher zu machen. Die Innovation bei Clean Code liegt eher in der Forderung nach kompromissloser Entwicklerdisziplin, den eigenen Code sauber zu halten.<br> </p> <p>Ein einfacher Selbstversuch mit Clean Code kann eindrücklich aufzeigen, wie sehr es entlastet, an lesbarem Code zu arbeiten. Er verdeutlicht, dass es tatsächlich viel Disziplin erfordert, Code von vornherein lesbar zu gestalten. Und er zeigt, dass sich die Mühe auszahlt, die man beispielsweise in die möglichst passende Benennung seiner Klassen und Methoden steckt – nicht zuletzt stellt man fest, dass die Wahl sprechender Namen direkt das gesamte Systemdesign verbessern kann: Wenn Entwickler eine Klasse einführen möchten, aber keinen guten Namen für sie finden, ist das im Normalfall kein Zeichen für fehlende Kreativität, sondern eines dafür, dass am Domänenmodell etwas noch nicht ganz stimmt.</p> <p>Mit der Philosophie von "Clean Code" wurde also ein wichtiger Baustein für Fehlerprävention identifiziert. Die Lesbarkeit oder äußere Form von Quelltext ist aber noch lange nicht alles, was zu dessen Komplexität beiträgt. Mindestens ebenso wichtig ist, auf welche Art und Weise der Code das tut, was er tun soll.</p> <h3 class="subheading" id="nav_das_typsystem__3">Das Typsystem – Freund und Helfer</h3> <p>Ein oft unterschätztes Hilfsmittel ist das Typsystem: Es ist ja gerade Aufgabe eines statischen Typsystems, Fehler bereits für den Compiler auffindbar zu machen, die sonst erst zur Laufzeit auffallen würden, sobald man den fehlerhaften Programmzweig durchläuft. In diesem Sinne ist das Typsystem einer Programmiersprache ihr wichtigstes Bordmittel zur Fehlervermeidung.</p> <p>Leider hat das seinen Preis: Es zwingt einen dazu, an vielen Stellen die Typen explizit hinzuschreiben, was unbequem sein und auch Boilerplate-Code erzeugen kann (also Code, der nur für den Compiler zu schreiben ist, für den Entwickler aber überflüssigen Ballast darstellt). Das lässt sich zwar je nach Programmiersprache mehr oder weniger gut mit Typinferenz abmildern, aber im Normalfall nicht ganz verhindern. Damit es sich im Sinn einer Effizienzsteigerung beim Entwickeln lohnt, ein Typsystem einzusetzen, muss es genügend mächtig sein, dass es nicht nur triviale Fehler findet. Es muss einen in die Lage versetzen, signifikant Anwendungslogik mit domänenspezifischen Typen zu unterstützen, und zwar so, dass tatsächlich unzulässige Zustände im zu lösenden Problemraum zu Compiler-Fehlern führen.</p> <p>Ein einfaches Beispiel für Situationen, in denen es sich fast immer lohnt, auf das Typsystem zurückzugreifen, sind Sonderfallbehandlungen. Und der wohl häufigste anzutreffende in der Entwicklung dürfte der null-Sonderfall sein, von dem Tony Hoare, der "Erfinder" der Nullreferenz, inzwischen selbst sagt, <a href="https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare" rel="external noopener" target="_blank">es sei sein "billion-dollar mistake" gewesen</a>.</p> <h3 class="subheading" id="nav_vom_umgang_mit__4">Vom Umgang mit Nullreferenzen</h3> <p>Es dürfte heute wohl kaum einen Entwickler geben, der sich nicht schon mit Nullreferenzen und den zugehörigen Laufzeitfehlern herumgeschlagen hat, ob sie nun NullPointerException heißen oder NullReferenceException. Das Grundproblem ist, dass Datentypen in den gängigen Programmiersprachen so gut wie immer zusätzlich zu ihrem "normalen" Wertebereich noch einen Nullwert zur Verfügung stellen. Bei Verwendung also von Variablen solcher Datentypen muss sich der Entwickler grundsätzlich immer darum kümmern, beide Fälle zu behandeln.<br> </p> <p>Bei einem Newsletter als Beispiel, der an alle Personen geschickt werden soll, die über ein Webformular neben ihrem Namen ihre E-Mail-Adresse angegeben haben, sieht die Datenstruktur (etwa in Scala) naiv wie im folgenden Listing aus, und das dazugehörige Versenden des Newsletters erfordert eine Abfrage auf null. </p> <pre class="rte__tx--listing">case class Person(name: String, email: String)<br><br>trait Newsletter {<br> val persons: List[Person]<br><br> def sendNewsletterTo(email: String): Unit<br><br> def sendNewsletter: Unit = {<br> for (person <- persons)<br> if (person.email != null) <br> sendNewsletterTo(person.email)<br> }<br>}<br><br>object Main extends App {<br> val newsletter = new Newsletter {<br> val persons = List(<br> Person("Bill", "bill@somewhere.de"), <br> Person("Bob", null))<br><br> def sendNewsletterTo(email: String) = <br> println(email)<br> }<br><br> newsletter.sendNewsletter<br>}</pre> <p>Das Beispiel ist noch einfach genug, dass es keine Probleme bereitet, an die Abfrage auf null zu denken. In komplexen Programmen entstehen aber häufig Fehler genau deshalb, weil man so eine Abfrage vergessen hat. Deswegen gehen viele Entwickler dazu über, in ihren Programmen überall sicherheitshalber Nullprüfungen vorzunehmen, ob sie notwendig sind oder nicht. Dieser defensive Programmierstil verhindert zwar dann genau diese Fehlerquelle, allerdings werden dadurch die Programme deutlich unübersichtlicher und unlesbarer als nötig, was wiederum eine eigene Fehlerquelle ist.<br> </p> <p>Die Alternative ist hier, die Option der E-Mail-Adresse mit dem Typsystem zu adressieren. Dafür gibt es ein allgemeines Rezept in Form des Option-Datentyps. So ein Summentyp kann entweder leer sein (hat also den Untertyp <em>None</em>) oder enthält wie im folgenden Beispiel einen String (also den Untertyp <em>Some[String]</em>). </p> <pre class="rte__tx--listing">case class Person(name: String, email: Option[String])<br><br>trait Newsletter {<br> val persons: List[Person]<br><br> def sendNewsletterTo(email: String): Unit<br><br> def sendNewsletter: Unit = {<br> for (person <- persons)<br> person.email foreach sendNewsletterTo<br> }<br>}<br><br>object Main extends App {<br> val newsletter = new Newsletter {<br> val persons = List(<br> Person("Bill", Some("bill@somewhere.de")), <br> Person("Bob", None))<br><br> def sendNewsletterTo(email: String) = <br> println(email)<br> }<br><br> newsletter.sendNewsletter<br>}</pre> <p>Der Trick ist hier, dass die Option den Entwickler zwingt, an die Sonderbehandlung für den Fall einer nicht vorhandenen E-Mail-Adresse zu denken.</p> <p>Wer Entwickler allerdings zu etwas zwingt, sollte tunlichst dafür sorgen, dass es trotzdem bequem bleibt, den <em>None</em>-Sonderfall zu behandeln. Und das ist es glücklicherweise in Sprachen wie Scala und F#, die einen Option-Datentyp enthalten, der sich dank Funktionen höherer Ordnung (wie map und flat-Map) angenehm in seine Umgebung integriert. In Java war das leider lange nicht der Fall (zumindest vor Java 8), was wohl jeder schon erlebt hat, der beispielsweise mit Optional aus der Guava-Bibliothek arbeitet.</p> <p>Aber selbst in Java gab es schon frühereinen Ausweg, den Spezialfall mit dem Typsystem abzufangen, ohne sich zu verrenken. Ganz klassisch objektorientiert können Entwickler die Personen per Subclassing in Personen mit und ohne E-Mail-Adresse unterteilen. Das Versenden der Newsletter-E-Mail erledigt dann die jeweilige Unterklasse via Dynamic Dispatch (s. folgendes Listing).</p> <pre class="rte__tx--listing">sealed trait Person {<br> def name: String<br> def sendNewsletter(newsletter: Newsletter): Unit<br>}<br><br>case class PersonWithEmail(name: String, email: String)<br> extends Person {<br><br> def sendNewsletter(newsletter: Newsletter) = <br> newsletter.sendNewsletterTo(email)<br>}<br><br>case class PersonWithoutEmail(name: String)<br> extends Person {<br><br> def sendNewsletter(newsletter: Newsletter) = {<br> /* nothing to do */ <br> }<br>}<br><br>trait Newsletter {<br> val persons: List[Person]<br><br> def sendNewsletterTo(email: String): Unit<br><br> def sendNewsletter: Unit =<br> for (person <- persons) <br> person.sendNewsletter(this)<br>}<br><br>object Main extends App {<br> val newsletter = new Newsletter {<br> val persons = List(<br> PersonWithEmail("Bill", "bill@somewhere.de"), <br> PersonWithoutEmail("Bob"))<br> def sendNewsletterTo(email: String) = <br> println(email)<br> }<br><br> newsletter.sendNewsletter<br>}</pre> <p>Dadurch lassen sich nicht nur Nullprüfungen mit dem Typsystem abfangen, sondern auch viele andere Sonderfälle. Das ist für die meisten nichts Neues. In der Praxis ist allerdings leider häufig zu beobachten, dass stattdessen if-Abfragen verwendet werden, die zu später entdeckten Laufzeitfehlern und aufwendiger Fehleranalyse führen, wo schon der Compiler einen Fehler hätte melden können.</p> <h3 class="subheading" id="nav_zweierlei__5">Zweierlei Komplexität</h3> <h3 class="subheading" id="nav_komplexität__6">Komplexität durch Redundanz</h3> <p>Eine andere wesentliche Erscheinungsform überflüssiger Komplexität – bei der der Compiler allerdings nichts hilft – ist Komplexität durch Redundanz. Es gibt viele Arten von Redundanz, aber die meisten entstehen beim Programmieren durch Copy & Paste. Code wird kopiert, weil es bequem ist und schnell geht. Was allerdings oft vernachlässigt wird, ist, wie sich das auf die Wartbarkeit auswirkt. Eine eigentlich einfache Änderung kann bei zu viel kopiertem Quelltext zu enormem Aufwand führen: Plötzlich ist die Änderung an zig Stellen einzupflegen, und Entwickler wissen hinterher nicht einmal mit Sicherheit, ob er an alle solchen Stellen gedacht hat. Und genau auf diese Weise entsteht aus Redundanz dann Komplexität – wieder muss man beim Entwickeln Seiteneffekte im Blick behalten ("Wo muss ich das noch überall ändern?"), was das Arbeitsgedächtnis unnötig belastet.<br> </p> <p>Die Regel, Code nicht zu kopieren und stattdessen zu abstrahieren, sobald er an zwei oder mehr Stellen benötigt wird, hört sich allerdings leider einfacher einhaltbar an, als sie es in der Praxis zu sein scheint. Oft unterscheiden sich Codestellen in ein paar kleinen Details, sodass man nicht mehr einfach nur eine Unterfunktion ausgliedern kann. Im nächsten Codebeispiel sehen die Leser als (etwas konstruiertes) Beispiel die Ergebnisverarbeitung zweier solchermaßen "ähnlicher" Datenbankaufrufe. </p> <pre class="rte__tx--listing">def getNumPersons(query: PreparedStatement): Long = {<br> val results = query.executeQuery<br> try {<br> results.next<br> return results.getLong("numPersons")<br> } finally {<br> results.close<br> }<br>}<br><br>def getNumPersonsNamed(<br> name: String, query: PreparedStatement): Int = {<br> query.setString(1, name)<br> val results = query.executeQuery<br> try {<br> results.next<br> return results.getInt("numNamedPersons")<br> } finally {<br> results.close<br> }<br>}</pre> <p>Das sieht nach viel dupliziertem Code aus, aber was tun? Im hektischen Arbeitsalltag erlebt man oft, dass an dieser Stelle aufgegeben wird: zu kompliziert, zu unbequem. Je nach Programmierparadigma gibt es aber zwei einfache Lösungsansätze: das Template Method Pattern (objektorientiert) und Higher-Order Functions (funktional). Der erste Ansatz erfordert eine abstrakte Basisklasse, in der der kopierte Code als Schablone angelegt ist. Die variierenden Codestellen bleiben abstrakt: </p> <pre class="rte__tx--listing">abstract class NumPersons[T] {<br> final def get(query: PreparedStatement): T = {<br> initializeQueryParameters<br> val results = query.executeQuery<br> try {<br> results.next<br> return valueOf(results)<br> } finally {<br> results.close<br> }<br> }<br><br><br> // abstract<br> def initQueryParams(query: PreparedStatement): Unit<br><br> // abstract<br> def valueOf(results: ResultSet): T <br>}<br><br>class NumAllPersons extends NumPersons[Long] {<br> def initQueryParams(query: PreparedStatement) = { <br> /* nothing to do */ <br> }<br> def valueOf(results: ResultSet): Long = <br> results.getLong("numPersons")<br>}<br><br>class NumNamedPersons(name: String) <br> extends NumPersons[Int] {<br><br> def initQueryParams(query: PreparedStatement) = <br> query.setString(1, name)<br> def valueOf(results: ResultSet): Int = <br> results.getInt("numNamedPersons")<br>}</pre> <p>"Higher-Order Functions" erfordern statt der Vererbungshierarchie, dass die aufgerufene "kopierte" Funktion die variierenden Stellen als Funktionen mit hineingereicht bekommt, die sie dann passend aufruft:</p> <pre class="rte__tx--listing">def getNumAllPersons(query: PreparedStatement): Long =<br> getNumPersons(query, <br> _ => (), <br> _.getLong("numPersons"))<br><br>def getNumPersonsNamed(<br> name: String, query: PreparedStatement): Int = <br> getNumPersons(query, <br> _.setString(1, name), <br> _.getInt("numNamedPersons"))<br><br>def getNumPersons[T](query: PreparedStatement, <br> initQueryParams: PreparedStatement => Unit, <br> valueOf: ResultSet => T): T = {<br> initQueryParams(query)<br> try {<br> results.next<br> return valueOf(results)<br> } finally {<br> results.close<br> }<br>}</pre> <p>Der Ansatz funktioniert nur gut, wenn die Sprache Lambda-Ausdrücke gut unterstützt, was zum Glück bei den meisten modernen Sprachen der Fall ist. Aber egal wie man es genau macht, in jedem Fall ist es alles andere als ein Ding der Unmöglichkeit, die Quelltext-Kopiererei zu vermeiden.</p> <h3 class="subheading" id="nav_komplexität__7">Komplexität durch Zustand</h3> <p>Zu guter Letzt noch ein weiterer Aspekt, der starken Einfluss auf die Komplexität beim Entwickeln hat: der veränderliche Zustand. Das zustandsorientierte Programmieren stammt aus einer Zeit, in der es absolut notwendig war, in einzelnen Speicherzellen zu denken und diese direkt zu ändern. Das hat sich inzwischen allerdings stark gewandelt. In der Regel ist Speicherplatz inzwischen nicht mehr das Hauptproblem. An seine Stelle treten langsam, aber sicher Themen wie die Parallelisierung. <a href="https://www.infoq.com/presentations/Value-Values" rel="external noopener" target="_blank">Die Sicht auf das Programmieren ist aber immer noch sehr bestimmt von Variablen, die ständig zu ändern sind</a>. </p> <p>Veränderlicher Zustand erzeugt aber Komplexität. Dem menschlichen Gehirn fällt es im Allgemeinen schwer, von außen nachzuvollziehen, in welchem Zustand sich ein System befindet. Das merkt man insbesondere dann, wenn man Objekte mit komplexem inneren Zustand systematisch testen möchte: Ein paar einfache Beispiele und Spezialfälle reichen plötzlich als Testfälle bei weitem nicht mehr aus. Stattdessen ist aufwendig der gesamte Zustandsgraph des Objekts abzudecken. Viel einfacher dagegen ist das Testen von Funktionen, die keine Seiteneffekte haben: Sie liefern für gleiche Eingabe- immer gleiche Ausgabewerte. So fällt auch das Nachvollziehen solcher Funktionen deutlich leichter.<br> </p> <p>Es ist von Vorteil, möglichst weite Teile des Quelltexts zustandsfrei zu halten, um die Komplexität zu senken. Das ist in der Theorie allerdings leichter gesagt, als in der Praxis getan. Ein Zustand ist in der Programmierung überall zwangsläufig erforderlich, wo Ein- und Ausgabe passiert: etwa bei Events aus einer Bedienoberfläche oder beim Zugriff auf Datenbanken. </p> <p>Zum Glück schaffen hier moderne Programmierkonzepte Abhilfe. Bei Events kann der Entwickler heute ohne Callbacks auskommen und veränderlichen Zustand vermeiden, wenn er reaktiv arbeitet, wie es beispielsweise in der .NET-Welt via <a href="https://msdn.microsoft.com/library/hh242985.aspx" rel="external noopener" target="_blank">Rx</a> ("Reactive Extensions") möglich ist. Auch Datenbanken gehen zunehmend in eine "ereignisorientierte" Richtung, wo Daten historisiert werden, statt direkt Änderungen daran vorzunehmen.</p> <p>Das Grundprinzip ist dabei immer, <a href="http://www.datomic.com/" rel="external noopener" target="_blank">Daten an einem Zeitstrahl anzuordnen, statt sie zu ändern</a>. Eine Änderung ist in diesem Sinn ein Ereignis auf dem Zeitstrahl, ab dem dann andere Fakten vorhanden sind als vorher. Die vorherigen Fakten sind aber unverändert vorhanden und abfragbar. Datenstrukturen, die diesen Mechanismus effizient unterstützen, nennt man deshalb auch persistente Datenstrukturen. Ihre Speichereffizienz ist besser, als man auf den ersten Blick vielleicht meinen könnte, insbesondere auch im Hinblick auf Szenarien mit Parallelität, wo die Alternative direkter Änderungen schnell dazu führt, dass man viele defensive Kopien vorhalten muss. Und die Komplexität, die sonst durch unkontrolliert veränderlichen Zustand entsteht, kann man dank dieser Datenstrukturen so gut wie vollständig loswerden.</p> <h3 class="subheading" id="nav_fazit_8">Fazit</h3> <p>Es gibt mannigfaltige Techniken, Komplexität zu reduzieren. Sie sind im Grunde alle nicht neu. Setzt man sie aber konsequent um und behält auch sonst immer im Blick, wo Komplexität notwendig und wo sie überflüssig ist, haben Programmierer die Chance, einen großen Teil der kognitiven Last beim Entwickeln loszuwerden. Diese Entlastung wiederum hilft nicht nur, den Stress beim Entwickeln zu reduzieren, sondern auch tatsächlich Fehler von vornherein zu vermeiden. Die Tester werden es einem genauso danken wie die Mitentwickler. </p> <p><em>Joachim Hofer<br>ist Softwareentwickler bei Zalando. Davor studierte er Informatik an der Friedrich-Alexander-Universität Erlangen-Nürnberg und leitete bei der imbus AG das TestBench-Entwicklungsteam.</em></p> <h5 id="nav_literatur__9">Literatur<br> </h5> <ol class="rte__list rte__list--ordered"><li>George A. Miller; The magical number seven plus or minus two; Some limits on our capacity for processing informations; Psychological Review 63 8 (1956), S. 81–97</li><li>David Allen; Getting Things Done; Piatkus 2002</li><li>Kent Beck; Test Driven Development By Example; Addison-Wesley 2002</li><li>Robert C. Martin; Clean Code; A Handbook of Agile Software Craftsmanship; Prentice Hall 2008 </li></ol> <p> <!-- RSPEAK_STOP --> <span class="redakteurskuerzel ISI_IGNORE">(<a class="redakteurskuerzel__link" href="mailto:ane@heise.de" title="Alexander Neumann">ane</a>)</span> <!-- RSPEAK_START --> </p> <div class="paywall-delimiter"></div> </div> <!-- RSPEAK_STOP --> <footer class="article-layout__footer"> <a href="/forum/heise-Developer/Kommentare/Strategien-und-Techniken-zur-Fehlerpraevention/forum-365593/comment/" class=" a-button " name="meldung.newsticker.bottom.kommentarelesen" > <svg class="comment-button__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" > <title>comments_outline_white</title> <path id="comments-outline" d="M12,2C5.37,2,0,6.48,0,12a8.87,8.87,0,0,0,2.27,5.83L0,22l5.12-1.84A13.64,13.64,0,0,0,12,22c6.63,0,12-4.48,12-10S18.63,2,12,2Zm0,18a11.6,11.6,0,0,1-6.28-1.78l-2.52.91,1.1-2A7.05,7.05,0,0,1,2,12C2,7.58,6.48,4,12,4s10,3.58,10,8S17.52,20,12,20Z" fill="#fff"/> </svg> <span class="comment-button__text"> Kommentare lesen (15) </span> </a> <a class="a-button a-button--no-margin" href="/developer" name="meldung.developer.bottom.zurstartseite" title="zur Startseite von Developer" > Zur Startseite </a> </footer> <!-- RSPEAK_STOP --> </div> <section class="article-sidebar"> <aside class=" article-newsletter-subscription article-sidebar__item article-sidebar__item--margin-top " aria-role="complementary" > <header class="a-u-mb-3"> <h2 class="article-newsletter-subscription__title"> <div class="a-article-branding " title="Ein Beitrag von: Developer" > Developer </div> <span class="article-newsletter-subscription__subtitle"> Newsletter </span> </h2> </header> <p class="article-newsletter-subscription__text a-u-mb-2"> montags und donnerstags - alles von heise developer </p> <div class="newsletter-subscription-form "> <h3 class="a-u-sr-only" id="input-email-label"> E-Mail-Adresse </h3> <form action="/newsletter/api/v2/subscriptions" method="POST" class="a-form a-u-mb-2" > <a-anti-forgery-input url="/newsletter/api/anti-forgery"></a-anti-forgery-input> <input type="hidden" name="tenant" value="heise_zeitschriften"/> <input type="hidden" name="mailingList" value="NL Redaktion Developer - VERWALTUNG" /> <input type="hidden" name="returnUrl" value="/newsletter/bestaetigung.html?id=developer&success=confirm-subscription&cb03=werbeoptin-nein" /> <input type="hidden" name="errorUrl" value="/newsletter/anmeldung.html?id=developer&error=subscribe" /> <div class="a-form__field a-form__field--combined a-u-no-margin-bottom"> <input class="a-form__input" id="input-email" name="email" type="email" placeholder="E-Mail-Adresse" aria-describedby="input-email-help" aria-labelledby="input-email-label" > <button type="submit" class="a-button" data-on="click:webtrekk.reload()" > Jetzt anmelden </button> </div> </form> <p class="newsletter-subscription-form__help" id="input-email-help"> Ausführliche Informationen zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten erhalten Sie in unserer <a href="https://www.heise.de/Datenschutzerklaerung-der-Heise-Medien-GmbH-Co-KG-4860.html#datenschutz-newsletter" class="a-form__link" data-google-interstitial=false >Datenschutzerklärung</a>. </p> </div> </aside> <div class="js-dossiers-container"></div> <aside class="ad-microsites"> <span class="wrbg-note "> Anzeige </span> <ul class="ad-microsites__list" data-teaser-tracking-name="microsites" data-teaser-tracking-rank="3345353: Strategien und Techniken zur Fehlerprävention" data-teaser-tracking-content="ad-microsites" data-teaser-tracking-id="microsites: 3345353: Strategien und Techniken zur Fehlerprävention" > <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6929462855&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Hybrides UEM: Die Zukunft der Geräteverwaltung </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6912960435&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Wie der IT Service Desk der Zukunft aussieht </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6916665833&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Wenn jede Sekunde bei einem Security-Notfall zählt </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6873714137&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Ein Hacker enthüllt: So funktioniert Ransomware </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6863616882&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Wasserkühlung ist besser als Kühlung mit Luft </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6890178661&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Smarte Entwicklung von KI-Anwendungen </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6885339298&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Special: Zusammen das Datacenter weiterentwickeln </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6794736220&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Checkliste: die perfekte Werbeagentur finden </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6767466175&iu=%2F6514%2FClicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Website erstellen lassen: Lohnt sich die Investition? </span> </a> </li> <li class="ad-microsites__item"> <a href="https://pubads.g.doubleclick.net/gampad/clk?id=6410550944&iu=%2F6514%2Fwww.heise.de%2Fclicktracking%2Ftextlink" class=" link ad-microsites__link " rel="nofollow" target="_blank" > <span > Themenspecial: Secure IT für Unternehmen </span> </a> </li> </ul> </aside> <div id="wtma_teaser_ho_cam_artikel_1" class="article-sidebar__item"></div> <footer class="article-footer"> <!-- RSPEAK_STOP --> <!-- RSPEAK_START --> <div class="article-footer__related-forum"> Forum bei heise online: <a href="/forum/heise-Developer/Themen-Hilfe/Qualitaetssicherung/forum-59942/comment/" title="Zum Themenforum Qualitätssicherung" name="sonderseite.developer.forumzumthema.Qualitätssicherung" >Qualitätssicherung </a> </div> <!-- RSPEAK_STOP --> <div class="article-sharing article-footer__sharing"> <header class=" a-teaser-header a-teaser-header--inline-components " > <div class="a-teaser-header__heading"> Teile diesen Beitrag </div> </header> <div class="article-sharing__links"> <a href="https://getpocket.com/save?url=https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html" name="meldung.newsticker.bottom.sm.share.pocket" title="Später lesen mit Pocket" target="_blank" rel="nofollow" class=" share-link share-link--pocket article-sharing__link" > <svg id="icon-pocket" xmlns="http://www.w3.org/2000/svg" class="share-link__icon share-link__icon--$share_link_service" viewBox="0 0 24 24"> <path id="pocket" d="M3.75,2A2.76,2.76,0,0,0,1,4.75v6.42a11,11,0,0,0,22,0V4.75A2.76,2.76,0,0,0,20.25,2Zm0,1.83h16.5a.91.91,0,0,1,.92.92v6.42a9.17,9.17,0,0,1-18.34,0V4.75A.91.91,0,0,1,3.75,3.83Zm3.35,4a1.4,1.4,0,0,0-1,.43,1.34,1.34,0,0,0,0,1.92l5,5a1.39,1.39,0,0,0,1.95,0l4.84-4.82a1.38,1.38,0,0,0-2-1.94l-3.86,3.86-4-4A1.42,1.42,0,0,0,7.1,7.87Z"/> </svg> </a> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html" name="meldung.newsticker.bottom.sm.share.facebook" title="Auf Facebook teilen" target="_blank" rel="nofollow" class=" share-link share-link--facebook article-sharing__link" > <svg class="share-link__icon share-link__icon--$share_link_service" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin" viewBox="0 0 10.38 20" > <path d="M10.38.14V3.32H8.5a1.77,1.77,0,0,0-1.4.43,2,2,0,0,0-.36,1.3V7.32h3.52L9.8,10.88H6.74V20H3.06V10.88H0V7.32H3.06V4.7A4.67,4.67,0,0,1,4.31,1.23,4.56,4.56,0,0,1,7.64,0,20.93,20.93,0,0,1,10.38.14Z" transform="translate(0 0)"/> </svg> </a> <a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html&text=Strategien+und+Techniken+zur+Fehlerpr%C3%A4vention+%7C+Developer" name="meldung.newsticker.bottom.sm.share.xcorp" title="Auf X teilen" target="_blank" rel="nofollow" class=" share-link share-link--xcorp article-sharing__link" > <svg class="share-link__icon share-link__icon--$share_link_service" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.1 20" preserveAspectRatio="xMinYMin" > <path id="path2" d="M17.4,0h3.4l-7.4,8.5L22.1,20h-6.8L10,13l-6.1,7H0.4l7.9-9.1L0,0h7l4.8,6.4L17.4,0z M16.2,18h1.9L6,1.9H4 L16.2,18z"/> </svg> </a> <a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html" name="meldung.newsticker.bottom.sm.share.linkedin" title="Auf LinkedIn teilen" target="_blank" rel="nofollow" class=" share-link share-link--linkedin article-sharing__link" > <svg class="share-link__icon share-link__icon--$share_link_service" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M20.45,20.45H16.89V14.88c0-1.33,0-3-1.85-3s-2.13,1.45-2.13,2.94v5.67H9.35V9h3.42v1.56h0a3.76,3.76,0,0,1,3.37-1.85c3.61,0,4.27,2.37,4.27,5.46ZM5.34,7.43h0A2.07,2.07,0,1,1,7.4,5.37h0A2.07,2.07,0,0,1,5.34,7.43m1.78,13H3.56V9H7.12ZM22.22,0H1.77A1.76,1.76,0,0,0,0,1.73V22.27A1.76,1.76,0,0,0,1.77,24H22.22A1.76,1.76,0,0,0,24,22.27V1.73A1.77,1.77,0,0,0,22.22,0" /> </svg> </a> <a href="https://reddit.com/submit?url=https%3A%2F%2Fwww.heise.de%2Fratgeber%2FStrategien-und-Techniken-zur-Fehlerpraevention-3345353.html&title=Strategien+und+Techniken+zur+Fehlerpr%C3%A4vention" name="meldung.newsticker.bottom.sm.share.reddit" title="Auf Reddit teilen" target="_blank" rel="nofollow" class=" share-link share-link--reddit article-sharing__link" > <svg class="share-link__icon share-link__icon--$share_link_service" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23.97 21.3"> <path d="M24,10.81a3,3,0,0,1-.09.73,2.73,2.73,0,0,1-.29.68,2.55,2.55,0,0,1-1.08,1,1.41,1.41,0,0,1,0,.2,2.67,2.67,0,0,1,0,.4,1.41,1.41,0,0,1,0,.2c0,4-4.69,7.3-10.49,7.3S1.56,18,1.56,14a1.41,1.41,0,0,1,0-.2,2.67,2.67,0,0,1,0-.4,1.41,1.41,0,0,1,0-.2A2.59,2.59,0,0,1,.13,11.53,2.63,2.63,0,0,1,4.46,8.9,12.24,12.24,0,0,1,6.07,8,13.55,13.55,0,0,1,7.8,7.28a14.15,14.15,0,0,1,1.82-.43,12.71,12.71,0,0,1,1.85-.16L12.81.44a.5.5,0,0,1,.08-.2.57.57,0,0,1,.16-.15.5.5,0,0,1,.2-.08h.22l4.41.88A1.81,1.81,0,1,1,17.65,2L13.8,1.18,12.63,6.8A12.58,12.58,0,0,1,14.46,7,12.77,12.77,0,0,1,18,8.09,13.15,13.15,0,0,1,19.55,9a2.61,2.61,0,0,1,1.33-.68,2.58,2.58,0,0,1,1.48.14,2.66,2.66,0,0,1,1.17.93A2.61,2.61,0,0,1,24,10.81ZM6.14,13.3a1.65,1.65,0,0,0,.39.58,1.8,1.8,0,0,0,1.27.53A1.81,1.81,0,1,0,6.14,13.3Zm10.31,4.32a.48.48,0,0,0,.14-.34.45.45,0,0,0-.13-.35.5.5,0,0,0-.35-.14.52.52,0,0,0-.35.12,5,5,0,0,1-.86.51,5.26,5.26,0,0,1-.93.36,6.55,6.55,0,0,1-1,.2,5.46,5.46,0,0,1-1,0,6.64,6.64,0,0,1-1,0,5.42,5.42,0,0,1-1-.21,5.3,5.3,0,0,1-.93-.37,6.17,6.17,0,0,1-.85-.51.44.44,0,0,0-.33-.11.45.45,0,0,0-.32.14.52.52,0,0,0-.14.32.44.44,0,0,0,.11.33,7,7,0,0,0,1,.63,7.47,7.47,0,0,0,1.1.45,7,7,0,0,0,2.34.3,6.86,6.86,0,0,0,3.44-.75,6.57,6.57,0,0,0,1-.63Zm-.33-3.07a1.75,1.75,0,0,0,.71-.13,2.06,2.06,0,0,0,.6-.41,1.87,1.87,0,0,0,.39-.61,2.18,2.18,0,0,0,.12-.72,1.8,1.8,0,1,0-3.47.69,1.81,1.81,0,0,0,1.67,1.11Z" transform="translate(-0.03)" /> </svg> </a> <a href="/ratgeber/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html?view=mail" name="meldung.newsticker.bottom.sm.share.mail" title="Per E-Mail versenden" target="_blank" rel="nofollow" class=" share-link share-link--mail article-sharing__link" > <svg class="share-link__icon share-link__icon--$share_link_service" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin" viewBox="0 0 24 24"> <path id="paper-plane-outline" d="M24,3,0,10l7.92,4.4L8,20l3.78-3.46L18,20ZM17,17.34l-5.48-3L20.85,6.4ZM20.46,5.9,9.6,13.25,4.66,10.51Z" transform="translate(0)"/> </svg> </a> <a-mastodon-share url="https://www.heise.de/ratgeber/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html" text="Strategien und Techniken zur Fehlerprävention | Developer" class=" share-link share-link--mastodon article-sharing__link" title="Auf Mastodon teilen" > <svg viewBox="0 0 75 79" fill="none" xmlns="http://www.w3.org/2000/svg" class="share-link__icon share-link__icon--$share_link_service" data-mastodon-share-target > <path d="M73.8393 17.4898C72.6973 9.00165 65.2994 2.31235 56.5296 1.01614C55.05 0.797115 49.4441 0 36.4582 0H36.3612C23.3717 0 20.585 0.797115 19.1054 1.01614C10.5798 2.27644 2.79399 8.28712 0.904997 16.8758C-0.00358524 21.1056 -0.100549 25.7949 0.0682394 30.0965C0.308852 36.2651 0.355538 42.423 0.91577 48.5665C1.30307 52.6474 1.97872 56.6957 2.93763 60.6812C4.73325 68.042 12.0019 74.1676 19.1233 76.6666C26.7478 79.2728 34.9474 79.7055 42.8039 77.9162C43.6682 77.7151 44.5217 77.4817 45.3645 77.216C47.275 76.6092 49.5123 75.9305 51.1571 74.7385C51.1797 74.7217 51.1982 74.7001 51.2112 74.6753C51.2243 74.6504 51.2316 74.6229 51.2325 74.5948V68.6416C51.2321 68.6154 51.2259 68.5896 51.2142 68.5661C51.2025 68.5426 51.1858 68.522 51.1651 68.5058C51.1444 68.4896 51.1204 68.4783 51.0948 68.4726C51.0692 68.4669 51.0426 68.467 51.0171 68.4729C45.9835 69.675 40.8254 70.2777 35.6502 70.2682C26.7439 70.2682 24.3486 66.042 23.6626 64.2826C23.1113 62.762 22.7612 61.1759 22.6212 59.5646C22.6197 59.5375 22.6247 59.5105 22.6357 59.4857C22.6466 59.4609 22.6633 59.4391 22.6843 59.422C22.7053 59.4048 22.73 59.3929 22.7565 59.3871C22.783 59.3813 22.8104 59.3818 22.8367 59.3886C27.7864 60.5826 32.8604 61.1853 37.9522 61.1839C39.1768 61.1839 40.3978 61.1839 41.6224 61.1516C46.7435 61.008 52.1411 60.7459 57.1796 59.7621C57.3053 59.7369 57.431 59.7154 57.5387 59.6831C65.4861 58.157 73.0493 53.3672 73.8178 41.2381C73.8465 40.7606 73.9184 36.2364 73.9184 35.7409C73.9219 34.0569 74.4606 23.7949 73.8393 17.4898Z" fill="#fff"/> <path d="M61.2484 27.0263V48.114H52.8916V27.6475C52.8916 23.3388 51.096 21.1413 47.4437 21.1413C43.4287 21.1413 41.4177 23.7409 41.4177 28.8755V40.0782H33.1111V28.8755C33.1111 23.7409 31.0965 21.1413 27.0815 21.1413C23.4507 21.1413 21.6371 23.3388 21.6371 27.6475V48.114H13.2839V27.0263C13.2839 22.7176 14.384 19.2946 16.5843 16.7572C18.8539 14.2258 21.8311 12.926 25.5264 12.926C29.8036 12.926 33.0357 14.5705 35.1905 17.8559L37.2698 21.346L39.3527 17.8559C41.5074 14.5705 44.7395 12.926 49.0095 12.926C52.7013 12.926 55.6784 14.2258 57.9553 16.7572C60.1531 19.2922 61.2508 22.7152 61.2484 27.0263Z" fill="#563acc"/> </svg> </a-mastodon-share> </div> <div class="article-sharing__permalink"> Kurzlink: <a href="https://heise.de/-3345353" rel="nofollow"> https://heise.de/-3345353 </a> </div> </div> <!-- RSPEAK_START --> </footer> </section> </div> </article> <aside class="recommendations wide"> <div id="HEI_D_Reco_Replacement" hidden></div> <div id="HEI_M_Reco_Replacement" hidden></div> <div class="OUTBRAIN" data-src="https://www.heise.de/ratgeber/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html" data-widget-id="AR_1" data-ob-template="DE_Heise" ></div> <a-script src="https://widgets.outbrain.com/outbrain.js" type="text/javascript" needs-consent name="Outbrain" condition="no-reduced-ads" > <noscript> <script type="text/javascript"> document.querySelector('#HEI_D_Reco_Replacement').removeAttribute('hidden'); document.querySelector('#HEI_M_Reco_Replacement').removeAttribute('hidden'); </script> </noscript> </a-script> </aside> <script> performance.mark('CONTENT Ende'); performance.measure('CONTENT', 'CONTENT Anfang', 'CONTENT Ende'); </script> </div> </div> </div> <div id="article-page-upscore" class="a-layout" data-include-in-outbrain-smart-feed-upscore></div> <div class="a-layout"> <div class="a-layout__container a-layout__container a-layout__container--full-width"> <div class="a-layout__item a-layout__item--full-width"> <div data-content-id="4774877" data-module-name="TeasersModule"><div class="relative shadow-modules md:shadow-none ho-bg ho-text container"><div data-component="TeasersModule" class="block jd-module pt-0 px-4 md:px-6 py-6"><header data-component="ModuleHeader" class="py-4 ho-bg mb-3"><div class="flex items-baseline justify-between"><h2 class="text-2xl ho-text font-bold md:text-3xl">Beliebte Bestenlisten</h2><div class="flex items-center"><a href="https://www.heise.de/bestenlisten" class="group flex items-baseline hidden ho-text shrink-0 md:flex" data-teaser-tracking-module-header-more-link="true"><span class="shrink-0">Alle bestenlisten</span><svg class="ml-[0.5em] h-[0.7em] shrink-0 fill-current transition-transform group-hover:translate-x-[0.5em]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8"><path d="M4 0l-.7.7 2.79 2.8H0v1h6.09l-2.8 2.8L4 8l4-4z"></path></svg></a></div></div></header><section data-layout-name="FreeHorizontalLayout" data-component="TeaserList" class="grid gap-6 md:gap-y-12 md:auto-cols-fr md:grid-flow-col"><article data-component="TeaserContainer" data-cid="10259733" data-content-id="4789235" class="ho-text" data-teaser-name="VerticalTeaser" data-upscore-object-id="10259733"><a index="0" data-component="TeaserLinkContainer" href="https://www.heise.de/bestenlisten/testsieger/top-6-die-beste-kabellose-rueckfahrkamera-zum-nachruesten-im-test/3x7f3ce?wt_mc=intern.red.bestenlisten.bestenlisten_beitragsbuehne.beitrag.buehne.buehne" class="group" data-google-interstitial="true" data-upscore-url="true"><figure data-component="Image" class="mb-4 md:w-full"><a-img width="4778" height="2685" src="https://www.heise.de/imgs/18/4/7/8/9/2/3/5/896fe6e3f85be700.jpeg" style="aspect-ratio:4778 / 2685"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="4778" height="2685" style="aspect-ratio:4778 / 2685;object-fit:cover"/></a-img></figure><div data-component="TeaserLinkContainer" class="-translate-y-1.5 md:transform-none"><header data-component="TeaserHeader"><h3 class="flex flex-col"><span data-component="TeaserHeadline" class="text-xl md:text-xl md:leading-snug max-w-prose font-bold group-hover:text-brand-branding dark:group-hover:text-white"><span data-upscore-title="true">Top 6: Die beste kabellose Rückfahrkamera zum Nachrüsten im Test</span></span></h3></header><footer data-component="TeaserMeta" class="ho-text-muted flex flex-wrap items-center gap-3 leading-none text-sm mt-4"><div class="flex gap-1"><span data-component="Branding" class="flex whitespace-nowrap leading-none theme-bestenlisten"><span class="mr-2 inline-block bg-brand-branding" style="width:.1875em;margin-right:.375em"></span>bestenlisten</span></div></footer></div></a></article><hr class="border-gray-100 dark:border-gray-600 md:hidden"/><article data-component="TeaserContainer" data-cid="10219175" data-content-id="4768141" class="ho-text" data-teaser-name="VerticalTeaser" data-upscore-object-id="10219175"><a index="1" data-component="TeaserLinkContainer" href="https://www.heise.de/bestenlisten/testsieger/top-10-die-beste-smartwatch-mit-ekg-im-test/02n25tj?wt_mc=intern.red.bestenlisten.bestenlisten_beitragsbuehne.beitrag.buehne.buehne" class="group" data-google-interstitial="true" data-upscore-url="true"><figure data-component="Image" class="mb-4 float-right w-[28%] ml-4 md:float-none md:ml-0 md:w-full"><a-img width="3023" height="1699" src="https://www.heise.de/imgs/18/4/7/6/8/1/4/1/6695aeb88a010e66.jpeg" style="aspect-ratio:3023 / 1699"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="3023" height="1699" style="aspect-ratio:3023 / 1699;object-fit:cover"/></a-img></figure><div data-component="TeaserLinkContainer" class="-translate-y-1.5 md:transform-none"><header data-component="TeaserHeader"><h3 class="flex flex-col"><span data-component="TeaserHeadline" class="text-lg leading-snug md:text-xl md:leading-snug max-w-prose font-bold group-hover:text-brand-branding dark:group-hover:text-white"><span data-upscore-title="true">Top 10: Die beste Smartwatch mit EKG im Test – Huawei, Garmin & Co.</span></span></h3></header><footer data-component="TeaserMeta" class="ho-text-muted flex flex-wrap items-center gap-3 leading-none text-sm mt-4"><div class="flex gap-1"><span data-component="Branding" class="flex whitespace-nowrap leading-none theme-bestenlisten"><span class="mr-2 inline-block bg-brand-branding" style="width:.1875em;margin-right:.375em"></span>bestenlisten</span></div></footer></div></a></article><hr class="border-gray-100 dark:border-gray-600 md:hidden"/><article data-component="TeaserContainer" data-cid="10221926" data-content-id="4769534" class="ho-text" data-teaser-name="VerticalTeaser" data-upscore-object-id="10221926"><a index="2" data-component="TeaserLinkContainer" href="https://www.heise.de/bestenlisten/testsieger/top-10-der-beste-over-ear-kopfhoerer-im-test/sl68nkv?wt_mc=intern.red.bestenlisten.bestenlisten_beitragsbuehne.beitrag.buehne.buehne" class="group" data-google-interstitial="true" data-upscore-url="true"><figure data-component="Image" class="mb-4 float-right w-[28%] ml-4 md:float-none md:ml-0 md:w-full"><a-img width="4016" height="2257" src="https://www.heise.de/imgs/18/4/7/6/9/5/3/4/b58f48eaad9318e4.jpeg" style="aspect-ratio:4016 / 2257"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="4016" height="2257" style="aspect-ratio:4016 / 2257;object-fit:cover"/></a-img></figure><div data-component="TeaserLinkContainer" class="-translate-y-1.5 md:transform-none"><header data-component="TeaserHeader"><h3 class="flex flex-col"><span data-component="TeaserHeadline" class="text-lg leading-snug md:text-xl md:leading-snug max-w-prose font-bold group-hover:text-brand-branding dark:group-hover:text-white"><span data-upscore-title="true">Top 10: Der beste Over-Ear-Kopfhörer mit Bluetooth & ANC im Test</span></span></h3></header><footer data-component="TeaserMeta" class="ho-text-muted flex flex-wrap items-center gap-3 leading-none text-sm mt-4"><div class="flex gap-1"><span data-component="Branding" class="flex whitespace-nowrap leading-none theme-bestenlisten"><span class="mr-2 inline-block bg-brand-branding" style="width:.1875em;margin-right:.375em"></span>bestenlisten</span></div></footer></div></a></article></section><footer class="mt-6 flex pt-6 justify-end border-t dark:border-on-dark md:hidden"><a href="https://www.heise.de/bestenlisten" class="group flex items-baseline p-2 pr-0.5 md:hidden"><span class="shrink-0">Alle bestenlisten</span><svg class="ml-[0.5em] h-[0.7em] shrink-0 fill-current transition-transform group-hover:translate-x-[0.5em]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8"><path d="M4 0l-.7.7 2.79 2.8H0v1h6.09l-2.8 2.8L4 8l4-4z"></path></svg></a></footer></div></div><script type="application/ld+json">{"@context":"https://schema.org","@id":"4774877","@type":"ItemList","name":"Beliebte Bestenlisten","description":"TeasersModule","additionalType":"TeasersModule","itemListElement":[{"@type":"ListItem","position":0,"item":{"@id":"4789235","@type":"Article","additionalType":"FreeTeaser","containerId":10259733,"url":"https://www.heise.de/bestenlisten/testsieger/top-6-die-beste-kabellose-rueckfahrkamera-zum-nachruesten-im-test/3x7f3ce?wt_mc=intern.red.bestenlisten.bestenlisten_beitragsbuehne.beitrag.buehne.buehne","headline":"Top 6: Die beste kabellose Rückfahrkamera zum Nachrüsten im Test","kicker":null,"sourceOrganization":{"identifier":"BESTENLISTEN","@type":"Organization","name":"bestenlisten","@id":"/bestenlisten"},"branding":"BESTENLISTEN","abstract":"Eine Funk-Rückfahrkamera ist eine günstige Einparkhilfe für ältere Fahrzeuge. Wir zeigen die besten Modelle mit Akku und Solarpanel für den PKW.","image":"https://heise.cloudimg.io/v7/_www-heise-de_/imgs/18/4/7/8/9/2/3/5/896fe6e3f85be700.jpeg?org_if_sml=1&q=30&width=1920","isAccessibleForFree":true,"isAlert":false,"isFamilyFriendly":true,"isLive":false,"isUpdate":false}},{"@type":"ListItem","position":1,"item":{"@id":"4768141","@type":"Article","additionalType":"FreeTeaser","containerId":10219175,"url":"https://www.heise.de/bestenlisten/testsieger/top-10-die-beste-smartwatch-mit-ekg-im-test/02n25tj?wt_mc=intern.red.bestenlisten.bestenlisten_beitragsbuehne.beitrag.buehne.buehne","headline":"Top 10: Die beste Smartwatch mit EKG im Test – Huawei, Garmin & Co.","kicker":null,"sourceOrganization":{"identifier":"BESTENLISTEN","@type":"Organization","name":"bestenlisten","@id":"/bestenlisten"},"branding":"BESTENLISTEN","abstract":"Vorhofflimmern ist eine Volkskrankheit. Wir zeigen die besten Smartwatches mit EKG-Funktion, um Herzrhythmusstörungen frühzeitig zu erkennen.","image":"https://heise.cloudimg.io/v7/_www-heise-de_/imgs/18/4/7/6/8/1/4/1/6695aeb88a010e66.jpeg?org_if_sml=1&q=30&width=1920","isAccessibleForFree":true,"isAlert":false,"isFamilyFriendly":true,"isLive":false,"isUpdate":false}},{"@type":"ListItem","position":2,"item":{"@id":"4769534","@type":"Article","additionalType":"FreeTeaser","containerId":10221926,"url":"https://www.heise.de/bestenlisten/testsieger/top-10-der-beste-over-ear-kopfhoerer-im-test/sl68nkv?wt_mc=intern.red.bestenlisten.bestenlisten_beitragsbuehne.beitrag.buehne.buehne","headline":"Top 10: Der beste Over-Ear-Kopfhörer mit Bluetooth & ANC im Test","kicker":null,"sourceOrganization":{"identifier":"BESTENLISTEN","@type":"Organization","name":"bestenlisten","@id":"/bestenlisten"},"branding":"BESTENLISTEN","abstract":"Wir haben dutzende Over-Ear-Kopfhörer getestet und vor allem auf den besten Klang, perfektes ANC, gute Verarbeitung und hohen Komfort geachtet. ","image":"https://heise.cloudimg.io/v7/_www-heise-de_/imgs/18/4/7/6/9/5/3/4/b58f48eaad9318e4.jpeg?org_if_sml=1&q=30&width=1920","isAccessibleForFree":true,"isAlert":false,"isFamilyFriendly":true,"isLive":false,"isUpdate":false}}]}</script></div> </div> </div> </div> <div class="a-layout"> <div class="a-layout__container a-layout__container a-layout__container--full-width"> <div class="a-layout__item a-layout__item--full-width"> <div data-content-id="4556350" data-module-name="TileModule"><div class="relative shadow-modules md:shadow-none ho-bg ho-text px-4 md:px-6 py-6 container" data-component="TileModuleComponent"><header data-component="ModuleHeader" class="py-4 ho-bg mb-3"><div class="flex items-baseline justify-between"><h2 class="text-2xl ho-text font-bold md:text-3xl">Spiele</h2><div class="flex items-center"><a href="https://spiele.heise.de/" class="group flex items-baseline hidden ho-text shrink-0 md:flex" data-teaser-tracking-module-header-more-link="true"><span class="shrink-0">Alle Spiele im Überblick</span><svg class="ml-[0.5em] h-[0.7em] shrink-0 fill-current transition-transform group-hover:translate-x-[0.5em]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8"><path d="M4 0l-.7.7 2.79 2.8H0v1h6.09l-2.8 2.8L4 8l4-4z"></path></svg></a></div></div></header><a-scroll-container data-component="ScrollContainer" scroll-snap="true" scroll-shadow="true" scroll-amount="page" media="(min-width: 768px)" toggle-attr-on-media="no-buttons"><div class="scroll-container"><ul class="flex gap-4"><li class="grow flex-1"><a href="https://www.heise.de/thema/Quiz" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Quiz-6c9515855fe3d232.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">TGIQF</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/solitaer/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Solitaer-1f5fd6d4efe6f0d6.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Solitär</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/sudoku/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Sudoku-b99629952c2b7af6.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Sudoku</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/mahjong/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Mahjong-dadc17e42d4d0f09.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Mahjong</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/exchange/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Exchange-3ac5346890dde38b.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">eXchange</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/bubble-shooter/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Bubble_Shooter-70f8bf00e5d8cb7a.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Bubbles</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/snake/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Snake-11d99ecf707d706b.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">SNAKE</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/sudoken/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Sudoken-d3961612618266ba.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">SudoKen</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/schach/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Schach-f9930e929d241edd.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Schach</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/fibonacci/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Fibonacci-899998d69809885f.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Fibonacci</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/2048/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/2048-d91b9e15e1b85296.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Power Of 2</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/street/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Street-46679fe14a0edf4e.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Street</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/cuboro/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Cuboro-3453aaadeeb1f1a2.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Cuboro Riddles</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/shooter/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Gumblast-487a8fc75d0f7de7.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Gumblast</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/doppel4/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Doppel-6bf1d5ee6de59ac7.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Doppel</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/rushtower/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Rushtower-6606d3c4deb99290.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Rushtower</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/wortblitz/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Wortblitz-ca2e51cafe870d3f.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Wortblitz</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/wimmelbild/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Wimmelbild-bd58f31116493bf9.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Wimmelbild</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/skiracer/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Skyracer-3167449d7c9babc0.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Skiracer</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/sudoku/leicht/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Sudoku_leicht-e6cb9b472647063e.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Sudoku leicht</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/sudoku/schwer/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Sudoku_schwer-a777907f4d29c574.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Sudoku schwer</header></a></li><li class="grow flex-1"><a href="https://spiele.heise.de/sudoku/sehr-schwer/" class="h-full flex flex-col gap-4 ho-bg ho-text"><figure><figure data-component="Image" class="border-white w-36 h-36 md:w-44 md:h-44 dark:border-4"><a-img width="1000" height="1000" src="https://www.heise.de/imgs/18/4/5/5/6/3/5/0/Sudoku_sehr_schwer-ea08117c2672bd4b.jpg" style="aspect-ratio:1000 / 1000"><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjk2cHgiIGhlaWdodD0iMzkxcHgiIHZpZXdCb3g9IjAgMCA2OTYgMzkxIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgc3Ryb2tlPSJub25lIiBmaWxsPSIjZjJmMmYyIiBmaWxsLW9wYWNpdHk9IjEiPgogICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI2OTYiIGhlaWdodD0iMzkxIj48L3JlY3Q+CiAgICA8L2c+Cjwvc3ZnPg==" width="1000" height="1000" style="aspect-ratio:1000 / 1000;object-fit:cover"/></a-img></figure></figure><header class="text-xl font-bold leading-none text-center ">Sudoku sehr schwer</header></a></li></ul></div><button class="scroll-left text-ho-text"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="m-auto h-6 w-6 fill-current"><path fill-rule="evenodd" d="M7.72 12.53a.75.75 0 0 1 0-1.06l7.5-7.5a.75.75 0 1 1 1.06 1.06L9.31 12l6.97 6.97a.75.75 0 1 1-1.06 1.06l-7.5-7.5Z" clip-rule="evenodd"></path></svg></button><button class="scroll-right text-ho-text"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon" class="m-auto h-6 w-6 fill-current"><path fill-rule="evenodd" d="M16.28 11.47a.75.75 0 0 1 0 1.06l-7.5 7.5a.75.75 0 0 1-1.06-1.06L14.69 12 7.72 5.03a.75.75 0 0 1 1.06-1.06l7.5 7.5Z" clip-rule="evenodd"></path></svg></button></a-scroll-container></div><script type="application/ld+json">{"@context":"https://schema.org","@id":"4556350","@type":"Thing","description":"TileModule","additionalType":"TileModule"}</script></div> </div> </div> </div> <div class="a-layout a-layout--bg-grey"> <div class="a-layout__container"> <div class="a-layout__item"> <div class="ad-desktop-group-2"> <div id="HEI_D_Footer-label" style="display: none;" class="ad-label" >Anzeige</div> <div id="HEI_D_Footer" class="ad ad--footer" ></div> </div> <div class="ad-mobile-group-3"> <div id="HEI_M_Footer-label" style="display: none;" class="ad-label" >Anzeige</div> <div id="HEI_M_Footer" class="ad ad--sticky" ></div> </div> </div> </div> </div> <div class="a-layout a-layout--transparent a-u-no-margin-bottom"> <div class=" a-layout__container a-layout__container--full-width" > <div class="a-layout__item a-layout__item--full-width"> <div class="nav-bottom"> <a-collapse class="sitemap-group nav-bottom__collapse-trigger" has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <header class="nav-bottom__collapse-toggle a-u-grid-pushin-mobile" data-collapse-trigger> Alle Angebote </header> <div data-collapse-target class="nav-bottom__content"> <nav class="sitemap nav-bottom__sitemap" aria-label="Sitemap"> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header a-u-grid-pushin-mobile " data-collapse-trigger > IT News </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--newsticker"> <a href="/newsticker" title="heise online - Newsticker" name="footer.ho.sitemap.newsticker" data-google-interstitial=false class="sitemap-group__link " >Newsticker</a> </li> <li class="sitemap-group__item sitemap-group__item--Hintergründe"> <a href="/hintergrund" title="heise online - Hintergründe" name="footer.ho.sitemap.Hintergründe" data-google-interstitial=false class="sitemap-group__link " >Hintergründe</a> </li> <li class="sitemap-group__item sitemap-group__item--Ratgeber"> <a href="/ratgeber" title="heise online - Ratgeber" name="footer.ho.sitemap.Ratgeber" data-google-interstitial=false class="sitemap-group__link " >Ratgeber</a> </li> <li class="sitemap-group__item sitemap-group__item--Tests"> <a href="/tests" title="heise online - Testberichte" name="footer.ho.sitemap.Tests" data-google-interstitial=false class="sitemap-group__link " >Tests</a> </li> <li class="sitemap-group__item sitemap-group__item--Meinung"> <a href="/meinung" title="heise online - Meinungen" name="footer.ho.sitemap.Meinung" data-google-interstitial=false class="sitemap-group__link " >Meinungen</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header a-u-grid-pushin-mobile " data-collapse-trigger > Online-Magazine </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--heiseplus"> <a href="/plus/" title="heise+ - Immer mehr Wissen." name="footer.ho.sitemap.heiseplus" data-google-interstitial=false class="sitemap-group__link sitemap-group__link--heiseplus" >heise<span class="sitemap_group__heiseplus-icon">+</span></a> </li> <li class="sitemap-group__item sitemap-group__item--tp"> <a href="/tp/" title="Telepolis" name="footer.ho.sitemap.tp" data-google-interstitial=false class="sitemap-group__link " >Telepolis</a> </li> <li class="sitemap-group__item sitemap-group__item--autos"> <a href="/autos/" title="heise Autos – News, Tests, Technik, Service rund ums Auto" name="footer.ho.sitemap.autos" data-google-interstitial=false class="sitemap-group__link " >heise Autos</a> </li> <li class="sitemap-group__item sitemap-group__item--bestenlisten"> <a href="/bestenlisten" title="bestenlisten by TechStage" name="footer.ho.sitemap.bestenlisten" data-google-interstitial=false class="sitemap-group__link " >bestenlisten</a> </li> <li class="sitemap-group__item sitemap-group__item--tipps-tricks"> <a href="/tipps-tricks/" title="tipps+tricks" name="footer.ho.sitemap.tipps-tricks" data-google-interstitial=false class="sitemap-group__link " >tipps+tricks</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group sitemap-group--2-col" has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header a-u-grid-pushin-mobile " data-collapse-trigger > Services </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--Shop"> <a href="https://shop.heise.de/" title="heise Shop – IT Fachzeitschriften, Bücher, CD/DVD/Blu-ray" name="footer.ho.sitemap.Shop" data-google-interstitial=false class="sitemap-group__link " >heise Shop</a> </li> <li class="sitemap-group__item sitemap-group__item--Arbeiten bei Heise"> <a href="https://jobs.heise.de/" title="heise jobs – Jobbörse für qualifizierte Fach- und Führungskräfte aus der IT-Branche" name="footer.ho.sitemap.Arbeiten bei Heise" data-google-interstitial=false class="sitemap-group__link " >Stellenmarkt</a> </li> <li class="sitemap-group__item sitemap-group__item--heise academy"> <a href="https://heise-academy.de/" title="heise academy - Weiterbildung für IT-Profis von heise medien" name="footer.ho.sitemap.heise academy" data-google-interstitial=false class="sitemap-group__link " >heise academy</a> </li> <li class="sitemap-group__item sitemap-group__item--download"> <a href="/download/" title="heise Download – Software zum Download für Windows, Mac, Linux, iPhone, Symbian, Android" name="footer.ho.sitemap.download" data-google-interstitial=false class="sitemap-group__link " >heise Download</a> </li> <li class="sitemap-group__item sitemap-group__item--heise preisvergleich"> <a href="https://preisvergleich.heise.de" title="heise preisvergleich – Günstige Preise, Meinungen und Bewertungen zu vielen Produkten" name="footer.ho.sitemap.heise preisvergleich" data-google-interstitial=false class="sitemap-group__link " >heise preisvergleich</a> </li> <li class="sitemap-group__item sitemap-group__item--Tarifrechner"> <a href="https://www.heise.de/tarifrechner" title="Tarifrechner" name="footer.ho.sitemap.Tarifrechner" data-google-interstitial=false class="sitemap-group__link " >Tarifrechner</a> </li> <li class="sitemap-group__item sitemap-group__item--heise compaliate"> <a href="https://compaliate.heise.de/" title="heise compaliate – Entdecke die heise Affiliate Plattform" name="footer.ho.sitemap.heise compaliate" data-google-interstitial=false class="sitemap-group__link " >heise compaliate</a> </li> <li class="sitemap-group__item sitemap-group__item--Abo bestellen"> <a href="https://shop.heise.de/zeitschriften-abo/" title="Abo – c't, iX, c't Fotografie, Mac & i, Make" name="footer.ho.sitemap.Abo bestellen" data-google-interstitial=false class="sitemap-group__link " >Abo bestellen</a> </li> <li class="sitemap-group__item sitemap-group__item--Mein Abo"> <a href="https://www.heise.de/sso/registration/add_subscriber_id?forward=https%3A%2F%2Fwww.heise.de%2F" title="Abo verwalten - Mein persönlicher Abo-Bereich" name="footer.ho.sitemap.Mein Abo" data-google-interstitial=false class="sitemap-group__link " >Mein Abo</a> </li> <li class="sitemap-group__item sitemap-group__item--Netzwerktools"> <a href="https://www.heise.de/tools/" title="heise online - Netzwerktools" name="footer.ho.sitemap.Netzwerktools" data-google-interstitial=false class="sitemap-group__link " >Netzwerktools</a> </li> <li class="sitemap-group__item sitemap-group__item--iMonitor"> <a href="https://www.heise.de/netze/netzwerk-tools/imonitor-internet-stoerungen/" title="heise iMonitor" name="footer.ho.sitemap.iMonitor" data-google-interstitial=false class="sitemap-group__link " >iMonitor</a> </li> <li class="sitemap-group__item sitemap-group__item--loseblattwerke"> <a href="/loseblattwerke/" title="Loseblattwerke" name="footer.ho.sitemap.loseblattwerke" data-google-interstitial=false class="sitemap-group__link " >Loseblattwerke</a> </li> <li class="sitemap-group__item sitemap-group__item--spiele"> <a href="https://spiele.heise.de" title="heise Spiele" name="footer.ho.sitemap.spiele" data-google-interstitial=false class="sitemap-group__link " >Spiele</a> </li> </ul> </div> </a-collapse> <a-collapse class="sitemap-group " has-indicator media="(max-width: 929px)" toggle-attr-on-media="disabled" > <div class=" sitemap-group__header a-u-grid-pushin-mobile " data-collapse-trigger > Über Uns </div> <div class="sitemap-group__content" data-collapse-target > <ul class="sitemap-group__items "> <li class="sitemap-group__item sitemap-group__item--heise medien"> <a href="https://www.heisegroup.de/artikel/heise-medien-3904998.html" title="heise medien - Hochwertiger und unabhängiger Journalismus" name="footer.ho.sitemap.heise medien" data-google-interstitial=false class="sitemap-group__link " >heise medien</a> </li> <li class="sitemap-group__item sitemap-group__item--heise regioconcept"> <a href="https://www.heise-regioconcept.de/" title="heise regioconcept - Regionales Marketing für Unternehmen" name="footer.ho.sitemap.heise regioconcept" data-google-interstitial=false class="sitemap-group__link " >heise regioconcept</a> </li> <li class="sitemap-group__item sitemap-group__item--heise Business Services"> <a href="https://business-services.heise.de/" title="heise Business Services – Produkte und Lösungen namhafter IT-Hersteller" name="footer.ho.sitemap.heise Business Services" data-google-interstitial=false class="sitemap-group__link " >heise Business Services</a> </li> <li class="sitemap-group__item sitemap-group__item--heise96"> <a href="https://www.heisegroup.de" title="Sponsoring Hannover 96" name="footer.ho.sitemap.heise96" data-google-interstitial=false class="sitemap-group__link " >Sponsoring<img src="/icons/ho/h96-logo.svg" width="48" height="55" alt="Logo Hannover 96" class="sitemap-group__img sitemap-group__img--h96" loading="lazy" /></a> </li> <li class="sitemap-group__item sitemap-group__item--mediadaten"> <a href="https://mediadaten.heise.de/" title="Mediadaten heise medien" name="footer.ho.sitemap.mediadaten" data-google-interstitial=false class="sitemap-group__link " >Mediadaten</a> </li> <li class="sitemap-group__item sitemap-group__item--Karriere"> <a href="https://www.heisegroup.de/artikel/heise-als-Arbeitgeber-1812545.html" title="Arbeiten bei heise – Heise als Arbeitgeber" name="footer.ho.sitemap.Karriere" data-google-interstitial=false class="sitemap-group__link " >Karriere</a> </li> <li class="sitemap-group__item sitemap-group__item--presse"> <a href="https://www.heisegroup.de/presse/" title="Pressemitteilungen und Interviews" name="footer.ho.sitemap.presse" data-google-interstitial=false class="sitemap-group__link " >Presse</a> </li> </ul> </div> </a-collapse> </nav> <div class=" notification-links nav-bottom__notification-links a-u-grid-pushin-mobile " > <a href="/newsletter/" class=" link notification-links__link " name="footer.ho.sitemap.newsletter" data-google-interstitial=false > <svg class="link__svg" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin" viewBox="0 0 24 24"> <path id="paper-plane-outline" d="M24,3,0,10l7.92,4.4L8,20l3.78-3.46L18,20ZM17,17.34l-5.48-3L20.85,6.4ZM20.46,5.9,9.6,13.25,4.66,10.51Z" transform="translate(0)"/> </svg> <span > Newsletter </span> </a> <a href="/benachrichtigungen/heise-bot/" class=" link notification-links__link " name="footer.ho.sitemap.heisebotti" data-google-interstitial=false > <svg id="logo-botti" xmlns="http://www.w3.org/2000/svg" class="link__svg" viewBox="0 0 24 24" > <title>heise-Bot</title> <path d="M9.3,17.66c-.24.56-.62,1.21-1.32,1.21A.89.89,0,0,1,7.05,18a3,3,0,0,1,.36-1.14l3.18-7.26c.24-.55.55-.95,1.18-.95a.86.86,0,0,1,.89.89A3.36,3.36,0,0,1,12.25,11Zm2.76,1.21c.71,0,1.08-.63,1.34-1.2L14.58,15A3.74,3.74,0,0,0,15,13.59a.86.86,0,0,0-.89-.89c-.64,0-.94.43-1.19,1l-1.42,3.2A2.65,2.65,0,0,0,11.16,18,.86.86,0,0,0,12.06,18.87ZM23.64,8.3a1,1,0,0,0-1.53,1.08A9.42,9.42,0,0,1,19,10.68c-.52-4.49-4.34-7.14-8.87-7.14A10.33,10.33,0,0,0,4.4,5.22,11.49,11.49,0,0,1,2.09,1.78,1,1,0,0,0,2.51.91,1,1,0,0,0,.56,1a1,1,0,0,0,1,.91,15.71,15.71,0,0,1,1,4.84,10.36,10.36,0,0,0-2.58,7c0,5.77,4.64,9.85,10.27,9.85a10.08,10.08,0,0,0,7.47-3.53l-.42-.63a7.92,7.92,0,0,1-1,.86,10.65,10.65,0,0,1-6.16,1.94A7.51,7.51,0,0,1,2.7,14.53c0-4.82,1.92-9.13,7.37-9.13,4.07,0,7.37,2.74,7.37,7a6.65,6.65,0,0,1-1.46,4l.72.62a7.79,7.79,0,0,0,2.23-3.91,16,16,0,0,1,3.51-3.27,1,1,0,0,0,1.35-.17A1,1,0,0,0,23.64,8.3ZM10.08,21c.39.09.18-.36.48-.56s.75-.39.81-.69a1.58,1.58,0,0,1-.93.05,6.43,6.43,0,0,1-1.27-.49,2,2,0,0,0,.15,1A1,1,0,0,0,10.08,21Z" transform="translate(0 0)"/> </svg> <span > heise-Bot </span> </a> <a href="/benachrichtigungen" class=" link notification-links__link " name="footer.ho.sitemap.pushnachrichten" data-google-interstitial=false > <svg id="cp-bell-outline" xmlns="http://www.w3.org/2000/svg" class="link__svg" viewBox="0 0 24 24" > <title>Push Nachrichten</title> <path d="M15,20.9c0,1.6-1.3,2.9-3,3c-1.6-0.1-2.9-1.4-3-3h1.7c0,0,0,0,0,0.1c0,0.7,0.6,1.3,1.3,1.3 c0.7,0,1.3-0.6,1.3-1.3c0,0,0,0,0-0.1H15z M21.9,17.2v1.7H2.1v-1.7C6.9,15.6,4.2,6.7,8.9,4c0.6-0.4,1-1.1,1-1.8l0,0 c0-1,0.7-2,1.7-2.2C11.9,0,12.1,0,12.4,0c1,0.2,1.7,1.1,1.7,2.1l0,0c0,0.7,0.4,1.4,1,1.8C19.7,6.7,17.1,15.6,21.9,17.2z M19.2,16.9 c-4-2-1.4-9.6-5.8-12.2c-0.1-0.1-0.2-0.1-0.4-0.2c-0.3-0.2-0.6-0.3-1-0.3c-0.3,0-0.6,0.1-0.9,0.2c-0.2,0.1-0.3,0.1-0.5,0.2 C6.1,7.4,8.8,14.9,4.8,16.9H19.2z"/> </svg> <span class="a-u-hide-from-tablet"> Push </span> <span class="a-u-show-from-tablet"> Push-Nachrichten </span> </a> <a-color-scheme class="a-u-show-from-tablet a-cholor-scheme-tablet"></a-color-scheme> </div> </div> </a-collapse> </div> <footer class="footer"> <div class="footer__top"> <a href="#top" class="footer__top-link"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="arrow-top footer__arrow-top " > <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18" /> </svg> nach oben </a> </div> <ul class="footer__list"> <li class="footer__item"> <a href="/developer/kontakt/" class="footer__link" data-google-interstitial=false > Kontakt </a> </li> <li class="footer__item"> <a href="/developer/impressum.html" class="footer__link" data-google-interstitial=false > Impressum </a> </li> <li class="footer__item"> <a href="https://www.heise.de/developer/kontakt/?frage=3212474" class="footer__link" data-google-interstitial=false > Barriere melden </a> </li> <li class="footer__item"> <a href="/account/cancellation" class="footer__link" data-google-interstitial=false > Verträge kündigen </a> </li> <li class="footer__item"> <a href="javascript:window._sp_.gdpr.loadPrivacyManagerModal(756676);" class="footer__link" data-google-interstitial=false id="js-gdpr-pm-link" > Cookies & Tracking </a> </li> <li class="footer__item"> <a href="/Datenschutzerklaerung-der-Heise-Medien-GmbH-Co-KG-4860.html" class="footer__link" data-google-interstitial=false > Datenschutz </a> </li> <li class="footer__item"> <a href="https://mediadaten.heise.de/" class="footer__link" data-google-interstitial=false > Mediadaten </a> </li> <li class="footer__item"> <span class="footer__text"> <span class="js-red-bookmarklet"> 1904975 </span> </span> </li> <li class="footer__item"> <a href="http://www.interred.de/" target="_blank" class="footer__link"> Content Management by InterRed </a> </li> <li class="footer__item"> <a href="https://www.plusline.net/" class="footer__link" data-google-interstitial=false> Hosted by Plus.line </a> </li> <li class="footer__item"> <a href="https://www.heisegroup.de/artikel/heise-medien-3904998.html" class="footer__link" data-google-interstitial=false> Copyright © 2025 heise medien </a> </li> </ul> <div class="footer__bottom"> <a href="https://www.heisegroup.de/"> <div class="footer__heise-way"> <svg preserveAspectRatio="xMinYMin" xmlns="http://www.w3.org/2000/svg" class="heise-logo footer__heise-icon" width="114" height="36" viewBox="0 0 114 36" role="img" > <style> .heise-logo-svg-path { fill: #14315b; } .dark .heise-logo-svg-path { fill: #f2f2f2; } </style> <title>heise Logo</title> <path class="heise-logo-svg-path" d="m39,5.39h3.87v6.14l-.16,3.19c1.38-1.3,3.02-2.5,5.28-2.5,3.53,0,5.08,2.39,5.08,6.56v10.35h-3.87v-9.85c0-2.71-.78-3.74-2.57-3.74-1.45,0-2.41.71-3.76,2.06v11.53h-3.87V5.39Zm16.38,15.49c0-5.36,3.72-8.67,7.61-8.67,4.46,0,6.81,3.23,6.81,7.83,0,.74-.08,1.48-.17,1.88h-10.47c.32,2.93,2.2,4.6,4.86,4.6,1.41,0,2.62-.44,3.83-1.2l1.32,2.41c-1.57,1.06-3.56,1.79-5.66,1.79-4.55,0-8.13-3.2-8.13-8.64Zm11.07-1.59c0-2.54-1.13-4.09-3.39-4.09-1.92,0-3.61,1.44-3.95,4.09h7.34Zm5.19-11.76c0-1.3,1.02-2.19,2.39-2.19s2.39.89,2.39,2.19-1.02,2.19-2.39,2.19-2.39-.91-2.39-2.19Zm.44,5.08h3.87v16.5h-3.87V12.62Zm5.48,14.61l1.8-2.46c1.46,1.14,2.88,1.84,4.56,1.84,1.8,0,2.65-.85,2.65-1.98,0-1.38-1.79-2-3.55-2.67-2.16-.81-4.64-2.06-4.64-4.81s2.31-4.93,6.01-4.93c2.3,0,4.14.93,5.48,1.98l-1.77,2.38c-1.16-.85-2.32-1.44-3.61-1.44-1.66,0-2.45.79-2.45,1.83,0,1.3,1.67,1.8,3.45,2.46,2.23.83,4.73,1.91,4.73,4.99,0,2.84-2.24,5.12-6.41,5.12-2.26,0-4.64-.97-6.25-2.3Zm14.32-6.34c0-5.36,3.72-8.67,7.6-8.67,4.46,0,6.81,3.23,6.81,7.83,0,.74-.08,1.48-.17,1.88h-10.47c.32,2.93,2.2,4.6,4.86,4.6,1.41,0,2.62-.44,3.83-1.2l1.32,2.41c-1.57,1.06-3.56,1.79-5.66,1.79-4.56,0-8.13-3.2-8.13-8.64Zm11.07-1.59c0-2.54-1.13-4.09-3.39-4.09-1.92,0-3.61,1.44-3.95,4.09h7.34ZM21.03,3.86c1.95.91,2.79,3.22,1.88,5.16l-8.99,19.23c-.91,1.94-3.23,2.79-5.17,1.88-1.95-.91-2.79-3.22-1.88-5.16L15.85,5.74c.91-1.94,3.23-2.79,5.17-1.88h0m6.22,12.27h0c-1.95-.91-4.27-.07-5.17,1.88l-3.25,6.95c-.91,1.94-.07,4.26,1.88,5.16,1.95.91,4.27.07,5.17-1.88l3.25-6.95c.91-1.95.07-4.26-1.88-5.16" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 457 37.01" class="heise-way footer__heise-way-icon" > <rect x="0" y="0" width="457" height="37.01" rx="18.51" ry="18.51" fill="#719ed4"/> </svg> <svg preserveAspectRatio="xMinYMin" viewBox="0 0 581.4 407.3" xmlns="http://www.w3.org/2000/svg" role="img" class="heise-claim footer__heise-claim-icon" > <style> .heise-claim-svg-g { fill: #14315b; } .dark .heise-claim-svg-g { fill: #f2f2f2; } </style> <title>Eine Antwort weiter</title> <g class="heise-claim-svg-g"> <path d="m80.8,154.7h21.8l34.2,104.9h-19.7l-16-55.8c-3.3-11.1-6.4-23.1-9.5-34.6h-.6c-2.9,11.6-6,23.5-9.3,34.6l-16.1,55.8h-19l34.2-104.9Zm-14,61.9h49.4v14.6h-49.4v-14.6Z"/><path d="m143.3,180.8h15.1l1.4,10.6h.5c7.1-6.9,15.1-12.6,25.9-12.6,16.9,0,24.2,11.4,24.2,31.3v49.4h-18.5v-47c0-13-3.7-17.8-12.3-17.8-6.9,0-11.5,3.4-18,9.8v55h-18.5v-78.7h.2Z"/><path d="m229.4,233.1v-37.5h-11.2v-13.9l12.2-.8,2.2-21.5h15.3v21.5h20.1v14.7h-20.1v37.5c0,9.3,3.6,13.8,11.2,13.8,2.7,0,5.9-.9,8.2-1.8l3.1,13.6c-4.3,1.4-9.8,2.9-16.1,2.9-18.1-.1-24.9-11.5-24.9-28.5Z"/><path d="m275.1,180.8h18.5l9.6,40.9c1.5,7.6,2.7,15,4.1,22.7h.6c1.5-7.7,3.1-15.3,5-22.7l10.3-40.9h16.7l10.5,40.9c1.9,7.6,3.5,15,5.2,22.7h.6c1.5-7.7,2.7-15.1,4.2-22.7l9.4-40.9h17.3l-20,78.8h-21.9l-9.2-36.8c-1.7-7.4-3.1-14.6-4.7-22.9h-.5c-1.5,8.2-2.9,15.6-4.7,23l-8.9,36.6h-21.3l-20.8-78.7Z"/><path d="m389.4 220.3c0-26.2 17.8-41.4 37.5-41.4s37.5 15.1 37.5 41.4-17.8 41.2-37.5 41.2-37.5-15.1-37.5-41.2zm55.9 0c0-15.8-6.9-26.3-18.5-26.3s-18.5 10.5-18.5 26.3 6.9 26.2 18.5 26.2 18.5-10.4 18.5-26.2z"/><path d="m474.6,180.8h15.2l1.4,14h.5c5.6-10.3,14-16,22.4-16,4,0,6.5.5,8.9,1.6l-3.2,16c-2.8-.8-4.8-1.3-8.1-1.3-6.3,0-13.9,4.3-18.6,16.3v48h-18.5v-78.6h0Z"/><path d="m540.4,233.1v-37.5h-11.2v-13.9l12.2-.8,2.2-21.5h15.3v21.5h20.1v14.7h-20.1v37.5c0,9.3,3.6,13.8,11.2,13.8,2.7,0,5.9-.9,8.2-1.8l3.1,13.6c-4.3,1.4-9.8,2.9-16.1,2.9-18.2-.1-24.9-11.5-24.9-28.5Z"/><path d="m148.4 8.6h63.1v15.7h-44.5v26.9h37.7v15.7h-37.7v31h46.1v15.7h-64.7v-105z"/><path d="m224.5,10.5c0-6.2,4.9-10.5,11.4-10.5s11.4,4.2,11.4,10.5-4.9,10.5-11.4,10.5c-6.5-.1-11.4-4.4-11.4-10.5Zm2.2,24.2h18.5v78.8h-18.5V34.7Z"/><path d="m259.1,34.7h15.1l1.4,10.6h.5c7.1-6.9,15.1-12.6,25.9-12.6,16.9,0,24.2,11.4,24.2,31.3v49.4h-18.5v-47c0-13-3.7-17.8-12.3-17.8-6.9,0-11.5,3.4-18,9.8v55h-18.5V34.7h.2Z"/><path d="m337.3,74.2c0-25.6,17.8-41.4,36.3-41.4,21.3,0,32.5,15.4,32.5,37.4,0,3.5-.4,7.1-.8,9h-50c1.5,14,10.5,21.9,23.2,21.9,6.7,0,12.5-2.1,18.3-5.7l6.3,11.5c-7.5,5.1-17,8.5-27,8.5-21.8,0-38.8-15.2-38.8-41.2Zm52.8-7.6c0-12.1-5.4-19.5-16.2-19.5-9.2,0-17.3,6.9-18.9,19.5h35.1Z"/><path d="m0,326.6h18.5l9.6,40.9c1.5,7.6,2.7,15,4.1,22.7h.6c1.5-7.7,3.1-15.3,5-22.7l10.3-40.9h16.7l10.5,40.9c1.9,7.6,3.5,15,5.2,22.7h.6c1.5-7.7,2.7-15.1,4.2-22.7l9.4-40.9h17.3l-20,78.8h-21.9l-9.2-36.8c-1.7-7.4-3.1-14.6-4.7-22.9h-.6c-1.5,8.2-2.9,15.6-4.7,23l-8.9,36.6h-21.2L0,326.6Z"/><path d="m115.9,366.1c0-25.6,17.8-41.4,36.3-41.4,21.3,0,32.5,15.4,32.5,37.4,0,3.5-.4,7.1-.8,9h-50c1.5,14,10.5,21.9,23.2,21.9,6.7,0,12.5-2.1,18.3-5.7l6.3,11.5c-7.5,5.1-17,8.5-27,8.5-21.7,0-38.8-15.2-38.8-41.2Zm52.9-7.6c0-12.1-5.4-19.5-16.2-19.5-9.2,0-17.3,6.9-18.9,19.5h35.1Z"/><path d="m192.3,302.4c0-6.2,4.9-10.5,11.4-10.5s11.4,4.2,11.4,10.5-4.9,10.5-11.4,10.5c-6.5-.1-11.4-4.4-11.4-10.5Zm2.1,24.2h18.5v78.8h-18.5v-78.8Z"/><path d="m234.4,378.9v-37.5h-11.2v-13.9l12.2-.8,2.2-21.5h15.2v21.5h20.1v14.7h-20.1v37.5c0,9.3,3.6,13.8,11.2,13.8,2.7,0,5.9-.9,8.2-1.8l3.1,13.6c-4.3,1.4-9.8,2.9-16.1,2.9-18.1-.1-24.8-11.5-24.8-28.5Z"/><path d="m276.9,366.1c0-25.6,17.8-41.4,36.3-41.4,21.3,0,32.5,15.4,32.5,37.4,0,3.5-.4,7.1-.8,9h-50c1.5,14,10.5,21.9,23.2,21.9,6.7,0,12.5-2.1,18.3-5.7l6.3,11.5c-7.5,5.1-17,8.5-27,8.5-21.7,0-38.8-15.2-38.8-41.2Zm52.9-7.6c0-12.1-5.4-19.5-16.2-19.5-9.2,0-17.3,6.9-18.9,19.5h35.1Z"/><path d="m355.4,326.6h15.1l1.4,14h.5c5.6-10.3,14-16,22.4-16,4,0,6.5.5,8.9,1.6l-3.2,16c-2.8-.8-4.8-1.3-8.1-1.3-6.3,0-13.9,4.3-18.6,16.3v48h-18.5v-78.6h.1Z"/> </g> </svg> </div> </a> <img src="/assets/components/images/hauptpartner-heise-hannover-96.png" alt="Unser Hauptpartner Hannover 96" class="footer__partner-img" loading="lazy" width="86px" height="40px" > </div> </footer> <style type="text/css"> #consent-edit { position: fixed; bottom: 25px; right: 25px; height: 58px; max-width: 58px; } #consent-edit:empty { display: none; } .cmp-no-pur-privacy-wrapper { display: flex; margin: 0; border-width: 0; justify-content: center; align-items: center; flex-direction: column; box-sizing: border-box; width: 58px; height: 58px; border-radius: 50%; padding: 5px; background-color: #323232; } .cmp-no-pur-privacy-btn { border: none; display: inline-block; cursor: pointer; white-space: nowrap; width: 48px; height: 48px; background: transparent url(https://www.heise.de/icons/svg/icons/svg/pur-privacy-manager.svg) no-repeat center center !important; text-indent: -9999rem; padding: 0; margin: 0; border-width: 0; border-radius: 5px; } </style> <div id="consent-edit"></div> <script> var currentSite = window.location.href; var noPurUrls = [ 'https://spiele.heise.de', 'https://business-services.heise.de', 'https://www.heise.de/solutions', 'https://www.heise.de/brandworlds', 'https://www.heise.de/newsticker/sub/', 'https://www.heise.de/tarifrechner', 'https://preisvergleich.heise.de', ] var showNoPurConsentEditButton = noPurUrls.filter((url) => { return currentSite.startsWith(url) }).length > 0 if (showNoPurConsentEditButton) { var noPurPrivacyManagerId = '869074'; var consentEditContainer = document.querySelector('#consent-edit'); var gdprFooterLink = document.querySelector('#js-gdpr-pm-link'); var noPurPmJs = `javascript:window._sp_.gdpr.loadPrivacyManagerModal(${noPurPrivacyManagerId});` if (gdprFooterLink && gdprFooterLink.href) { gdprFooterLink.href = noPurPmJs; } else { consentEditContainer.innerHTML = ` <div class="cmp-no-pur-privacy-wrapper"> <button onclick="${noPurPmJs}" class="cmp-no-pur-privacy-btn" > Privacy-Manager öffnen </button> </div> ` } } </script> </div> </div> <div id="webperfinfos" hidden> <p></p> <button onclick="javascript:navigator.clipboard.writeText(document.querySelector('#webperfinfos p').innerText);">kopieren</button> </div> </div> <div data-content-id="3632786" data-module-name="AdModule"><a-with-access access-right="heise_plus"><div data-has-no-access="true" hidden=""><a-sticky-footer data-component="StickyFooter" class="group inset-x-0 z-[var(--z-index-sticky-footer)] xl:z-[var(--z-index-sticky-footer--desktop)] theme-heiseplus" hidden="true"><button data-collapse-trigger="true" class="relative z-10 flex items-start w-10 h-8 mx-auto translate-y-5"><span class="flex h-5 w-10 items-center justify-center rounded-t-full shadow-[0px_-4px_9px_-5px_rgba(125,125,125,0.45)] ho-bg ho-text"><svg class="h-4 translate-y-1 -rotate-90 fill-current transition-transform group-is-open:translate-y-1.5 group-is-open:rotate-90" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7.41 12" fill="#666"><path d="M0 10.59L4.58 6 0 1.41 1.41 0l6 6-6 6z"></path><path d="M0 10.59L4.58 6 0 1.41 1.41 0l6 6-6 6z"></path></svg></span></button><div class="container relative z-0 p-3 md:p-4 shadow-[0px_-6px_9px_-7px_rgba(125,125,125,0.45)] ho-bg ho-text"><div class="flex items-center"><div class="hidden md:block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 860 200" role="img" preserveAspectRatio="xMinYMin" class="dark:hidden w-auto h-6 mr-4 relative -top-[2px]"><path fill="#6f7d93" d="M786.24 179.42v-45.19h-43.23v-25.54h43.23V63.5h26.53v45.19H856v25.54h-43.23v45.19z"></path><path fill="#14315b" d="M234.56 191.7V17.43h28.39v44.93l-.99 23.45c5.1-4.77 10.78-9.01 17.04-12.71 6.25-3.7 13.49-5.55 21.73-5.55 13 0 22.47 4.2 28.39 12.59 5.93 8.39 8.89 20.24 8.89 35.55v76.03h-28.39V119.4c0-10.04-1.48-17.11-4.44-21.23-2.96-4.11-7.82-6.17-14.57-6.17-5.27 0-9.92 1.28-13.95 3.83-4.04 2.55-8.6 6.29-13.7 11.23v84.67h-28.39ZM412 194.66c-11.19 0-21.32-2.51-30.37-7.53q-13.575-7.53-21.48-21.72c-5.27-9.46-7.9-20.86-7.9-34.19s2.67-24.52 8.02-34.06 12.3-16.87 20.86-21.97q12.84-7.65 26.91-7.65c11.02 0 20.24 2.43 27.65 7.28 7.41 4.86 13 11.6 16.79 20.24 3.78 8.64 5.68 18.64 5.68 29.99 0 5.92-.41 10.53-1.23 13.82H379.9c1.32 10.7 5.18 19.01 11.6 24.93s14.48 8.89 24.19 8.89c5.27 0 10.16-.78 14.69-2.35 4.52-1.56 9.01-3.74 13.46-6.54l9.63 17.77c-5.76 3.79-12.18 6.91-19.26 9.38s-14.49 3.7-22.22 3.7Zm-32.35-75.04h53.82c0-9.38-2.06-16.74-6.17-22.09-4.12-5.35-10.29-8.02-18.52-8.02-7.08 0-13.37 2.59-18.89 7.78-5.52 5.18-8.93 12.63-10.25 22.34Zm107.62-70.35c-5.1 0-9.22-1.48-12.34-4.44-3.13-2.96-4.69-6.91-4.69-11.85s1.56-8.64 4.69-11.6c3.12-2.96 7.24-4.44 12.34-4.44s9.22 1.48 12.34 4.44 4.69 6.83 4.69 11.6-1.57 8.89-4.69 11.85c-3.13 2.96-7.24 4.44-12.34 4.44M472.95 191.7V70.5h28.39v121.2zm85.47 2.96c-8.23 0-16.46-1.6-24.69-4.81s-15.31-7.2-21.23-11.97l13.33-18.27q8.145 6.18 16.29 9.87c8.145 3.69 11.19 3.7 17.28 3.7 6.58 0 11.44-1.4 14.57-4.2 3.12-2.8 4.69-6.25 4.69-10.37 0-3.46-1.28-6.29-3.83-8.52-2.55-2.22-5.8-4.2-9.75-5.92-3.95-1.73-8.07-3.41-12.34-5.06-5.27-1.97-10.49-4.4-15.68-7.28-5.18-2.88-9.42-6.58-12.71-11.11-3.29-4.52-4.94-10.16-4.94-16.91 0-10.7 3.95-19.42 11.85-26.17s18.6-10.12 32.1-10.12c8.56 0 16.21 1.48 22.96 4.44s12.59 6.34 17.53 10.12l-13.09 17.28q-6.42-4.68-12.96-7.53a34.1 34.1 0 0 0-13.7-2.84c-6.09 0-10.62 1.28-13.58 3.83s-4.44 5.72-4.44 9.5q0 7.155 7.41 10.86c4.94 2.47 10.7 4.86 17.28 7.16 5.59 1.97 11.02 4.4 16.29 7.28s9.67 6.63 13.21 11.23q5.31 6.915 5.31 18.27c0 10.37-4.03 19.22-12.1 26.54s-19.75 10.98-35.06 10.98Zm113.24 0c-11.19 0-21.32-2.51-30.37-7.53q-13.575-7.53-21.48-21.72c-5.27-9.46-7.9-20.86-7.9-34.19s2.67-24.52 8.02-34.06 12.3-16.87 20.86-21.97q12.84-7.65 26.91-7.65c11.02 0 20.24 2.43 27.65 7.28 7.41 4.86 13 11.6 16.79 20.24 3.78 8.64 5.68 18.64 5.68 29.99 0 5.92-.41 10.53-1.24 13.82h-77.03c1.32 10.7 5.18 19.01 11.6 24.93s14.48 8.89 24.19 8.89c5.27 0 10.16-.78 14.69-2.35 4.53-1.56 9.01-3.74 13.46-6.54l9.63 17.77c-5.76 3.79-12.18 6.91-19.26 9.38s-14.49 3.7-22.22 3.7Zm-32.34-75.04h53.82c0-9.38-2.06-16.74-6.17-22.09-4.12-5.35-10.29-8.02-18.52-8.02-7.08 0-13.37 2.59-18.89 7.78-5.52 5.18-8.93 12.63-10.25 22.34ZM107.25 4.65c14.12 6.58 20.23 23.36 13.65 37.48L55.79 181.71c-6.59 14.12-23.37 20.22-37.49 13.64-14.12-6.59-20.23-23.37-13.65-37.48l65.1-139.58C76.34 4.17 93.12-1.93 107.24 4.65m45.08 89.09c-14.12-6.58-30.91-.47-37.49 13.64l-23.55 50.48c-6.59 14.12-.48 30.9 13.65 37.48 14.12 6.58 30.91.47 37.49-13.64l23.55-50.49c6.59-14.12.47-30.9-13.65-37.48"></path></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 860 200" role="img" preserveAspectRatio="xMinYMin" class="hidden dark:block w-auto h-6 mr-4 relative -top-[2px]"><path fill="#f2f2f2" d="M786.24 179.42v-45.19h-43.23v-25.54h43.23V63.5h26.53v45.19H856v25.54h-43.23v45.19zM234.56 191.7V17.43h28.39v44.93l-.99 23.45c5.1-4.77 10.78-9.01 17.04-12.71 6.25-3.7 13.49-5.55 21.73-5.55 13 0 22.47 4.2 28.39 12.59 5.93 8.39 8.89 20.24 8.89 35.55v76.03h-28.39V119.4c0-10.04-1.48-17.11-4.44-21.23-2.96-4.11-7.82-6.17-14.57-6.17-5.27 0-9.92 1.28-13.95 3.83-4.04 2.55-8.6 6.29-13.7 11.23v84.67h-28.39ZM412 194.66c-11.19 0-21.32-2.51-30.37-7.53q-13.575-7.53-21.48-21.72c-5.27-9.46-7.9-20.86-7.9-34.19s2.67-24.52 8.02-34.06 12.3-16.87 20.86-21.97q12.84-7.65 26.91-7.65c11.02 0 20.24 2.43 27.65 7.28 7.41 4.86 13 11.6 16.79 20.24 3.78 8.64 5.68 18.64 5.68 29.99 0 5.92-.41 10.53-1.23 13.82H379.9c1.32 10.7 5.18 19.01 11.6 24.93s14.48 8.89 24.19 8.89c5.27 0 10.16-.78 14.69-2.35 4.52-1.56 9.01-3.74 13.46-6.54l9.63 17.77c-5.76 3.79-12.18 6.91-19.26 9.38s-14.49 3.7-22.22 3.7Zm-32.35-75.04h53.82c0-9.38-2.06-16.74-6.17-22.09-4.12-5.35-10.29-8.02-18.52-8.02-7.08 0-13.37 2.59-18.89 7.78-5.52 5.18-8.93 12.63-10.25 22.34Zm107.62-70.35c-5.1 0-9.22-1.48-12.34-4.44-3.13-2.96-4.69-6.91-4.69-11.85s1.56-8.64 4.69-11.6c3.12-2.96 7.24-4.44 12.34-4.44s9.22 1.48 12.34 4.44 4.69 6.83 4.69 11.6-1.57 8.89-4.69 11.85c-3.13 2.96-7.24 4.44-12.34 4.44M472.95 191.7V70.5h28.39v121.2zm85.47 2.96c-8.23 0-16.46-1.6-24.69-4.81s-15.31-7.2-21.23-11.97l13.33-18.27q8.145 6.18 16.29 9.87c8.145 3.69 11.19 3.7 17.28 3.7 6.58 0 11.44-1.4 14.57-4.2 3.12-2.8 4.69-6.25 4.69-10.37 0-3.46-1.28-6.29-3.83-8.52-2.55-2.22-5.8-4.2-9.75-5.92-3.95-1.73-8.07-3.41-12.34-5.06-5.27-1.97-10.49-4.4-15.68-7.28-5.18-2.88-9.42-6.58-12.71-11.11-3.29-4.52-4.94-10.16-4.94-16.91 0-10.7 3.95-19.42 11.85-26.17s18.6-10.12 32.1-10.12c8.56 0 16.21 1.48 22.96 4.44s12.59 6.34 17.53 10.12l-13.09 17.28q-6.42-4.68-12.96-7.53a34.1 34.1 0 0 0-13.7-2.84c-6.09 0-10.62 1.28-13.58 3.83s-4.44 5.72-4.44 9.5q0 7.155 7.41 10.86c4.94 2.47 10.7 4.86 17.28 7.16 5.59 1.97 11.02 4.4 16.29 7.28s9.67 6.63 13.21 11.23q5.31 6.915 5.31 18.27c0 10.37-4.03 19.22-12.1 26.54s-19.75 10.98-35.06 10.98Zm113.24 0c-11.19 0-21.32-2.51-30.37-7.53q-13.575-7.53-21.48-21.72c-5.27-9.46-7.9-20.86-7.9-34.19s2.67-24.52 8.02-34.06 12.3-16.87 20.86-21.97q12.84-7.65 26.91-7.65c11.02 0 20.24 2.43 27.65 7.28 7.41 4.86 13 11.6 16.79 20.24 3.78 8.64 5.68 18.64 5.68 29.99 0 5.92-.41 10.53-1.24 13.82h-77.03c1.32 10.7 5.18 19.01 11.6 24.93s14.48 8.89 24.19 8.89c5.27 0 10.16-.78 14.69-2.35 4.53-1.56 9.01-3.74 13.46-6.54l9.63 17.77c-5.76 3.79-12.18 6.91-19.26 9.38s-14.49 3.7-22.22 3.7Zm-32.34-75.04h53.82c0-9.38-2.06-16.74-6.17-22.09-4.12-5.35-10.29-8.02-18.52-8.02-7.08 0-13.37 2.59-18.89 7.78-5.52 5.18-8.93 12.63-10.25 22.34ZM107.25 4.65c14.12 6.58 20.23 23.36 13.65 37.48L55.79 181.71c-6.59 14.12-23.37 20.22-37.49 13.64-14.12-6.59-20.23-23.37-13.65-37.48l65.1-139.58C76.34 4.17 93.12-1.93 107.24 4.65m45.08 89.09c-14.12-6.58-30.91-.47-37.49 13.64l-23.55 50.48c-6.59 14.12-.48 30.9 13.65 37.48 14.12 6.58 30.91.47 37.49-13.64l23.55-50.49c6.59-14.12.47-30.9-13.65-37.48"></path></svg></div><div class="md:hidden"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" preserveAspectRatio="xMinYMin" class="dark:hidden w-auto h-6 mr-2"><rect width="32" height="32" fill="#14315b" rx="12" ry="12"></rect><path fill="#fff" d="M24 14.3h-6.3V8h-3.4v6.3H8v3.4h6.3V24h3.4v-6.3H24z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" preserveAspectRatio="xMinYMin" class="hidden dark:inline-block w-auto h-6 mr-2"><rect width="32" height="32" fill="#f2f2f2" rx="12" ry="12"></rect><path fill="#14315b" d="M24 14.3h-6.3V8h-3.4v6.3H8v3.4h6.3V24h3.4v-6.3H24z"></path></svg></div><h3 class="flex-grow mb-0 mr-2 text-base font-bold md:mr-4 md:text-xl"><span class=""> 1 Monat gratis lesen.</span></h3><a data-component="LinkButton" href="https://www.heise.de/api/accountservice/subscribe/plus?affiliateId=32501_HP000028_22018_3_57&wt_mc=intern.abo.plus.hp_nk.sticky-nat.teaser.teaser" class="inline-block whitespace-nowrap text-center leading-none border rounded disabled:pointer-events-none disabled:opacity-50 dark:border-gray-100 border-purchase dark:border-purchase-darker text-white bg-purchase hover:bg-purchase-darker hover:border-purchase-darker text-base py-3 px-6 group-is-open:hidden md:group-is-open:block"><span class="">Jetzt testen</span></a><button data-hide-trigger="true" class="hidden ml-2 group-is-open:block md:ml-4 md:block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12" role="img" preserveAspectRatio="xMinYMin" class="h-3 ho-fill-color"><path fill="#333" d="M12 1.4 10.6 0 6 4.6 1.4 0 0 1.4 4.6 6 0 10.6 1.4 12 6 7.4l4.6 4.6 1.4-1.4L7.4 6z"></path></svg></button></div><div data-collapse-target="true" class="text-sm text-center md:text-base"><div class="flex items-center w-full mt-4 mb-3"><hr class="flex-grow border-gray-100"/><h4 class="mx-5 font-bold"><span class="">Das digitale Abo für IT und Technik.</span></h4><hr class="flex-grow border-gray-100"/></div><p class="mx-auto md:max-w-2xl"><span class="">Exklusive Tests, Ratgeber & Hintergründe. Unbegrenzter Zugriff auf alle heise+ Beiträge inkl. allen Digital-Magazinen.</span></p><a data-component="LinkButton" href="https://www.heise.de/api/accountservice/subscribe/plus?affiliateId=32501_HP000028_22018_3_57&wt_mc=intern.abo.plus.hp_nk.sticky-nat.teaser.teaser" class="block whitespace-nowrap text-center leading-none border rounded disabled:pointer-events-none disabled:opacity-50 dark:border-gray-100 border-purchase dark:border-purchase-darker text-white bg-purchase hover:bg-purchase-darker hover:border-purchase-darker text-base py-3 px-6 mx-auto mt-3 md:hidden">Jetzt testen</a></div></div></a-sticky-footer></div></a-with-access><script type="application/ld+json">{"@context":"https://schema.org","@id":"3632786","@type":"ItemList","description":"AdModule","additionalType":"AdModule","itemListElement":[{"@type":"ListItem","position":0,"item":{"@type":"WPAdBlock","@id":"3631856","additionalType":"StickyFooterAd"}}]}</script></div> <script>performance.mark('JS-Footer Anfang');</script> <a-script async src="https://static-eu.cleverpush.com/channel/loader/2et4HQsqBnH6ZMRXr.js?v=2" name="Cleverpush" needs-consent ></a-script> <script> performance.mark('JS-Footer Ende'); performance.measure('JS-Footer', 'JS-Footer Anfang', 'JS-Footer Ende'); </script> <div style="display: inline;"><img id="ivw_pixel_intern" src="/ivw-bin/ivw/CP/ratgeber/Strategien-und-Techniken-zur-Fehlerpraevention-3345353.html?seite=all" width="1" height="1" alt="" /></div> <script type="text/javascript" id="vgwort"> <!--//--><![CDATA[//><!-- // VGWORT-CROP-MARKER window.__tcfapi('getCustomVendorConsents', 2, function (vendorConsents, success) { if (success) { var consent = vendorConsents.consentedVendors.map(function (vendor) { return vendor._id; }).indexOf('5ef513df0b45880aa11f804d'); if (consent > -1) { var vgwort_token = '2140c7ec578f40a6ba141305d314f105'; var script = document.getElementById('vgwort'); script.insertAdjacentHTML('afterend', '<div style="display: inline;"><img src="https://ssl-heise.met.vgwort.de/na/' + vgwort_token + '" width="1" height="1" alt="" /></div>'); } } }) //--><!]]> </script> <!--JSON-D treenode: 94 --> <script> performance.mark('BODY Ende'); performance.measure('BODY', 'BODY Anfang', 'BODY Ende'); </script> </body> </html> <!-- Created with InterRed V22.1.21, http://www.interred.de/, by InterRed GmbH --> <!-- BID: 1904975, iBID: 2188428, CID: 3345353, iCID: 3693799 --> <!-- Link: $(LB1904975:Linktext)$ $(LC3345353:Linktext)$ --> <!-- Generiert: 2022-10-24 19:44:12 -->