ウェブアプリのテストとデプロイは、ソフトウェア開発チームに敬遠される作業です。というのも、デプロイに向けて、開発環境からステージング環境にプロダクトを移行すると、さまざまな問題が浮上する可能性があるからです。しかし、テストを行うことで、バグやエラー、アプリをデプロイした際の問題を洗い出せますから、ソフトウェア開発ライフサイクルにテストフェーズは欠かせません。

フロントエンドのテストとは、ソフトウェアアプリケーションのGUI(グラフィカルインターフェース)、機能、ユーザー体験、安定性、ユーザビリティを検証する手法です。その主な目的は、アップデートされた機能にバグがなく、期待通りの動作を保証すること。アプリケーションを開発するのはエンドユーザーのためですから、テストしなかったことが原因でエンドユーザーがアプリケーションを快適に使えなければ、「旧バージョンを使った方が良い」と思われてしまい、ビジネスが致命的な打撃を受ける恐れがあります。


自動化とは?

自動化は、オックスフォード辞典で「装置、プロセス、またはシステムを自動的に動作させる技術」と定義されています。

今日、自動化によってさまざまな変化が表れています。簡単な単純作業から高度な技術を要する業務まで、至るところで自動化が進んでいるのです。「自動プロセスを一度構築し、それを何度も再利用することで、何百万ドルものコストと工数を削減する」というのが自動化の一般的な考え方です。

テスト自動化

テストは繰り返し行う作業ですから、製品が成長するにつれて、似たような作業を何度も行わなければならず、テストケースの数も増えていきます。そこで、ほとんどのソフトウェア開発チームは、ミスを減らして作業効率を最大化するために、既存のツールでテストを自動化しています。厳しいプロセスに従って検証しなければなりませんが、インターフェースに新機能が追加されるたびにテストを手作業で行う必要はありません。

テスト自動化とは、自動化の背景にある考え方をもとに、「テストを自動的に実行し、テストデータを管理し、テスト結果を活かしてパフォーマンスを改善する」というプロセスのことを指します。

デプロイの自動化とは?

デプロイの自動化とは、「ソフトウェア製品をテスト環境から本番環境に移行する作業の自動化」です。デプロイは専門性の高い作業であり、前述のとおり、ソフトウェア製品が適切なテスト段階を経ていなければ、多くのトラブルが発生しかねません。ソフトウェアのテストとデプロイを成功させるためのツールは多数存在しますが、AutifyのAI型デプロイシステムのような特長をもつツールはごく少数です。

毎日デプロイする開発チームも

CI/CD(継続的インテグレーション・継続的デプロイメント)は、業界標準のプロセスであり、さまざまなソフトウェア開発プロセスに広く採用されています。本番サーバーにコードを継続的にプッシュすることを意味します。継続的インテグレーションは、ユーザーストーリーに基づいて開発作業を整理していく「アジャイル開発」のために作られたものです。

CI/CDにより、課題の早期発見、必要なフィードバックの提供、迅速なバグ修正が可能になります。ここでは、Autifyを使って毎日最大10回もデプロイしているグラファー様の事例をご紹介します。

株式会社グラファー(以下、グラファー)は、行政サービスが抱えるDXの課題を解決すべく、行政向けSaaSの開発を手掛けるスタートアップベンチャー企業。スマホにマイナンバーカードをかざして本人確認、住民票の写しを申請できて、手数料はキャッシュレス決済が可能なシステム『Graffer スマート申請』を提供しており、全国の自治体が導入を進めています。

グラファーのフロントエンジニアである吾郷協さんに、デプロイについてお話を伺ったところ、次のように話してくださいました。「弊社は20前後のサービスがあります。頻度が高いサービスですと、1日に5~6回。会社全体だと、1日に10回くらいはリリースしています。」

毎日デプロイするには(AIを活用したテスト自動化に関するAutifyのビジョン)

スマートな自動テストで毎日デプロイ

自動化技術についての認識が広がるなか、自動化に対する不安も高まっています。ソフトウェアで物事を行いやすくなってきている今、「仕事が奪われるのでは」と思われがちです。しかしAutifyでは、作業効率を上げ、人にしかできない創造的な仕事に集中できるような技術を提供しています。

ソフトウェア開発企業は、「ソフトウェアテストにかかる時間とコストをいかに削減するか」という共通の課題に直面していますが、テスト自動化は有力な解決策です。ソフトウェア開発企業として成功していくには、高速なリリースサイクルでプロダクトを提供していくことが不可欠です。まだまだテスト自動化は黎明期で、今後もソフトウェア開発プロセスにおける生産性向上はやることがいくつかあります。

弊社では、将来的にテストフェーズはAIが行うことになるだろうと考えています。Autifyがソフトウェア開発ライフサイクルをどのように揺るがしていくか、計画をご紹介します。

【フェーズ1】テストケースの自動化比率を高める

まず、現在手動でテストされているテストケースの自動化率を上げられるような製品提供を行います。

【フェーズ2】テスト全体のカバレッジを高める

テストカバレッジの担保は非常に属人的です。テスト自体のカバレッジが上がるような製品提供を進めていきます。

【フェーズ3】テストフェーズをなくす

まだまだテストフェーズは、すべての機能が期待通りに動作するか検証する開発後の段階です。開発の初期段階からテストが自動化できていればテストドリブンに開発し、テストが通ればその後はなにもする必要がなくなります。

まとめ

プロダクトの品質を担保し、きちんと動作することを保証するには、アプリケーションをスケールさせながらテストを行うことが業界標準となっています。この作業を自動化することで、アプリケーションをより迅速に開発し、低コストかつ短時間でコードをデプロイできるようになりました。Autifyは、あらゆるソフトウェア開発企業が、アプリ開発やテスト実行、本番環境へのデプロイを容易に行えるように支援するテスト自動化ツールです。一歩先を進んだテスト自動化ツールをお探しの方は、ぜひAutifyをお試しください
 
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。