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

Filmkritik – Bugonia: Klassenkampf gegen Aliens


close notice

This article is also available in
English.

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

Weiterlesen nach der Anzeige

Zeiten politischer Extreme sind Blütezeiten bissiger Satiren. Nachdem Paul Thomas Anderson den generationenübergreifenden Kampf Links gegen Rechts in „One Battle After Another“ aufs Korn nahm, legt nun der griechische Regisseur Giorgos Lanthimos nach. In Bugonia hetzt er zwei Vertreter ihrer Klassen aufeinander.

Auf der einen Seite ist da Michelle (Emma Stone) als scheinheilige Konzerncheffin, die Diversity zum Firmencredo erhebt und den Angestellten nahelegt, um 17:30 Uhr Feierabend zu machen – selbstverständlich nur, wenn sie nichts Wichtiges zu tun hätten.

Auf der anderen Seite der Gelegenheitsjobber und Hobby-Imker Teddy (Jesse Plemons), der sich über die Chemiekonzerne aufregt, weil sie die Bienen vergiften. Er macht Michelles Firma für das Schicksal seiner Mutter Sandy (Alicia Silverstone) verantwortlich. Seitdem sie ein Medikament von Michelles Konzern einnahm, liegt Sandy im Koma. Teddy ist sich sicher: Michelle stammt aus der Andromeda-Galaxie und ist auf die Erde gekommen, um die Menschheit zu unterjochen und den Planeten auszubeuten.



Kidnapping für Einsteiger: Wie entführt man eine trainierte Top-Managerin, wenn man derartige Aktionen nur aus dem Kino kennt?

(Bild: Focus Features)

Was folgt, ist ein knapp zweistündiges Kammerspiel, in dem Teddy und sein Cousin Don (Aidan Delbis) Michelle in ihr selbstgebasteltes Volksgefängnis stecken und verhören. Sie soll zugeben, dass sie ein Alien ist und Teddy bei der nächsten Mondfinsternis zu ihrem Chef ins Raumschiff bringen, damit er mit ihm über die Zukunft der Erde verhandeln kann.

Doch wie überzeugt man einen Folterknecht mit Wahnvorstellungen, wenn der jeden Gegenbeweis als Bestätigung seines Weltbildes interpretiert? Vor dem Problem standen im Mittelalter bereits der Hexerei angeklagte Frauen gegenüber der katholischen Kirche. Teddy steigert sich immer tiefer hinein. Damit er und Don sich auf ihren Auftrag konzentrieren, sollen sie sämtliche sexuellen Handlungen – auch an sich selbst – einstellen und sich unfruchtbar machen.



„Ja, ihr habt recht! Ich gestehe, ich bin ein Alien“: Mit rasiertem Kopf sieht Emma Stone tatsächlich wie von einem anderen Stern aus.

(Bild: Focus Features)

Michelle rasieren die beiden als erstes die Haare ab, damit sie mit diesen Antennen ihr Raumschiff nicht um Hilfe anfunkt. Die an Elite-Unis ausgebildete Gefangene kramt derweil ihre gelernten Überzeugungsstrategien zusammen und versucht, Don auf ihre Seite zu ziehen.

Weiterlesen nach der Anzeige

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmung wird hier ein externes Video (TargetVideo GmbH) geladen.

Nach „The Favourite“, „Poor Things“ und „Kinds of Kindness“ ist „Bugonia“ bereits die vierte Zusammenarbeit von Lanthimos und Stone – dem derzeitigen Dreamteam des surrealen Films. Wo Wes Andersson in seinem ästhetischen Korsett erstarrt, erfindet Lanthimos immer wieder neue Geschichten und Erzählformen: Von einer barocken Komödie über politische Intrigen, einer Frankenstein-Parodie zum Feminismus, einem episodischen Sado-Maso-Tryptichon über Macht und Kontrolle nun zu einem psychologischen Kammerspiel über Klassenkampf, Wahn und Realität. Das ist ebenso sperrig wie unterhaltsam für Zuschauer, die des hollywoodschen Einheitsbreis überdrüssig sind.



Der Grieche Giorgos Lanthimos (2.v.l.) bei den Dreharbeiten zu Bugonia. Kaum einer kommentiert derzeit die Gesellschaft so bissig wie er.

(Bild: Focus Features)

Dank seiner engen Ensemble-Arbeit kann er in kurzen Produktionszyklen auf aktuelle gesellschaftliche Themen und Diskurse reagieren und Zuschauer immer wieder überraschen. Lanthimos bildet damit einen Antipoden zum ausgelutschen Franchise-Kino der großen Hollywood-Studios. Stone und Plemons spielen groß auf und das Drehbuch bleibt konsequent am Thema, ohne am Schluss in eine allzu derbe Ketchup-Orgie wie in „The Substance“ abzudriften.



Source link

Weiterlesen

Künstliche Intelligenz

