継続的テストとは何ですか?

継続的テストとは、ソフトウェア開発プロセスのあらゆる段階で、またアプリケーションコードや構成に変更が加えられるたびに、アプリケーションをテストするプロセスです。ビジネスの俊敏性により、組織はリリースサイクルを短縮し、新しい機能や修正を頻繁にリリースする必要があります。継続的テストでは、ソフトウェアデリバリーパイプラインのあらゆる段階にテストを統合して、バグを早期に発見し、ソフトウェアの品質を維持します。ソフトウェアテストはアプリケーションコードと並行してコードとして管理され、継続的テストパラダイムの一部として頻繁に実行されます。

本番環境における継続的テストとは何ですか?

実稼働環境での継続的テスト (CTIP) により、実稼働環境でのコードチェックを自動化できます。一部のバグは、ソフトウェア開発の初期段階では検出されなくても、ユーザーがアプリケーションをリアルタイムで操作したときに現れることがあります。ソフトウェアテストツールとスクリプトを適用して問題の検出を自動化し、迅速な修正作業を行うことができます。CTIP は、実稼働環境における潜在的なソフトウェアの問題を検出するのに役立ちますが、開発中に行われる他のソフトウェアテストに代わるものではありません。 

継続的テストは継続的インテグレーションと継続的デリバリーにどのように関係していますか?

継続的インテグレーションと継続的デリバリー (CI/CD) は、エンドユーザーにソフトウェアリリースを配信する際に品質と速度のバランスを取る DevOps 実践です。アプリケーションを開発または更新する際、複数の開発者がそれぞれのコードブランチに変更を加えることがあります。各ブランチには、元のコードの修正版が含まれています。開発者は、コードの競合なしにこれらのブランチを共有リポジトリにマージする必要があります。 

継続的インテグレーション (CI) を使用すると、さまざまなブランチからのコードのマージを自動化できます。継続的デリバリー (CD) は、エンドユーザーにいつでも展開できるアプリケーションの機能バージョンを自動的に作成します。CI と CD を組み合わせることで、新しいソフトウェアを提供する作業が合理化され、段階的なコード変更がより迅速かつ効率的になります。

継続的インテグレーションについて読む

DevOps について読む

CI/CD による継続的なテスト

DevOps での継続的なテストは、CI/CD パイプライン全体を推進する重要な原則です。ソフトウェアチームは左にシフトすることも、テストプロセスを開発と並行して進めることもできます。テストを後の段階に放置される代わりに、ソフトウェア開発ライフサイクル (SDLC) のあらゆる機会で自動テストを実行します。自動テストツールを使用して、コードを検査し、テストスクリプトを実行し、ソフトウェアの品質を向上させるための貴重な洞察を発見します。

継続的テストツールは、コードに変更を加えると、CI プロセス中に機能テスト、コード品質テスト、単体テストを自動的に実行します。これらのツールは、CD パイプラインでの大規模なテスト (リグレッションテスト、統合テスト、ロードテストなど) を自動化して、ビジネスリスクをさらに最小限に抑えます。

次の図は、メインフレームの DevOps における CI/CD パイプラインの例を示しています。

ソフトウェア開発ライフサイクルについて読む

継続的テストにはどのような利点がありますか?

最新のアプリケーション開発サイクルに継続的テストツールを統合すると、次のような利点が得られます。 

ソフトウェア開発を加速する

継続的なテストプロセスにより、自動テストツールを使用して開発時間と労力を短縮できます。従来、ソフトウェア開発は、開発者が特定の段階を完了してから次の段階に進むというウォーターフォールモデルに従っていました。アジャイルや DevOps などの最新のソフトウェア開発実践を使えば、より柔軟にアプローチできます。継続的なテストと組み合わせることで、QA エンジニアからのフィードバックを待つことなく、コーディングしながらテストして修正を適用できます。つまり、市場投入までの時間を短縮し、機能のリクエストにより迅速に対応できるようになります。

コスト削減

ソフトウェアのバグやパフォーマンスの問題はサービス提供に影響を及ぼし、組織はビジネスチャンスを失い、多額の費用を負担する可能性があります。最善を尽くしても、デプロイの前にソフトウェアの問題をすべて発見できるとは限りません。継続的なテストツールを使用して、SDLC 全体の問題を評価、監視、報告できます。開発パイプラインの早い段階でソフトウェアの問題を発見することで、修復費用と資源を削減できます。バグを早期に修正する方が、実稼働環境よりも安価です。 

コード品質を向上させる

ソフトウェアを構築するときは、コーディングのベスト実践を順守するよう努めます。適切に構造化されたソースコードは理解しやすく、バグが少なく、コンピューティング資源も少なくて済みます。継続的なテストにより、さまざまなプロジェクト全体でコードの一貫性を維持できます。また、バグ、機能、パフォーマンスの問題について厳密にテストされたコードは、より自信を持って再利用できます。 

チームコラボレーションを向上させる

継続的なテストは、開発段階を通じて実施されるソフトウェアテストを可視化する上で重要な役割を果たします。開発チーム、QA チーム、運用チームは、サイロ化された状態で業務を行うのではなく、テスト環境にあるソフトウェアのバグをより積極的に発見します。CI/CD に統合すると、さまざまなソフトウェアモジュールをテストし、結果を同時に伝達できます。たとえば、運用チームが既存のクラウドインフラストラクチャが変化する要件をサポートできるかどうかを評価している間に、複数の開発者が同時に新機能をテストする場合があります。 

