반응형

소프트웨어 테스트의 기본: 5가지 핵심 테스트 유형 이해하기

소프트웨어 개발에서 테스트는 제품의 품질을 보장하는 핵심 요소입니다. 이 글에서는 소프트웨어 테스트의 5가지 주요 유형을 자세히 살펴보고, 각각의 중요성과 적용 방법에 대해 알아보겠습니다.

1. 단위 테스트 (Unit Test)

단위 테스트는 소프트웨어 테스트의 가장 기본적인 형태입니다. 개별 컴포넌트나 함수가 의도한 대로 작동하는지 확인하는 과정입니다.

주요 특징:

  • 코드의 가장 작은 단위를 테스트
  • 외부 의존성은 스텁(stub)이나 목(mock)으로 대체
  • 빠른 실행과 즉각적인 피드백 제공
  • 버그를 조기에 발견하고 수정 가능

예를 들어, 사용자 등록 함수를 테스트할 때는 데이터베이스 연결 없이 함수 자체의 로직만 검증합니다.

2. 통합 테스트 (Integration Test)

통합 테스트는 여러 컴포넌트가 함께 잘 작동하는지 확인합니다. 실제 환경과 유사한 조건에서 컴포넌트 간의 상호작용을 테스트합니다.

핵심 포인트:

  • 컴포넌트 간의 인터페이스 검증
  • 데이터 흐름 확인
  • 실제 환경의 문제 조기 발견
  • 시스템 통합 문제 식별

예시로, 사용자 등록과 이메일 발송 시스템의 연동을 테스트하는 경우가 있습니다.

3. 회귀 테스트 (Regression Test)

회귀 테스트는 새로운 변경사항이 기존 기능에 영향을 미치지 않는지 확인합니다. 소프트웨어 품질 유지에 매우 중요한 역할을 합니다.

중요성:

  • 기존 기능의 정상 작동 보장
  • 예상치 못한 부작용 방지
  • 지속적인 품질 관리
  • 변경 관리의 안전성 확보

버그 수정이나 새로운 기능 추가 후에는 반드시 회귀 테스트를 실시해야 합니다.

4. 스모크 테스트 (Smoke Test)

스모크 테스트는 시스템의 기본적인 기능이 작동하는지 빠르게 확인하는 테스트입니다. '빌딩이 불타고 있지 않은지' 확인하는 것과 같습니다.

특징:

  • 빠른 실행
  • 치명적인 문제 조기 발견
  • 배포 전 기본 검증
  • 개발 파이프라인의 첫 단계

예를 들어, 웹 애플리케이션의 경우 기본 페이지 로드와 로그인 기능을 확인하는 것이 스모크 테스트에 해당합니다.

5. 시스템 테스트 (System Test)

시스템 테스트는 전체 시스템이 실제 운영 환경에서 정상적으로 작동하는지 확인합니다. 최종 사용자의 관점에서 진행되는 종합적인 테스트입니다.

주요 검증 사항:

  • 전체 시스템의 기능성
  • 성능 및 안정성
  • 보안 요구사항
  • 사용자 경험

실제 사용자 시나리오를 기반으로 전체 시스템의 동작을 검증합니다.

결론

효과적인 소프트웨어 테스트를 위해서는 이러한 다양한 테스트 유형을 적절히 조합하여 사용해야 합니다. 각 테스트는 서로 다른 관점에서 시스템을 검증하며, 이를 통해 높은 품질의 소프트웨어를 제공할 수 있습니다.

테스트 자동화와 지속적인 통합(CI/CD) 환경에서 이러한 테스트들을 효율적으로 구현하고 실행하는 것이 현대 소프트웨어 개발의 핵심 요소입니다.

반응형
반응형

Python을 활용한 시스템 명령어 실행 가이드

1. 기본적인 명령어 실행 방법

os 모듈 사용

import os

# 단순 명령어 실행
status = os.system('ls -al')
# 반환값은 명령어 실행 상태 (0: 성공, 非0: 실패)

subprocess 모듈 사용 (권장)

import subprocess

# 기본 실행 방법
result = subprocess.call(['ls', '-al'])

# shell=True 옵션 사용 시
result = subprocess.call('ls -al', shell=True)

2. 시스템 명령어 출력 결과 처리

화면 출력

