Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기
    • 부스트캠프
    • iOS
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • ImageResource
  • Python
  • constraint
  • Animation
  • CS
  • boj
  • 알고리즘
  • AutoLayout
  • SwiftUI
  • Git
  • 백준
  • AVAudioSession
  • Concurrency
  • guard
  • 소프트웨어공학
  • alamofire
  • 오블완
  • Swift5.7
  • 티스토리챌린지
  • 모듈화
  • image
  • 소프트웨어 테스트
  • MVC
  • Optional
  • swift
  • 부스트캠프
  • 소프트웨어 공학
  • if let
  • jekyll
  • ios

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
[소프트웨어 공학] 블랙박스 테스트-1
CS

[소프트웨어 공학] 블랙박스 테스트-1

2022. 11. 7. 09:59

블랙박스 테스트

  • 명세 기반 테스트(ISO/IEC/IEEE 29119)
    • 명세에 따른 올바른 구현여부 테스트
  • 명세 정보 등을 이용하여 테스트 케이스 설계
    • 요구사항 분석 / 시스템 인터페이스 / UI 명세
      • 원시 코드 정보를 이용하지 않음
      • 사용자 입장에서 테스트 케이스 설계 가능
    • 개발 초기 단계부터 테스트 케이스 설계 가능
      • 단위, 통합, 시스템, 인수 테스트 전 과정에 사용
    • 동일 명세로 구현된 여러 시스템에 재사용 가능
    • 기능 (누락) 오류 / 명세 오류 검출

예시

  • 입력이 1024 이하이면 입력 값, 크면 1 증가 값 반환
// BlackBoxTest.java
public class BlackBoxTest {  
	public int bTest(int x) {
		return x; 
	}
}
  • 명세에 따라 1024 이하인 경우, 큰 경우를 테스트
    • "1 증가 값 반환" 이라는 누락된 기능 검출
    • 화이트박스(구조기반) 테스트에서는 프로그램의 원시 코드로 테스트 케이스를 설계하므로 확인 불가

 

동등 클래스 분할 (ECP: Equivalent Class Partition, 동치류 분할)

  • 입력 영역을 여러 동치류로 분할하여 대표 값 선정
  • 분할 영역의 동치류 만족 조건
    • 각 동치류의 대표 값에 의해서 오류가 있(없)으면 그 동치류의 다른 값에 대해서 오류가 있(없)음
  • 모든 입력 영역을 동치류로 분할하는 것은 불가능
    • 근사적 입력 영역 분할 방법 사용
    • 시스템에 의하여 처리/출력 결과가 같은 입력 조건/데이터 값의 모임
exports.getInfoById = function(req, res) {
    pool.getConnection(function(error, con) {
        var id = req.param('id');
        var sql = 'select * from LIST where id = ' + "'"+id+"'"; 
        con.query(sql, function(error, result) {
            res.send(result[0]);
            con.release( ); 
        });
    }); 
};

 

동등 클래스 수행 절차

  1. 명세로부터 입력 인자(변수) 식별
  2. 입력 인자를 동치류로 분할
    • 입력 조건이 특정 범위/값: 만족, 불만족 범위 분할

3. 각 동치류를 적절한 조합 연산자 이용하여 조합

4. 불가능한 조합 점검 및 제거

5. 조합된 클래스의 대표 값 선정, 테스트 케이스에 반영

 

예시 : 놀이공원 티켓 발매 시스템

  • "10세 미만이면 아동할인, 15세 이하이면 부모 동반, 30세 이상 여성은 여성할인, 60세 이상은 경로할인"
    • 입력 인자: 나이(A), 성별(B)
      • 나이 구간:
        • 10 미만일때 : 아동할인
        • 10이상 15이하 : 부모동반
        • 15 초과 30 미만 : 할인 미적용
        • 30이상 60 미만 : 여성할인
        • 60 이상 : 경로할인
      • 성별: 'F', 'M'
    • 명세를 명확하게 수정
      • 60세 이상 여성은 경로 + 여성 중복할인?, 0세 미만?
      • 경로할인만 적용, 태아 제외 이런식으로 명세에 빈틈이 없도록 수정
    • 동치류
      • A1: 나이 0 이상 10 미만
      • A2: 나이 10 이상 15이하
      • A3: 나이 15 초과 30 미만
      • A4: 나이 30 이상 60 미만
      • A5: 나이 60 이상
      • B1: F
      • B2: M

 

저작자표시 (새창열림)

'CS' 카테고리의 다른 글

객체 지향 프로그래밍을 설계할 때는 SOLID 원칙을 지켜야 한다.  (0) 2024.04.12
[컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식  (1) 2024.03.12
[소프트웨어 공학] JUnit  (0) 2022.10.10
[소프트웨어 공학] 소프트웨어 테스트 - 2  (1) 2022.10.03
[소프트웨어공학] 소프트웨어 테스트 - 1  (0) 2022.10.03
    'CS' 카테고리의 다른 글
    • 객체 지향 프로그래밍을 설계할 때는 SOLID 원칙을 지켜야 한다.
    • [컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식
    • [소프트웨어 공학] JUnit
    • [소프트웨어 공학] 소프트웨어 테스트 - 2
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바