Joon's Space
6. 애플리케이션 테스트 관리 본문
소프트웨어 테스트의 기본 7원칙
- 테스팅은 결함이 존재함을 밝하는 활동이다.
- 완벽한 테스팅은 불가능하다.
- 테스팅은 개발 초기에 시작해야 한다.
- 결함 집중
- 살충제 패러독스
- 테스팅은 정황(Context)에 의존한다.
- 오류 - 부재의 궤변(Absence of Errors Fallacy)
파레토의 법칙
소프트웨어 테스트에서 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상
테스트/디버깅 차이
테스트는 알려지지 않은 에러를 발견하기 위한 활동이고, 디버깅은 이미 알고있는 에러의 수정을 위해서 원일을 파악하는 활동이다.
테스트 케이스
- 일정한 조건 하에서 요구사항의 만족여부를 확인하기 위해서 만들어진 테스트 전의 입력값과 테스트 후의 기댓값의 집합.
- 다양한 비즈니스 수행 형태를 정보시스템이 제대로 구현하였는가를 검증하기 위해서 만든 입력 값과 예상 결과 값의 조합.
정적(static) 테스트
프로그램 실행 없이 소스 코드의 구조를 분석하여 논리적으로 검증하는 테스트 기법
ex) 인스펙션, 코드 검사, 워크스루
동적(dynamic) 테스트
프로그램 실행을 요구하는 테스트 기법
ex) 화이트박스 테스트, 블랙박스 테스트
그레이박스 테스트(Gray-box Test)
소프트웨어의 내부 구조의 일부만 알고 수행하는 테스트로 블랙박스 시험이 혼합된 시험 형태
블랙박스 테스트(Black-box Test)
프로그램 내부의 구조와는 관계없이 외부에 제공하는 기능 중심으로 모든 기능들이 정상적으로 수행되는지 확인한다.
유형
- 동등분할 기법(Equivalent Analysis) - 입력값의 범위를 유사한 특징을 갖는 동등 그룹으로 나누고, 각 그룹마다 대표 값을 설정하여 테스트 케이스를 선정하는 기법
- 경계값 분석 기법(Boundary Value Analysis) - 경계값 분석은 등가 분할된 경계의 유효한 값과 경계에서 가장 가까운 유효하지 않는 값은 테스트 데이터로 선택하여 컴포넌트 나 시스템을 테스트 하는 기법
- 원인 효과 그래프 기법(Cause Effect Graph) - 입력값을 원인으로, 효과를 출력 값으로 정하고 이에 따른 원인 결과 그래프를 만들어서 테스트 케이스를 작성하는 기법
- 의사결정테이블 테스팅 기법 - 생성될 수 있는 결과를 테이블로 나열하여 가능한 모든 조합을 테스트하는 기법
화이트박스 테스트(White-box Test)
프로그램의 내부 로직(수행 경로 구조, 루프 등)을 보면서 테스트를 수행한다.
유형
- 기본경로 검사 - 프로그램의 제어구조를 플로우 그래프로 표현하고, 순환복잡도를 통해 독립적인 경로의 수를 찾아 테스트 케이스를 도출하는 기법
- 반복경로 검사(루프 검사)
- 제어 구문 검사
- 데이터 흐름 검사
명세 기반 기법(Specification Based Techniques)
주어진 명세를 바탕으로 테스트케이스를 도출하며 표현방식은 UML을 많이 사용함.
ex) 블랙박스 기법, 문서분석 필요, 기능적/비기능적 테스트케이스 도출
구조 기반 기법(Structural Based Techniques)
소프트웨어나 시스템의 구조를 중심으로 테스트케이스를 도출
ex) 화이트박스 기법, 컴포넌트/시스템 코드 분석, 추가적 테스트 케이스 도출
테스트 커버리지(Coverage)
소프트웨어의 소스 코드가 얼마만큼 테스트가 되었는가를 나타내는 지표
유형
- 구문 커버리지 - 프로그램 내 모든 명령문을 적어도 한번 수행
- 결정 커버리지 - 프로그램 내 전체 결정문이 적어도 한번은 참과 거짓의 결과를 수행
- 조건 커버리지 - 결정 명령문 내 각 조건이 적어도 한번은 참과 거짓의 결과가 출력되도록 수행
- 조건/결정 커버리지 - 전체 조건식 뿐 아니라 개별 조건식도 참, 거짓이 한번씩 결과가 되도록 수행
- 변경 조건/결정 커버리지 - 각 개별 조건식이 다른 개별 조건 식에 영향을 받지 않고 전체 조건식의 독립적 영향을 주도록 수행
- 다중 조건 커버리지 - 결정 포인트 내 있는 모든 개별 식 조건의 모든 조합을 고려한 커버지리
에러(Error)
결함의 원인이 되는 것
결함(Defect)
에러가 원인이 되어 제품에 포함된 결함, 제거하지 않으면 실패 또는 문제의 원인이 된다.
실패(Failure), 문제(Problem)
제품의 결함(Defect)이 있는 부분이 실행될 때 발생되는 현상
에러가 발생하여 결함이 생기고 결국 실패하는 현상이 발생한다.
테스트 유형
- 단위 테스트(단위 검사) - 구현된 모듈의 기능 수행 여부를 판정하고 내부에 존재하는 논리적 오류를 검출한다.
- 통합 테스트(통합 검사) - 모듈 간의 인터페이스 연계를 검증하고 오류를 확인, 모듈 간의 상호 작용 및 연계 동작이 제대로 기능하는지 점검한다.
- 시스템 테스트(시스템 검사) - 단위, 통합테스트 후 전체 시스템이 정상적으로 작동하는지 판정하는 기능을 점검한다.
- 인수 테스트(인수 검사) - 사용자 요구분석 명세서에 명시된 사항을 모두 충족하는지 판정하고 시스템이 예상대로 동작하는지 점검한다.
V 모델에서 개발 결과를 테스트 하는 순서는 단위 → 통합 → 시스템 → 인수 순으로 Bottom- up 순서
인수 테스트
사용자 요구분석 명세서에 명시된 사항을 모두 충족하는지 판정하고 시스템이 예상대로 동작하고 있는지 점검하는 테스트 단계입니다.
- 알파 테스트(알파 검사) - 개발자의 장소에서 사용자가 개발자 앞에서 행해지며, 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 검사하는 기법(개발자 환경에서 테스트하는 기법)
- 베타 테스트(베타 검사) - 다수의 사용자를 제한되지 않은 환경에서 프로그램을 사용하게 하고 오류가 발견되면 개발자에게 통보하는 방식(사용자 환경에서 테스트하는 기법)
하향식 통합 방법(Top-down)
메인 제어 프로그램부터 아래 방향으로 제어의 경로를 따라 하향식으로 통합하면서 테스트를 진행하는 방법.
상향식 통합 방법(Bottom-up)
애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어의 경로를 따라 이동하면서 구축과 테스트를 수행하는 테스트 방법.
회귀 테스트(Regression Testing)
테스트를 완료한 컴포넌트가 어떠한 변화로 인해 의도하지 않은 오류가 생기지 않았음을 보증하기 위해 기존의 테스트 케이스로 다시 테스트하는 것.
테스트 오라클
테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법
애플리케이션 성능 측정요소
- 처리량(Throughput) - 일정 시간 내에 애플리케이션이 처리하는 일의 양
- 응답시간(Response time) - 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간
- 경과시간(Turnaround time) - 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 대기 시간(Waiting time) - 준비큐에서 기다리는 시간
- 자원 사용률(Utilization) - 애플리케이션의 의뢰한 작업을 처리하는 동안의 CPU 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률
코드 리팩토링(Code Refactoring)
겉으로 보이는 소프트웨어의 기능을 변경하지 않으면서 소프트웨어를 보다 이해하기 쉽고 수정하기 쉽도록 만드는 기법. → 나쁜 코드(Bad Code)를 클린 코드(Clean Code)로 변경하는 프로세스
유형
- 메소드 정리 : 메소드를 새로 정의하거나 사용하지 않는 메소드를 삭제하는 리팩토링 기법
- inline method - 메소드의 몸체가 메서드의 이름만큼 명확할 때, 호출하는 곳에 메서드 몸체를 넣고 메서드를 삭제.
- extract method - 그룹으로 함께 묶을 수 있는 코드 조각이 있으면 코드의 목적이 잘 드러나도록 메서드의 이름을 지어 별도의 메서드로 뽑아낸다.
- extract class - 두 개의 클래스가 해야 할 일을 하나의 클래스가 하고 있는 경우, 새로운 클래스를 만들고 관련있는 필드와 메서드를 이전 클래스에서 새로운 클래스로 옮긴다.
- parameterize method - 몇몇 메서드가 메서드 몸체에 다른 값을 포함하고 있는 것을 제외하고는 비슷한 일을 하고 있다면, 다른 값을 파라미터로 넘겨 받는 하나으 ㅣ메스드를 만든다.
- 객체간 기능 이용
- 데이터 구성
- 조건문 단순화
- 일반화
'정보처리기사' 카테고리의 다른 글
| 8. 소프트웨어 개발보안 구축 (0) | 2022.10.14 |
|---|---|
| 7. SQL 응용 (0) | 2022.10.14 |
| 5. 화면 설계 (1) | 2022.10.13 |
| 3. 통합 구현 (0) | 2022.10.12 |
| 2. 데이터 입출력 구현 (0) | 2022.10.11 |