4.7 移植性テスト (Portability Testing)
移植性テストの目的
Section titled “移植性テストの目的”「移植性テスト(Portability Testing)」 の主な目的は、ソフトウェアやコンポーネントを、ある環境(ハードウェア、OS、インフラなど)から別の環境へどれだけ容易に移行(移植)できるかを評価することです。
近年、オンプレミスからクラウド環境への移行や、モバイルデバイスの多様化、コンテナ技術(Dockerなど)の普及により、特定の環境に依存せず、様々な環境へ柔軟にデプロイできる能力の重要性が極めて高まっています。テクニカルテストアナリスト(TTA)は、環境の違いが引き起こす予期せぬ不具合を防ぐため、この品質特性を検証します。
移植性を構成する3つの副特性とテスト
Section titled “移植性を構成する3つの副特性とテスト”ISO/IEC 25010の品質モデルに基づき、シラバスでは移植性を以下の3つの側面(副特性)に分解して評価します。 (※以前の規格にあった「共存性」は、最新のモデルでは別の特性である「互換性」へ移動しています)
1. 適応性 (Adaptability)
Section titled “1. 適応性 (Adaptability)”ソフトウェアが、想定された様々な運用環境(異なるOS、データベース、ハードウェア構成など)に対して、ソースコードの変更を伴わずに対応(適応)できる度合いを検証します。
- テストの視点: 特定の環境にハードコードされたパスや設定がないかを確認します。また、クラウド環境におけるオートスケーリングなど、リソースの増減に対してシステムが自律的に適応できるかも評価の対象となります。
2. インストール性 (Installability)
Section titled “2. インストール性 (Installability)”指定された環境において、ソフトウェアをどれだけ正常かつ容易にインストール(およびアンインストール)できるかを検証します。
- テストの視点: * インストール: 必須ライブラリの欠落検知、ディスク容量不足時の適切なエラー表示、途中でキャンセルした場合のロールバック(安全な中断)が機能するか。
- アンインストール: ソフトウェアを削除した際、レジストリや一時ファイル、設定ファイルなどのゴミ(残骸)がシステムに残らず、クリーンな状態に戻るか。
- アップデート(アップグレード): 既存のユーザーデータや設定を破壊することなく、新しいバージョンへ安全に移行できるか。
3. 置換性 (Replaceability)
Section titled “3. 置換性 (Replaceability)”あるソフトウェアを、同じ環境で同じ目的を持つ「別のソフトウェア」にどれだけ容易に置き換えることができるかを検証します(例:古いシステムから新しいシステムへのリプレイスなど)。
- テストの視点: 古いシステムで作成されたデータ(後方互換性)を、新しいシステムで正しく読み込み、処理できるか(データ移行のテスト)が中心となります。
テクニカルテストアナリストとしてのアプローチ
Section titled “テクニカルテストアナリストとしてのアプローチ”移植性テストを実施する際、TTAは以下の点に留意してテストを設計・実行します。
- テスト環境のバリエーション管理: サポート対象となるすべてのOS、ブラウザ、ハードウェアの組み合わせをテストすることは現実的ではありません。直交表(組合せテスト技法)などを用いて、カバレッジを維持しつつテスト環境の組み合わせを最小限に抑える工夫が必要です。
- 継続的インテグレーション(CI)への組み込み: 適応性やインストール性を手動で都度テストするのは多大な工数がかかります。インフラのコード化(IaC: Infrastructure as Code)技術を活用し、パイプライン上でコンテナイメージのビルドから自動デプロイメント(インストール)までのプロセスを自動化し、定期的に検証する仕組みを構築することが推奨されます。
- プラットフォーム固有の制約の理解: ファイルシステムのパスの区切り文字(WindowsとLinuxの違い)、メモリ管理の違い、ネットワークのタイムアウト値など、プラットフォームごとの技術的な差異(制約)をあらかじめ特定し、それらが適切に抽象化(吸収)されているかを重点的にテストします。