Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>
Zum Abschnitt springen
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.
Zum Abschnitt springen
Zum Abschnitt springen
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.
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.
Der Einsatz einer containerisierten Entwicklungsumgebung bietet Softwareentwicklungsteams mehrere Vorteile. Hier sind einige Gründe, warum Entwickler die Containerisierung nutzen sollten.
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.
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.
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.
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. Verwenden C / C ++ - Test um Ressourcengrenzen und -anforderungen einfach und angemessen festzulegen, um zu verhindern, dass Container übermäßig viele Ressourcen verbrauchen und die Leistung anderer Container beeinträchtigen.
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.
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.
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.
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.
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:
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.
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:
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.
Um das Erstellen eines Demoprojekts zu vereinfachen, erstellen wir das Standardprojekt „HelloWorld“ mit dem Standardassistenten „Neues Projekt“.
Ändern Sie nach dem Erstellen des Projekts einige Elemente in den Build-Einstellungen des C / C ++ - Tests.
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.
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:
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.
gcc stoppen
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.
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.
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.