NEOで扱っているOSSの説明(Part3)~テスト自動化編~
本記事では、NEOが提供するOSS(Open Source Software)について説明します。
本タイトルは、複数回に分けて掲載していきます。
※本記事は「NEOで扱っているOSSの説明」シリーズのパート3となります。
<目次>
目次[非表示]
- 1.はじめに
- 2.NEOが提供するOSS
- 3.NEOが提供するOSSの説明
- 3.1.テスト自動化
- 3.1.1.テスト自動化とは
- 3.1.2.Selenium
- 3.1.2.1.基本的な機能や特徴
- 3.1.2.2.NEOにおけるSelenium
- 3.1.3.Serverspec
- 3.1.3.1.基本的な機能や特徴
- 3.1.3.2.NEOにおけるServerspec
- 4.参考
- 5.まとめ
はじめに
テクマトリックス 「NEO」について
NEO製品に関しては、「クラウドネイティブ内製化支援サービス:テクマトリックスNEOとは 」記事を参照ください。
NEOが提供するOSS
NEOでは、VMやKubernetesを対象に、OSSのサービスを自動構築するための様々なテンプレートを提供しております。これらのテンプレートを通じて、設計から構築まで時間を要するサービスの導入を、比較的短時間で行うことが可能です。
NEOが提供しているOSSのテンプレートは、下記のツールとなります。
本タイトルでは、下記に記載の各ソフトウェアについて紹介します。
今回ご紹介するのは「テスト自動化」 のOSSとなります。
- ソースコード管理
Gitlab アーティファクト管理
JFrog ArtifactoryCI/CD
Jenkins
Argo CDテスト自動化
Selenium
Serverspecプロジェクト管理
Redmine
Mattermostリモートデスクトップ ゲートウェイ
Apache Guacamoleネットワークトラフィック管理
NGINX Ingress Controller監視・モニタリング
Prometheus
Elastic Stackシークレット管理
HashiCorp Vault
NEOが提供するOSSの説明
テスト自動化
テスト自動化について、NEOで提供しているOSSを紹介します。
テスト自動化とは
- テスト自動化について
テスト自動化は、ソフトウェアやシステムのテストを自動化する仕組みです。手動でテストを実行する代わりに、テストスクリプトやツールを使用してテストを自動的に実行します。
テスト自動化を導入することで、ソフトウェアの品質を向上させ、開発プロセスを効率化することができます。
また、CI/CDの仕組みの中に組み込むことによって、自動的にアプリケーションやシステムのテストが実行されることで、開発プロセスを効率化することができます。
※参考 テスト自動化研究会
Selenium
Seleniumは、Webアプリケーションのテスト自動化に使用されるオープンソースのツールです。ブラウザでユーザーが行うような画面操作をスクリプトで自動化してテストを実行します。実行したい操作を記述したテストスクリプトを実行することで、Webアプリケーションの振る舞いや動作をテストできます。
基本的な機能や特徴
- Webブラウザの自動制御
Seleniumは主にWebブラウザを制御するためのツールであり、主要なWebブラウザ(Google Chrome、Mozilla Firefox、Microsoft Edgeなど)との連携をサポートしています。
- クロスブラウザテスト
Seleniumは、異なるWebブラウザ間で動作を検証するためのテストを実行することができます。これにより、アプリケーションが異なるブラウザで正常に動作することを確認できます。
- 言語サポート
Seleniumは複数のプログラミング言語をサポートしており、Java、Python、C#、JavaScript、Rubyといった様々な言語で利用可能です。
- プラグインでの機能拡張
Seleniumはプラグイン形式で機能拡張が可能です。プラグインを利用することで、テストをより効率的に管理したり、テスト結果のレポートを生成したりすることができます。
- 継続的インテグレーション(CI)との連携
SeleniumはJenkinsなどをはじめとしたCIツールとの連携が可能です。
コードの変更を検知して、自動的にテストを実行することが可能です。
- Selenium Grid
Selenium Gridを利用することで、クライアントからブラウザにコマンドを ルーティングし、テストスクリプトを実行することができます。
ブラウザは仮想マシン上で構築した環境を指定することができますが、Seleniumによって提供されているコンテナを指定することも可能です。
コンテナ機能を利用する場合、Gridサーバがテスト実行を受け付けると、Seleniumによって提供されているコンテナを立ち上げ、コンテナ上のブラウザでテストを実行することができます。テストが完了すると、コンテナは停止されますので、仮想マシンの運用に関わるコストを削減することができます。
NEOにおけるSelenium
NEOによって構築されるSeleniumテンプレート は、以下の特徴があります。
- Selenium Gridを構築
複数のブラウザでテストを並列実行するために、本テンプレートではSelenium Gridを構築します。Gridサーバを経由してテストを実行することにより、異なるブラウザでのテストを容易に行うことができます。
- Jenkinsと連携して、CIプロセスでアプリケーションのテストを自動化可能
NEOが提供するJenkinsテンプレートと組み合わせて、JenkinsのCIパイプラインのプロセスにSeleniumのテストを加えることで、アプリケーションのテストを自動化し、開発作業のサイクルを高速化することが可能です。
- NEO環境にデプロイしたWebアプリケーションのテストに利用可能
NEO環境上にデプロイしたアプリケーションの機能テスト/UIテスト/クロスブラウザテスト等に利用できます。NEO環境で構築されたサービスは、Selenium環境からすぐに連携が可能となりますので、テストスクリプトを用意して、実行することですぐにテストを開始できます。
- 仮想マシンの作成からインストールまでの初期設定
仮想マシンの作成からSeleniumインストールまでの初期設定をテンプレートから自動で行います。
NEOによって検証された構成をそのまま利用する事ができます。
- マシンスペックの調整可能
Seleniumテンプレートから環境構築実行時に、任意のマシンスペックを指定可能です。
構成したい環境の規模に合わせて、最適なスペックを選択出来ます。
- 各種NEOリソースとの疎通設定をデフォルトで構成
その他のNEOから構築されたリソースとの疎通設定はデフォルトで構成されます。NEOで構築したサービスとの連携を比較的容易に行うことが出来ます。
Serverspec
Serverspecは、オープンソースのサーバのテストフレームワークです。主にサーバの設定や状態をテストするために使用されます。AnsibleやPuppet等の構成管理ツールなどによって自動的に構成された環境に対して、構成内容が正しく反映されているか確認するために使用される場面が多いツールです。
ServerspecはRubyで構成されておりますが、言語を熟知していなくてもテストスクリプトを直感的に書くことができることが特徴です。
前述のSeleniumは「webアプリケーションのテスト」に使用するツールとなりますが、Serverspecは「インフラのテスト」に使用するツールとなります。
基本的な機能や特徴
- シンプルなテストファイル
Serverspecのテストスクリプトは、「リソースタイプ」定義を用いて、テスト対象のサーバの状態や設定を、直感的に指定することができます。https://serverspec.org/resource_types.html
例) SSH(22)ポートの確認と、Gitの導入確認を行う場合の定義
- インフラ環境の設定やテスト
サーバの基本的な状態や設定をテストすることができます。例えば、パッケージのインストール状況、サービスの起動状態、ファイルの存在や内容などをテストすることが可能です。
- マルチプラットフォームに対応
Serverspecは主要なオペレーティングシステム(Linux、macOS、Windowsなど)で実行可能であり、テストスクリプトを通じて、同じテストを異なるプラットフォーム上で実行できます。
https://serverspec.org/tutorial.html#multi_os_support
- リモートサーバのテスト
Serverspecはリモートサーバ上でテストを実行することができます。SSHやWinRMなどを介してリモートサーバに接続し、テストを実行することが可能です。
- プラグインによる機能拡張
Serverspecは機能を拡張するためのプラグインをサポートしています。これにより、独自のテストリソースを追加したり、既存のリソースを拡張したりすることができます。
- 継続的インテグレーション(CI)との連携
Serverspecについても、JenkinsなどをはじめとしたCIツールとの連携が可能です。
コードの変更を検知して、CIプロセス内にテストを組み込んで、自動的にテストを実行することが可能です。
NEOにおけるServerspec
NEOによって構築されるServerspecテンプレートには、以下の特徴があります。
- NEOやその他の手段で構築したサーバ構成のテストに利用可能
NEOテンプレートや、Terraform等のツールで自動的に構築された仮想マシンのサーバ構成のテストに利用できます。NEOで構築されたサービスは、Serverspec環境からすぐに連携が可能となりますので、テストスクリプトを用意して、実行することですぐにテストを開始できます。
- Jenkinsと連携して、サーバ構成のテストを自動化可能
NEOが提供するJenkinsテンプレートと組み合わせて、JenkinsのパイプラインのプロセスにServerspecのテストを加えることで、インフラ構成のテストを自動化することが可能です。
- 仮想マシンの作成からインストールまでの初期設定
仮想マシンの作成からServerspecインストールまでの初期設定をテンプレートから自動で行います。
NEOによって検証された構成をそのまま利用する事ができます。
- マシンスペックの調整可能
Serverspecテンプレートから環境構築実行時に、任意のマシンスペックを指定可能です。
構成したい環境の規模に合わせて、最適なスペックを選択出来ます。
- 各種NEOリソースとの疎通設定をデフォルトで構成
その他のNEOから構築されたリソースとの疎通設定はデフォルトで構成されます。NEOで構築したサービスとの連携を比較的容易に行うことが出来ます。
参考
本記事で紹介したOSS製品の参考資料のリンクです。
Selenium
Seleniumドキュメント
Selenium Gridについて
Serverspec
Serverspecドキュメント
まとめ
本記事では、「テスト自動化」において、テクマトリックス「NEO」が提供するOSSとその機能を紹介しました。
次回は「プロジェクト管理」のOSSについて紹介します。