Connect with us

Künstliche Intelligenz

Das Nullable-Entwurfsmuster – stressfrei testen ohne Mocks


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Robuste, automatisierte Tests sind feste Bestandteile der agilen Softwareentwicklung. Da Anforderungen und Rahmenbedingungen sich stetig ändern, müssen Entwicklerinnen und Entwickler kontinuierlich in der Lage sein, ihre Architektur anzupassen. Ihr Code muss wachsen und sich weiterentwickeln können. Sie müssen laufend bestehende Features erweitern, anpassen, umsortieren, zusammenführen oder aufteilen. Dazu benötigen sie die Unterstützung einer schnellen, verlässlichen und robusten Testsuite, die bestehende Funktionen der Software nicht beeinträchtigt.




Martin Grandrath ist Software-Developer und entwickelt seit über 15 Jahren Applikationen mit Web-Technologien. Seine Schwerpunkte sind neben Frontend-Architektur vor allem Software-Craftsmanship und testgetriebene Entwicklung. Seit 2023 arbeitet er als Senior IT-Consultant bei codecentric.

Auf Mocks basierende Tests verursachen häufig zusätzlichen Pflegeaufwand beim Refaktorieren, also Änderungen an der Codestruktur, die die Arbeit mit dem Code insgesamt vereinfachen, das Verhalten des Systems aber nicht verändern. Die Art und Weise, wie Mocks in der Praxis meist zum Einsatz kommen, führt zu einer Kopplung von Tests und Implementierungsdetails. Änderungen an diesen Details erfordern Anpassungen der Tests, was zulasten der Entwicklungsgeschwindigkeit geht.

Dieser Artikel zeigt auf, welche Kompromisse mit auf Mocks basierenden Tests verbunden sind und stellt mit dem Nullable-Entwurfsmuster von James Shore eine Alternative vor.

Mock-Objekte oder kurz Mocks (englisch für „Attrappe“) sind eine Unterkategorie der Test-Doubles, die in Unit Tests als Platzhalter für Produktionsobjekte dienen. Der Begriff Test-Double ist angelehnt an das Stunt-Double in Filmen. Weitere Arten von Test-Doubles sind Stubs, Spies oder Fakes.

Mocks zeichnen während eines Testlaufs auf, wie die Software mit ihnen interagiert: Welche ihrer Methoden ruft die Anwendung in welcher Reihenfolge und mit welchen Argumenten auf? Anschließend verifiziert der Unit-Test, ob die beobachteten Interaktionen mit den erwarteten übereinstimmen. Auf diese Weise werden die Interaktionen zwischen den Objekten zu einem integralen Bestandteil der Implementierung und der Tests. Diese Art von Tests wird als Interaction-based bezeichnet.

Gleichzeitig isolieren Mocks das zu testende Objekt von seinen Abhängigkeiten. Während des Tests wird also nur der Code eines einzelnen Objekts ausgeführt, während alle Interaktionspartner durch Mocks ersetzt werden. Tests, die Objekte in Isolation testen, nennt man solitary.

Auch wenn Solitary Interaction-based Tests ihre Vorzüge haben und sich im Laufe der Zeit zum Standard entwickelt haben, sind sie nicht frei von Nachteilen. Dass Tests an die Interaktionen zwischen Objekten gekoppelt sind, erschwert Refaktorierungen. Diese sind jedoch ein unverzichtbares Werkzeug, um die Qualität der Codebasis dauerhaft aufrechtzuerhalten.

Refaktorierungen, die die Interaktionen zwischen Objekten verändern, können zu False Positives führen: Tests schlagen fehl, obwohl das Programm als Ganzes keine Fehler enthält. Lediglich die Objektinteraktionen weichen von den Erwartungen der Tests ab. Eine Suite aus Interaction-based Tests macht die Codebasis dadurch insgesamt weniger flexibel, da die Tests die Implementierungsdetails fixieren.