Kläger verlangen 2,36 Milliarden US-Dollar von Google nach Datenschutzurteil


Google ist nach einer mehrjährigen Sammelklage in den USA kürzlich bereits zur Zahlung von fast einer halben Milliarde US-Dollar verurteilt worden. Das Gericht hatte den Konzern für schuldig befunden, Daten über Nutzer gesammelt zu haben, obwohl die Aufzeichnung von App-Aktivitäten explizit ausgeschaltet wurde. Die Kläger hatten ursprünglich mehr als 30 Milliarden Dollar gefordert und haben jetzt eine dauerhafte Unterlassungsverfügung und Gewinnherausgabe von 2,36 Milliarden Dollar beantragt. Google bezeichnet das Urteil als Missverständnis und hat Berufung angekündigt.

Weiterlesen nach der Anzeige

Anfang September hatte ein kalifornisches Gericht geurteilt, dass Google wegen Irreführung beim Datenschutz 425 Millionen Dollar zahlen soll. Die Entscheidung beruht darauf, dass der Datenkonzern Aktivitäten im Internet und in Apps mitgeschnitten hat, auch wenn Anwender das explizit abgeschaltet haben. Die Geschworenen haben den Klagenden Schadenersatz zugesprochen, weil die gesammelten Daten einen Wert hätten und bei denen, die das Tracking deaktiviert haben, wohl auch noch mehr als im Durchschnitt. Weil sie aber keine Schäden erlitten hätten, sei die Summe nicht höher ausgefallen.

Diese Woche haben die Kläger nachgelegt und beim Gericht einen Antrag auf dauerhafte Unterlassungsverfügung und Gewinnherausgabe eingereicht. Laut Gerichtsdokument wird Google aufgefordert, das Sammeln und Speichern der Daten trotz Tracking-Abschaltung einzustellen, die bisher auf diese Weise gesammelten Nutzerdaten zu löschen, die entsprechenden Algorithmen, Modelle und Dienste zu löschen sowie einen unabhängigen Dritten zu beauftragen, die Einhaltung der einstweiligen Verfügung durch Google zu überwachen und sicherzustellen.

Zudem soll Google zusätzliche 2,36 Milliarden Dollar Schadenersatz zahlen, praktisch als Beteiligung an den mit diesen Daten erzielten Gewinnen. Diese Summe sei eine „konservative Schätzung“ der Profite, die Google mit den illegitim von rund 98 Millionen Nutzern und 174 Millionen Geräten gesammelten Daten verdient habe.

Die Sammelklage wurde im Juli 2020 eingereicht und warf Google Irreführung bei Datenschutzeinstellungen vor. Damals hieß es, dass Google Usern zwar Kontrolle über ihre Daten verspreche und ihnen konkret anbiete, die Aufzeichnung der Web- und App-Aktivitäten zu unterbinden. Wenn man das aber nutze, würden trotzdem Daten gesammelt. Das erfolgt über das Software Development Kit (SDK) Firebase. Darauf basierende Apps registrieren jeden Aufruf einer App-Seite und melden zumindest die URL der Seite, die verweisende Seite (Referrer) und die Bezeichnung der Seite (Title) an Google-Server. Google erzwinge den Einsatz von Firebase regelrecht, so der Vorwurf. Denn ohne gäbe es weder Zugriff auf Google Analytics noch Googles Werbevermittlung. Auch für die Vermarktung der App in Googles Play Store herrsche Firebase-Zwang.

Weiterlesen nach der Anzeige

Google sieht sich von den Klagenden, den Geschworenen und dem Gericht missverstanden. Schon nach dem ersten Urteil sagte Unternehmenssprecher Jose Castaneda: „Diese Entscheidung missversteht die Funktionsweise unserer Produkte. Unsere Datenschutz-Tools geben den Menschen die Kontrolle über ihre Daten, und wenn sie die Personalisierung deaktivieren, respektieren wir diese Entscheidung.“

Lesen Sie auch

Laut Reuters bezeichnet Google die gesammelten Daten als pseudonym, nicht personenbezogen und sie würden sicher in verschlüsselten Systemen gespeichert. Zudem seien die Informationen nicht mit Nutzeridentitäten oder Google-Konten verknüpft. Deshalb hat der Datenkonzern diese Woche beim Richter die Ablehnung der Sammelklage beantragt. Google begründet dies auch damit, dass die Ansprüche von der App-Nutzung, den Erwartungen der Nutzer und anderen individuellen Faktoren abhängen.

Das Verfahren heißt Anibal Rodriguez, Julian Santiago, Susan Lynn Harvey et al v. Google und wird am US-Bundesbezirksgericht für das Nördliche Kalifornien unter Az. 3:20-cv-04688-RS geführt.


(fds)



Source link

Weiterlesen

Künstliche Intelligenz

Nexperia-Ausfall: Die Autoindustrie versucht, einem Halbleitermangel zu begegnen


