ATS|テスト自動化

2022.6.8

【第1回】:リモートワークでテストを自動化するメリット

リモート開発の価値を高める自動テストの適用

今日の新型コロナウイルスの感染拡大は、オフィスワークを主とする日本のワークスタイルに大きな変化を迫っています。こうした状況の中で、ITの担い手であるサービス開発・QA現場も速やかな対応が求められることに。近年IT業界において重要性が高まっているのが、「リモート開発環境における生産性の向上」です。

リモート開発はエンジニアのワークライフバランスを改善する、ニューノーマル時代に合った開発手法であり、正しく運用することでQCDの向上が期待できます。特に、テスト自動化によりテスト工程をリモート化できれば、リモート開発のメリットは最大化します。しかし現状の開発・QA現場では、リモート開発において効果的な自動テスト適用があまり進んでいません。

リモート開発を実現してそのメリットを享受するためには、必要な知識を身に付けることが肝要です。ADOC TESLABブログでは、昨今の自動テストにも求められるリモート開発への適用について、連載で順次解説します。第1回となる本記事では、リモート開発の基本的なポイントや、自動テストをリモート環境に適用するメリットをご紹介します。

リモート開発でテスト自動化が求められる理由とは

リモート開発とは、自宅などの遠隔地からネットワーク経由で開発用PCやサーバーにアクセスし、現場以外で開発を行う手法です。オフィスワークにおいて避けられない時間的・場所的な制約を排除でき、業務効率化や開発者の負担軽減といったメリットが期待できます。

リモート開発は、あらゆる開発プロセス・開発者が適用対象となり得ます。ただし、ネットワーク経由で開発リソースにアクセスできることが大前提です。それを実現するために、一般に用いられる技術や環境、ツールについて解説します。

リモート開発を実現する技術

リモート開発に用いられる技術は様々ですが、代表的なものとして「RDP」や「VNC」が挙げられます。

RDP (Remote Desktop Protocol) とは、サーバーPCなどの画面をネットワーク経由で転送し、別のPC上で表示・操作する技術です。OSとして最もシェアの高いWindowsや、Windows Serverに標準搭載されており、サービス開発に限らず幅広い用途に使われています。

VNC (Virtual Network Computing) とは、フレームバッファ (画面表示を記憶するデータ領域) を用いてクライアントPC・サーバーPC間のやり取りを実現する技術です。サーバーPCのフレームバッファをネットワーク経由で転送することで、クライアントPC上で表示できます。特定のOSに依存しないため、Linuxなど様々なサーバーのリモート制御を行えるメリットがあります。

リモート開発を実現する環境やツール

リモート開発の実現に必要となる環境やツールは、通常業務向け・開発業務向けの2種類に大別されます。前者は、開発者間の情報共有やコミュニケーションなど、サービス開発に限らずリモートワークに必要なものです。ビジネスチャットやWeb会議ツールなどが、これに該当します。

後者の開発業務向け環境・ツールは、対象の開発プロセスに合わせたものを使い分ける必要があります。たとえば、ソースコードエディタ「Visual Studio Code (VSCode)」は、リモート開発機能により遠隔地からのコーディングを実現します。またテスト自動化ツール「Eggplant」を用いれば、RDPやVNCにより遠隔地のテスト環境をリモート操作することが可能です。

より広範囲な開発プロセスをリモート化することで、リモート開発のメリットは大きくなります。とはいえ現実には、リモート開発におけるチームのコミュニケーション・コラボレーションの仕組みづくりや最適な開発プラットフォーム、ツールの利用など、全てを即座にリモート化することは困難です。

そこで優先的にリモート開発を適用すべき工程としては、インプットとアウトプットが明確であり、チームのコミュニケーションが比較的簡素であるテスト工程が挙げられます。またテスト工程をリモート化するためには、あらかじめリモート環境適用を前提としたテスト自動化を実装しておくことが推奨されます。これによりテスト工程のインプットとアウトプットの堅牢性が保たれ、リモート化がより容易となります。

自動テストのリモート環境適用によるメリット

