Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

Bereitstellen statischer Analysen und Komponententests in containerisierten Umgebungen, Teil 1

Headshot von Miroslaw Zielinski, Direktor Produktmanagement bei Parasoft
6. Juni 2023
11 min lesen

Sind Sie neugierig auf Containerumgebungen? Erfahren Sie, was sie sind, warum Ihr Team sie verwenden sollte und welche Best Practices es gibt. Anschließend erfahren Sie, wie Sie den Parasoft C/C++-Test für containerisierte Entwicklungsumgebungen konfigurieren.

Containerisierte Umgebungen verstehen

Containerisierte Umgebungen haben in den letzten Jahren aufgrund ihrer Fähigkeit, die Bereitstellung und Verwaltung von Anwendungen zu rationalisieren, erheblich an Popularität gewonnen. Ein Container ist ein leichtes, eigenständiges Paket, das alles enthält, was zum Ausführen einer Anwendung erforderlich ist, einschließlich Code, Laufzeit, Systemtools und Bibliotheken. Es kapselt die Anwendung und ihre Abhängigkeiten und bietet so eine konsistente und isolierte Umgebung über verschiedene Plattformen und Betriebssysteme hinweg.

Das Verständnis von Containerumgebungen ist für Softwareentwickler von entscheidender Bedeutung, da es die Art und Weise, wie Anwendungen erstellt und bereitgestellt werden, revolutioniert. Einer der Hauptvorteile der Containerisierung ist ihre Portabilität.

Container kapseln die gesamte Laufzeitumgebung, einschließlich Anwendungscode, Bibliotheken und Konfigurationen. Dadurch können Entwickler einmalig ein Container-Image erstellen und es auf jedem System ausführen, das die Containerisierung unterstützt, beispielsweise Docker oder Kubernetes. Dadurch wird das Problem „Es funktioniert auf meinem Computer“ beseitigt, da der Container in allen Entwicklungs-, Test- und Produktionsumgebungen konsistent ausgeführt wird. Diese Portabilität vereinfacht den Bereitstellungsprozess erheblich und macht es einfacher, Anwendungen zwischen verschiedenen Hosting-Umgebungen zu verschieben oder sie je nach Bedarf zu vergrößern oder zu verkleinern.

Ein weiterer Vorteil der Containerisierung ist die Möglichkeit, Anwendungen und ihre Abhängigkeiten zu isolieren. Container nutzen die Virtualisierung auf Betriebssystemebene, um isolierte Instanzen zu erstellen, die dasselbe Host-Betriebssystem verwenden. Durch diese Isolierung wird sichergestellt, dass Anwendungen, die in einem Container ausgeführt werden, Anwendungen in anderen Containern nicht beeinträchtigen oder beeinträchtigen, wodurch eine sicherere und stabilere Umgebung entsteht. Entwickler können getrost mit verschiedenen Bibliotheken, Frameworks und Konfigurationen experimentieren, ohne sich Gedanken über Konflikte oder Beeinträchtigungen der Stabilität des Gesamtsystems machen zu müssen.

Was ist eine containerisierte Entwicklungsumgebung?

Unter einer containerisierten Entwicklungsumgebung versteht man die Verwendung von Containern zur Kapselung und Verwaltung der Softwareentwicklungsumgebung. Dabei geht es darum, eine eigenständige, isolierte Umgebung zu erstellen, die alle notwendigen Tools, Abhängigkeiten und Konfigurationen umfasst, die für die Entwicklung einer Anwendung erforderlich sind.

In einer containerisierten Entwicklungsumgebung werden die Entwicklungstools, Programmiersprachen, Bibliotheken und andere Abhängigkeiten in ein Container-Image gepackt. Dieses Bild dient als tragbare und reproduzierbare Darstellung der Entwicklungsumgebung. Entwickler können diese Container-Images erstellen, ändern und freigeben, um Konsistenz sicherzustellen und die Zusammenarbeit zwischen Teammitgliedern zu erleichtern.

