실기_6과목 애플리케이션 테스트 수행 - JuNijen/Industrial-Engineer-Information-Processing GitHub Wiki
- 완벽한 테스트 불가능
- 파레토 법칙 : 20% 80%
- 살충제 패러독스
- 테스팅은 정황(Context)의존
- 오류-부재의 궤변
- 테스트와 위험은 반비례
- 테스트의 점진적 확대
- 테스트의 별도 팀 수행
- 정적 테스트
- 동적 테스트(블랙/화이트 박스 테스트)
- 명세 기반
- 구조 기반
- 경험 기반
- 검증(개발자)
- 확인(사용자)
- 회복
- 안전
- 강도 : 과부화 시에도 소프트웨어가 정상적으로 실행되는지 확인.
- 성능
- 구조
- 회귀 : 새로운 결함이 없음을 확인.
- 병행 : 동일한 데이터를 입력하여 결과를 비교.
모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법. 모든 문장을 한 번 이상 실행함으로써 수행된다.
- 기초 경로 검사 : 대표적인 기법
- 제어 구조 검사 : 조건, 루프, 데이터 흐름
- 문장 검증 기준
- 분기 검증 기준
- 조건 검증 기준
- 분기/조건 검증 기준
소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트.
- 동치 분할 검사 (동등 분할 기법)
- 경계값 분석
- 원인-효과 그래프 검사
- 오류 예측 검사(감각)
- 비교 검사
- 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트로 분류됨.
모듈이나 컴포넌트에 초점을 맞춰 테스트.
단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트.
개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트.
사용자의 요구사항을 충족하는지에 중점을 두고 테스트. 사용자가 직접 테스트한다.
- 사용자 인수 테스트
- 운영상의 인수 테스트
- 계약 인수 테스트
- 규정 인수 테스트
- 알파 테스트
- 베타 테스트
- 비점진적 통합 방식 (빅뱅 통합 테스트 방식) : 모든 모듈이 미리 결합되어있는 프로그램 전체를 테스트.
- 점진적 통합 방식 (하향식/상향식/혼합식 통합 테스트) : 모듈 단위로 단계적으로 통함하면서 테스트.
상위 모듈에서 하위 모듈 방향으로 통합.
- 깊이 우선 통합법, 넓이 우선 통합법
- 스텁
하위 모듈에서 상위 모듈 방향으로 통합
- 클러스터
- 드라이버
하위 수준에서는 상향식, 상위 수준에서는 하향식 통합을 사용하여 최적의 테스트를 지원하는 방식.
통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트.
소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서.
- 식별자, 테스트 항목, 입력 명세, 출력 명세, 환경 설정, 특수 절차 요구, 의존성 기술 로 구성되어 있다.
테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스를 묶은 집합.
테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법 및 활동.
- 제한된 검증, 수학적 기법, 자동화 기능.
- 참 오라클
- 샘플링 오라클
- 추정 오라클
- 일관성 검사 오라클
프로그램을 실행하지 않고 분석하는 도구
스크립트 언어를 사용하여 테스트를 실행하는 도구
- 데이터 주도 접근 방식
- 키워드 주도 접근 방식
가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인하는 도구.
테스트 계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구.
테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 하는 도구이다.
- 테스트 하네스 : 테스트를 지원하기 위해 생성된 코드와 데이터를 의미함.
- 테스트 드라이버
- 테스트 스텁
- 테스트 슈트
- 테스트 케이스
- 테스트 스크립트
- 목 오브젝트
- 결함 관리 계획 > 결함 기록 > 결함 검토 > 결함 수정 > 결함 재확인 > 결함 상태 추적 및 모니터링 활동 > 최종 결함 분석 및 보고서 작성
- 결함 분포
- 결함 추세
- 결함 에이징(지속되는 시간)
- 결함 등록(Opene) > 결함 검토(Reviewed) > 결함 할당(Assigned) > 결함 수정(Resolved) > 결함 조치 보류(Deferred) > 결함 종료(Closed) > 결함 해제(Clarified)
- 시스템 결함
- 기능 결함
- GUI 결함
- 문서 결함
애플리케이션에 발생한 결함이 전체 시스템에 미치는 치명도를 나타내는 척도 (High, Medium, Low/ Critical, Major, Normal, Minor, Simple)
- Mantis, Trac, Redmine, Bugzilla
- 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화
- 클래스 분할 배치
- 느슨한 결합
- 정적 분석 도구
- 동적 분석 도구 : Avalanche, Valgrind 등
- pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura, Avalanche, Valgrind