Zudem kann es vorkommen, dass Solitary Tests Fehler nicht erkennen, wenn zwar alle Objekte in Isolation erwartungsgemäß arbeiten, es aber im Zusammenspiel der Objekte zu unerwünschtem Verhalten kommt. Um dem vorzubeugen, sind neben den Unit Tests zusätzliche Integrationstests erforderlich, die gezielt das Zusammenspiel mehrerer Objekte testen.

Eine Alternative stellen Sociable, State-based Tests dar.

In Sociable Tests interagiert das zu testende Objekt nicht mit Test-Doubles, sondern mit den echten Abhängigkeiten, die auch im Produktivbetrieb existieren. Fehler, die durch die Interaktion zwischen den Objekten entstehen, fallen im Test sofort auf. Separate Integrationstests sind nicht erforderlich.

State-based Tests verifizieren das sichtbare Verhalten von Objekten und ignorieren die darunter liegenden Interaktionen. Diese Tests reagieren daher sehr viel robuster gegenüber Refactorings, da sie sich nur für das Endergebnis interessieren und nicht für die Implementierungsdetails.

Die echten Produktionsobjekte in den Tests zu verwenden, statt sie durch Mocks zu ersetzen, führt zunächst zu einem Problem: Der zu testende Code muss mit APIs, Datenbanken oder dem Dateisystem kommunizieren. Diese Nebenwirkungen (Side Effects) würden zu nicht deterministischen Tests führen, da sie vom globalen Zustand abhängig sind, unter anderem von Drittsystemen. So könnte etwa ein Test fehlschlagen, weil eine Fremd-API mit anderen Daten antwortet, als es der Test erwartet.

Ein weiteres Problem sind die Auswirkungen, die API-Aufrufe haben können. Dass jede Ausführung der Warenkorbtests eine Kreditkarte belastet, ist nicht wünschenswert. Darüber hinaus muss es möglich sein, zu testen, wie sich ein Programm verhält, wenn eine Dritt-API mit unterschiedlichen Formaten, mit Fehlern oder gar nicht antwortet. Und schließlich verlangsamt die API-Anbindung die Tests.

Integrationstests sind zwar für den Übergang des zu implementierenden Systems mit der Außenwelt notwendig, aber die Nebenwirkungen sind für die Tests innerhalb des Systems unerwünscht.



Source link

Künstliche Intelligenz

Home Assistant von SD auf SSD umziehen: Alle Schritte erklärt für den Raspi 5


Für viele Nutzer von Home Assistant ist der Raspberry Pi das Mittel der Wahl, um die kostenlose Smart-Home-Zentrale zu hosten. Der kompakte Einplatinencomputer bietet ausreichend Leistung auf wenig Raum und zeichnet sich durch einen stromsparenden Betrieb aus. Typischerweise dient einem Raspi eine MicroSD-Karte als Speichermedium: gleichermaßen für das Betriebssystem und für die Daten, die während des Betriebs anfallen.

Allerdings kann der Dauerbetrieb auf einer SD-Karte zu Problemen führen. Diskussionen darüber gibt es etwa im offiziellen Forum, wie auch auf Reddit. Einige Nutzer berichten von zerstörten Karten, andere widersprechen und empfehlen, hochwertigere MicroSD-Karten zu nutzen. Die Entwickler von Home Assistant raten zu Karten der Application Performance Class 2. Um das Risiko von Datenverlust zu minimieren, können Nutzer ihre Home-Assistant-Installation auf eine M2-SSD umziehen – diese Möglichkeit bietet der Raspberry Pi 5.

In diesem Artikel erklären wir Schritt für Schritt, wie der Umzug einer bestehenden Home-Assistant-Installation samt Matter- und Zigbee-Geräten auf eine NVMe-SSD gelingt. Als Hardware dient ein Raspberry Pi M.2 HAT+ im Kit mit passender SSD, den man als zweite Platine auf den Raspberry Pi 5 schraubt. Der Artikel beschreibt die Backup-Prozedur in Home Assistant OS, die soft- und hardwareseitigen Schritte zum Wechsel auf die SSD sowie die anschließende Wiederherstellung des Backups.


Das war die Leseprobe unseres heise-Plus-Artikels „Home Assistant von SD auf SSD umziehen: Alle Schritte erklärt für den Raspi 5“.
Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.



