左シフト、無駄の排除、DevOpsの実装
パフォーマンステストソフトウェアは、本番環境での使用を反映したさまざまなシナリオでアプリケーションの動作を確認するのに役立ちます。これにより、ソフトウェアアプリケーションの速度、拡張性、安定性を評価し確立することができます。従来のウォーターフォール方式と比べて、ほとんどのプロジェクトがスプリントで提供されているため、パフォーマンステストを反復的に実施することが不可欠です。このように、短い反復の中で小さな機能の増分をテストすることに焦点を当てることが可能です。
SourceFuseは、クライアントが高い応答性、可用性、拡張性を備えた将来性のあるアプリケーションを立ち上げるのを支援するため、エンドツーエンドのパフォーマンステストソリューションを提供しています。私たちのチームは、以下の技術を実装しながら、効率的にパフォーマンステストサービスを提供できるよう適応してきました:
- オープンソースおよびサードパーティツールの統合によるより早期かつ迅速なテスト
- 継続的デプロイメントとDevOpsモデルの一部としてのパフォーマンステスト
- 包括的な分析とパフォーマンス改善のための推奨事項
- 最適化と無駄の排除による労力とコストの削減
- 本番環境の監視とアラートによる継続的な改善

「より早期かつ迅速なテスト」 は、ソフトウェア開発ライフサイクル(SDLC)の早い段階でパフォーマンステスト活動を組み込みます。これは通常、各スプリントまたはイテレーションの一部として開発またはテストフェーズで行われ、コード変更や新機能がシステムパフォーマンスに与える影響について即座にフィードバックを提供します。目標は、開発プロセスの早い段階でパフォーマンス関連の問題を特定し対処することです。
この典型的な実装例として、QA環境でのみAPIのパフォーマンステストを行うために、Postmanが提供する新しいパフォーマンス機能を活用しています。すでにPostmanを使用している手動QAチームに最小限のトレーニングを行うことで、Dev/QA環境での最小限の負荷でAPIパフォーマンスに関する早期の洞察を得るための基本的なパフォーマンステストを実施できます。手動QAが適切に定義されたコレクションを設定することで、パフォーマンスチームはこれらのテストスイートを活用し、ステージ環境でのテスト用にJMeterにエクスポートすることができます。これにより、新しいAPIスイートを作成する必要がなくなり、 最適化と無駄の排除が実現されます。

「継続的デプロイメントとDevOps」をJenkinsを通じて実施することで、「より早期かつ迅速なテスト」 も達成できました。アプリケーションの回帰テストスイートを日次または定期的なパターンで実行することができます。コードのデプロイメントごとに、アプリケーションのパフォーマンスを比較することができます。可能な限りスクリプトを再利用し、Dev、QA、ステージ環境でテストを実行して早期にフィードバックを得ることができます。リリースごとに、関連するパフォーマンスフローを回帰テストに追加して、新しいベースラインが設定されるようにしています。
DevOpsと協力することで、本番環境に似た下位環境をスケールアップし、実行完了後にスケールダウンすることができ、インフラコストと手動作業を削減できます。このプロセスは、開発のペースを維持し、製品がリリースされる時点でパフォーマンス要件が満たされていることを確実にします。

「最適化と無駄の排除 」は、JMeter – Selenium統合を活用することでも達成できます。JMeterでのUI スクリプト開発に費やす労力を削減するため、既存の機能自動化スクリプトを参照し、適宜修正します。これにより、広範なトレーニングなしでも、若手リソースが迅速にスクリプティングを習得できます。
「本番環境の監視とアラート」 は、最小限の更新で新しいアプリケーションに簡単に展開できるダッシュボードテンプレートを作成することで簡素化されています。アプリケーションモニターと合成モニター用のダッシュボードが作成され、本番環境のアプリケーションの可用性統計が追跡されます。リリース後のアプリケーションパフォーマンスを監視することで、問題に迅速に対処し、製品を継続的に改善することができます。

まとめ
私たちのパフォーマンステストへのアプローチは、各クライアントとプロジェクトの要件に合わせて調整されています。しかし、すべてのプロジェクトに共通しているのは、負荷をかけてボトルネックを特定するための厳密なテストプロファイルであり、以下の価値を確実に提供します:
- 顧客満足度
必要な時間枠内でトランザクションを処理できるシステムを確保することによるビジネス収益の増加
- アプリケーションパフォーマンスの改善
エンドユーザーへの向上した体験と品質の提供
- 信頼性の向上
早期のバグ特定による保守コストの削減
- キャパシティ管理
パフォーマンス問題によるシステム課題への対応に必要な運用オーバーヘッドの削減
- 不具合の解決
顧客に到達する前の不具合解決の保証
- 拡張性と安定性の向上
プロトタイプでのシミュレーションによる将来のボトルネックの特定