コンテナ技術でインテグレーションテストを効率化しよう!「Testcontainers」のご紹介 NRI OSSソリューションマガジン 2025.5.14発行 Vol.221
1.コンテナ技術でインテグレーションテストを効率化しよう!「Testcontainers」のご紹介
2014年にKubernetesがリリースされてから10年が経ち、コンテナ技術はさまざまなシステムのインフラ基盤として普及が進みました。
これに伴い、コンテナ技術と相性が良いマイクロサービスというアーキテクチャを採用するシステムも増えています。
マイクロサービス化されたシステムは、例えば業務単位などで分割された複数の独立したアプリケーションから構成され、それぞれが協調することで全体として機能します。
個々のアプリケーションが小規模かつ独立しているため、個別の修正やリリースを素早く行えるメリットがありますが、一方で外部と通信をする必要のないシステム内に閉じた処理でも、それが複数のアプリケーションをまたがる場合は、アプリケーション間で通信が発生します。
このような特性上、ユニットテストでカバーできる範囲が減り、インテグレーションテストが必要な範囲が増加します。
コンテナ技術によりインテグレーションテストのコストは大幅に下がりますが、ユニットテストほど手軽とはいえません。
今回は、コンテナ技術を活用してインテグレーションテストをユニットテスト並みに手軽に行えるOSS「Testcontainers」を紹介します。
■Testcontainersとは
Testcontainersは、ユニットテスト環境でDockerコンテナを起動し、テストコードからコンテナへ接続できるテスト向けのライブラリです。
つまり、Dockerコンテナが起動できる環境であれば、コーディング環境でユニットテストからインテグレーションテストまでまとめて実行できるようになります。
さらに、データベースやKafkaなど、Dockerコンテナで提供されるあらゆるサービスをユニットテストに組み込めます。
また、コンテナはテストごとに個別起動されるため、一般的なインテグレーションテスト環境と異なり他のテストからアクセスされることはありません。
このため、複数のテストを同時に実行してもテストデータや接続先サービスの状態が干渉しなくなり、CI/CDパイプライン上でもユニットテストと同様に、複数のインテグレーションテストを安全に並列実行できるようになります。
■Testcontainersの効果
Testcontainersには以下のような効果があります。
・Dockerコンテナと実行環境さえあれば、ユニットテストと同様にエディタから素早くインテグレーションテストを実行できる
・CI/CDパイプラインでも安全にインテグレーションテストを実施できる
これらによりインテグレーションテストの手間を減らし、より早期にテストを実行できるため、システム品質の向上も期待できます。
Testcontainersは、Java、.NET、Go、NodeJS、Rust、Pythonといった多くのプログラミング言語に対応しています。
コンテナ環境を利用する際には、Testcontainersの活用を検討してみてはいかがでしょうか。
Testcontainers
https://testcontainers.com/
testcontainers · GitHub
https://github.com/testcontainers/
OpenStandiaではOSSの技術サポートを提供しています。
現在のサポート対象OSSは下記OpenStandiaサイトから確認できます。
◆OpenStandiaサポート対象OSS一覧
https://openstandia.jp/services/#supportlist
2.OSS紹介ページ 今月のアップデート(新規:2件、更新:8件)
(新規)
389 Directory Server (https://openstandia.jp/oss_info/389_directory_server/)
Apache ZooKeeper (https://openstandia.jp/oss_info/zookeeper/)
(更新)
Apache HTTP Server (https://openstandia.jp/oss_info/apache/)
Cilium (https://openstandia.jp/oss_info/cilium/)
Flux (https://openstandia.jp/oss_info/flux/)
jenkins (https://openstandia.jp/oss_info/jenkins/)
jQuery (https://openstandia.jp/oss_info/jquery/)
Knative (https://openstandia.jp/oss_info/knative/)
MariaDB (https://openstandia.jp/oss_info/mariadb/)
Open Policy Agent (https://openstandia.jp/oss_info/open-policy-agent/)
3.OSS紹介ページ 今月のアクセスランキングTOP10
オープンソース情報ページ「OpenStandia OSS紹介」のアクセスTOP10をご紹介
→ 1位 (1位) Apache Tomcat (https://openstandia.jp/oss_info/tomcat/)
→ 2位 (2位) PostgreSQL (https://openstandia.jp/oss_info/postgresql/)
→ 3位 (3位) Apache HTTP Server (https://openstandia.jp/oss_info/apache/)
→ 4位 (4位) MySQL (https://openstandia.jp/oss_info/mysql/)
↑ 5位 (6位) Nginx (https://openstandia.jp/oss_info/nginx/)
↑ 6位 (8位) Keycloak (https://openstandia.jp/oss_info/keycloak/)
↓ 7位 (5位) PHP (https://openstandia.jp/oss_info/php/)
↓ 8位 (7位) Spring Framework (https://openstandia.jp/oss_info/spring/)
↑ 9位 (10位) Red Hat Enterprise Linux (https://openstandia.jp/oss_info/redhatenterpriselinux/)
↓ 10位 (9位) Squid (https://openstandia.jp/oss_info/squid/)
※( )内は前月の順位
◆OSS総合情報ページ「OpenStandia OSS紹介」はこちら
https://openstandia.jp/oss_info/
4.今月注目のバグ&セキュリティ情報
【Oracle Java】 悪意を持って作成されたウェブコンテンツ処理時メモリ破損の可能性 (コンポーネント:JavaFX) (CVE-2024-54534)
webkitgtk に欠陥が見つかりました。
悪意のある Web コンテンツを処理すると、不適切なメモリ処理によりメモリ破損が発生する可能性があります。
WebKit を使用している webkitgtk、また webkitgtk を使用している JavaFX も影響を受けます。
この問題はメモリ処理の改善により解決されました。
この問題は watchOS 11.2、visionOS 2.2、tvOS 18.2、macOS Sequoia 15.2、Safari 18.2、iOS 18.2、iPadOS 18.2 で修正されています。
本脆弱性の影響を受ける環境は下記となります。
・Red Hat Enterprise Linux 6
java-1.8.0-openjdk(*)
webkitgtk(*)
・Red Hat Enterprise Linux 7
java-1.8.0-openjdk(*)
webkitgtk3(*)
webkitgtk4(*)
・Red Hat Enterprise Linux 8
java-1.8.0-openjdk(*)
webkit2gtk3(*)
・Red Hat Enterprise Linux 9
java-1.8.0-openjdk(*)
webkit2gtk3(*)
・Red Hat Enterprise Linux 8.2 Advanced Update Support
webkit2gtk3(*)
・Red Hat Enterprise Linux 8.4 Advanced Mission Critical Update Support
webkit2gtk3(*)
・Red Hat Enterprise Linux 8.6 Advanced Mission Critical Update Support
webkit2gtk3(*)
・Red Hat Enterprise Linux 8.8 Extended Update Support
webkit2gtk3(*)
・Red Hat Enterprise Linux 9.2 Extended Update Support
webkit2gtk3(*)
・Oracle Java SE
8u441
・Oracle GraalVM Enterprise Edition
20.3.17
21.3.13
*詳細バージョンについては、Red Hat 社の今後のアナウンスをご確認ください。
関連情報
・National Vulnerability Database
https://nvd.nist.gov/vuln/detail/CVE-2024-54534
・Common Vulnerabilities and Exposures (CVE)
https://www.cve.org/CVERecord?id=CVE-2024-54534
・Oracle Critical Patch Update for April 2025
https://www.oracle.com/security-alerts/cpuapr2025.html
OpenStandia年間サポートサービスでは毎週、セキュリティアラートに関する情報、およびバグFIXに関する情報を提供しています。
◆OpenStandiaオープンソース年間サポートサービスのご紹介
https://openstandia.jp/services/