Mithilfe von Containerisierungstechnologien wie Docker können Entwickler leichte, eigenständige Container erstellen, die vom Hostsystem und anderen Containern isoliert sind. Jeder Container bietet eine konsistente und einheitliche Umgebung, unabhängig vom zugrunde liegenden Host-Betriebssystem oder der Maschinenkonfiguration.

Containerisierte Entwicklungsumgebungen bieten mehrere Vorteile, wie z. B. die Sicherstellung der Konsistenz zwischen Teammitgliedern auf verschiedenen Maschinen, insbesondere im Entwicklungsumgebung für eingebettete Softwaresysteme, was sehr komplex sein kann. Eine Containerumgebung ermöglicht es Entwicklern, mit demselben Software-Stack, denselben Bibliotheken und Konfigurationen zu arbeiten, wodurch Kompatibilitätsprobleme vermieden und der Zeitaufwand für die Einrichtung der Umgebung reduziert werden.

Mit anderen Worten: Containerumgebungen ermöglichen eine einfache Einrichtung und Reproduzierbarkeit. Entwickler können ihre Anwendungen zusammen mit allen erforderlichen Abhängigkeiten in ein Container-Image packen. Dieses Image kann geteilt werden, sodass andere schnell dieselbe Entwicklungsumgebung einrichten können. Dadurch wird sichergestellt, dass sich die Anwendung in verschiedenen Umgebungen konsistent verhält, was die Zusammenarbeit und Bereitstellungsprozesse erleichtert.

Ein weiterer Vorteil von containerisierten Entwicklungsumgebungen besteht darin, dass sie Flexibilität bieten. Entwickler können ohne Konflikte zwischen Projekten oder verschiedenen Softwareversionen wechseln. Jedes Projekt kann über einen eigenen Container verfügen, der seine Abhängigkeiten und Konfigurationen isoliert. Diese Flexibilität ermöglicht eine parallele Entwicklung und Softwaretests. Es ermöglicht einen leistungsstarken CI/CD-Workflow Automatisierung der statischen Analyse und Unit-Tests für jeden Entwickler nach einem erfolgreichen Code-Build. Dieser Workflow ermöglicht qualitativ hochwertigen Code, indem er Fehler findet, bevor der Code in das Master-Repository übertragen wird.

Darüber hinaus verbessert die Containerisierung die Skalierbarkeit und Ressourceneffizienz. Container sind leichtgewichtig und haben einen minimalen Overhead, sodass Entwickler die Systemressourcen effizient nutzen können. Auf einem einzigen Host-Rechner können mehrere Container ausgeführt werden, was eine parallele Entwicklung und Tests ermöglicht. Diese Skalierbarkeit ist bei der Arbeit an großen Projekten oder verteilten Systemen von Vorteil.

Warum eine Container-Entwicklungsumgebung verwenden?