Source link

Weiterlesen

Künstliche Intelligenz

Noch sind KI-Chatbots werbefrei – doch dieses Start-up will das ändern


Egal, wohin man klickt: Das Internet ist voll von Werbebannern. Nur KI-Chatbots blieben bisher verschont.

Anbieter wie OpenAI, Google oder Anthropic verzichten noch auf die Monetarisierung durch Werbung. Stattdessen setzen ihre Chatbots ChatGPT, Claude & Co. auf kostenpflichtige Abonnements und Premium-Angebote. Profitabel sind sie damit allerdings noch nicht unbedingt.

US-Start-up Koah will Anzeigen in KI-Angebote holen und hat nun fünf Millionen US-Dollar Startkapital eingesammelt, wie Techcrunch berichtet.

KI-Chats sind bislang eine werbefreie Zone – doch das wird nicht so bleiben, glaubt Koah-Gründer Nic Baird. Sobald KI-Anwendungen den Tech-Bubble-Kosmos des Silicon Valley verlassen, gebe es nur einen Weg, sie weltweit zu monetarisieren – über Anzeigen. Das habe sich in der Internetgeschichte immer wieder gezeigt, sagt der CEO.

Allerdings geht es Koah nicht darum, Werbeflächen in ChatGPT & Co. zu verkaufen. Stattdessen richtet sich das Start-up an Drittanbieter-Apps, die auf großen Sprachmodellen aufbauen. Und: Mehrwert für die Nutzer steht an oberster Stelle.

„Es geht mir nicht darum, Display-Werbung in Chats zu pressen“, sagt Baird. „Ich will verstehen, wonach die Nutzer suchen – und wie wir ihnen das geben können.“ Koah platziert deshalb als gesponsert markierte Inhalte an relevanten Stellen im Chat. Wer zum Beispiel nach Tipps zur Start-up-Strategie fragt, könnte eine Anzeige von Upwork sehen, die passende Freelancer vermittelt.

Baird habe in Gesprächen mit Publishern die Erfahrung gemacht, dass viele von ihnen nicht glauben, dass Werbung in KI-Chats funktioniert. Gleichzeitig sei es nach anfänglicher Konzentration auf Nutzer, die bereit sind, für ein Abonnement zu zahlen, nun wichtig, Millionen von Nutzern – etwa in Lateinamerika – abzuholen, die „keine 20 Dollar pro Monat zahlen“ wollen.

„Mehrere Umsatzmodelle im Bereich Consumer-AI sind unvermeidlich, und wenn man die Internetdienste der letzten Jahrzehnte als Indikator betrachtet, werden Anzeigen eine wichtige Rolle spielen“, stimmt Nicole Johnson von Forerunner Ventures zu, die die Finanzierungsrunde angeführt haben.

Koahs Ansatz funktioniert laut eigenen Angaben besser als der klassischer Adtech-Anbieter wie Admob oder AppLovin. Das Start-up meldet im Vergleich vier- bis fünfmal bessere Ergebnisse, mit Klickraten von 7,5 Prozent und Umsätzen von 10.000 US-Dollar im ersten Monat für frühe Partner.

Koah sieht KI-Chats dabei im mittleren Teil des Sales-Funnels: Sie liegen zwischen der Awareness-Phase, wie sie Instagram-Anzeigen bedienen, und der Kaufphase, die stark von Google-Suchen getrieben wird. Nutzer würden im Chat zwar Empfehlungen und Produkthinweise einholen – der eigentliche Kauf finde aber oft später statt.

Aufgabe von Koah sei es daher, diese kommerzielle Absicht besser einzufangen. Dabei sollen die Anzeigen relevant genug sein, um das Engagement tatsächlich zu steigern – das sei laut Baird die oberste Priorität.

Dieser Beitrag ist zuerst bei t3n.de erschienen.


(jle)



Source link

Weiterlesen

Künstliche Intelligenz

Bundes-Klinik-Atlas geht vermutlich offline, Verbraucherschützer üben Kritik