# subprocess.run 사용 (Python 3.5+)
result = subprocess.run(['ls', '-al'], capture_output=True, text=True)
print(result.stdout)  # 표준 출력
print(result.stderr)  # 오류 출력

# subprocess.Popen 사용
process = subprocess.Popen(['ls', '-al'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
stdout, stderr = process.communicate()
print(stdout)

파일로 저장

# 직접 파일로 출력 리다이렉션
with open('output.txt', 'w') as f:
    subprocess.run(['ls', '-al'], stdout=f)

# 출력 결과를 받아서 파일로 저장
result = subprocess.run(['ls', '-al'], capture_output=True, text=True)
with open('output.txt', 'w') as f:
    f.write(result.stdout)

3. 고급 기능

타임아웃 설정

try:
    result = subprocess.run(['sleep', '10'], timeout=5)
except subprocess.TimeoutExpired:
    print("명령어 실행 시간 초과")

환경 변수 설정

import os
env = os.environ.copy()
env['MY_VAR'] = 'value'
subprocess.run(['printenv', 'MY_VAR'], env=env)

에러 처리

try:
    result = subprocess.run(['invalid_command'], check=True)
except subprocess.CalledProcessError as e:
    print(f"에러 발생: {e}")

4. 실행 결과 코드 확인

result = subprocess.run(['ls', '-al'])
print(f"Return code: {result.returncode}")  # 0: 성공, 非0: 실패

subprocess 모듈은 os.system()보다 다음과 같은 장점이 있습니다:

  • 출력 결과를 쉽게 캡처할 수 있음
  • 보안상 더 안전함 (shell injection 방지)
  • 더 세밀한 제어가 가능 (타임아웃, 환경변수 등)
  • 에러 처리가 용이함
반응형
반응형

ES6 (ECMA Script 2015) 문법 간단 요약본 링크 

:https://github.com/lukehoban/es6features

반응형
반응형

 

DB접속 (MySQL 기준)

- 학습 목적

요즘은 프레임워크에 내장된 우수한 시스템을 통해서 DB 접속정보를 알려주지만 

PHP 프레임워크 내부에서도 결국 PHP 코드를 이용해 접속하기 떄문에 내부구조를 이해하기위해 PHP로 DB 접속 하는 방법은 간단하지만 알아둘만한 가치가 있다. 

 

- DB 접속 방법

 

1. mysqli 

1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$servername = "localhost";
$username = "username";
$password = "password";   
$conn = new mysqli($servername$username$password);    
 
// 접속 확인
if ($conn->connect_error) {         
    die("Connection failed: " . $conn->connect_error);
 
// DB 접속 끊기
mysqli_close($conn)
cs


2. PDO 

1
2
3
4
<?php
    $conn = new PDO('mysql: host=DB주소;dbname=DB이름'$DB접속이름$비밀번호);
    // EX) $conn = new PDO('mysql:host=127.0.0.1:3306;dbname=mydb', "myid", "mypd");
?>
cs

PDO는 접속 종료에 관해서 함수로 제공하고 있지 않아 사용자가 접속 정보를 null 로 직접 처리해주어야만 합니다.

 

1
2
3
4
5
6
7
8
9
<?
$pdo = new PDO('mysql: host=DB주소;dbname=DB이름'$DB접속이름$비밀번호); 
$stmt = $pdo->prepare('SELECT * FROM my_table'); 
$stmt->execute();
 
// stmt 연결 끊기
$stmt = null
// DB 연결 끊기
$pdo = null;
cs



 보통  db_connection.php 파일로 따로 빼두어 모듈화를 시킨후 필요한 곳에 사용한다. 

반응형
반응형

목표:

ASP.NET MVC 5 개발 프로그램 설치 및 Hello World 페이지 실행

 

필요한 프로그램:

Windows 8.1 이상 추천 (저는 현재 10을 쓰고 있습니다)

Visual Studio 2015 community ( 2012, 2013 버전도 가능하지만 2012의경우 MVC5 를 사용하기 위해서는 추가 프로그램 설치 필요) 

 

1. Visual Studio 홈페이지 접속 -> Community 2015 다운로드

 

 

2. 설치시 WEB DEV 관련 도구들을 모두 클릭하여 설치 

 

3. Proejct -> New Project

Web 항목

반응형

'C# > ASP.NET MVC' 카테고리의 다른 글

ASP.NET MVC  (0) 2015.12.02

+ Recent posts