Ein Lieferverbot für den Chip-Zulieferer Nexperia könnte schon bald die ersten Autowerke stilllegen. Die Regierung in Den Haag hatte dem chinesischen Eigentümer von Nexperia Ende September die Kontrolle entziehen lassen – Gerichtsakten zufolge auf Druck der USA. China stoppte daraufhin die Ausfuhr von Nexperia-Produkten für die Autoindustrie. Grund für den Konflikt ist nach Aussagen des niederländischen Ministerpräsidenten Dick Schoof Missmanagement der chinesischen Unternehmensführung. Der Eingriff des niederländischen Wirtschaftsministers Vincent Karremans bei Nexperia sei „keine Maßnahme gegen China“, versicherte der geschäftsführende Regierungschef der niederländischen Nachrichtenagentur ANP zufolge beim EU-Gipfel in Brüssel.

Weiterlesen nach der Anzeige

Chinas Handelsminister Wang Wentao hatte das Eingreifen der niederländischen Regierung laut Angaben aus Peking im Telefonat mit Karremans kritisiert. Dies habe die Stabilität der globalen Lieferketten ernsthaft beeinträchtigt, sagte er. China fordere von den Niederlanden, das Land müsse die Angelegenheit schnellstmöglich lösen, hieß es. Nexperia mit Sitz im niederländischen Nijmegen ist ein wichtiger Anbieter sogenannter diskreter Halbleiter. Das sind eher einfache Bauteile, die aber für die Wirtschaft unverzichtbar sind. Internen Angaben von Volkswagen zufolge entfallen rund 40 Prozent des weltweiten Angebots an Standardchips für die Automobilindustrie auf Nexperia.

Die Halbleiter von Nexperia kommen häufig in elektronischen Steuergeräten von Fahrzeugelektroniksystemen zum Einsatz. Diese Einzelbauteile übernehmen unter anderem die Signalverarbeitung, sie regeln und stabilisieren die Spannung und binden Sensoren an.

Bei einzelnen Bauteilen ist Nexperia nach eigenen Angaben Weltmarktführer. Zu den Kunden zählten – Stand August – Automobilhersteller wie Tesla und Zulieferer wie Bosch. Die meisten Autokonzerne werden nicht direkt beliefert. Nexperia-Chips befinden sich aber in Bauteilen, die von Zulieferern wie Bosch oder ZF kommen. Die Halbleiter sind zwar Massenware, jedoch bereits in der Produktion für einen genauen Einsatzzweck hin konfiguriert und damit weder schnell noch einfach ersetzbar. Die Autoindustrie rechnet für die Suche nach Ersatzlieferanten mit Monaten oder Quartalen.

Noch laufe die Produktion in den Autowerken aber noch normal, hieß es bei den deutschen Herstellern. VW zeigte sich zuversichtlich, Produktionsstopps noch abwenden zu können. Derzeit werde mit einem alternativen Lieferanten verhandelt, der den Lieferausfall der Nexperia-Halbleiter ausgleichen könnte, sagte Markenproduktionsvorstand Christian Vollmer. Noch am Mittwoch hatte VW vor möglichen Produktionsausfällen gewarnt, die auch kurzfristig möglich seien. Mercedes-Benz teilte mit, man sei „im Kurzfristzeitraum abgesichert“. Der Konzern arbeite „intensiv mit unseren Partnern daran, eventuell auftretende Lücken zu schließen“. Ähnlich hatte sich zuvor BMW geäußert.

Weiterlesen nach der Anzeige

Zulieferer wie ZF richteten bereits Taskforces ein, um die Lage zu bewältigen. Gemeinsam mit Kunden und Lieferanten arbeite man daran, die von Nexperia-Produkten abhängigen Lieferketten weiterhin stabil zu halten und Alternativen zu prüfen. Bosch teilte auf Anfrage mit: „Wie andere Kunden von Nexperia stellt auch uns die aktuelle Situation vor große Herausforderungen.“ Expertenteams stünden im engen Austausch mit dem Hersteller sowie anderen Lieferanten und Kunden, um mögliche Einschränkungen bei der Produktion zu vermeiden oder so gering wie möglich zu halten.

Wolfgang Weber, Vorsitzender Geschäftsführer des Verbands der Elektro- und Digitalindustrie ZVEI, meint, die Krise müsse schnell politisch gelöst werden. Die Bundesregierung sucht bereits nach Lösungen. Ein Sprecher des Wirtschaftsministeriums sagte am Mittwoch, man sei besorgt und mit den verschiedenen Beteiligten in engem Austausch – auch mit der chinesischen Regierung. Am Mittwochabend gab es dazu eine Schalte des Bundeswirtschaftsministeriums mit Verbänden und Unternehmen aus der Automobil- und Elektronik-Industrie. In der Folge warnte das Ministerium.


(fpi)



Source link

Weiterlesen

Beliebt