단위 테스트
-세부 구현 클래스나 메서드에 대한 검증
통합 테스트
-컴포넌트간 기능 연동을 검증
시스템 테스트
-배포 환경에 대한 점검, 비기능 요소(성능, 안정성, 확장성)에 대한 검증
인수 테스트
-고객이 최종적으로 요구 사항 축족에 대한 검증을 수행
1a. 단일 진입 및 단일 종료에 한정해야 함
-프로그램 가독성을 높이고 구현 실수의 가능성을 축소
1b. 동적 객체/변수의 사용을 자제하거나 생성시 안전성 검사를 수행해야 함
-메모리 누수, 데이터 불일치, 메모리 고갈을 유발할 수 있음
-안전성 검사를 수행하는 코드 추가
1c. 모든 변수는 초기화한 후 사용해야 함
-유효한 값이 없는 초기화 되지 않은 변수를 사용할 경우 undefined behavior 유발
1d. 항상 유일한 이름을 갖는 변수를 사용
-C 언어의 경우, 가장 가까운 범주에서 정의된 변수로 간주되어, 찾기 어려운 오류의 원인
1e. 가능한 전역 변수를 사용하지 않아야 함
-전역 변수는 여러 곳에서 동시에 접근이 가능하여 많은 결함의 원인
-전역 변수가 필요한 경우, static 키워드를 이용하여 접근을 효과적으로 제어
1f. 포인터는 제한적으로 사용
-부주의한 사용으로 할당되지 않은 메모리, 영역을 접근할 경우 다양한 결함의 원인
1g. 암묵적인 타입 변환은 사용하면 안 됨
-묵시적 변환 후 값이 대입될 경우 의도하지 않는 값이 들어갈 수 있음
1h. 숨겨진 데이터 혹은 제어 흐름은 사용되어서는 안 됨
-프로그램의 이해를 어렵게 해서 오류를 증가시킴
1j. 재귀 호출은 사용하면 안 됨
-재귀함수 호출은 스택 공간을 초과하는 위험을 줄 수 있기 때문에 Overflow 오류를 발생시킬 수도 있음
1i. 무조건 점프문은 사용하면 안 됨
-goto는 프로그램의 흐름을 복잡하게 만들어 가독성을 떨어뜨리고 유지보수를 어렵게 함