1. 애플리케이션 테스트 케이스 설계
소프트웨어 테스트
- 오류 발견 관점, 오류 예방 관점, 품질 향상 관점
- 테스팅은 결함이 존재함을 밝히는 것, 완벽한 테스팅은 불가능, 개발 초기에 테스팅 시작,
결함 집중, 살충제 페러독스, 테스팅은 정황에 의존적, 오류-부재의 궤변
화이트박스 테스트
- 구문 커버리지: 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지
- 결정 커버리지: 결정 포인트 내의 전체조건식이 적어도 한 번은 T, F의 결과를 수행하는 커버리지
- 조건 커버리지: 결정 포인트 내의 개별 조건식이 적어도 한 번은 T, F의 결과를 수행하는 커버리지
- 조건/결정 커버리지: 결정 포인트 내의 전체, 개별 조건식이 적어도 한 번은 T, F의 결과를 수행하는 커버리지
- 변경 조건/결정 커버리지: 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 독립적으로 영향을 주도록하는 조건/결정 커버리지
- 다중 조건 커버리지: 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 보장하는 커버리지
- 기본 경로 커버리지: 수행 가능한 모든 경로를 테스트하는 커버리지
- 제어 흐름 테스트: 프로그램 제어 구조를 그래프 형태로 나타내 내부 로직을 테스트
- 데이터 흐름 테스트: 제어 흐름 그래프에 데이터 사용현황을 추가한 테스트
블랙박스 테스트
- 동등 분할 테스트: 입력 데이터의 영역을 유사한 도메인별로 그룹핑해 대푯값 테스트 케이스를 도출해 테스트
- 경곗값 분석 테스트: 등가 분할 후 경곗값을 포함한 테스트 케이스를 설계해 테스트
- 결정 테이블 테스트: 요구사항의 논리, 발생 조건을 테이블 형태로 나열해 조건 행위를 조합하여 테스트
- 상태 전이 테스트: 테스트 대상의 상태를 구분하고, 이벤트에 의해 상태 전이되는 경우의 수를 수행하는 테스트
- 유스케이스 테스트: 유스케이스를 기반으로 테스트 케이스를 명시화해 테스트
- 분류 트리 테스트: 일부 또는 전체를 트리 구조로 분석, 표현해 테스트 케이스를 설계해 테스트
- 페어와이즈 테스트: 테스트 데이터값들 간 최소 한번씩 조합해 테스트
- 원인-결과 그래프 테스트: 그래프를 활용해 입력 데이터 간 관계와 출력에 미치는 영향을 분석해 효용성이 높은 테스트 케이스로 테스트
- 비교 테스트: 여러 버전의 프로그램에 동일한 입력값을 넣어 같은 결과값을 내는지 테스트
테스트 시각에 따른 분류
- 검증, 확인
테스트 목적에 따른 분류
- 회복 테스트, 안전 테스트, 성능 테스트, 구조 테스트, 회귀 테스트, 병행 테스트
- 성능테스트: 부하 테스트, 스트레스 테스트, 스파이크 테스트, 내구성 테스트
테스트 종류에 따른 분류
- 명세 기반 테스트(블랙박스 테스트), 구조 기반 테스트(화이트박스 테스트), 경험 기반 테스트(블랙 박스 테스트)
정적 테스트
- 리뷰: 관리 리뷰, 기술 리뷰, 인스펙션, 워크 스루, 감사
경험 기반 테스트
- 탐색적 테스트, 오류 추정, 체크리스트, 특성테스트
테스트 오라클
- 참 오라클, 샘플링 오라클, 휴리스틱 오라클, 일관성 검사 오라클
테스트 레벨
- 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
2. 애플리케이션 통합 테스트
목 객체
- 더미 객체, 테스트 스텁, 테스트 드라이버, 테스트 스파이, 가짜 객체
통합 테스트
- 하향식 통합(스텁), 상향식 통합(드라이버), 샌드위치 통합
테스트 자동화 도구
- 정적 분석 도구, 테스트 실행 도구, 성능 테스트 도구, 테스트 통제 도구
테스트 하네스
- 테스트를 지원하기 위한 코드와 데이터
- 테스트 드라이버, 테르스 스텁, 테스트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트
결함 분석 방법
- 구체화, 고립화, 일반화
테스트 커버리지
- 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
- 기능 기반 커버리지, 라인 커버리지, 코드 커ㅓ리지
3. 애플리케이션 성능 개선
애플리케이션 성능 측정 지표
- 처리량, 응답 시간, 경과 시간, 자원 사용률
배드 코드
- 외계인 코드, 스파게티 코드, 알 수 없는 변수명, 로직 중복
- 오염, 문서부족, 의미없는 이름, 높은 결합도, 아텍쳐 침식
클린 코드
- 가독성, 단순성, 의존성 최소, 중복성 제거, 추상화
- 의미있는 이름, 간결하고 명확한 주석, 보기 좋은 배치, 작은 함수, 읽기 쉬운 제어 흐름,
오류 처리, 클래스 분할 배치, 느슨한 결합 기법, 코딩 형식 기법
소스 코드 품질 분석 도구
- 정적 분석 도구, 동적 분석 도구
리팩토링
- 유지보수 생산성 향상을 위해 기능을 변경하지 않고, 복잡한 소스코드를 수정, 보완하여 가용성 및 가동성을 높이는 기법
- 소프트웨어 모듈의 외부적 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화
- 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질 향상
'Others > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 제품 소프트웨어 패키징 (0) | 2021.07.08 |
---|---|
[정보처리기사] 응용 SW 기초 기술 활용 (0) | 2021.07.08 |
[정보처리기사] 소프트웨어 개발 보안 설계 (0) | 2021.07.07 |
[정보처리기사] 서버 프로그램 구현 (0) | 2021.07.06 |
[정보처리기사] SQL 응용 (0) | 2021.07.06 |