요구사항 분석은 소프트웨어 개발에서 ‘무엇을 만들 것인지’를 명확하게 정의하는 단계로 사용자와 이해관계자의 요구를 수집하고, 이를 구체적이고 검증 가능한 형태로 문서화한다. 수집된 요구사항은 기능 요구사항(무엇을 해야 하는가)과 비기능 요구사항(성능, 보안, 사용성 등)으로 구분한다.
예를 들어, ‘사용자가 회원가입을 할 수 있어야 한다’는 기능 요구사항이고, ‘페이지 로딩 시간은 2초 이내여야 한다’는 비기능 요구사항이다.

또한, 요구사항 분석은 일반적으로 두 가지 과정으로 나뉘는데,
새로운 요구사항을 식별하고 문서화하는 과정인 요구사항 개발(Requirements Development)과, 요구사항이 지속적으로 변경될 수 있는 환경에서 이를 효과적으로 유지·관리하는 과정인 요구사항 관리(Requirements Management)가 있다.


시스템 설계는 수집된 요구사항을 토대로 전체 시스템의 구조와 동작 방식을 정의하는 단계다.
하드웨어, 소프트웨어, 네트워크, 데이터베이스 등 구성 요소 간의 관계를 설계하며, 아키텍처 다이어그램과 데이터 흐름도를 작성한다.
예를 들어, 3계층 구조(프레젠테이션, 비즈니스 로직, 데이터 계층)를 선택하고, 각 계층 간의 데이터 흐름을 정의하는 것이 포함된다. 이 단계는 건축 설계도처럼 개발 전반의 ‘청사진’을 만드는 과정이다.
객체 설계는 시스템 설계에서 정의한 구조를 실제 개발에 사용할 클래스와 객체 단위로 구체화하는 단계로 클래스 다이어그램을 활용해 속성(변수)과 메서드(기능), 그리고 객체 간의 관계(상속, 연관, 의존)를 설계한다.
예를 들어, ‘사용자’ 클래스에는 이름·이메일 속성과 로그인·로그아웃 메서드가 포함될 수 있다.
이 과정은 추후 코드 작성 시 유지보수성과 확장성을 높이는 데 중요한 역할을 한다.

개발 테스트는 구현된 기능이 요구사항에 맞게 동작하는지 검증하는 과정으로 이 단계에서는 기능 단위, 모듈 단위, 통합 테스트 등을 거쳐 소프트웨어의 품질을 보장한다.
특히 테스트 자동화를 도입하면 개발 속도와 안정성을 높일 수 있다.
블랙박스 테스트: 내부 동작을 몰라도 입력과 출력만으로 기능을 검증하는 방식.
예) 로그인 기능에서 올바른 아이디/비밀번호 입력 시 정상 동작 확인.
화이트박스 테스트: 코드 내부 구조를 분석하여 모든 경로와 로직이 정상적으로 실행되는지 검증하는 방식.
예) if-else 분기문 모든 조건 테스트.
| 문서 | 설명 |
|---|---|
| 테스트 계획서(Test Plan) | 테스트 범위, 목표, 전략, 일정, 리소스 등을 정의 |
| 테스트 케이스(Test Case) | 테스트 목적, 입력값, 기대 결과, 실행 절차 포함 |
| 테스트 시나리오(Test Scenario) | 사용자 관점의 기능 흐름 기반 테스트 항목 |
| 결함 보고서(Bug Report) | 결함 발생 상황, 재현 절차, 로그, 심각도 등 기록 |
| 테스트 요약 보고서(Test Summary Report) | 전체 테스트 결과 요약, 통과율, 결함 통계, 이슈 정리 등 |
pytest는 Python에서 있다 가장 널리 쓰이는 테스트 프레임워크 중 하나로, 간결한 문법과 강력한 기능을 제공한다. 함수 이름만 test_로 시작하면 자동으로 테스트를 인식하며, 다양한 플러그인을 활용해 커버리지 측정, 데이터 매개변수화, 비동기 테스트 등을 지원한다.
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
이처럼 pytest를 활용하면 테스트 코드를 간단히 작성하고 자동 실행할 수 있어, 코드 품질 유지에 큰 도움이 된다.