- 애플리케이션 테스트의 기본 원리
- 파레토 법칙: 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙
- 살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더이상 결함 발견X
- 오류-부재의 궤변 : 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 품질 높다고 말 못함 ㅜ
프로그램 실행 여부에 따른 테스트 | 정적 테스트 | 프로그램 실행 ㄴㄴ 명세서나 소스코드 대상으로 분석 소스 코드에 대한 코딩 표준, 코딩스타일, 코드 복잡도, 남은 결함 등을 발견하기 위해 함 ex) 워크스루, 인스팩션, 코드검사 |
동적 테스트 | 프로그램 실행해 오류 찾는 테스트 ex) 블랙박스, 화이트박스 |
|
테스트 기반에 따른 테스트 | 명세 기반 테스트 | 요구사항에 대한 명세를 빠짐없이 구현했는지 테스트 ex) 동등 분할, 경계 값 분석 |
구조 기반 테스트 | sw내부 논리 흐름에 따라 테스트 ex) 구문 기반, 결정 기반, 조건 기반 |
|
경험 기반 테스트 | 유사 sw나 기술 등에 대한 테스터의 경험을 기반으로 수행 ex) 에러추정, 체크리스트, 탐색적 테스팅 |
|
시각에 따른 테스트 | 검증(verification) 테스트 | 개발자의 기각에서 제품의 생산과정 테스트 명세서대로 완성했는지 봄 |
확인(validation) 테스트 | 사용자의 시작에서 생산된 제품의 결과 테스트 제품이 정상적으로 동작하는지 테스트 |
|
목적에 따른 테스트 | 회복(recovery) 테스트 | 실패를 유도한 후 올바르게 복구되는지 확인 |
안전(security) 테스트 | 시스템 보호 도구가 잘 작동하는지 | |
강도(stress) 테스트 | 과부하시켜 정상적으로 실행되는지 | |
성능(perfomance) 테스트 | 실시간 성능이나 효율성 진단 응답 시간, 처리량 등을 테스트 |
|
구조(structure) 테스트 | 내부의 논리적인 경로, 코드 복잡도 등 평가 | |
회귀(regression) 테스트 | 변경 또는 수정된 코드에 새로운 결함없는지 | |
병행(parallel) 테스트 | 변경된거랑 기존이랑 동일한 데이터 입력해 결과 비교 |
- 화이트박스 테스트
원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스 설계하는 방법
종류
- 기초 경로 검사 : 절차적 설계의 논리적 복잡성 측정
- 제어 구조 검사 : 1. 조건검사 2.루프검사 3.데이터흐름검사
검증기준
- 문장 검증 기준 : 소스 코드의 모든 구문이 한번 이상 수행되도록
- 분기 검증 기준 : 모든 조건문에 대해 조건식의 결과가 T인 경우와 F인 경우가 한번 이상 수행 (==결정 검증 기준)
- 조건 검증 기준 : 조건문에 포함된 개별 조건식의 결과가 T인경우와 F인 경우가 한 번 이상 수행되도록
- 분기 /조건기준 : 분기랑 조건 둘 다 만족하는 것, 조건문이 T인 경우 F인 경우에 따라 조건 검증 기준의 입력 데이터를 구분함
- 블랙박스 테스트
수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트 == 기능 테스트
종류
- 동치 분할 검사 : 입력조건이 맞는 거랑 안맞는거 개수 동일하게 해서 각 입력 자료에 대한 맞는 결과 출력되는지
- 경계값 분석 : 입력 조건의 경계값 입력해서 검사
- 원인-효과 그래프 검사 : 입력 데이터 간의 관계와 출력에 영향이 높은 테스트 케이스 선정해 검사하는 기법
- 오류 예측 검사 : 과거의 경험이나 확인자의 감각으로 테스트
- 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료 제공해 동일한 결과 출력되는지
- 개발 단계에 따른 애플리케이션 테스트
소프트웨어 개발 단계에 따라 단위테스트->통합테스트->시스템테스트->인수테스트 분류 == 테스트레벨
애플리케이션 테스트와 개발 단계를 연결하여 표현한 것을 V-모델 이라고도 함
요구사항 -> 분석 -> 설계 -> 구현 | ->단위테스트 -> 통합테스트 -> 시스템 테스트 -> 인수 테스트
- 단위테스트
최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트
구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트 시행함
- 통합 테스트
단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트 (모듈간의 상호작용검사)
- 비점진적 통합방식 : 단계적으로 통합하는 절차X, 모든 모듈이 미리 결합되어 있는 전체 테스트 ex) 빅뱅 통합 테스트
- 점진적 통합 방식 : 모듈 단뒤로 단계적으로 통합하며 테스트 ex) 하향식, 상향식, 혼합식 통합테스트
- 시스템 테스트
개발된 소프트웨어가 완벽하게 수행되는가를 점검 (기능 비기능 요구사항 구분해 각각 만족하는지 테스트)
- 인수 테스트
개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트 (사용자가 직접테스트함)
- 알파 테스트 : 개발자의 장소에서 사용자가 테스트
- 베타 테스트 : 사용자가 실업무에서 테스트
- 하향식 통합 테스트
상위->하위 모듈 방향으로 통합하면서 테스트
stub : 제어 모듈이 호출하는 타 모듈의 기능을 단순 수행하는 도구, 임시로 쓰기 위해 있는 모듈
- 상향식 통합 테스트
하위 -> 상위 모듈 방향으로 통합하면서 테스트
test driver : 테스트 대상의 하위 모듈을 호출하고 파라미터 전달하고 모듈 테스트 수행후의 결과를 도출하는 도구
- 테스트 오라클
테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입해 비교하는 기법
종류
- 참 오라클 : 모든 테스트 케이스 입력 값에 대해 기대하는 결과 제공
- 샘플링 오라클 : 특정 몇몇 테스트 케이스 입력 값만 기대, 전수테스트 불가능할 때 사용
- 추정 오라클 : 특정 테스트 케이스 입력 값에 대한 값만 넣고 나머지는 추정
- 일관성 오라클 : 애플리케이션에 변경이 있을 때 테스트 케이스 수행 전과 후의 결과 값이 동일한지 확인
- 테스트 자동화 도구
- 정적 분석 도구 : 프램그램 실행하지 않고 분석하는 도구
- 테스트 실행 도구 : 스크립트 언어 사용
- 성능 테스트 도구 : 애플리케이션 처리량, 응답 시간, 경과 시간, 자원 사용률 등을 인위적으로 적용해 성능 목표 달성하는지
- 테스트 통제 도구 : 테스트 계획 및 관리, 테스트 수행, 결함관리 등 수행
- 테스트 하네스 도구 : 테스트가 실행될 환경을 시뮬레이션 해 컴포넌트 및 모듈이 정상적으로 테스트되도록 하는 도구(stub, test driver)
- 애플리케이션 성능 측정 지표
처리량 : 일정 시간 내에 애플리케이션이 처리하는 일의 양
응답시간 : 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지의 걸린 시간
경과시간 : 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 떄까지 걸린 시간
자원 사용률 : 의뢰한 작업을 처리하는 동안의 자원 사용률
- 소스코드 최적화
클린 코드 : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드 == 잘 작성된 코드
나쁜 코드 : 로직이 복잡하고 이해하기 어려운 코드
- 클린코드 작성 원칙
가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화
- 소스 코드 품질 분석 도구
소스 코드의 코딩 스타일, 코드에 설정된 코딩 표준, 코드의 복잡도, 코드에 존재하는 메모리 누수현상, 스레드 결함 등을 발견하기 위해 사용하는 분석 도구
- 정적 분석 도구 : 코드 실행X / 코딩 표준, 코딩 스타일, 결함등을 확인 ex) pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura
- 동적 분석 도구 : 코드 실행O / 코드에 존재하는 메모리 누수, 스레드 결함 분석 ex) Avalanche, Valgrind
'정처기' 카테고리의 다른 글
2023 정보처리기사 실기 1회 후기.. (공부시간, 공부방법, 책추천, 1회 시험문제 ⸜( ⌓̈ )⸝) (0) | 2023.04.25 |
---|---|
정보처리기사 실기 1. 요구사항 확인 (0) | 2023.04.23 |
정보처리기기사 실기 정리 9. 소프트웨어 개발 보안 구축 (1) | 2023.04.22 |
정보처리기사 실기 정리 SQL응용 (1) | 2023.04.22 |
정보처리기사 실기 정리 3. 통합구현 (feat. 수제비) (0) | 2023.04.19 |
댓글