Der Verbraucherzentrale Bundesverband (vzbv) warnt vor den Folgen einer möglichen Abkündigung des Bundes-Klinik-Atlas durch Bundesgesundheitsministerin Nina Warken. „Die Projektgruppe ‚Bundes-Klinik-Atlas‘ […] wird rückwirkend zum 30. Juni aufgelöst“, heißt es in einer „Organisationsverfügung“, die den Zeitungen des Redaktionsnetzwerks Deutschland vorliegt. Das bedeute jedoch nicht zwangsläufig, dass die inhaltliche Arbeit eingestellt werde. Laut Berichten von dpa werde die Betreuung des „Bundes-Klinik-Atlas“ seit 1. Juli durch eine Fachabteilung fortgeführt. Derzeit laufe die Prüfung möglicher Optionen.

Warken hatte bereits im Juli ein Aus des Bundes-Klinik-Atlas angedeutet. „Die Abschaffung des Bundes-Klinik-Atlasses wäre aus Patientensicht fatal. Das deutsche Gesundheitssystem braucht mehr Transparenz, nicht weniger“, erklärte Thomas Moormann, Leiter des Teams Gesundheit und Pflege im Verbraucherzentrale Bundesverband (vzvb).

Der Atlas sei ein wichtiger Schritt hin zu mehr Orientierung für Patienten bei der Krankenhauswahl, müsse jedoch weiterentwickelt werden. Nur so könnten Menschen das Krankenhaus auswählen, „bei dem sie den Eingriff mit der besten Qualität erhalten“, so Moormann. Das Krankenhausverzeichnis der Deutschen Krankenhausgesellschaft (DKG) biete nach Ansicht des vzbv keine geeignete Alternative, da es weder nutzerfreundlich noch unabhängig sei.

Ohne den Atlas drohe laut vzbv ein Rückfall in eine unübersichtliche Vielzahl von Portalen, die Patienten „keine verlässliche Orientierung“ bieten. „Ein unabhängiger, transparenter und benutzerfreundlicher Bundes-Klinik-Atlas hätte die Chance, die Versorgung in die richtige Richtung zu steuern“, so Moormann. Darauf sei ihm zufolge eine erfolgreiche Krankenhausreform angewiesen. Der Sozialverband VdK warnte laut dpa davor, Informationen zu Behandlungen künftig allein durch Klinikträger oder Klinikverbände bereitgestellt werden. Eine unabhängige Quelle sei essenziell. Die Deutsche Stiftung Patientenschutz rief Warken dazu auf, „das lange Sterben“ des Bundes-Atlasses sofort zu beenden. Für die Patienten seien zwei Internet-Verzeichnisse nur verwirrend.

Der Bundes-Klinik-Atlas wurde am 17. Mai 2024 vom Bundesgesundheitsministerium (BMG) veröffentlicht. Er bietet Bürgerinnen und Bürgern eine interaktive Suchmaschine zur Kliniksuche mit Daten zu Behandlungsmöglichkeiten, Fallzahlen, Zertifikaten, Personalausstattung und ausgewählten Qualitätsindikatoren. Ziel ist eine informierte Entscheidung über die Auswahl eines geeigneten Krankenhauses ohne spezielle Vorkenntnisse.

Vor dem Start wurde auch die „Weiße Liste“ der Bertelsmann-Stiftung eingestellt, wobei die Erfahrungen des Projekts in Teilen dem Bundes-Klinik-Atlas zugutekamen. Im Laufe des Jahres 2024 wurden bereits zwei Updates eingeführt, mit Erweiterungen der Behandlungsanlässe und Verbesserungen der Nutzerfreundlichkeit.

Kurz nach Veröffentlichung gab es mehrfach Kritik, beispielsweise von der Deutschen Krankenhausgesellschaft (DKG), die den Nutzen des Atlas für Patienten bezweifelte und auf Verständlichkeitsprobleme und Datenfehler hinwies. Daraufhin wurden umfangreiche Updates umgesetzt, die die Übersichtlichkeit verbesserten.


(mack)



Source link

Weiterlesen

Beliebt