01 애플리케이션 테스트 케이스 설계
1. 소프트웨어 테스트
- 원리
- 테스팅은 결함이 존재함을 밝히는 것. 결함이 없음은 증명 못 함
- 완벽한 테스팅은 불가능함
- 개발 초기에 테스팅 시작
- 결함집중. 적은 수의 모듈에서 대다수의 결함이 발견됨. 파레토 법칙 (80대 20)
- 살충제 패러독스: 동일 테스트 케이스에 의한 반복 테스트는 새로운 버그를 찾지 못함
- 테스팅은 정황에 의존적. 정황에 따라 테스트를 다르게 수행
- 오류-부재의 궤변: 요구사항을 충족하지 못한다면 결함이 없어도 품질이 높은 게 아님
- 유형
1) 정적 테스트
: 테스트 대상을 실행하지 않고 구조 분석. (리뷰, 정적 분석)
2) 동적 테스트
: 소프트웨어를 실행해 결함을 검출 (화이트박스, 블랙박스, 경험기반)
(1) 화이트박스 테스트: 응용 프로그램의 내부 구조와 동작을 검사
(2) 블랙박스 테스트: 사용자의 요구사항 명세를 보며 검사
- 동등분할 테스트
: 입력 데이터 영역을 유사한 도메인별로 유효/무효값을 그룹핑, 대푯값 테스트케이스를 도출해 테스트
- 경곗값 분석 테스트
- 결정 테이블 테스트
- 상태 전이 테스트
- 유스케이스 테스트
- 분류 트리 테스트
- 페어와이즈 테스트
- 원인-결과 그래프 테스트
- 비교 테스트
2. 애플리케이션 테스트 시나리오 작성
- 테스트 레벨
: 함께 편성되고 관리되는 테스트 활동의 그룹. 각 레벨은 서로 독립적.
- 종류
1) 단위 테스트
2) 통합 테스트
3) 시스템 테스트
4) 인수 테스트
02 애플리케이션 통합 테스트
1. 애플리케이션 테스트
1) 단위 테스트
- 개별적인 모듈(또는 컴포넌트)을 테스트
- 구현 단계에서 각 모듈 구현 후 수행
2) 통합 테스틑
- 각 모듈 간 인터페이스 관련 결함을 찾아내기 위한 테스트
(1) 하향식 통합(Top Down)
: 깊이우선 / 너비우선. 하위 모듈을 대신해 더미 모듈인 스텁 개발
(2) 상향식 통합(Bottom Up)
: 상위 모듈 대신 드라이버 작성
(3) 샌드위치 통합: 상향+하향
3) 테스트 자동화 도구
: 반복적인 테스트 작업을 스크립트 형태로 구현해 시간을 단축하고 쉽게 테스트할 수 있게 함
(1) 정적 분석 도구
: 만들어진 애플리케이션을 실행하지 않고 분석. 소스 코드에 대한 결함 발견용
(2) 테스트 실행 도구
: 작성된 스크립트를 실행. 데이터 주도 접근/키워드 주도 접근 방식
(3) 성능 테스트 도구
(4) 테스트 통제 도구
4) 테스트 하네스
: 테스트를 지원하기 위한 코드와 데이터. 코드 개발자가 작성.
2. 애플리케이션 개선 조치사항 작성
1) 테스트 커버리지
: 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준 테스트의 정확성과 신뢰성을 향상시킴
- 유형: 기능 기반 / 라인 / 코드 커버리지
03 애플리케이션 성능 개선
1. 애플리케이션 성능 측정
- 측정 지표
1) 처리량: 주어진 시간에 처리할 수 있는 트랜잭션 수
2) 응답 시간: 사용자 입력이 끝난 시점 ~ 응답 출력 개시될 때까지의 시간
3) 경과 시간: 사용자 요구 입력 시점 ~ 출력 완료 시간
4) 자원 사용률: 트랜잭션을 처리하는 동안 사용하는 CPU, 메모리, 네트워크 사용량
2. 소스 코드 최적화
1) 배드 코드
(1) 외계인 코드: 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 매우 어려운 코드
(2) 스파게티 코드: 소스 코드가 복잡하게 얽힌 것. 작동은 하지만 사람이 읽으며 파악하기 어려운 코드
(3) 알 수 없는 변수명
(4) 로직 중복
2) 클린 코드
- 작성 원칙: 가독성, 단순성, 의존성 최소, 중복성 제거, 추상화
3. 소스 코드 품질 분석
: 소스 코드에 대한 코딩 스타일, 설정된 코딩 표준, 코드 복잡도, 코드 내 메모리 누수 현황, 스레드 결함 등을 발견하기 위한 활동
- 도구 유형
1) 정적 분석 도구
: 작성된 소스 코드를 실행하지 않고 코드 자체만으로 분석
- pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura
2) 동적 분석 도구
: 애플리케이션을 실행해 분석
- Avalanche, Valgrind
4. 애플리케이션 성능 개선 방안
1) 소스 코드 최적화 기법 적용
2) 아키텍처 조정
3) 프로그램 호출 순서 조정
4) 소스 코드 품질 분석 도구 활용
5) 리팩토링
- 기능을 변경하지 않고 복잡한 소스코드를 보완해 가용성, 가독성을 높이는 기법
- 모듈의 외부적 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화
- 목적: 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질 향상
6) 애플리케이션 성능 현황 관리
'기본 지식' 카테고리의 다른 글
소프트웨어 개발 보안 구축 (0) | 2021.07.05 |
---|---|
서버 프로그램 구현 (0) | 2021.07.03 |
절차형 SQL (0) | 2021.07.03 |
데이터 분석 함수 (0) | 2021.07.03 |
데이터베이스 기본 (0) | 2021.07.03 |
댓글