自動ソフトウェア テスト
There is a difference between creating software that works and software that works well. To ensure that software falls into the latter category, developers generally prefer benchmark testing.
This methodology stands out among the different types of software testing to identify where a project stands relative to rival solutions and which aspects need improvement.
This article will explain how benchmark testing achieves that, how it helps ensure software applications meet performance expectations, and which best practices to consider when implementing the technique.
自動テストとは何か
自動テストとは何か
自動テストは、ソフトウェア ツールを適用して、ソフトウェア製品に対して人間が手動で行うレビューおよび評価のプロセスを自動化するものです。最新のアジャイルおよび DevOps ソフトウェア プロジェクトには、初めから自動テストが含まれています。とはいえ、自動テストの真価を認めれば、それが広く普及するまでどうだったかを理解することができます。
Types of benchmark software testing
手動でのテストが標準だったときには、ソフトウェア会社がフルタイムの QA チームを抱えていることが一般的でした。このチームは、ソフトウェア プロジェクトの機能が想定どおり動作することを示す一連の「テスト計画」や段階的なチェックリストを開発していました。次に QA チームは、ソフトウェア プロジェクトが新たにアップデートされたり、変更が加えられたりするたびにこのようなチェックリストを手動で実行し、その後、課題に対処するためのレビューおよびその他の開発のため、テスト計画の結果をエンジニアリング チームに戻します。
このプロセスには時間もコストもかかり、エラーも発生しやすいものでした。自動テストによって、品質保証チームのチーム効率と ROI が大きく向上しました。
自動テストによって、オーナーシップの責任がエンジニアリング チームの手に渡ります。テスト計画は、通常のロードマップ機能とともに開発され、ソフトウェアの継続的インテグレーション ツールによって自動的に実行されます。自動テストによって、QA チームの無駄のない規模への調整が促され、QA チームはさらに気密性の高い機能に集中できるようになります。
Developers can consider a range of benchmarks for measuring software performance during development, depending on the functionality they are most interested in perfecting. Let’s look at the four most common areas of benchmark testing:
Performance benchmarks
Performance benchmark testing measures the speed and efficiency of a software application under typical usage scenarios. By simulating real-world scenarios and user interactions, developers can gather valuable data on response times, transaction processing speeds, and resource utilization (CPU, memory, disk I/O). This information helps pinpoint areas where code optimization or hardware upgrades might be necessary to eradicate performance issues.
Load benchmarks
Load benchmarks assess how the software performs under different user loads. By simulating various concurrent users, developers can identify performance bottlenecks that may emerge when the application is at maximum capacity. This is crucial for applications that expect high traffic or are subject to seasonal peaks in usage. Analyzing metrics like response times, error rates, and throughput under different load conditions helps ensure the software can handle the expected user demand.
ソリューションを見る
Open DevOps によるソフトウェアの構築と運用
関連資料
DevOps の自動テスト
テストの自動化が継続的なデリバリーに重要な理由
継続的なデリバリー (CD) は、新しいコードのリリースをできる限り迅速に顧客に提供することだけを目的としています。その目標には、自動テストが極めて重要です。デリバリー プロセスに時間のかかる手動のステップがある場合、ユーザーへのデリバリーを自動化する方法はありません。
CD はさらに大きなデプロイ パイプラインの一部です。CD は継続的インテグレーション (CI) の後継であり、これに依存しています。CI は新しいコード変更に対する自動テストを実行し、その変更が構築された機能の中断や、新たなバグの発生の原因にならないことを検証する責任があります。CD は、継続的インテグレーションのステップが自動テスト計画に渡されるとトリガーされます。
自動テスト、CI、CD の間のこの関係によって、高ベロシティのソフトウェア チームにさまざまなメリットがもたらされます。自動テストは、新たなコミットによってバグが発生しないことを確認し、開発のすべての段階で品質を保証するため、ソフトウェアは常にデプロイ可能な状態になります。
Scalability benchmarks
While load benchmarking tests the software's behavior under specific conditions, scalability benchmarks evaluate the ability to transition between those conditions. This could involve increasing the number of users, data volume, or transaction volume. All businesses aim to grow, and governments must prepare their platforms for mass adoption. Still, outside those realms, many other applications with high growth potential exist - such as multi-user online games, social networks, and IOT applications.
最初に自動化すべきソフトウェア テストは何か
1. エンドツーエンド テスト
実装すべき最も価値のあるテストは、エンド ツー エンド (E2E) テストであることにほぼ間違いないでしょう。E2E テストは、ソフトウェア製品のフル スタック全体でユーザー レベルのエクスペリエンスをシミュレーションします。E2E テスト計画は通常、「ユーザーがログインできる」、「ユーザーが入金できる」、「ユーザーがメールの設定を変更できる」といったユーザー レベルのストーリーをカバーしています。このようなテストの実装は、新しいコミットがプッシュされた場合でも、実際のユーザーがバグに遭遇せず、円滑に使用できることを保証するため、非常に高い価値があります。
E2E テスト ツールはユーザーのアクションをキャプチャして再生するため、E2E テスト計画が主要なユーザー エクスペリエンスのフローの記録になります。ソフトウェア製品でどのテスト範囲も自動化されていない場合、最も重要なビジネス フローに E2E テストを導入することによって最大の価値が得られます。E2E テストは、ユーザーのフロー シーケンスをキャプチャして記録することによって高額になることがあります。このソフトウェア製品が毎日の迅速なリリースを行っていない場合、人間のチームが E2E テスト計画から手動で実行した方が経済的な場合もあります。
手動で行うべきソフトウェア テストは何か
自動化できるテストをすべて自動化することには議論の余地があります。生産性と人的な時間コストの面で、非常に大きなメリットがあります。とはいうものの、手動テストの実行と比較した場合に、自動テスト スイートの開発による ROI がそれほど割に合わないことがあります。
1. 探索的テスト
自動テストはスクリプト化されており、一連のステップを実行して動作を評価します。探索的テストの実施はさらにランダムにスクリプト化されていないシーケンスを試し、バグや予期しない動作を見つけます。ソフトウェアの探索的テスト実施スイートを構築するためのソフトウェア ツールはありますが、まだ完全なものではなく、広く採用されてもいません。手動 QA テスターを任命し、人の創造性を活用してソフトウェア製品を壊す方法を探る方がはるかに効率的な場合があります。
2. ビジュアル リグレッション テスト
ビジュアル リグレッションは、視覚的なデザインの欠陥がソフトウェア UI にあるときに生じます。これは UI 要素の配置ミス、フォントの誤り、色の誤りなどの可能性があります。探索的テストの実施とともに、自動テストを記述し、このようなリグレッションを把握できるツールがあります。このようなツールは、ソフトウェア製品のさまざまな状態のスクリーンショットをキャプチャし、OCR を使用してそれを想定される結果と比較します。これらのテストは開発に費用がかかり、ツールはそれほど普及していません。人が実際に見て、視覚的な課題が生じているかどうかを確認する方がはるかに効果的です。
3. DevOps チームのためのテスト自動化フレームワークの構築
自動テストのための包括的なソリューションはありません。チーム向けの自動テスト ソリューションを計画する場合は、いくつかの重要な考慮事項があります。
自動テストを CD パイプラインの一部にする
自動テストは、現在の標準のソフトウェア開発方法になっています。優れたチームや企業は自動テストを使用しています。CI/CD は自動テストに依存しており、最高のチームが信頼できる堅牢なソフトウェアを顧客にリリースするために不可欠なものになっています。
アトラシアンの Open DevOps は、お気に入りのツールを使用して CD ベースの開発パイプラインを構築できるオープン ツールチェーン プラットフォームを提供します。アトラシアンやサードパーティのツールがどのようにワークフローのテストを DevOps テスト チュートリアルに統合するのかをご確認ください。
Jira Backlog: Use the backlog to plan and prioritize benchmark testing activities alongside other development tasks.
Jira Reports: Use Jira’s out-of-the-box reports to help teams track project progress, visualize trends, and predict future performance. These reports can also be used to communicate results to stakeholders.
Use free project report template
By integrating benchmark testing into Jira, teams can ensure that performance optimization is an integral part of the development process, leading to better software quality.
Common challenges in benchmark software testing
The above list of best practices highlights the importance of exercising caution when setting up and managing a benchmark testing program. Here are some common pitfalls of benchmark software testing and how to deal with them:
- Resource Limitations: Benchmark testing can be resource-intensive, requiring significant hardware and software resources. One benefit of using Jira is that it has built-in resource management software that helps teams free up and allocate the necessary resources for testing.
- Maintaining Test Data: Creating and managing realistic test data can be time-consuming and challenging. Developers can use Test Data Management (TDM) tools to generate, mask, and manage test data. These tools can extract subsets of data from production databases, use masking to protect data privacy, or create synthetic data that mimics the statistical properties of the original datasets.
- Variability in Test Environments: Aligning the test environment with the production environment can be complex, and minor differences can lead to inaccurate results. Once again, Jira offers a solution. Creating a test environment management system in Jira helps developers track and manage test environments, ensuring consistency and reducing variability.
Integrate benchmark software testing in Jira for better software development
Beyond using Jira for specific tasks like resource management and test environment management, the platform has several features that can be integrated into the benchmark testing workflow. Here are some areas where Jira integration can help streamline the entire process:
- Tracking Performance Trends: Jira’s Issues and Custom Fields functionalities allow teams to flag and register performance-related bugs, improvements, and tasks. These are basic requirements for monitoring performance metrics over time, identifying areas for improvement, tracking the resolution of anomalies, and measuring the impact of optimizations.
- Managing Benchmarking Activities: In Jira, teams can create Agile workflow plans and Agile software development boards to prioritize and transition between specific phases of the benchmark testing process.
- Effective Collaboration: Facilitate communication and collaboration among developers, testers, and stakeholders regarding performance issues and improvements. A key aspect of this functionality is Jira’s scope for generating custom reports to visualize performance data, track progress, and communicate findings. In parallel, the Issues feature links performance testing notifications to related development tasks, bugs, or user stories. Also, the Attachments feature leverages centralized access to include performance test results, reports, and analysis documents with relevant issues.
- Backlog: Jira’s backlog structure is worth reiterating since it facilitates task tagging and prioritization within benchmark testing. By creating user stories specifically for performance tests, teams can leverage the backlog's features for detailed planning, scheduling sprints, and tracking progress. This is particularly useful for teams that like to work iteratively because they can plan all tasks in the backlog and visualize the project’s scope.
By integrating free benchmark software testing into Jira, development teams can foster a culture of performance optimization, leading to higher-quality software, improved user satisfaction, and a more efficient development process.
この記事を共有する
次のトピック
おすすめコンテンツ
次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。