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

FAQ zu Windows 10 als VM unter Linux




Source link

Weiterlesen

Künstliche Intelligenz

Kompakt und schnell: Fujifilm hat die APS-C-Systemkamera X-T30 III vorgestellt



Das Dispaly der X-T30 III zeigt ein Model, das in die Kamera lächelt.

Das Dispaly der X-T30 III zeigt ein Model, das in die Kamera lächelt.

Die Fujifilm X-T30 III ist eine kompakte leichte Kamera, ideal für unterwegs und auch für Anfänger geeignet.

(Bild: Fujifilm)

Fujifilm hat die dritte Generation der X-T30-Serie angekündigt. Diese soll Einsteiger in die Fotografie sowie solche Fotografen ansprechen, die ein leichtes Gerät für unterwegs oder ihre Alltagsfotografie suchen. Die X-T30 III behält den 26-Megapixel-Sensor „X-Trans CMOS 4“ im APS-C-Format, den auch die Vorgängerin X-T30 II von 2021 schon besaß. Neu ist aber der Bildprozessor „X-Prozessor 5“, den andere Fujifilm-Modelle wie die X-T5 nutzen. Dieser Prozessor soll laut Hersteller für eine doppelt so schnelle Bildverarbeitung sorgen, was primär bei Serienbildaufnahmen und der Verarbeitung von hochauflösenden Bildern und Videos Vorteile bringt. Dabei möchte Fujifilm die Energieeffizienz der Kamera deutlich gesteigert haben, sodass der Akku nun bis zu 425 Aufnahmen nach CIPA-Standard schaffen soll.

Weiterlesen nach der Anzeige


Das Titelbild der Ausgabe 06 2025 des Foto-Magazins c't Fotografie

Das Titelbild der Ausgabe 06 2025 des Foto-Magazins c't Fotografie

Beim Autofokus in der X-T30 III setzt Fujifilm jetzt ebenfalls auf mit Künstlicher Intelligenz trainierte Bilderkennung. Neben Gesichtern und Augen werden inzwischen auch Tiere, Vögel, Fahrzeuge und sogar Insekten verfolgt. Der Autofokus soll zudem schneller und präziser als beim Vorgängermodell arbeiten.


Das Display der X-T30 III wurde so geklappt, das man es von oben betrachten kann.

Das Display der X-T30 III wurde so geklappt, das man es von oben betrachten kann.

Das Display lässt sich fujitypisch nach oben und nach unten klappen, allerdings nicht zur Seite schwenken.

(Bild: Fujifilm)

Die Abmessungen und das Gewicht der X-T30 III bleiben im Vergleich zur X-T30 II unverändert. Mit 378 Gramm (einschließlich Akku und Speicherkarte) und den Maßen 118 × 83 × 47 Millimetern ist sie weiterhin eine handliche und leichte Kamera, die sich auch in einer größeren Jackentasche verstauen lässt oder für die unterwegs auch mit Wechselobjektiv eine kleine Fototasche ausreicht. Sie ist in den drei Farben Schwarz, Silber und Anthrazit erhältlich.

Weiterlesen nach der Anzeige

Auch das rückwärtige, klappbare Display der X-T30 III bleibt das gleiche, mit einer Auflösung von 1,62 Millionen Pixel (900 × 600 Bildpunkte). Den OLED-Sucher gab es schon bei der ersten Generation der X-T30, er bietet weiterhin nur 2,36 Millionen Pixel (1024 × 768 Bildpunkte) und sitzt mittig über dem Objektiv. Darüber ist ein kleiner Blitz eingebaut. Wie bei vielen beliebten Fujifilm-Kameras sitzt auf der linken Schulter ein Filmsimulationsrad.


Der Blitz über dem Sucher der X-T30 III wurde ausgeklappt.

Der Blitz über dem Sucher der X-T30 III wurde ausgeklappt.

Über dem mittig angebrachten Sucher befindet sich ein kleiner Blitz.

(Bild: Fujifilm)

Die Bildstabilisierung erfolgt wie gehabt digital und ist in erster Linie für Videoaufnahmen gedacht. Hier soll die X-T30 III Aufnahmen bis zu 6,2K bei 30 Bildern pro Sekunde liefern, in Full-HD bis zu 240 Bildern pro Sekunde.

c’t Fotografie Zoom In abonnieren

Ihr Newsletter mit exklusiven Foto-Tipps, spannenden News, Profi-Einblicken und Inspirationen – jeden Samstag neu.

E-Mail-Adresse

Ausführliche Informationen zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten erhalten Sie in unserer Datenschutzerklärung.

Gleichzeitig mit der X-T30 III stellt Fujifilm das neue FUJINON XC13-33mm F3.5-6.3 OIS vor. Das kleine Zoomobjektiv wiegt nur 125 Gramm und misst im eingefahrenen Zustand gerade einmal 3,8 Zentimeter, dafür reduziert ein Einziehmechanismus die Baulänge, wenn es nicht genutzt wird. Es soll das kleinste und leichteste Zoomobjektiv für X-Serie-Kameras sein.