Der Einsatz einer containerisierten Entwicklungsumgebung bietet Softwareentwicklungsteams mehrere Vorteile. Hier sind einige Gründe, warum Entwickler die Containerisierung nutzen sollten.

  1. Sorgt für Konsistenz. Container sorgen für Konsistenz über verschiedene Entwicklungsumgebungen und Teammitglieder hinweg. Bei der Containerisierung arbeiten alle mit demselben Software-Stack, denselben Bibliotheken und denselben Konfigurationen. Dadurch wird das Problem „Es funktioniert auf meinem Computer“ beseitigt und Kompatibilitätsprobleme reduziert, was eine reibungslosere Zusammenarbeit und eine einfachere Einbindung neuer Teammitglieder ermöglicht.
  2. Erleichtert die Reproduzierbarkeit. Durch die Containerisierung können Entwickler ihre Anwendungen zusammen mit allen erforderlichen Abhängigkeiten in ein Container-Image packen. Dieses Bild kann mit anderen geteilt werden, um sicherzustellen, dass jeder über eine identische Entwicklungsumgebung verfügt. Es vereinfacht den Einrichtungsprozess und stellt sicher, dass sich die Anwendung in verschiedenen Umgebungen von der Entwicklung bis zur Produktion konsistent verhält.
  3. Sorgt für Flexibilität. Containerisierte Entwicklungsumgebungen bieten Flexibilität durch die Isolierung von Abhängigkeiten und Konfigurationen innerhalb von Containern. Entwickler können problemlos und konfliktfrei zwischen Projekten oder verschiedenen Softwareversionen wechseln. Jedes Projekt kann über einen eigenen Container verfügen, der eine parallele Entwicklung ermöglicht und das Experimentieren mit neuen Bibliotheken oder Tools erleichtert.
  4. Erleichtert Skalierbarkeit und Effizienz. Container sind leichtgewichtig und haben einen minimalen Overhead, was eine effiziente Nutzung der Systemressourcen ermöglicht. Auf einem einzigen Host-Rechner können mehrere Container ausgeführt werden, was parallele Entwicklung, Tests und Skalierbarkeit ermöglicht. Darüber hinaus können Container problemlos über verschiedene Maschinen oder Cloud-Infrastrukturen hinweg skaliert werden, was die Entwicklung verteilter Systeme erleichtert und die Produktivität verbessert.
  5. Verbessert die Zusammenarbeit. Die Containerisierung vereinfacht die Zusammenarbeit innerhalb von Entwicklungsteams. Container bieten eine portable und konsistente Umgebung und erleichtern die gemeinsame Nutzung von Entwicklungsumgebungen durch Teammitglieder. Dadurch wird sichergestellt, dass alle mit denselben Tools und Abhängigkeiten arbeiten, was eine reibungslosere Codeüberprüfung, Fehlerbehebung und Wissensweitergabe ermöglicht.
  6. Funktioniert gut mit Versionskontrolle. Die Containerisierung lässt sich gut in Versionskontrollsysteme integrieren. Entwickler können die Containerkonfigurationsdateien einbinden, z Docker-Dateien, in ihren Code-Repositorys. Dies ermöglicht die Versionierung und Verfolgung von Änderungen an der Entwicklungsumgebung, wodurch es einfacher wird, bestimmte Versionen der Anwendung zusammen mit ihrer Umgebung zu reproduzieren.
  7. Optimiert Sicherheit und Isolation. Container bieten erhöhte Sicherheit, indem sie Anwendungen und ihre Abhängigkeiten vom zugrunde liegenden Hostsystem isolieren. Jeder Container arbeitet in seiner eigenen isolierten Umgebung, wodurch die Auswirkungen potenzieller Sicherheitsverletzungen reduziert werden. Container-Images können außerdem auf Schwachstellen gescannt werden und Aktualisierungen können einfach angewendet werden, wodurch eine sicherere Entwicklungsumgebung gewährleistet wird.

Best Practices für eine Container-Entwicklungsumgebung

Wenn es um containerisierte Entwicklungsumgebungen geht, kann die Befolgung von Best Practices die Produktivität erheblich steigern und reibungslose Entwicklungsabläufe gewährleisten. Hier sind einige wichtige Richtlinien, die Sie beachten sollten.

Verwenden Sie eine Docker-Datei

Docker-Dateien sind für die Definition der Konfiguration und Abhängigkeiten Ihrer Containerumgebung unerlässlich. Anstatt Container manuell zu konfigurieren, verwenden Sie Dockerfiles, um den Prozess zu automatisieren. Beginnen Sie mit einem Basis-Image, geben Sie die erforderlichen Abhängigkeiten an und fügen Sie die Befehle zum Erstellen und Ausführen Ihrer Anwendung hinzu. Dieser Ansatz gewährleistet Konsistenz und Reproduzierbarkeit in verschiedenen Umgebungen.

Nutzen Sie die Container-Orchestrierung

