Navigation überspringen

Softwaretest von Quantenprogrammen

Quantencomputer gelten schon lange als die Zukunft schlechthin. Sie sind um ein Vielfaches schneller als normale Rechner und können so große Datenmengen in wenigen Sekunden verarbeiten, Verschlüsselungen knacken oder komplexe Aufgaben berechnen. Doch was ändert sich im Softwaretest von Quantenprogrammen gegenüber denen klassischer Software?
 

Von Bits und Qubits

Herkömmliche IT-Systeme (PC, Laptop, Smartphones) steuern Informationen in Form von Nullen und Einsen über Bits bzw. Bytes an. Die Zahl „42“ wird z.B. durch die Bit-Reihe „101010“ dargestellt und der Buchstabe „S“, per Konvention, durch die Bit-Reihe „01010011“. Der Computer merkt sich, ob eine Bit-Reihe eine Zahl, einen Buchstaben, ein Bild oder Musik darstellt. Die Bits selbst existieren in Form von Milliarden elektrischer An-/Ausschalter, den Transistoren. Zusammen bilden sie den Arbeitsspeicher des Computers. Ein Computerprogramm manipuliert diese Bits in einzelnen Rechenschritten über die elementarsten Bausteine der menschlichen Logik: UND-Verknüpfungen, ODER-Verknüpfungen und NICHT-Verknüpfungen. Diese Verknüpfungen werden auch Gatter genannt. Eine NICHT-Verknüpfung kehrt ein einzelnes Bit z.B. in sein Gegenteil um: NICHT 0 = 1, NICHT 1 = 0.

