Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바의 정석 기초편 ch12
- 2024 정보처리기사 수제비 실기
- jpa 활용2 - api 개발 고급
- jpa - 객체지향 쿼리 언어
- 스프링 고급 - 스프링 aop
- 스프링 mvc2 - 검증
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch4
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch7
- 게시글 목록 api
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch6
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc1 - 서블릿
- 스프링 mvc2 - 타임리프
- @Aspect
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch14
- 스프링 입문(무료)
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch5
- 타임리프 - 기본기능
- 스프링 mvc1 - 스프링 mvc
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch1
Archives
- Today
- Total
나구리의 개발공부기록
4장 - 애플리케이션 테스트 관리 | 섹션17. 애플리케이션 테스트, 섹션18. 애플리케이션 테스트의 분류, 섹션19. 테스트 기법에 따른 애플리케이션 테스트 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 2강 - 소프트웨어 개발
4장 - 애플리케이션 테스트 관리 | 섹션17. 애플리케이션 테스트, 섹션18. 애플리케이션 테스트의 분류, 섹션19. 테스트 기법에 따른 애플리케이션 테스트
소소한나구리 2024. 4. 28. 16:272024년도 시나공 필기 책 내용 정리
섹션17. 애플리케이션 테스트
1. 애플리케이션 테스트의 개요
- 애플리케이션에 잠재되어있는 결함을 찾아내는 일련의 행위또는 절차
- 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인(Validation - 사용자 중심)하고 소프트웨어가 기능을 정확히 수행하는지 검증(Verification - 개발자 중심)함
- 애플리케이션 테스트를 실행하기 전에 개발한 소프트웨어의 유형을 분류하고 특성을 정리해서 중점적으로 테스트할 사항을 정리해야 함
소프트웨어의 분류
- 소프트웨어는 하드웨어를 동작시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램과 자료 구조 등을 총칭하는 것으로, 상용 소프트웨어와 서비스 제공 소프트웨어로 구분됨
- 상용 소프트웨어 : 보통의 사용자들이 공통적으로 필요로 하는 기능을 제공하는 소프트웨어로 산업의 특성에 따라 산업 범용 소프트웨어와 산업 특화 소프트웨어로 구분됨
산업 범용 소프트웨어 |
시스템 소프트웨어 : 하드웨어 전체를 제어하고 운영하는 소프트웨어로, 운영체제, 데이터 관리, 스토리지 소프트웨어, 소프트웨어 공학 도구, 가상화 소프트웨어, 시스템 보안 소프트웨어로 구분됨 미들 웨어 : 운영체제와 해당 운영체제에의해 실행되는 응용 프로그램 사이에서 운영체제가 제공하는 서비스 이외에 추가적인 서비스를 제공하는 소프트웨어로, 분산 시스템 소프트웨어, IT 자원관리, 서비스 플랫폼, 네트워크 보안 소프트웨어로 구분됨 응용 소프트웨어 : 특정 업무를 처리하기 위한 소프트웨어로 영상 처리, CG/VR, 콘텐츠 배포, 자연어 처리, 음성 처리, 기업용 소프트웨어로 구분됨 |
산업 특화 소프트웨어 |
특정 분야에서 요구하는 기능만을 구현한 소프트웨어로 자동차, 항공, 조선, 건설, 패션 의류, 농업, 의료, 국방, 공공분야 등을 지원하는 소프트웨어가 있음 |
- 서비스 제공 소프트웨어 : 소프트웨어를 개발하여 판매하려는 것이 아니라 특정 사용자가 필요로 하는 기능만을 구현해서 제공하는 소프트웨어
신규 개발 소프트웨어 |
새로운 서비스를 제공하기 위해 개발된 소프트웨어 |
기능 개선 소프트웨어 |
사용자 편의성, 응답 속도, 화면 UI, 업무 프로세서 등 기존 서비스 기능을 개선하기 위해 개발된 소프트웨어 |
추가 개발 소프트웨어 |
업무나 산업 환경의 변화, 법이나 제도의 개정 등으로 인해 기존 시스템에 새로운 기능을 추가하기 위해 개발된 소프트웨어 |
시스템 통합 소프트웨어 |
시스템별로 서비스되던 것을 원스톱 서비스로 제공하기위해 업무 기능이나 데이터 등을 통합하여 개발한 소프트웨어 |
2. 애플리케이션 테스트의 필요성
- 프로그램 실행 전에 오류를 발견하여 예방할 수 있음
- 프로그램이 사용자의 요구사항이나 기대 수준 등을 만족시키는지 반복적으로 테스트하므로 제품의 신뢰도를 향상시킴
- 애플리케이션의 개발 초기부터 애플리케이션 테스트를 계획하고 시작하면 단순한 오류 발견뿐만 아니라 새로운 오류의 유입도 예방할 수 있음
- 애플리케이션 테스트를 효과적으로 수행하면 최소한의 시간과 노력으로 많은 결함을 찾을 수 있음
3. 애플리케이션 테스트의 기본 원리
- 소프트웨어의 잠재적인 결함을 줄일 수 있지만 소프트웨어에 결함이 없다고 증명할 수는 없음 (완벽한 소프트웨어 테스팅은 불가능함)
- 애플리케이션의 결함은 대부분 개발자의 특성이나 애플리케이션의 기능적 특징 때문에 특정 모듈에 집중 되어 있음, 애플리케이션의 20%에 해당하는 코드에서 전체 80%의 결함이 발견된다고 하여 파레토 법칙을 적용하기도 함
- 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 살충제 패러독스 현상이 발생함, 살충제 패러독스를 방지하기 위해서 테스트 케이스를 지속적으로 보완 및 개선해야 함
- 소프트웨어 특징, 테스트 환경, 테스터 역량 등 정황(Context)에 따라 테스트 결과가 달라질 수 있으므로 정황에 따라 테스트를 다르게 수행해야 함
- 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할수 없음, 이것을 오류-부재의 궤변(Absencd - of Error Fallacy)이라고 함
*특정 모듈 집중 : 대부분 결함이 소수의 특정 모듈에 집중해서 발생하는 것을 결함 집중(Defect Clustering)이라고 함
*파레토 법칙(Pareto Principle) : 상위 20%의 사람들이 전체 부의 80%를 가지고 다는 논리의 법칙으로 해당 법칙이 애플리케이션 테스트에도 적용 됨 -> 테스트의 80%의 오류는 20%의 모듈에서 발견되므로 20%의 모듈을 집중적으로 테스트하여 효율적으로 오류를 찾자는 뜻
*살충제 패러독스(Pesticide Paradox) : 살충제를 지속적으로 뿌리면 벌레가 내성이 생겨서 죽지 않는 현상
- 테스트와 위험은 반비례함, 테스트를 많이 하면 할수록 미래에 발생할 위험을 줄일 수 있음
- 테스트는 작은 부분에서 시작하여 점점 확대하면서 진행해야 함
- 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 함
섹션18. 애플리케이션 테스트의 분류
1. 프로그램 실행 여부에 따른 테스트
정적 테스트 | 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트 소프트웨어 개발 초기에 결함을 발견할 수 있어 소프트웨어의 개발 비용을 낮추는데 도움이 됨 종류 : 워크스루, 인스펙션, 코드 검사 |
동적 테스트 | 프로그램을 실행하여 오류를 찾는 테스트, 소프트웨어 개발의 모든 단계에서 테스트를 수행 종류 : 블랙박스 테스트, 화이트박스 테스 |
2. 테스트 기반(Test Bases) 에 따른 테스트
명세 기반 테스트 | 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인하는 테스트 종류 : 동등 분할, 경계 값 분석 |
구조 기반 테스트 | 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 종류 : 구문 기반, 결정 기반, 조건 기반 등 |
경험 기반 테스트 | 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트 사용자의 요구사항에 대한 명세가 불충분하거나 테스트 시간에 제약이 있는 경우 수행하면 효과적임 종류 : 에러 추정, 체크 리스트, 탐색적 테스팅 |
3. 시각에 따른 테스트
검증 테스트 (Verification) |
개발자의 시각에서 제품의 생산과정을 테스트 하는 것으로 제품이 명세서대로 완성 되었는지를 테스트함 |
확인 테스트 (Validation) |
사용자의 시각에서 생산된 제품의 결과를 테스트 하는 것으로 사용자가 요구한대로 제품이 완성 되었는지, 제품이 정상적으로 동작하는지를 테스트 |
4.목적에 따른 테스트
회복(Recovery) 테스트 | 시스템에 여러가지 결함을 주어 실패하도록 한 후 올바르게 복구 되는지를 확인 |
안전(Sacurity)테스트 | 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지 확인 |
강도(Stress)테스트 | 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인 |
성능(Perfomance)테스트 | 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트로 소프트웨어의 응답시간, 처리량 등을 확인 |
구조(Structure)테스트 | 소프트웨어 내부의 논리적인 경로, 소스코드의 복잡도 등을 평가 |
회귀(Regression)테스트 | 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인 |
병행(Parallele)테스트 | 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교 |
섹션19. 테스트 기법에 따른 애플리케이션 테스트
1. 화이트 박스 테스트(White Box Test)
- 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
- 설계된 절차에 초점을 둔 구조적 테스트로 프로시저 설계의 제어 구조를 사용하여 테스트 케이스를 설계하며 테스트 과정의 초기에 적용
- 모듈 안의 작동을 직접 관찰하고 원시 코드의 모든 문장을 한 번 이상 실행함으로써 수행됨
- 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어
2. 화이트 박스 테스트의 종류
기초 경로 검사 (Base Path Testing) |
대표적인 화이트박스 테스트 기법 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용됨 |
제어 구조 검사 (Control Structure Testing) |
조건 검사(Condition Testing) : 프로그램 모듈 내에 있는 논리적 조건을 테스트 하는 테스트 케이스 설계 기법 루프 검사(Loop Testing) : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 설계 기법 데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법 |
3. 화이트 박스 테스트의 검증기준
문장 검증 기준 (Statement Coverage) |
소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스 설계 |
분기 검증 기준 (Branch Coverage) |
결정 검증 기준(Decision Coverage)이라고도 불리며, 소스 코드의 모든 조건문에 대해 조건이 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계 |
조건 검증 기준 (Condition Coverage) |
소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스 설계 |
분기/조건 기준 (Branch/Condition Coverage) |
분기 검증 기준과 조건 검증 기준을 모두 만복하는 설계, 조건문이 True인 경우와 False인 경우에 따라 조건 검증 기준의 입력 데이터를 구분하는 테스트 케이스 설계 |
4. 블랙박스 테스트(Black Box Test)
- 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동 되는 것을 입증하는 테스트
- 기능 테스트라고도 함
- 프로그램의 구조를 고려하지 않기 때문에 테스트 케이스는 프로그램 또는 모듈의 명세를 기초로 결정
- 소프트웨어 인터페이스에서 실시되는 테스트
- 부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데이터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해 사용되며, 테스트 과정의 후반부에 적용됨
- 동치 분할 검사, 경계값 분석 원인-효과 그래프 검사, 오류예측검사, 비교 검사 등이 있음
5. 블랙박스 테스트 종류
동치 분할 검사 (Equivalence Partitioning Testing, 동치 클래스 분해) |
입력 자료에 초점을 맞춰 테스트 케이스(동치 클래스)를 만들고 검사하는 방법으로 동등 분할 기법이라고도 함 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스를 정하고 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법 |
경계값 분석 (Boundary Value Analysis) |
입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스크케이스로 선정하여 검사하는 기법 |
원인-효과 그래프 검사 (Cause-Effect Graphing Testing) |
입력 데이터간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트케이스를 선정하여 검사하는 기법 |
오류 예측 검사 (Error Guessing) |
과거의 경험이나 확인자의 감각으로 테스트하는 기법 다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일련의 보충적 검사 기법이며 데이터 확인 검사라고도 함 |
비교 검사 (Comparison Testing) |
여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트 |