Container-Orchestrierungsplattformen wie Kubernetes bieten leistungsstarke Tools für die Verwaltung von Containeranwendungen im großen Maßstab. Sie ermöglichen Funktionen wie automatische Skalierung, Lastausgleich und Serviceerkennung. Die Nutzung der Container-Orchestrierung vereinfacht die Bereitstellung und Überwachung und erleichtert so die effektive Verwaltung und Skalierung Ihrer Anwendungen.

Optimieren Sie Containergröße und Leistung

Halten Sie Ihre Container-Images so klein wie möglich, indem Sie die Anzahl der Ebenen minimieren und unnötige Abhängigkeiten entfernen. Kleinere Images lassen sich schneller erstellen, übertragen und bereitstellen. Stellen Sie außerdem sicher, dass Ihre Container ordnungsgemäß für die Ressourcenverwaltung konfiguriert sind. Sie können Parasoft C/C++test verwenden, um den Prozess der Erstellung eines Container-Images zu vereinfachen. Mit Parasoft C/C++test können Sie ganz einfach Ressourcenlimits und -anforderungen entsprechend festlegen, um zu verhindern, dass Container übermäßige Ressourcen verbrauchen und die Leistung anderer Container beeinträchtigen.

Automatisieren Sie die Einrichtung der Entwicklungsumgebung

Die manuelle Einrichtung von Entwicklungsumgebungen kann zeitaufwändig und fehleranfällig sein. Automatisieren Sie den Prozess stattdessen mit Konfigurationsmanagement-Tools wie GitHub oder Bereitstellungstools wie Vagrant. Mit der Automatisierung können Sie mit nur wenigen Befehlen containerisierte Entwicklungsumgebungen schnell hoch- oder herunterfahren, was die Einrichtungszeit verkürzt und die Konsistenz im gesamten Team gewährleistet.

Implementieren Sie Sicherheitspraktiken

Behälter sollten als kurzlebige, wegwerfbare Einheiten behandelt werden. Aktualisieren Sie Ihre Container-Images und Basis-Images regelmäßig, um die neuesten Sicherheitspatches aufzunehmen. Vermeiden Sie die Ausführung von Containern mit unnötigen Berechtigungen und setzen Sie strenge Zugriffskontrollen durch, um das Risiko eines unbefugten Zugriffs zu minimieren. Erwägen Sie außerdem, Container-Images mit Tools wie Clair oder Anchore auf Schwachstellen zu scannen.

Containerbilder zur Versionskontrolle

Behandeln Sie Containerbilder als Codeartefakte und nutzen Sie Versionskontrollsysteme, um sie zu verwalten. Durch die Pflege eines Versionsverlaufs Ihrer Container-Images können Sie bei Problemen problemlos auf einen früheren Zustand zurückgreifen. Darüber hinaus ermöglicht die Verwendung einer Container-Registrierung die einfache Verteilung und gemeinsame Nutzung von Container-Images in Ihrem Entwicklungsteam.

Während die Einhaltung dieser Best Practices effiziente und zuverlässige Container-Entwicklungsumgebungen gewährleisten kann, bleibt die Bereitstellung von Codequalität und -zuverlässigkeit in Container-Umgebungen ein wichtiges Anliegen für Entwickler. Bereitstellung statischer Analysen und Unit-Test in Containerumgebungen bietet eine leistungsstarke Lösung zur Bewältigung dieser Herausforderungen. Nachfolgend finden Sie eine detaillierte Erklärung, wie Entwickler ParasoftC/C++ nutzen können, um Docker-Container effizient zu nutzen.

So konfigurieren Sie den Parasoft C/C++-Test für containerisierte Entwicklungsumgebungen

Parasoft C / C ++ test ist einfach mit Docker-Containern zu verwenden. Ich führe Sie durch die Schritte zum Konfigurieren von C/C++test für die Arbeit in containerisierten Entwicklungsumgebungen.

Eingebettete Entwicklungsteams lieben Docker-Container