Die Informationsträger in Quantencomputern bezeichnet man dagegen als Quantenbits oder Qubits. Im Gegensatz zu Bits befinden sich Qubits während der Berechnung gleichzeitig sowohl im Zustand “0” als auch “1” – (jeweils mit einer bestimmten Wahrscheinlichkeit. Erst am Ende des Berechnungsvorgangs befindet sich ein Qubit dann sicher in einem der beiden Zustände “0” oder “1”.

Quantenbits unterliegen im Gegensatz zu klassischen Bits den physikalischen Gesetzen der Quantenmechanik und bringen daher einige Eigenschaften mit, die klassische Bits nicht besitzen. Die wichtigsten dieser Eigenschaften sind zum einen die Superposition und zum anderen die Verschränkung.

Superposition

  • Während des Berechnungsvorgangs können Qubits in eine sogenannte Superposition überführt werden. In diesem Zustand lässt sich für ein konkretes Qubit, welches sich in der Superposition befindet, nicht mit Sicherheit sagen, ob es nun den Wert „0“ oder „1“ besitzt, sondern nur noch, dass es mit einer bestimmten Wahrscheinlichkeit am Ende des Berechnungsvorgangs den Wert „0“ bzw. „1“ haben wird.

Verschränkung

  • Durch verschiedene Operationen innerhalb des Quantencomputers können Qubitsverschränkt werden. Sind mehrere Qubits miteinander verschränkt, kann der Zustand eines Qubits nicht mehr unabhängig von den Zuständen der anderen Qubits des Systems beschrieben werden.

Das Ziel beim Quantencomputing ist es, Algorithmen (Handlungsvorschriften zur Lösung eines Problems) zu entwickeln, die das jeweilige Problem unter Ausnutzung der Superposition sowie der Verschränkung lösen. Durch das Benutzen dieser beiden quantenmechanischen Eigenschaften kann sich, je nach Problem und Algorithmus, ein potenziell großer Geschwindigkeitsvorteil ergeben.

Quantencomputer programmieren

Ein Quantencomputer kann analog zu einem mathematischen Modell, das eine abstrakte Maschine definiert (Turingmaschine), programmiert werden. Es werden jedoch spezielle Algorithmen benötigt, damit die besonderen Eigenschaften, wie Superposition und Verschränkung, nicht ungenutzt bleiben.

Es gibt bereits Open Source Frameworks für die Programmierung von Quantencomputern. Standard Application Programming Interface (API) mit Client-Bibliotheken der Programmiersprachen C / C++, Python oder MATLAB und einige mehr sind verfügbar. Zudem gibt es von IBM eine einfache grafische Benutzeroberfläche, über die Interessierte mit den Quantencomputern experimentieren können.

Je nach Architektur der Quantencomputer werden unterschiedliche Programme benötigt, denn der Compiler muss die Befehle im Programm in physikalische Manipulation der Qubits umsetzen – und die Ausführung der Befehle unterscheidet sich für Photonen, Atome oder Supraleiter deutlich. Welche Quantenalgorithmen schließlich genutzt werden, hängt also davon ab, welche Architektur sich durchsetzen wird.

Theoretisch könnte man auf einem Quantencomputer die klassischen Algorithmen implementieren. Auf einem Quantencomputer lassen sich schließlich alle Berechnungen durchführen, die auf einem klassischen Computer möglich sind. Allerdings wären diese Berechnungen aufgrund der Eigenschaften der quantenphysikalischen Systeme, mit denen Quantencomputer realisiert werden, äußerst ineffizient und die Vorteile des Quantencomputers blieben ungenutzt. Daher geht es darum, spezielle Quantenalgorithmen zu entwickeln, die die Eigenschaften der Quantencomputer effektiv nutzen. Mit diesen Quantenalgorithmen ist es möglich, komplexe mathematische Anforderungen, etwa multiple Optimierungsprobleme, in deutlich kürzerer Zeit zu lösen.

Test von Quantenprogrammen

Wie bei herkömmlichen Computerprogrammen muss auch in der Programmierung von Quantencomputern überprüft werden können, ob sich die Quantenprogramme wie vorgesehen verhalten. Zudem muss es möglich sein, abweichendes Verhalten zu analysieren. Im Gegensatz zur herkömmlichen Programmierung ist es jedoch nicht einfach, den Zustand eines Quantensystems zu beobachten und das Verhalten eines Quantenprogramms nachzuverfolgen.

Eines der Merkmale der mit Quantencomputern durchgeführten Berechnungen ist die Unbestimmtheit der Ergebnisse, die nicht immer gleich sind: Ein und dasselbe Programm kann bei zweimaliger Ausführung unterschiedliche Ergebnisse mit unterschiedlichen Wahrscheinlichkeiten liefern. Diese Unsicherheit führt zu interessanten Herausforderungen beim Testen von Quantenprogrammen.

Anders verhält es sich, wenn das Quantenprogramm auf einem Simulator ausgeführt wird, der deterministische Ergebnisse liefert. Allerdings kann die Komplexität eines Quantenprogramms das Testen auf einem Simulator zu einer unlösbaren Aufgabe machen.

In einem klassischen Softwaretestprojekt ist ein Testfall eine Spezifikation der Eingaben, Ausführungsbedingungen und der erwarteten Ergebnisse. Diese Spezifikation definiert einen einzelnen Test, der auszuführen ist, um ein bestimmtes Testziel zu erreichen. Eine der gewünschten Eigenschaften von Testfällen ist ihre Wiederholbarkeit: Das heißt, das Ergebnis eines Tests muss immer das Gleiche sein.

Um einen Testfall auf einem Quantencomputer qualifiziert auszuführen, muss derselbe Testfall also mehrmals ausgeführt werden, um dann das Ergebnis, das am häufigsten auftrat, mit dem erwarteten Ergebnis zu vergleichen.

Testverfahren

Im klassischen Softwaretest unterscheiden wir gemäß ISTQB® zwischen Black-Box und White-Box-Testverfahren.

Im White-Box-Testverfahren wird die interne Struktur der Maschine, des Algorithmus oder Geräts, allgemein als System under Test (SUT) bezeichnet. Im White-Box-Testverfahren haben wir Zugang zum Code des Softwaresystems. Quantensysteme bringen in diesem Testverfahren viele Einschränkungen mit sich. Selbst wenn wir die in der Maschine stattfindenden Transformationen kennen, können wir das Ergebnis nicht überprüfen, da jede Messung den Zustand des Systems unwiderruflich zerstört.

Black-Box-Testverfahren, sowohl im Rahmen von Quantencomputing genutzt oder klassisch, erlauben es dem Tester nicht, in das Innere des SUT zu sehen. Die einzig mögliche Interaktion mit der Maschine erfolgt über deren Ein- und Ausgänge.

Auch beim Test von Quantenprogrammen ist zwischen Black- und White-Box-Testverfahren zu unterscheiden. Allerdings müssen diese Verfahren auf Basis des theoretischen Modells des Systems eingesetzt werden, welches die durchzuführenden Transitionen und deren Wahrscheinlichkeiten beschreibt. Um solche Systeme zu beschreiben, wurde bereits 1985 das theoretische Modell der Quanten-Turing-Maschine (QTM) eingeführt, mit der die Auswirkungen eines Quantencomputers modelliert werden. Die QTM bietet ein einfaches Modell, das die gesamte Leistung der Quantenberechnung erfasst, das heißt, jeder Quantenalgorithmus kann formal als eine bestimmte QTM ausgedrückt werden.

Quanten-Turing-Maschinen können in einem auf Übergangsmatrizen basierenden Framework mit klassischen und wahrscheinlichkeitsaussagenden (probabilistischen) Turing-Maschinen in Beziehung gesetzt werden. Das heißt, es kann eine Matrix (Tabelle) spezifiziert werden, deren Ergebnis einer Multiplikation (Produkt) mit der Matrix, die eine klassische oder probabilistische Maschine darstellt, entspricht. So lässt sich die Quantenwahrscheinlichkeitsmatrix berechnen, die die Quantenmaschine darstellt.

Funktionstest

In der Praxis stellen Quantenprogramme konventionellen Programmen über eine Art Schnittstelle Quantenfunktionalitäten zur Verfügung. So ruft das konventionelle Programm das Quantenprogramm auf, das auf einem Quantencomputer läuft, um eine bestimmte Berechnung durchzuführen.

Beim Funktionstest werden durch die Menge der Testfälle die verschiedenen Funktionalitäten, die das System under Test (SUT) bietet, getestet. Typischerweise werden durch die Testsuite die gleichen Operationen auf dem System ausgeführt, die ein Anwender ausführen könnte.

Der Quantencomputer bietet Dienste für ein konventionelles IT-System

Eine funktionale Testsuite könnte nun den Anwender ersetzen.

Auf die gleiche Weise könnte eine Quanten Testsuite – zum Testen des eigentlichen Quantenprogramms – die konventionellen Systemfunktionalitäten ersetzen.

Funktionale Testsuite ersetzt den Anwender

 

Um den erwähnten Nicht-Determinismus des Testfalls zu berücksichtigen, muss dieser jetzt mehrmals ausgeführt werden.

Um die dreiteilige Struktur (Spezifikation der Eingaben, Ausführungsbedingungen, erwartete Ergebnisse) eines Testfalls zu gewährleisten, ist der oben beschriebenen Unsicherheit mit der mehrmaligen Ausführung jedes Testfalls zu begegnen.

  1. Die Ausgangssituation eines Quanten-Testfalls bestimmt den Anfangszustand der Qubits.
  2. Wie bei einem herkömmlichen Softwaretest wird die Quantenschaltung ausgeführt.
  3. Danach speichert die Testsuite das erzielte Ergebnis, um in einem letzten Schritt zu berechnen, welches das wahrscheinlichste tatsächliche Ergebnis ist.

Fazit

Nach heutigem Stand – wobei das Thema noch immer in den Kinderschuhen steckt – lässt sich sagen, dass sich beim Softwaretest von Quantenprogrammen gegenüber klassischer Software wohl nicht viel ändern wird.

Zwar haben wir in der ITGAIN selbst noch keine Erfahrung im Softwaretest für Quantenprogramme, aber den skizzierten Testverfahren können wir durchaus entgegentreten. Die Testverfahren, egal ob Back- oder White-Box-Testverfahren, beherrschen wir. Profitieren Sie von unserem ISQTB® Certified Tester Foundation Level Seminar, in dessen Rahmen Sie einen umfassenden Einblick in alle Testverfahren erlangen. Vertiefen Sie diesen Einblick durch die praxisnahen Übungen.

Die beruflichen Aussichten als Softwaretester sind zukunftssicher. Banken und Versicherungen, die Luftfahrt, der Handel, die Automobilindustrie, die Medizintechnik, die Logistik – alles Branchen, in denen Software eingesetzt wird – benötigen immer performante Systeme auf dem aktuellen Stand der Technik und des digitalen Übermorgen.

Für das Team Qualitätsmanagement suchen wir Mitarbeiter mit einem abgeschlossenen Hochschulstudium (Informatik, Wirtschaftsinformatik, Naturwissenschaften) oder einer vergleichbaren Ausbildung.

Aber auch Quereinsteiger, welche technisches Verständnis mitbringen, Spaß an der Programmierung haben, strukturiert denken und arbeiten, kreativ und neugierig sind und ausgezeichnet kommunizieren, sind bei uns gern gesehen.

Dein Interesse ist geweckt? Dann bewirb dich noch heute und gestalte mit uns das digitale Übermorgen.

Mit uns wird IT einfach.

Nehmen Sie Kontakt auf

Unsere Website kann natürlich nur einen ersten Eindruck von uns und unserem Leistungsspektrum vermitteln. Viel besser können wir in einem persönlichen Gespräch darstellen, wer wir sind, was uns ausmacht und was wir für Sie tun können. Per E-Mail, am Telefon oder face to face. Wir freuen uns auf den Dialog mit Ihnen.

Captcha Grafik