소프트웨어 테스트 유형, 형상관리, 데이터베이스 설계
소프트웨어 테스트 유형, 형상관리, 데이터베이스 설계
소프트웨어 테스트 유형
1. 단위 테스트 (Unit Testing)
- 목적: 소프트웨어의 개별 단위(주로 함수나 메서드)의 동작을 검증합니다.
- 특징: 각 단위가 독립적으로 올바르게 동작하는지 확인합니다.
- 도구: JUnit(Java), NUnit(.NET), pytest(Python) 등
- 예시: 계산기 프로그램에서
add()메서드가 두 숫자의 합을 정확히 계산하는지 테스트
2. 통합 테스트 (Integration Testing)
- 목적: 여러 단위가 함께 올바르게 동작하는지 검증합니다.
- 특징: 개별 단위가 통합되어 상호작용할 때 발생할 수 있는 문제를 발견합니다.
- 도구: TestNG, JUnit, pytest 등
- 예시: 계산기 프로그램에서
add()메서드와multiply()메서드가 함께 사용할 때 올바르게 동작하는지 테스트
3. 시스템 테스트 (System Testing)
- 목적: 전체 시스템이 요구사항에 따라 올바르게 동작하는지 검증합니다.
- 특징: 소프트웨어의 모든 구성 요소를 통합하여 전체 시스템을 테스트합니다.
- 도구: Selenium, QTP, TestComplete 등
- 예시: 계산기 프로그램의 모든 기능(덧셈, 곱셈, 나눗셈 등)을 사용자가 사용할 때 올바르게 동작하는지 테스트
4. 회귀 테스트 (Regression Testing)
- 목적: 소프트웨어의 기존 기능이 새로운 변경 사항에 의해 손상되지 않았는지 검증합니다.
- 특징: 이전에 테스트한 기능이 계속해서 올바르게 동작하는지 확인합니다.
- 도구: Selenium, JUnit, TestNG 등
- 예시: 계산기 프로그램에 새로운 기능을 추가한 후 기존 기능들이 여전히 올바르게 동작하는지 테스트
5. 수락 테스트 (Acceptance Testing)
- 목적: 소프트웨어가 최종 사용자나 고객의 요구사항을 충족하는지 검증합니다.
- 특징: 실제 사용자 환경에서 소프트웨어를 테스트합니다.
- 도구: Cucumber, FitNesse 등
- 예시: 사용자가 요구한 모든 계산 기능이 요구사항에 맞게 동작하는지 테스트
6. 성능 테스트 (Performance Testing)
- 목적: 소프트웨어의 성능(응답 시간, 처리량 등)을 검증합니다.
- 특징: 소프트웨어의 속도, 안정성, 확장성을 테스트합니다.
- 도구: JMeter, LoadRunner 등
- 예시: 계산기 프로그램이 많은 수의 계산 요청을 처리할 때 응답 시간이 얼마나 걸리는지 테스트
7. 보안 테스트 (Security Testing)
- 목적: 소프트웨어가 보안 위협에 대해 얼마나 안전한지 검증합니다.
- 특징: 소프트웨어의 보안 취약점을 발견하고, 이를 악용할 수 있는 가능성을 평가합니다.
- 도구: OWASP ZAP, Burp Suite 등
- 예시: 계산기 프로그램이 악의적인 입력을 처리할 때 보안 위협에 노출되지 않는지 테스트
소프트웨어 형상관리
소프트웨어 형상관리는 소프트웨어 개발 과정에서 소프트웨어의 모든 변경 사항을 추적하고 제어하는 프로세스입니다. 이는 소프트웨어의 안정성과 품질을 보장하고, 개발 팀 간의 협업을 효율적으로 유지하는 데 중요한 역할을 합니다. 주요 개념과 도구는 다음과 같습니다:
주요 개념
- 형상 항목(Configuration Item)
- 형상 관리의 대상이 되는 모든 요소를 말합니다. 예를 들어 소스 코드, 문서, 테스트 스크립트 등이 포함됩니다.
- 형상 베이스라인(Configuration Baseline)
- 특정 시점에서의 형상 항목의 집합으로, 변경 없이 일관성을 유지해야 하는 기준점입니다.
- 프로젝트의 주요 이정표에서 설정됩니다.
- 형상 식별(Configuration Identification)
- 관리할 형상 항목을 정의하고 식별하는 과정입니다.
- 각 항목에 고유한 식별자를 부여합니다.
- 형상 통제(Configuration Control)
- 형상 항목의 변경을 제어하고 승인하는 과정입니다.
- 변경 관리 위원회(Change Control Board, CCB)가 주로 이를 담당합니다.
- 형상 감사(Configuration Audit)
- 형상 항목이 기준에 맞게 잘 관리되고 있는지 확인하는 과정입니다.
- 형상 항목의 일관성과 무결성을 검증합니다.
- 형상 상태 보고(Configuration Status Accounting)
- 형상 항목의 현재 상태와 변경 이력을 문서화하고 보고합니다.
주요 도구
- Git: 분산 버전 관리 시스템으로, 소스 코드의 변경 사항을 추적하고 관리할 수 있습니다.
- Subversion (SVN): 중앙 집중식 버전 관리 시스템으로, 소스 코드의 이력을 관리합니다.
- Mercurial: 분산 버전 관리 시스템으로, Git과 유사한 기능을 제공합니다.
- Perforce: 고성능 버전 관리 시스템으로, 대규모 프로젝트에서 주로 사용됩니다.
- TFS (Team Foundation Server): Microsoft의 버전 관리 및 프로젝트 관리 도구로, Azure DevOps로 발전하였습니다.
형상관리 프로세스
- 계획 수립: 형상 관리 계획을 세우고, 형상 항목과 베이스라인을 정의합니다.
- 형상 식별: 형상 항목을 정의하고, 각 항목에 고유한 식별자를 부여합니다.
- 형상 통제: 형상 항목의 변경 요청을 승인하고, 변경을 통제합니다.
- 형상 감사: 형상 항목의 일관성과 무결성을 확인하기 위해 정기적으로 감사를 수행합니다.
- 형상 상태 보고: 형상 항목의 현재 상태와 변경 이력을 문서화하고 보고합니다.
형상관리는 소프트웨어 개발 과정에서 중요한 역할을 하며, 이를 통해 소프트웨어의 품질을 높이고 효율적인 협업을 촉진할 수 있습니다.
데이터베이스 설계
개념적 설계
- 사용자의 요구사항 분석 후, 데이터베이스에 대한 추상적인 형태를 설계
- 개념적 모델을 이용한 개념적 스키마 생성 (데이터베이스에 대한 추상적인 설계도, 개체 관계 다이어그램)
논리적 설계
- 논리적 모델을 이용하여 논리적 스키마 생성
- ERD를 이용하여 데이터베이스 스키마를 설계, 테이블 구조도 작성
- 개념적 설계 단계에서 생성된 ERD를 바탕으로 생성되는 테이블들의 집합
물리적 설계
- 특정 DBMS가 제공하는 물리적 구조에 따라 테이블 저장 구조 설계
- 테이블의 데이터 타입, 인덱스, 테이블 저장 방법 등을 정의
병행제어 기법 (Concurrency Control Techniques)
병행제어는 데이터베이스에서 동시에 여러 트랜잭션이 일어나더라도 데이터 일관성을 유지하기 위해 사용됩니다.
- 락킹 기법 (Locking Techniques)
- 공유 락 (Shared Lock): 데이터를 읽기 위해 사용. 다른 트랜잭션도 읽기만 가능.
- 배타 락 (Exclusive Lock): 데이터를 쓰기 위해 사용. 다른 트랜잭션은 읽기/쓰기가 불가능.
- 타임스탬프 기법 (Timestamp Ordering)
- 각 트랜잭션에 고유한 타임스탬프를 부여하고, 트랜잭션의 시간 순서에 따라 작업을 진행.
- 낙관적 병행제어 (Optimistic Concurrency Control)
- 트랜잭션이 충돌하지 않을 것으로 예상하고, 커밋 시점에 검증하여 충돌 시 롤백.
- 다중 버전 동시성 제어 (Multi-Version Concurrency Control, MVCC)
- 데이터의 여러 버전을 유지하여 읽기 작업이 쓰기 작업에 영향을 받지 않도록 함.
다다중 버전 기법 (Multiversion Techniques)
당중 버전 기법은 다중 버전 동시성 제어의 일환으로, 읽기 작업과 쓰기 작업이 서로 영향을 주지 않도록 합니다.
- 다중 버전 동시성 제어 (MVCC)
- 개념: 데이터의 여러 버전을 유지하여 동시에 읽기와 쓰기가 가능하게 함.
- 적용: 데이터베이스 관리 시스템(DBMS)에서 널리 사용.
- 장점: 높은 읽기 성능과 일관성 유지.
- 단점: 추가적인 저장 공간이 필요하고, 버전 관리가 복잡할 수 있음.
This post is licensed under CC BY 4.0 by the author.