Containergesteuerte Bereitstellungen von Entwicklungstools werden zum Kernstück eingebetteter Entwicklungsteams. Obwohl Container ursprünglich entwickelt wurden, um Probleme bei der Bereitstellung von Microservices und webbasierten Anwendungen zu lösen, wurden sie kürzlich bei eingebetteten Teams immer beliebter - insbesondere bei großen Teams, die Container zur Verwaltung komplexer Toolchains verwenden.

Bei der Verwaltung komplexer Entwicklungsumgebungen, insbesondere im sicherheitskritischen Bereich, haben Teams normalerweise mit den folgenden Herausforderungen zu kämpfen:

  • Synchronisieren von Upgrades für das gesamte Team auf eine neue Version eines Tools wie eines Compilers, Erstellen einer Toolchain usw.
  • Dynamische Reaktion auf einen neuen Sicherheitspatch für die Bibliothek oder das Software Development Kit (SDK) und dergleichen.
  • Sicherstellung der Konsistenz der Toolchain für alle Teammitglieder und der automatisierten Infrastruktur (CI / CD).
  • Fähigkeit, die Entwicklungsumgebung zu versionieren und sie so wiederherzustellen, dass sie die ältere Version des Produkts bedient, die mit der spezifischen Toolchain zertifiziert wurde.
  • Onboarding und Einrichtung neuer Entwickler.

All diese Probleme lassen sich mit Containern leicht lösen. Kein Wunder, dass Teams Container lieben! Schauen wir uns an, wie man C/C++test für die Verwendung in einer Containerumgebung konfiguriert.

Verwenden von Parasoft C / C ++ Test Professional Mit einer Containerized Compilation Toolchain

Es ist einfach, Parasoft C / C ++ test Professional so zu konfigurieren, dass es mit einer Kompilierungs-Toolchain und der in Containern bereitgestellten Ausführungsumgebung funktioniert. Wir unterstützen Bereitstellungen, die auf Linux- und Docker-Containern basieren. Hier ist eine allgemeine Übersicht darüber, wie diese Art der Einrichtung aussieht:

Wie Sie sehen können, greift der C / C ++ - Test auf den containerisierten Compiler (GNU GCC) und die Laufzeitumgebungen zu. In diesem speziellen Setup gibt es zwei separate Docker-Container:

  • Eine für den Compiler und Build-Tools
  • Eine andere für die Ausführungsumgebung (z. B. abgespeckte Version von Embedded Linux)

Lassen Sie uns sehen, wie Sie C / C ++ test Professional für die Arbeit mit einer In-Container-Kompilierungs-Toolchain und einer Ausführungsumgebung konfigurieren. Im Beispiel verwenden wir die neueste GCC Container-Image über den Docker-Hub verfügbar.

Lassen Sie uns sehen, wie Sie C / C ++ test Professional für die Arbeit mit einer In-Container-Kompilierungs-Toolchain und einer Ausführungsumgebung konfigurieren. Im Beispiel verwenden wir die neueste GCC Container-Image über den Docker-Hub verfügbar.

Die folgenden Anweisungen setzen voraus, dass Sie eine haben Dockermotor korrekt in Ihrer Umgebung installiert und konfiguriert ist. Und das Gleiche gilt für C/C++test Professional.

Schritt 1: Starten Sie den Parasoft C / C ++ - Test

  1. Stellen Sie sicher, dass Ihr Docker funktioniert. Beginnen wir mit einem kurzen Test und drucken die Versionsnummer des GCC-Compilers aus, die im „neuesten“ Image des GCC-Containers enthalten ist.
  2. Bevor wir den Parasoft C / C ++ - Test starten, Legen Sie eine dedizierte Umgebungsvariable fest CPPTEST_CONTAINER_NAME auf den Namen des Containers. Dies ist eine einfache Möglichkeit, dem C / C ++ - Test mitzuteilen, welcher Container zum Aufrufen des Compilers oder Linkers verwendet werden soll. Es funktioniert gut mit Jenkins Jobs.
  3. Außerdem empfehle ich Ihnen Setzen Sie die Variable CPPTEST_INSTALL um auf das C / C ++ - Testinstallationsverzeichnis zu verweisen. Dies ermöglicht eine einfache Einrichtung. Sobald die Variablen festgelegt sind, können wir den C / C ++ - Test starten.
  4. Wählen Sie für Ihren Arbeitsbereich einen Standort aus irgendwo im HOME-Verzeichnis (dazu später mehr).