顧客体験の向上

堅牢なテスト戦略を駆使して新しいソフトウェア変更をリリースする際には、起こり得る問題を予測し、対応計画を立てることができます。欠陥のあるリリースで顧客の期待を弱める代わりに、継続的なテストフレームワークを使用して、考えられるシナリオをシミュレートし、潜在的な問題を予測することができます。ソフトウェアを本番環境にリリースする前に、テストで検出された問題に対処できます。つまり、魅力的なソフトウェア体験を一貫して提供できるということです。 

継続的テスト方法論とは何ですか?

継続的なテストには、安全でユーザーフレンドリーで機能的なアプリケーションを作成するために使用できる多数のテストが含まれます。一般的なテスト方法は次のとおりです。

機能テスト

機能テストにより、ソフトウェアワークフローを、その設計基準となるビジネス要件に合わせることができます。たとえば、電子コマースソフトウェアは、注文を受け取るたびに運送会社に警告します。機能テストでは、ソフトウェアが正しい API コールを出荷ベンダーのシステムに送信することを確認できます。 

リグレッションテスト

リグレッションテストにより、コードの変更がアプリケーションの安定性、パフォーマンス、セキュリティ、機能に影響しないことが保証されます。このテストにより、最新のソフトウェア環境に迅速なコード変更を導入しても、ソフトウェアの一貫した動作が保証されます。 

パフォーマンステスト

パフォーマンステストでは、アプリケーションの非機能的な側面を評価できます。パフォーマンステストでは、Web トラフィック、メモリ消費、同時ユーザー数、その他の環境パラメータが増加しても、アプリケーションが最適に機能するかどうかを評価します。テストから得られる実用的な洞察を活用して、ボトルネックを特定し、コードワークフローを最適化できます。 

統合テスト

統合テストにより、サードパーティのソフトウェアの成分と依存関係がアプリケーションで期待の通りに動作していることを確認できます。たとえば、API コールは、ドキュメントで指定されている適切な応答を返す必要があります。統合テストを実行して、すべての依存関係が統合されたときにシームレスに機能することを確認できます。 

ユーザー受け入れテスト

ユーザー受け入れテストは通常、特定のユーザー向けに設計されたカスタムソフトウェアで実行されます。小売業界のクライアント向けに顧客関係管理 (CRM) ソフトウェアアプリケーションを構築する例を考えてみましょう。ユーザー受け入れテストを実施して、すべての要件と機能がソフトウェア要件仕様に記載されているとおりに設計されていることを検証します。ユーザーからのフィードバックに基づいて、ソフトウェアを改訂するか、承認して配信を完了することができます。 

スモークテスト

スモークテストは、QA エンジニアが開発者から新しいビルドを受け取ったときに実行するソフトウェアテストの自動化です。QA チームはスモークテスト (ビルド検証テストとも呼ばれる) を使用して、ソフトウェアの主要機能に大きな欠陥がないことを確認します。その場合、QA チームは発見された問題を開発者に通知し、再作業が行われるのを待ってから、さらなるテストを進めます。 

継続的テストにはどのような課題がありますか?

継続的なテストには利点がありますが、大規模に実装する場合、次のような理由で課題に直面する可能性があります:

  • 開発の初期段階でのテストを優先しない、従来のテストやテストデータ管理実践に慣れています。 
  • 既存の開発ワークフローに簡単に統合できる自動テストツールへのより良いアクセスが必要です。 
  • 継続的なテストをソフトウェアテストの自動化に限定すると、その効果が低下します。代わりに、DevOps や Agile などの幅広い戦略の一環として継続的なテストを適用して、ユーザーエクスペリエンスを向上させる機能的なソフトウェアを提供する必要があります。 

継続的なテストを取り入れるには、トップリーダーから始まる考え方と文化の転換が必要です。

AWS はお客様の継続的なテスト要件にどのように役立ちますか?

Amazon Web Services (AWS) では、CI/CD パイプラインの自動テストツールを使用して開発作業をスケールできます。AWS が提供する継続的テストツールを使用して、機能的で一貫性があり、ユーザーフレンドリーな最新のアプリケーションを構築できます。例えば、次のことができます。

  • AWS CodeBuild を使用すると、ソースコードをすぐにデプロイできるソフトウェアパッケージにコンパイルする際のテストを自動化できます。CodeBuild は既存の CI/CD パイプラインと統合されるため、バグを見つけやすいときに検出できます。 
  • AWS CodePipeline を使用して、テスト環境または本番環境で反復的なソフトウェア変更をリリースする際のバグを検出します。CodePipeline を使用すると、AWS CodeCommit,  AWS CodeDeploy, および AWS CloudFormation と統合されたパイプラインでデプロイワークフローをモデル化できます。

今すぐアカウントを作成して、AWS でユニットテストを開始しましょう。

AWS での次のステップ

無料のアカウントにサインアップする

AWS 無料利用枠にすぐにアクセスできます。

サインアップ 
コンソールで構築を開始する

AWS マネジメントコンソールで構築を始めましょう。

サインイン