{"id":1783,"date":"2021-11-05T15:21:47","date_gmt":"2021-11-05T14:21:47","guid":{"rendered":"https:\/\/www.logic-joe.com\/blog\/?p=1783"},"modified":"2022-06-15T10:49:41","modified_gmt":"2022-06-15T08:49:41","slug":"in-wenigen-augenblicken-automatisiertes-snapshot-testing-mit-osnap","status":"publish","type":"post","link":"https:\/\/www.logic-joe.com\/blog\/in-wenigen-augenblicken-automatisiertes-snapshot-testing-mit-osnap\/","title":{"rendered":"In wenigen Augenblicken: automatisiertes Snapshot-Testing mit OSnap"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Um in das Thema zu starten, m\u00f6chten wir euch kurz das Prinzip Snapshot-Testing erl\u00e4utern:<\/span><\/p>\n<h2><b>Was ist Snapshot-Testing?<\/b><\/h2>\n<p class=\"p1\">Eine Methode, die im Frontend Development sowohl Fehler aufdeckt wie auch vermeidet und so die Produktqualit\u00e4t f\u00f6rdert. Umgekehrt erlaubt sie obendrein ein niedrigschwelliges und aufwandsarmes Experimentieren mit digitalen Gestaltungselementen.<\/p>\n<p>Im Prinzip bewahren Snapshot-Tests Frontend Developer davor, beim Coden unbeabsichtigte Ver\u00e4nderungen an einer bestehenden UI zu erzeugen, indem entsprechende Warnungen im Bezug auf betreffende Seiteneffekte ausgegeben werden.<\/p>\n<h2><span style=\"font-weight: 400;\">Zwei Arten von Snapshot-Testing<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Zun\u00e4chst m\u00fcssen zwei Arten von Snapshot-Testing unterschieden werden. Bei dem einen Ansatz werden fertige Elemente auf Code-Ebene konserviert, so dass im Nachhinein vorgenommene \u00c4nderungen oder auch Seiteneffekte kenntlich werden und den Frontend Developern somit viel (manuelle) Arbeit erspart.\u00a0<\/span><\/p>\n<p>In folgenden Beispiel soll sowohl die Bennenung als auch die Verlinkung eines Buttons ge\u00e4ndert werden.<\/p>\n<p>Ansatz auf Code-Ebene:<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-large wp-image-1793\" src=\"https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/failedSnapshotTest-1024x692.png\" alt=\"\" width=\"1024\" height=\"692\" srcset=\"https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/failedSnapshotTest-1024x692.png 1024w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/failedSnapshotTest-300x203.png 300w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/failedSnapshotTest-768x519.png 768w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/failedSnapshotTest-1536x1038.png 1536w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/failedSnapshotTest.png 1844w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Beim Ansatz des visuellen Snapshot-Testings wird das final designte Element im Erscheinungsbild abfotografiert, so dass im Nachhinein vorgenommene \u00c4nderungen visuell sichtbar werden.\u00a0<\/span><\/p>\n<p>Selbes Beispiel &#8211; Ansatz auf visueller Ebene:<\/p>\n<p>Hier sieht man die visuelle \u00c4nderung. Man sieht allerdings nicht, ob sich auch die Verlinkung ge\u00e4ndert hat oder nicht.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-1791\" src=\"https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/button-diff.png\" alt=\"\" width=\"970\" height=\"180\" srcset=\"https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/button-diff.png 970w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/button-diff-300x56.png 300w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/button-diff-768x143.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><\/p>\n<p>Was dieses Beispiel zeigt ist, dass der Ansatz auf Code-Ebene lediglich vollzogene \u00c4nderungen zeigt, nicht aber die Auswirkungen im Erscheinungsbild. Umgekehrt sieht man beim visuellen Snapshot-Testing-Ansatz lediglich das finale Erscheinungsbild, nicht aber funktionelle \u00c4nderungen am Code.<\/p>\n<p>Um die \u00c4nderungen auf Code-Basis sichtbar machen zu k\u00f6nnen, gibt es schon zahlreiche gute Snapshot-Testing-L\u00f6sungen, wie z.B. <a href=\"https:\/\/jestjs.io\/docs\/snapshot-testing\" target=\"_blank\" rel=\"noopener\">Jest<\/a>. Auch f\u00fcr visuelle \u00c4nderungen gibt es bereits Tools, die allerdings verh\u00e4ltnism\u00e4\u00dfig lang f\u00fcr einzelne Testl\u00e4ufe brauchen. Um den Entwicklern hier ein schnelleres Feedback zu erm\u00f6glichen, haben wir OSnap entwickelt.<\/p>\n<h2><b>Kurz gefasst und weiter gedacht<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">F\u00fcr die Mehrzahl unserer Kunden setzen wir bereits zentralisierte Pattern Libraries ein. Mit dem Einsatz einer Pattern Library ist eine Grundlage daf\u00fcr gelegt, auf strukturierte und gekapselte Gestaltungselemente zur\u00fcckgreifen zu k\u00f6nnen.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dies kann mit Hilfe von Snapshot-Testings eben auch daf\u00fcr genutzt werden, herum zu experimentieren &#8211; ohne daf\u00fcr die komplette gestalterische Basis ver\u00e4ndern zu m\u00fcssen.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Mit dem Prinzip der Snapshot-Tests k\u00f6nnen ungewollte \u00c4nderungen schnell erkennbar gemacht werden. Auch wenn Anpassungen bisher nur f\u00fcr einen Teil der Elemente eines gesamten Gestaltungsgef\u00fcges vorgenommen wurden, weist ein Snapshot-Testingtool auf noch fehlende \u00c4nderungen hin, wie hier beispielsweise:<\/span><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-large wp-image-1792\" src=\"https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/console-output-1024x360.png\" alt=\"\" width=\"1024\" height=\"360\" srcset=\"https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/console-output-1024x360.png 1024w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/console-output-300x105.png 300w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/console-output-768x270.png 768w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/console-output-1536x540.png 1536w, https:\/\/www.logic-joe.com\/blog\/wp-content\/uploads\/2021\/10\/console-output-2048x720.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Dies ist die Ausgabe der Tests in der Konsole am Beispiel einer \u00c4nderung beim Button.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Das ist nat\u00fcrlich nicht nur f\u00fcr den einzelnen Entwickler sehr hilfreich in seiner Arbeit, sondern kann tats\u00e4chlich zur Effizienz in dezentral zusammenarbeitenden Entwicklerteams beitragen.<\/span><\/p>\n<h2><b>Und jetzt wird es spannend<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">In Projekten kommt es regelm\u00e4\u00dfig vor, dass ein Kunde, auch wenn das Design im Prinzip l\u00e4ngst final abgenommen ist, noch \u00c4nderungen sehen bzw. testen m\u00f6chte. Das Prinzip der Zentralisierung und agilen Arbeitsweise verspricht implizit ja auch diese Freiheit.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Mit Anforderungen wie \u201cZeigt uns doch bitte mal, wie die Bilder auf unserer Seite mit abgerundeten Ecken aussehen w\u00fcrden.\u201d bringt man normalerweise nicht nur das Kreationsteam, sondern insbesondere auch das Frontend ins Schwitzen. Denn eine solch vermeintlich harmlose Anfrage hat eben Auswirkungen im gesamten Gestaltungsgef\u00fcge und f\u00fcr die verschiedenen Views und Screengr\u00f6\u00dfen.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Und genau hier kann Snapshot-Testing nicht nur f\u00fcr das Identifizieren von Fehlern, sondern auch zum Testen genutzt werden.\u00a0<\/span><\/p>\n<h2><b>Automatisiertes Abgleichen<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Insbesondere f\u00fcr Projekte mit vielen Gestaltungskomponenten wird eine Qualit\u00e4tssicherung ohne automatisiertes Snapshot-Testing schier unm\u00f6glich. Aus diesem Grund hat Torben Ewert, Frontend Developer bei Logic Joe ein eigenes Snapshot-Testing-Tool entwickelt, welches anderen Tools gegen\u00fcber folgende Vorteile mitbringt:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">OSnap ist schneller als andere (mit anderen Tools braucht das Testen von 400 verschiedenen Komponenten ca. 20 Minuten. Unser Tool testet das selbe Projekt in ca. 3 Minuten)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">bestimmte Bereiche k\u00f6nnen vom Test-Run explizit ausgeschlossen werden<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Zu testende Elemente k\u00f6nnen gefiltert werden (\u201cTeste nur den Button und \u00fcberspringe alle anderen Tests\u201c)<\/span><\/li>\n<\/ul>\n<div style=\"position: relative; width: 100%; padding-bottom: 56.25%; padding-top: 25px; height: 0;\"><iframe style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" src=\"https:\/\/www.youtube.com\/embed\/X1fsBmHIBwY\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/div>\n<p><span style=\"font-weight: 400;\">Hier k\u00f6nnen interessierte Entwickler es finden: <a href=\"https:\/\/github.com\/eWert-Online\/osnap\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/eWert-Online\/osnap<\/a><\/span><\/p>\n<p>Wann immer es im Hinblick auf bessere Qualit\u00e4t und Effizienz etwas zu optimieren beziehungsweise zu automatisieren gibt, unterst\u00fctzt Logic Joe die Entwicklung l\u00f6sungsorientierter Tools. F\u00fcr bessere Qualit\u00e4t im Web.<\/p>\n<h2>Immer auf der Suche<\/h2>\n<p><span style=\"font-weight: 400;\">Wir suchen im \u00dcbrigen weiter nach engagierten Entwicklern, die Lust haben, sich f\u00fcr ein besseres Web, ausgekl\u00fcgelte L\u00f6sungen ein fantastisches Team und spannende Kunden zu engagieren. Alle unsere aktuell zu besetzenden Stellen findet ihr hier: <a href=\"https:\/\/www.logic-joe.com\/jobs\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.logic-joe.com\/jobs\/<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Erst k\u00fcrzlich haben wir zum Thema Ordnung in digitalen Projekten geschrieben und die Vorteile zentralisierter Libraries herausgearbeitet.<br \/>\nDass wir es mit der Ordnung und Effizienz wirklich ernst meinen, und gerade im Bereich der Software-Entwicklung auch gerne die Extrameile gehen, beweisen wir mit unserer neuesten eigenen Snapshot-Tool-Entwicklung.<\/p>\n","protected":false},"author":13,"featured_media":1785,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/posts\/1783"}],"collection":[{"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/comments?post=1783"}],"version-history":[{"count":23,"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/posts\/1783\/revisions"}],"predecessor-version":[{"id":1815,"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/posts\/1783\/revisions\/1815"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/media\/1785"}],"wp:attachment":[{"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/media?parent=1783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/categories?post=1783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logic-joe.com\/blog\/wp-json\/wp\/v2\/tags?post=1783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}