Schritt 2: Erstellen Sie ein Demo-Projekt

Um das Erstellen eines Demoprojekts zu vereinfachen, erstellen wir das Standardprojekt „HelloWorld“ mit dem Standardassistenten „Neues Projekt“.

  1. Wählen Sie "Dateimenü"> "Neu"> "C ++ - Projekt" und dann "Hallo Welt C ++ - Projekt".
  2. Geben Sie den Namen Ihrer Wahl für Ihr Projekt ein. Es sollte mehr oder weniger wie im folgenden Screenshot aussehen.
  3. Klicken Sie auf Kostenlos erhalten und dann auf Installieren. Endziel um das Standardprojekt für unser Beispiel zu erstellen.


Schritt 3: Ändern Sie die Compiler-Einstellungen

Ändern Sie nach dem Erstellen des Projekts einige Elemente in den Build-Einstellungen des C / C ++ - Tests.

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften und dann Parasoft>C/C++test>Build-Einstellungen.
  2. Ändern Sie im Bereich "Build-Einstellungen" zwei Elemente im Abschnitt "Compiler-Einstellungen":
    • Familie. Ändern Sie die Anpassung an den im Container installierten Compiler. Zum Zeitpunkt des Schreibens dieses Blogs enthielt das neueste "gcc" -Image den GNU GCC 9.2-Compiler, der zur Auswahl der Compilerkonfiguration "GNU GCC 9.x (x86_64)" führte.
    • Standardmäßige ausführbare Compiler-Dateien. Die standardmäßigen ausführbaren Dateien für den Compiler müssen durch spezielle Wrapper ersetzt werden, um den In-Container-Compiler anstelle des regulären Compilers aufzurufen, der direkt im Host-Betriebssystem installiert ist. Diese Wrapper, remote-gcc und remote-g ++, werden in der C/C++-Testdistribution ausgeliefert. Im Screenshot unten verwende ich eine Hilfsumgebungsvariable für das C/C++test-Installationsverzeichnis. Sie können entweder eine ähnliche Variable für Ihre Umgebung festlegen oder vollständige Pfade verwenden, um die Wrapping-Skripte zu finden.


Schritt 4: Überprüfen Sie, ob der Container ausgeführt wird

Stellen Sie sicher, dass der Container mit Ihrer Kompilierungs-Toolchain betriebsbereit ist, bevor Sie den Parasoft C / C ++ - Test verwenden.

Die Compiler-Wrapper, die wir im vorherigen Schritt eingerichtet haben, sind so konzipiert, dass sie die Compiler-Befehle im laufenden Container ausführen. Dies ist schneller als das Starten des Containers bei jedem Aufruf.

Aussichten für CI / CD-BereitstellungenDas Starten des Containers vor dem Ausführen von C / C ++ - Tests und das Beenden danach können Teil des Jenkins-Jobs sein. In diesem Beispiel wird davon ausgegangen, dass die GUI-Basis verwendet wird. Zu diesem Zweck können wir Eclipse Run-Konfigurationen erstellen. Ich schlage vor, zwei Konfigurationen vom Typ "C / C ++ - Anwendung" zu erstellen und wie folgt zu benennen:

  • "Start gcc container"
  • "Stop gcc container"
  1. Wählen Sie Menü Ausführen> Konfigurationen ausführen….
  2. Erstellen Sie zwei Ausführungskonfigurationen mit den Namen "Start gcc container" und "Stop gcc container".
  3. Geben Sie auf der Registerkarte Haupt für beide Konfigurationen Ihren Pfad zu Docker als "C / C ++ - Anwendung" ein, wie unten gezeigt:

  1. Aussichten für "Start gcc container"Geben Sie auf der Registerkarte Argumente den folgenden Befehl ein:

style = ”padding-left: 40px;”>Führen Sie –rm -d -it –name gcc -v $ {env_var: HOME} aus: $ {env_var: HOME}
-v
$ {env_var: CPPTEST_INSTALL}: $ {env_var: CPPTEST_INSTALL} gcc

Wie im folgenden Screenshot gezeigt:


Der interessante Teil dieses Befehls sind die Optionen -v, die zum Zuordnen von Volumes verwendet werden.

Die erste Option -v ordnet das lokale HOME-Verzeichnis dem Container-Dateisystem zu. Hier soll der Zugriff auf den Quellcode für den im Container arbeitenden Compiler sowie für den Parasoft C / C ++ - Test ermöglicht werden, der im Host-Betriebssystem ausgeführt wird.

In meinem Beispiel verwende ich der Einfachheit halber HOME, da ich meinen Arbeitsbereich direkt in HOME platziert habe.

Bei realen Setups können Sie nur den Teil des Dateisystems, der den Quellbaum und den Eclipse-Arbeitsbereich enthält, strikt dem Projekt zuordnen.

Die zweite Option -v ordnet den Speicherort des C / C ++ - Testinstallationsverzeichnisses zu, um den Zugriff auf C / C ++ - Testheaderdateien im Container zu ermöglichen.

  1. Aussichten für "Stop gcc container"Geben Sie auf der Registerkarte Argumente den folgenden Befehl ein, wie in der folgenden Abbildung dargestellt:

gcc stoppen

  1. Verwenden Sie die Ausführungskonfiguration "Start gcc container", um den Container auszuführen.

Die Eclipse-Konsole sollte Ihnen den Hash des Containers anzeigen. Um sicherzustellen, dass alles in Ordnung ist, können Sie zur Befehlszeile wechseln und den folgenden Befehl aufrufen:

Wenn Sie unseren "gcc" -Container in der Liste sehen, können Sie den C / C ++ - Test zum Testen Ihres Codes verwenden.

  1. Lassen Sie uns das Projekt im Navigator auswählen. Wählen Sie im Parasoft-Menü Test Using> Builtin> Unit Testing> Generate Unit Tests.

Sie sollten ein neues "Test" -Verzeichnis sehen, das in Ihrem Projekt mit einem einzelnen Komponententest erstellt wurde, der für die "Haupt" -Funktion erstellt wurde.

  1. Sobald die Testfälle generiert wurden, können Sie sie ausführen. Wählen Sie für die Ausführung im Container Test mit> Eingebaut> Komponententest> Komponententests ausführen aus.

Der C / C ++ - Test sollte eine Sammlung von Kompilierungen im Container und das Verknüpfen von Befehlszeilen aufrufen und mit der Erstellung und Ausführung einer Testbinärdatei im Container enden.

Das ist es! Mit diesen Schritten haben Sie den Parasoft C / C ++ - Test vorbereitet, um Testaktivitäten mithilfe der In-Container-Kompilierungs-Toolchain durchzuführen.

Wenn Sie den Compiler für ein Projekt ändern oder etwas in der Laufzeitausführungsumgebung ändern müssen, können Sie entweder das Container-Image aktualisieren oder es in eine andere Version ändern. (Denken Sie daran, die Variable CPPTEST_CONTAINER_NAME zu aktualisieren.)

Möchten Sie mehr erfahren? Lesen Sie Teil 2 Hier erkläre ich, wie man statische Analysen und Unit-Tests mit Parasoft C/C++test Standard in einem Docker-Container bereitstellt.

Sehen Sie, wie Container und Parasoft C/C++test in Ihre CI/CD-Pipeline passen und die Produktivität steigern.