Das Objektiv deckt Brennweiten von 13 bis 33 Millimetern ab, was 20 bis 50 Millimetern an Vollformatkameras entspricht. Die optische Konstruktion umfasst zehn Elemente in neun Gruppen. Vier asphärische Linsen und drei ED-Glaselemente sollen Abbildungsfehler minimieren. Es verfügt über neun Blendenlamellen und besitzt ein 49-Millimeter-Filtergewinde.


Ein Fotograf baut den Weitwinkelzoom an die Kamera.

Ein Fotograf baut den Weitwinkelzoom an die Kamera.

Das neue Weitwinkelzoom ist im Set mit der X-T30 III für 1100 Euro erhältlich.

(Bild: Fujifilm)

Der Autofokus stellt laut Hersteller in 0,025 Sekunden scharf. Ein integrierter Bildstabilisator soll bis zu vier Blendenstufen ausgleichen. Das Objektiv fokussiert ab 20 Zentimetern Entfernung und erreicht eine maximale Vergrößerung von 0,25x.

Mit der X-T30 III knüpft Fujifilm an das Konzept der X-T30 II an, hebt sie aber durch Neuerungen bei Prozessor und Autofokus auf einen Stand, der am Markt wieder attraktiv ist. Gehäuse, Display und Sucher bleiben unverändert. Die Kamera ist ab November 2025 für 950 Euro erhältlich. Im Vergleich zur X-T30 II ist sie so 50 Euro teurer und vor allem für Fotografen interessant, die einen präziseren Autofokus suchen. Im Set mit dem FUJINON XC13-33mmF3.5-6.3 OIS kostet sie 1100 Euro und ist ab Dezember 2025 im Handel. Einzeln ist das neue Zoomobjektiv ab Januar 2026 für 380 Euro erhältlich.


(cbr)



Source link

Weiterlesen

Künstliche Intelligenz

SpaceX deaktiviert Starlink-Antennen bei mutmaßlichen Scam-Zentren in Myanmar


Das Raumfahrtunternehmen SpaceX hat nach eigener Aussage mehr als 2500 Starlink-Antennen in der Umgebung von Scam-Zentren in Myanmar außer Betrieb genommen. Das hat Lauren Dreyer auf dem Kurznachrichtendienst X publik gemacht, sie ist für den Geschäftsbetrieb bei Starlink verantwortlich. Die Managerin spricht von einem der „seltenen Fälle“, in denen man bei SpaceX einen Verstoß gegen Gesetze festgestellt habe, weshalb man „die angemessene Maßnahme“ ergriffen habe. Der Schritt wurde laut NBC News jetzt kurz nach einer größeren Operation des Militärs von Myanmar publik, bei der dutzende Starlink-Terminals sichergestellt und fast 2200 Menschen festgenommen worden seien.

Weiterlesen nach der Anzeige

In Myanmar hat Anfang 2021 die Armee geputscht und die demokratisch gewählte De-facto-Regierungschefin Aung San Suu Kyi entmachtet. Anfangs versprochene Neuwahlen wurden nie abgehalten, das Land versinkt seitdem immer mehr in Chaos und Gewalt. Das herrschende Militär versucht jeden Widerstand zu unterdrücken, aber im ganzen Land kämpfen verschiedene Rebellengruppen teils äußerst erfolgreich gegen die Machthaber. Unter diesen Verhältnissen haben kriminelle Organisationen in einigen Gebieten großangelegte Betrugsoperationen etabliert, in denen Zehn- oder womöglich gar Hunderttausende gezwungen werden, Menschen in aller Welt über das Internet zu kontaktieren und ihnen mit unterschiedlichen Maschen Geld abzunehmen.

Erst nach massivem internationalem Druck haben die verschiedenen Kriegsparteien in dem Land begonnen, teils gemeinsam gegen die kriminellen Banden vorzugehen, schreibt NBC News weiter. Bei großangelegten Operationen wurden Anfang des Jahres tausende Menschen befreit, wie die Tagesschau damals berichtet hat. Der Aktion von SpaceX sind dem US-Bericht zufolge jetzt Hinweise vorausgegangen, dass die Kriminellen für die Scams in großem Umfang auf das Satelliteninternet Starlink zurückgreifen. Fotos zeigen Hausdächer mit dutzenden der dafür nötigen Antennen. Ob die Maßnahme die Kriminellen nun massiv stört, muss sich erst noch zeigen.

SpaceX von Elon Musk baut Starlink seit 2019 auf, fast 9000 aktive Satelliten liefern inzwischen auf allen Kontinenten schnelle Internetverbindungen. Künftig sollen 30.000 Satelliten angeblich vor allem Regionen anbinden, bei denen konventionelle Technik nicht wirtschaftlich ist. Doch die vergleichsweise schnellen und von klassischen Kabelnetzen unabhängig benutzbaren Satelliteninternetverbindungen werden immer wieder auch von Kriminellen benutzt. Vor einem Jahr hat die indische Polizei in der Nähe von abgelegenen Inseln geschmuggelte Drogen im Wert von mehreren Milliarden US-Dollar sichergestellt und von SpaceX Informationen zu ebenfalls sichergestellter Starlink-Technik gefordert, die von den Kriminellen benutzt wurde.


(mho)



Source link

Weiterlesen

Beliebt