自動テストのリモート環境への適用は、開発・QA現場にとってメリットが大きい取り組みといえます。ここでは、自動テストのリモート環境適用による3つのメリットについて解説します。

メリット1:リモートでも工数削減効果が大きい

リモート開発で最適な環境を構築できれば、業務効率化により工数削減が期待できます。一方で、リモート開発にはスムーズな情報共有が難しい、などのデメリットもあります。複数人での認識合わせが欠かせない実装工程など、適用するプロセスによっては工数がかえって増大するケースも少なくありません。

その点において、リモート開発のテスト工程に自動化を適用することには、大きな工数削減が期待できます。テスト工程に要する工数は全開発工数のおよそ30~40%以上を占めると言われており、削減できる余地が大きい工程といえます。また、自動テストを標準化すればテスターや開発者間の情報共有も最小限で済み、リモート開発のデメリットがクローズアップされずに済みます。

通常、結合テストなどの場合は複数のテスターが関与するため、検証環境を分担して実行する必要があります。また、実装側の問題で生じる再テストや、アジャイル開発で繰り返される回帰テストなど、手動のテストではテスターの負荷も大きくなります。こうしたテスト業務を自動化することにより工数削減はもちろん、リモート開発によりテスターの負荷軽減にもつながります。

メリット2:リモート開発におけるリリース遅延・バグ流出のリスクを回避できる

リモート開発ではチームのコミュニケーション不足による開発品質低下・リリース遅延のリスクが高まるため、テスト工程のアジリティを高めておくことが重要なポイントとなります。このために最も有効な施策が、自動テストのリモート環境適用です。リモート環境に自動テストを組み込むことで、リモート開発特有のリスクを回避し、安全・安心なリモートワークを推進することが可能となります。

また実装工程などであれば、たとえ有事になったとしても自宅のローカル環境で暫定的に対処できる可能性がある一方で、専用の試験機を使用するテストは、直ちにリモート開発にシフトすることが不可能という側面もあります。有事に備えてテストをリモート化していれば、こうしたリリース遅延やバグ流出のリスクを回避することが可能です。

メリット3:リモート環境下でのDevOpsの推進につながる

近年のサービス開発では、開発チームと運用チームが密に連携する「DevOps」がトレンドとなっています。DevOpsでは、テスト工程で検出した問題を速やかに開発者へ報告することが重要です。しかしリモート開発を導入する場合、開発者とテスターの連携が取りづらくなり、DevOpsのメリットである開発スピードの向上にはつながりません。

その点、自動テストのリモート環境を構築すれば、テスト実行だけでなく開発者への問題報告なども自動化することが可能です。結果として開発者・テスター間の連携がスムーズとなり、DevOpsの実現に大きな推進力を与えることとなります。

リモート開発における自動テストの現状と課題とは

今回はリモート開発の基本的なポイントや、自動テストをリモート環境に適用するメリットについてお伝えしました。

開発におけるコミュニケーションや、実装工程などのリモート環境構築を支援するソリューションは増えており、普及の兆しを見せつつあります。その一方で、本来優先してリモート化を進めるべきテスト工程、特にテスト自動化においては、リモート開発の導入が理想通りに進んでいないのが現状です。

これを進めるためには、以下について検討していくことが重要となります。

 ・自動テストをリモート開発に適用するプロセス
 ・自動テストの対象範囲
 ・自動テストのリモート開発適用に向けた課題
 ・自動テストをリモート開発に適用するための解決策
 ・リモート開発に適したテスト自動化ツールの選択
 ・遠隔テストの自動テスト実行パターンなどケースの把握

次回は、自動テストをリモート開発に適用するプロセスについて解説します。

■ ADOC Testing Service for Eggplantの概要へ
■ ADOC Testing Service for Eggplantの資料請求へ

リモート開発の価値を高める自動テストの適用 の記事一覧

リモート開発の価値を高める自動テストの適用

  • 2022.8.4
  • 【第3回】:リモートにおけるテスト自動化の課題とは?

BLOG シリーズ 一覧