-
2-3 어플리케이션 테스트 관리자격증/정처기 2023. 5. 17. 04:05
1.어플리케이션 테스트
- 검증(Verification): 개발자 관점 = 명세서 = 과정
- 확인(Validation): 사용자 관점 = 요구사항 = 결과
- 테스트와 위험은 반비례
- 소규모에서 대규모로
- 개발자와 관계없는 별도의 팀에서 수행
파레토 법칙: 오류의 80%는 20%의 모듈에서 발견 -> 결함 집중
살충제 패러독스: 테스트케이스 보완 필요
오류 부재의 궤변: 결함이 없어도 요구사항을 만족시키지 못하면 품질이 낮음
테스트 순서
- 단위(모듈) -> 통합(모듈 결합) -> 시스템(SW와 환경) -> 인수(요구사항 검증)
- 단위 테스트는 주로 구조(논리) 기반
- 인수 테스트 = 알파 + 베타
- 알파: 사용자가 개발자 앞에서 테스트 = 통제된 환경
- 베타: 사용자가 여러 사용자 앞에서 = 제어 X
*베타 = 필드 테스팅이라고도 함
통합 테스트 (Intergration test)
-비점진적(빅뱅) + 점진(하향,상향,혼합)
1)하향식 테스트
- DFS, BFS
- 스텁(stub): 하위 모듈을 대체하는 임시 모듈
- 초기부터 시스템 구조를 보여줄 수 있음
- 상위 모듈에선 테스트 케이스 사용이 어려움
2)상향식 테스트
- 클러스터 결합 -> 드라이버 작성 -> 클러스터 테스트 -> 더 상위로 결합
- 클러스터: 하나의 모듈에 종속된 모듈들의 그룹
- 드라이버: 상위 모듈을 대체하는 더미 모듈
*스텁 = 하위 모듈 '대체' // 드라이버 = 하위 모듈 '호출'
+혼합식 = 상향+ 하향 = 샌드위치
+회귀: 이전에 수행했던 테스팅 반복 = 변경사항으로 인한 오류 검사
테스트 방식
- 정적: 프로그램 실행 x = 명세서, 소스코드 중심
ex) 코드검사, 워크스루->인스펙션
- 동적: 프로그램 실행 = 모든 개발 단계에서 테스트 가능
ex) 블박 화박
화이트박스 테스트
- 원시 코드(모듈)를 오픈, 논리적인 모든 경로를 테스트
- 모듈 내부의 작동을 직접 관찰
- 모듈의 모든 문장을 한번 이상 실행
1) 기초 경로 검사: 논리적 복잡성 측정
* 기초 경로: 수행 가능한 모든 경로
2) 제어 구조 검사: 조건 / 루프 / 데이터 흐름(변수) 검사
블랙박스 테스트
- 소프트웨어의 기능을 테스트
- 구조를 고려 x = 명세나 요구 중심
- 인터페이스에서 실시
1)동치 분할 검사: 입력 자료에 중점 (Equivalence Partitioning)
2)경계값 분석: 오류 확률이 높은 입력 조건의 경계값 위주로 테스트 (Boundary Value)
+원인 효과 그래프(좋은 테스트케이스 선별), 오류 예측(경험적, 감각적), 비교 검사 (같은 인풋, 다른 버전)
화박: 논리 / 테스트 초기 / 명세+경험
블박: 기능 / 테스트 후기 / 구조
테스트 오라클
- 테스트 결과가 올바른지 판단하기위해 사전의 정의된 True 값을 대입
- 제한, 수학, 자동화
- 참: 모든 입력값에 대해 기대하는 결과 제공 = 모든 오류 검출 가능
- 샘플링: 일부
- 추정(Heuristic): 일부 + 추정
- 일관성(Consistent): 변경 전 후
테스트 하네스(Harness)
1)테스트 케이스: 요구사항 준수 확인을 위한 테스트 항목 명세서 (INPUT+조건+예상 결과)
2)테스트 시나리오: 적용 순서에 따라 테스트 케이스를 묶은 집합 (INPUT+조건+테스트 순서))
3)테스트 슈트: 한 모듈의 테스트에 필요한 테스트 케이스 집합
4)테스트 스크립트: 자동화된 테스트 실행 절차의 명세서
5)목 오브젝트(Mock): 조건부로 입력해둔 사용자 행위에 맞는 대처를 수행하는 객체
+드라이버 스텁
복잡도
O(최악) θ(평균) Ω(최상)
O(1) = 고정 = 삽입, 삭제, 해싱
O(log2n) = 이진 트리/검색
O(n) = 1:1 = 순차 탐색(for문)
O(nlog2n) = 힙, 머지, 퀵(평균)
O(n^2) = 삽입 선택 버블 + 쉘 퀵(최악)
O(2^n) = 피보나치
순환 복잡도 V = 화살표 - 노드 + 2 = 화살표로 나눠진 영역 개수
어플리케이션 성능 개선
- 성능 측정 지표: 처리량, 응답시간, 경과시간, 자원 사용률
- 성능 테스트 도구: Jmeter, LoadUI, Opensta -> JOL
배드 코드: 스파게티(꼬임), 에일리언(오래됨)
클린 코드: 가속성, 단순성, 의존성 배제, 중복성 최소화, 추상화
품질 분석 도구
정적: pmd, cppcheck, SonarQube, CheckStyle, CCM, Cobertura
동적: Avalanche, Valgrind
pmd - 미사용 변수 체크
cppcheck = c++
SonarQube = 소스 분석 플랫폼
CheckStyle = Java 표준 검사
Cobertura = Java 복잡도 + 테스트 커버리지
CCM = 다양한 언어
Valgrind = 메모리 & 쓰레드 결함 분석
Avalanche = Valgrind + STP
결함 상태 추적
1)결함 분포 (위치에 따른 결함 수)
2)결함 추세 (시간에 따른 결함 수)
3)결함 에이징 (결함의 지속 시간)
결함 추적 순서
등록-> 검토 -> 할당 -> 수정 -> (보류) -> 종료 -> 해제
'자격증 > 정처기' 카테고리의 다른 글
3-1 논리 데이터베이스 설계 (0) 2023.05.18 2-4 인터페이스 구현 (0) 2023.05.18 2-2 소프트웨어 패키징 (0) 2023.05.16 2-1 데이터 입출력 구현 (0) 2023.05.16 1-4 인터페이스 설계 (0) 2023.05.14