테스트 코드
의도된 대로 정확히 작동하는지 검증
장점
- 개발 과정 중 예상치 못한 문제를 미리 발견할 수 있다.
- 작성한 코드가 의도한 대로 작동하는지 검증할 수 있다.
- 코드의 변경, 추가, 삭제 시 사이드 이펙트를 줄일 수있다.
생성된 Test 클래스의 위치 확인.
자동으로 생성된 테스트 클래스의 이름은 “테스트 대상 클래스+Test”로 자동 생성
- Annotation
- @Test : 테스트 메서드임을 나타냄. 실행 가능
- @BeforeEach : 각 메서드 전에 실행됨을 나타냄.
- @BeforeAll : 현재 클래스의 모든 메서드보다 먼저 실행되어야하는 메서드 표시.
- @AfterAll : 현재 클래스의 모든 메서드보다 나중에 실행되어야하는 메서드 표시.
- @RepeatedTest : 메서드 반복 호출을 함을 표시.
- @DisplayName : 사용자 지정 표시 이름을 선언.
테스트 코드 작성 요령
1. 간단하게 작성
2. 엣지 케이스 테스트
3. 버그 수정 전 테스트 작성
4. 설명이 포함된 이름 사용
5. 한 번에 하나의 요구 사항 테스트
Thread

함수 호출에 의한 스택 프레임 변화

실행 단계 살펴보기
- 프로그램이 실행되면, 가장 먼저 main() 함수가 호출되어 main() 함수의 스택 프레임이 스택에 저장.
- func1() 함수를 호출하면 해당 함수의 매개변수, 반환 주소값, 지역 변수 등의 스택 프레임이 스택에 저장.
- func2() 함수를 호출하면 해당 함수의 스택 프레임이 추가로 스택에 저장.
- func2() 함수의 모든 작업이 완료되어 반환되면, func2() 함수의 스택 프레임만이 스택에서 제거.
- func1() 함수의 호출이 종료되면, func1() 함수의 스택 프레임이 스택에서 제거.
- main() 함수의 모든 작업이 완료되면, main() 함수의 스택 프레임이 스택에서 제거되면서 프로그램이 종료
Thread Scheduling
컴퓨터가 동시에 처리할 수 있는 최대 작업 수는 CPU 코어(core) 수와 같다.
→ 스레드의 개수가 코어의 수보다 많을 경우, 스레드를 어떤 순서로 동시성을 실행할 것인가 결정하는 스레드 스케줄링.
- 자바의 스레드 스케줄링은 우선 순위(Priority) 방식과 순환 할당(Round-Robin) 방식 사용. 기본 메커니즘은 Queue 구조를 가짐
- 우선 순위 방식 : 우선 순위가 높은 스레드가 실행 상태를 더 많이 가지도록 스케줄링. : 1~10까지 값을 가질 수 있으며, 기본은 5.
- 순환 할당 방식 : 시간 할당량(Time Slice)을 정해서 하나의 스레드를 정해진 시간만큼 실행.
동기화(Synchronization) 문제
스레드는 잘 다루면 매우 효율적이지만, 스레드 간섭 및 메모리 일관성 오류라는 두 가지 오류가 발생할 수 있다. 이런 오류를 방지하는 데에 필요한 도구가 동기화.
반복, 재정리 필요
'TIL' 카테고리의 다른 글
| 2022.12.09 DB 개요 (0) | 2022.12.12 |
|---|---|
| [WIL] 2022.11.28 ~ 12.02 미니 프로젝트 발표와 자바 심화 (0) | 2022.12.04 |
| 2022.11.30 JVM 구조 (0) | 2022.11.30 |
| 2022.11.29 프로젝트 발표 + .gitignore (0) | 2022.11.29 |
| 2022.11.28 프로젝트 발표 준비 (0) | 2022.11.28 |