테스트, 디버깅 및 예외 처리 시작
- 7분
모든 소프트웨어 개발자는 코드를 개발할 때 일정 수준의 테스트 및 디버깅을 완료해야 하며 예외 처리가 필요한 경우가 많습니다. 그러나 이 세 가지 작업은 어떻게 관련되고 언제 구현되어야 할까요?
테스트, 디버깅 및 예외 처리
코드 디버깅은 코드 개발 및 테스트 모두와 명확하게 관련이 있습니다. 결국 애플리케이션을 개발할 때 코드 논리를 수정하고 코드를 주기적으로 실행하여 코드 구문과 논리가 올바른지 확인합니다. 그러나 개발 프로세스 중에 코드 논리를 업데이트하는 것은 디버깅의 의미인가요? 그리고 코드가 실제로 빌드되고 실행되는지 확인하는 것은 테스트의 의미인가요? 아니요, 별로요.
예외 처리는 코드 개발 및 테스트와 어떤 관련이 있나요? 실제로 "예외 처리"는 무엇을 의미하며 개발자는 이를 수행해야 합니까? C# 개발에서 애플리케이션 런타임 동안 발생하는 오류(빌드 프로세스 중에 발생하는 빌드 오류와 비교)를 예외라고 하며, "예외 처리"는 개발자가 코드 내에서 해당 런타임 예외를 관리하는 데 사용하는 프로세스입니다.
예외 처리가 코드 개발 및 테스트와 어떤 관련이 있는지 궁금할 수 있습니다. 실제로 "예외 처리"는 무엇을 의미하며 개발자는 이를 수행해야 합니까? C# 개발에서 애플리케이션이 실행되는 동안 발생하는 오류를 예외라고 합니다. "예외 처리"라는 용어는 개발자가 코드 내에서 해당 런타임 예외를 관리하는 데 사용하는 프로세스를 나타냅니다. 빌드 프로세스 중에 발생하는 오류를 오류라고 하며 예외 처리 프로세스의 일부가 아닙니다.
다음 섹션에서는 테스트, 디버깅 및 예외 처리에서 개발자의 역할에 대해 설명합니다.
소프트웨어 테스트 및 개발자 책임
소프트웨어 개발 프로세스에는 많은 테스트가 포함될 수 있습니다. 실제로 소프트웨어 테스트에는 고유한 전문 분야가 있으며 소프트웨어 테스터는 대규모 애플리케이션 개발에 중요한 역할을 합니다. 테스트 기반 개발과 같은 테스트를 기반으로 하는 소프트웨어 개발 프로세스에 대한 접근 방식도 있습니다.
소프트웨어 테스트 범주는 테스트 유형 , 테스트 방법 또는 둘의 조합으로 구성할 수 있습니다. 테스트 유형을 분류하는 한 가지 방법은 테스트를 기능 및 비기능 테스트로 분할하는 것입니다. 기능 및 비기능 범주에는 각각 테스트의 하위 범주가 포함됩니다. 예를 들어 기능 및 비기능 테스트는 다음 하위 범주로 나눌 수 있습니다.
- 기능 테스트 - 단위 테스트 - 통합 테스트 - 시스템 테스트 - 수용 테스트
- 비기능 테스트 - 보안 테스트 - 성능 테스트 - 유용성 테스트 - 호환성 테스트
대부분의 개발자는 자신을 테스터로 간주하지 않지만 개발자가 작업을 중단하기 전에 일정 수준의 테스트가 예상됩니다. 개발자가 테스트 프로세스에서 공식적인 역할을 할당받은 경우 단위 테스트 수준에 있는 경우가 많습니다.
비고
소프트웨어 테스트는 매우 큰 주제이며, 종종 별도의 작업 역할에 의해 수행되기 때문에 소프트웨어 테스트에 대한 공식적인 접근 방식은 이 모듈에서 다루지 않습니다.
코드 디버깅 및 개발자 책임
코드 디버깅은 개발자가 문제를 격리하고 문제를 해결하는 하나 이상의 방법을 식별하는 데 사용하는 프로세스입니다. 이 문제는 코드 논리 또는 예외와 관련이 있을 수 있습니다. 어느 쪽이든 원하는 방식으로 작동하지 않을 때 코드를 디버깅하는 작업을 수행합니다. 일반적으로 디버깅이라는 용어는 격리하기 쉽지 않은 런타임 문제에 대해 예약되어 있습니다. 따라서 코드 문의 끝에 누락된 ";"과 같은 구문 문제를 해결하는 것은 일반적으로 디버깅으로 간주되지 않습니다.
다음 샘플 코드를 고려합니다.
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#은 예외를 생성할 수 있는 코드를 "시도"하는 방법과 발생하는 모든 예외를 "catch"하는 방법을 제공합니다.
요약
이 단원에서 기억해야 하는 몇 가지 중요한 사항은 다음과 같습니다.
- 테스트, 디버깅 및 예외 처리는 모두 소프트웨어 개발자에게 중요한 작업입니다.
- 테스트는 기능 및 비기능 테스트로 분류할 수 있으며 개발자는 일정 수준의 테스트를 수행해야 합니다.
- 코드 디버깅은 문제를 격리하고 문제를 해결하는 방법을 식별하는 프로세스이며 개발자의 책임입니다.
- 예외 처리는 런타임 중에 발생하는 오류를 관리하는 프로세스이며, 개발자는 코드에서 "try" 및 "catch" 문을 사용하여 예외를 처리합니다.