テスト、デバッグ、例外処理の概要
- 7 分
すべてのソフトウェア開発者は、コードを開発するときに、ある程度のテストとデバッグを完了する必要があり、例外処理が必要になることがよくあります。 しかし、これら 3 つのタスクはどのように関連し、いつ実装する必要がありますか?
テスト、デバッグ、例外処理
コードデバッグは、コード開発とテストの両方に明確に関連しています。 結局のところ、アプリケーションの開発時にコード ロジックを修正し、コードを定期的に実行して、コードの構文とロジックが正しいことを確認します。 しかし、開発プロセス中にコード ロジックを更新することは、デバッグによって実際に何を意味するのか。 また、コードのビルドと実行が実際にテストの目的であることを確認していますか? 全然違います。
例外処理はコードの開発とテストにどのように関連しますか? 実際、「例外処理」とは何を意味し、開発者はそれを行うことを期待していますか? C# 開発では、アプリケーションの実行時に発生するエラー (ビルド プロセス中に発生するビルド エラー) は例外と呼ばれ、"例外処理" は開発者がコード内でこれらのランタイム例外を管理するために使用するプロセスです。
例外処理がコードの開発とテストにどのように関連しているか疑問に思うかもしれません。 実際、「例外処理」とは何を意味し、開発者はそれを行うことを期待していますか? C# 開発では、アプリケーションの実行中に発生するエラーは例外と呼ばれます。 "例外処理" という用語は、開発者がコード内でこれらのランタイム例外を管理するために使用するプロセスを指します。 ビルド プロセス中に発生するエラーはエラーと呼ばれ、例外処理プロセスの一部ではありません。
次のセクションでは、テスト、デバッグ、および例外処理における開発者の役割について説明します。
ソフトウェア テストと開発者の責任
ソフトウェア開発プロセスには、多くのテストが必要な場合があります。 実際、ソフトウェア テストには独自の特殊な規範があり、ソフトウェア テスターは大規模なアプリケーションの開発において重要な役割を果たします。 テスト駆動開発など、テストに基づくソフトウェア開発プロセスにもアプローチがあります。
ソフトウェア テストのカテゴリは、テストの 種類 、テストへの アプローチ 、またはその両方の組み合わせで構成できます。 テストの種類を分類する 1 つの方法は、テストを 機能 テストと 非機能 テストに分割することです。 機能カテゴリと非機能カテゴリには、それぞれテストのサブカテゴリが含まれます。 たとえば、機能テストと非機能テストは、次のサブカテゴリに分けられます。
- 機能テスト - 単体テスト - 統合テスト - システム テスト - 受け入れテスト
- 非機能テスト - セキュリティ テスト - パフォーマンス テスト - 使いやすさテスト - 互換性テスト
ほとんどの開発者はおそらく自分自身をテスターとは考えていませんが、開発者が作業を手放す前に、ある程度のテストレベルが期待されます。 開発者がテスト プロセスで正式な役割を割り当てられると、多くの場合、単体テストのレベルになります。
注
ソフトウェア テストは大きなトピックであり、別の役割によって実行されることが多いため、ソフトウェア テストに対する正式なアプローチについては、このモジュールでは説明しません。
コードのデバッグと開発者の責任
コード デバッグは、開発者が問題を特定し、それを修正する 1 つ以上の方法を特定するために使用するプロセスです。 この問題は、コード ロジックまたは例外のいずれかに関連している可能性があります。 どちらの方法でも、目的の方法で動作しない場合は、コードのデバッグに取り組みます。 一般的に、デバッグという用語は、特定が容易でないランタイムの問題に使われます。 そのため、コード ステートメントの最後に ";" が見つからないなどの構文の問題を修正することは、通常、デバッグとは見なされません。
次のサンプル コードについて考えてみましょう。
string[] students = new string[] {"Sophia", "Nicolas", "Zahirah", "Jeong"};
int studentCount = students.Length;
Console.WriteLine("The final name is: " + students[studentCount]);
このコード サンプルは、次の作業を実行することを目的としています。
-
studentsという名前の文字列配列を宣言します。students配列には、学生の名前が含まれています。 -
studentCountという名前の整数を宣言します。 このコードでは、配列のLengthメソッドを使用して、studentCountに値を割り当てます。 - 最終的な学生の名前をコンソールに出力します。 このコードでは、
studentCountを使用してstudents配列内の最終的な名前にアクセスし、Console.WriteLine()メソッドを使用して情報をコンソールに出力します。
一見すると、すべてが正常に見えます。 ただし、このコードでは、学生の名前をコンソールに出力しようとしたときに例外が生成されます。 開発者は、配列が 0 から始まるのを忘れました。 配列内の最後の名前には、 students[studentCount - 1]を使用してアクセスする必要があります。
コードデバッグは開発者の責任です。 このコード サンプルでは、問題をすぐに認識している可能性があります。 ただし、より複雑なコーディングシナリオでは、問題を見つけることは必ずしも簡単ではありません。 見つけにくい問題を追跡するために使用できるツールとアプローチがあります。
例外処理と開発者の責任
前に説明したように、アプリケーションの実行時に発生するエラーは例外と呼ばれます。 アプリケーションで例外が生成され、その例外がコードで管理されていない場合は、アプリケーションがシャットダウンされる可能性があります。
例外の処理は開発者の責任です。 C# には、例外が生成されることがわかっているコードを "試す" 方法と、発生した例外を "キャッチ" する方法が用意されています。
まとめ
このユニットで覚えておく必要があるいくつかの重要な点を次に示します。
- テスト、デバッグ、例外処理はすべて、ソフトウェア開発者にとって重要なタスクです。
- テストは機能テストと非機能テストに分類でき、開発者は何らかのレベルのテストを実行することが期待されます。
- コード デバッグは、問題を分離し、それらを修正する方法を特定するプロセスであり、開発者の責任です。
- 例外処理は実行時に発生するエラーを管理するプロセスであり、開発者はコードで "try" ステートメントと "catch" ステートメントを使用して例外を処理する必要があります。