ソフトウェアが公開または商用目的で出荷される前に、プログラマーはすべてのバグを解決するために何時間も費やし、すべての利害関係者が満足するまで製品は宙ぶらりんのままになります。
Google や Facebook などのシリコンバレーのソフトウェア大手は、ソフトウェアに優先度の低いバグがあるにもかかわらず、人気のある製品を市場に出荷することがよくあります。 投資家や何百万人もの忠実なユーザーは、これらの企業が提供する製品のソフトウェアアップデートや一時的な不具合を容認するでしょう。
ほとんどのソフトウェア会社にはこのような贅沢はありません。 顧客は製品が広告どおりに動作することを望んでおり、対処されていない脆弱性がある場合は当然のことながら警戒します。
テストスキルはなぜ必要なのでしょうか?
非常に多くのソフトウェア開発オプションが利用できるため、顧客は、製品が時間とお金の無駄だと感じたら、躊躇せずに乗り換えることを考えます。 ソフトウェア企業は、顧客に製品をリリースする前に、製品に対して厳格なテストを実行する必要があります。 これらのテストにより、次のような洞察が得られます。
- これらは、元のコンセプトと最終出力の違いを強調します。
- ソフトウェアが設計者の計画どおりに動作することを検証します。
- 彼らは機能と品質を評価します。
- 最終製品が顧客の要件を満たしていることを検証します。
テストは厳密な青写真に従って行われ、ワークロード、時間、コストを最適化しながら、製品を前進させるために重要な情報を関係者に提供します。 目標は、徹底した 品質保証 (QA) プログラム。 開発者にとって高いリスクを考慮すると、QA マネージャーもその一部です。 高額所得者 テクノロジー業界で。 テストは通常、次の手順に従います。
- 要件分析を実施し、マネージャーが適切なテスト戦略を導入する計画の概要を説明します。
- テストを開始し、結果を分析します。
- 欠陥を修正し、ソフトウェアを回帰テスト (プログラムが修正後も動作することを確認するシステム) に掛けます。
- プロセスと結果の詳細を記載したテスト終了レポートを作成します。
個人は、BCS (The Chartered Institute for IT) を通じて認定ソフトウェア テスターになることができます。 ISTQB (国際ソフトウェアテスト資格委員会)、および ASQ (米国品質協会)。
ソフトウェアのテスト方法
ブラックボックステストとホワイトボックステストは、製品の動作とパフォーマンスを判断するための 2 つの基本的な方法です。 ブラック ボックス テストは、機能テストまたは仕様ベースのテストとも呼ばれ、出力に焦点を当てています。 テスターは内部メカニズムには関心がありません。 ソフトウェアが本来の動作をするかどうかだけをチェックします。 コーディングの知識は必要なく、テスターはユーザー インターフェイス レベルで作業します。
ホワイト ボックス テストでは、テスト手順の一部としてコーディング経験が使用されます。 製品に障害が発生した場合、テスターはコードを深く掘り下げて原因を見つけます。 ソフトウェア開発者は、クライアントが製品を機能させることを期待しているため、これを自分たちで行います。 ホワイト ボックス テストは、「構造ベース」テストまたは「ガラス ボックス」テストとも呼ばれます。
静的テストでは、ソース コードとそれに付随するドキュメントが検査されますが、プログラムは実行されません。 静的テストは、製品開発の初期段階の検証プロセス中に開始されます。
動的テストでは、ソフトウェアの実行中にさまざまな入力が使用され、テスターは出力と予想される動作を比較します。 グラフィカル ユーザー インターフェイス テストでは、テキストの書式設定、テキスト ボックス、ボタン、リスト、レイアウト、色、その他のインターフェイス項目を評価します。 GUI テストには時間がかかり、開発者の代わりにサードパーティ企業がそのタスクを引き受けることがよくあります。
テストレベル
さまざまなテストレベルを使用して、テストの各段階で弱点や重複する領域を特定します。 ソフトウェア開発ライフサイクル. テストのレベルは次のとおりです。
- 単体テスト
- 結合テスト
- システムテスト
- 受け入れ試験
単体テストの場合、開発者はクラス、インターフェイス、関数/プロシージャなどの最も基本的なコード部分をテストします。 彼らはコードがどのように応答すべきかを知っており、出力に応じて調整を行うことができます。
統合テストは、「モジュール」テストまたは「プログラム」テストとも呼ばれます。 これは単体テストに似ていますが、より高いレベルの統合が含まれています。 ソフトウェアのモジュールは機能を検証するために欠陥がないかテストされます。 統合テストでは、モジュールが統合される際のエラーを特定します。 統合テストのさまざまな方法には、「ボトムアップ」、「トップダウン」、「機能増分」などがあります。
システム テストでは、プロジェクトのコンポーネント全体をさまざまな環境でテストします。 システム テストはブラック ボックス手法に分類され、プロセスの最終テストの 1 つです。 システムがビジネスとユーザーのニーズを満たす準備ができているかどうかを判断します。
一般に 2 種類の受け入れテストがあります。 アルファ テストでは、ソフトウェアは開発者のサイトの内部のシミュレート環境または実際の環境で実行されます。 ソフトウェアは、実際のエンドユーザーが使用しているかのように動作します。 開発者は問題をメモし、バグやその他の問題の修正を開始します。
また、ブラックボックス テストの範囲内で、受け入れテストでは、クライアントはソフトウェアをテストして、開発者が希望の仕様に合わせてプログラムを完全に開発したかどうかを確認します。
ベータ テスト (フィールド テスト) では、クライアントが自社サイトで実際の条件で製品をテストできます。 クライアントは、プレリリースまたはベータ版を通じてソフトウェアをテストする機会をエンドユーザーのグループに提供する場合があります。 ベータ テストは、実際のユーザーからのフィードバックを取得し、開発者に送信することを目的としています。
テストの種類
さまざまな種類のソフトウェア テストは、特定の目的に焦点を当てて設計されています。 テスト エンジニアと構成マネージャーは、インストール テストを使用して、エンド ユーザーがプログラムをインストールして実行できることを確認します。 インストール ファイル、インストール場所、管理者権限などの領域について説明します。
開発テストでは、欠陥を検出して防止するためのさまざまな同期戦略が実装されています。 これには、静的コード分析、ピアコードレビュー、トレーサビリティおよびメトリクス分析が含まれます。 目的はリスクを軽減し、コストを節約することです。
ユーザビリティ テストでは、ユーザー エクスペリエンスが注目されます。 GUI の使いやすさを測定します。 機能の正確性と効率性、および被験者の感情的反応をチェックします。
健全性テストは、ソフトウェアがさらなるテストを続ける時間とコストに見合ったものであるかどうかを示します。 欠陥が多すぎると、より積極的なテストが続行されなくなります。
健全性テストはソフトウェアのリリース段階で行われ、ソフトウェアがテスト可能に十分に動作するかどうかを確認するためにスモークテストが行われます。
煙テストにより、放出を妨げるほど深刻な根本的な欠陥が明らかになります。 開発者が新しいビルドをテストすることは、「ビルド検証」テストと呼ばれます。 システムが変更されると、回帰テストによって予期しない動作が監視されます。 モジュールやコンポーネントへの悪影響を指摘します。
テスターは異常なエントリを入力し、破壊的テストにおける予期せぬ入力を管理するソフトウェアの能力を識別します。 これは、プログラムがエラー管理においてどれほど堅牢であるかを開発者に示します。
ハードウェアまたはその他の機能に障害が発生した場合、回復テストでは、ソフトウェアがどの程度回復して動作を継続できるかを示します。
自動化は、手動で実装するのが難しい機能を実行します。 テストには、特定のソフトウェアを使用してテストを実行し、実際のデータと比較したデータを提供することが含まれます。 期待される成果。
ソフトウェアはさまざまなコンピューティング環境で実行する必要があるため、互換性テストでは、ソフトウェアがさまざまなシステムにどのように応答するかをチェックします。 たとえば、プログラマはさまざまなオペレーティング システムや Web ブラウザを使用してソフトウェアをテストします。
テストは広範囲にわたり、クライアントのあらゆる懸念に対処する必要があります。そうしないと、プロジェクトはすぐにリソースの無駄になってしまいます。
パフォーマンス テストでは、さまざまなシナリオでソフトウェアのパフォーマンスを検査します。 応答性、安定性、リソース割り当て、速度に関する情報が収集されます。 ボリューム、容量、スパイクテストなどのサブテストは、このプロセスで役割を果たします。
セキュリティ テストでは、ソフトウェアがユーザーのセキュリティを保護する能力を測定します。 認可機能、認証、機密性、完全性、可用性、および否認防止はすべて、テストする必要がある機能の例です。
アクセシビリティテストはユーザビリティテストとは異なります。 これにより、さまざまな能力のユーザーがソフトウェアを使用できる範囲が決まります。
内部化およびローカリゼーションのテスト結果は、ソフトウェアがさまざまな言語や地域の需要にどのように適応できるかを示しています。 これには、特定の場所用のコンポーネントの追加やテキスト翻訳が含まれます。