소스코드 수준으로 분석
SW개발 초기 보안약점 발견으로 수정 비용 절감
컴포넌트 간 발생할 수 있는 통합된 보안 약점 발견은 제한적
설계/구조 관점의 보안약점은 발견할 수 없음
*정적분석
소스코드 필요 없음
정확도와 커버리지 항상
도구 사용자의 수준에 영향을 받음
구조관점의 보안약점은 발견 할 수 없음
동적분석
보안 품질이 정의된 특성과 일치하지 않는 모든 행위
SW보안결함
설치 운영되기 전에 발견
발견된 보안 결함
설치/운영되는 환경에 전달된
잠재적 보안결함
잠재 보안 결함들이 소프트웨어의 운영 중에 나타나서 발생하는 하나 이상의 이상 징후들의 집합
SW의 특이한 고장
응용 SW 분류
상용 SW: 공통의기능
서비스 제공 SW : 특정 사용자의 요구사항 구현
산업 범용 SW 분류(반대는?)
-시스템 SW: 운영체제
-미들웨어: 웹 어플리케이션 서버
-응용 SW: 영상 관련 SW
반대는 -산업 특화 SW: 특정한 산업 문야에서 요구하는 기능 구현
동일한 테스트 케이스로 반복실행하면 결함 발견 X
살충제 패러독스
테스트 케이스= ____+________+_____
= 입력값 +실행조건+기대결과
결함의 대부분은 소수 특정 모듈에 집중되어 존재
결함집중
테스팅은 _______에 의존
정황
사용자 요구사항을 만족 못하는 오류를 발견하고 제거하였다 해도, 해당 어플의 품질이 높다고 할 수 없다
오류-부재의 궤변
테스트 프로세스
[ 계획 ] ⇒ [ 분석 및 디자인 ] ⇒ [ 테스트 케이스 및 시나리오 작성 ] ⇒ [ 테스트 수행 ] ⇒ [ 결과 평가 및 리포팅 ]
- 테스트 계획
- 테스트 목적과 범위 정의
- 대상 시스템 구조 파악
- 테스트 일정 정의
- 테스트 분석 및 디자인
- 테스트 목적과 원칙 검토
- 요구사항 분석
- 리스크 분석 및 우선순위 결정
- 테스트 데이터 준비
- 테스트 케이스 및 시나리오 작성
- 테스트 케이스 작성
- 테스트용 스크립트 작성
- 케이스 검토 및 확인
- 테스트 수행
- 초기 데이터 로딩
- 테스트 수행
- 결함 리포팅
- 테스트 결과 평가 및 리포팅
- 테스트 결과 정리
- 테스트 프로세스 리뷰
- 테스트 결과 평가
소프트웨어 테스트 산출물 4개
테스트 계획서
테스트 목적과 범위 정의, 대상 시스템 구조 파악, 테스트 일정, 테스트 수행 절차 등 테스트 수행을 계획한 문서
테스트 케이스
사용자의 요구사항을 준수하는지 확인하기 위해 설계된 입력 값/실행조건/기대 결과로 구성된 테스트 항목의 명세서, 테스트를 위한 설계 산출물
테스트 시나리오
테스트 케이스의 동작 순서를 기술한 문서, 테스트 수행을 위한 여러 개의 테스트 케이스의 집합
테스트 결과서
테스트 프로세스를 리뷰하고 결과를 평가하고 리포팅하는 문서
개캐시걸~
테스트 결과가 참인지 거짓인지 판단을 위해 정의된 참값을 입력하여 비교하는 기법과 4가지 유형
테스트 오라클
테스트 결과가 참인지 거짓인지 판단을 위해 정의된 참값을 입력하여 비교하는 기법
테스트 오라클 유형
참 오라클
모든 입력값에 대하여 기대하는 결과 생성
샘플링 오라클
특정 몇 개 입력 값에 대해서만 기대하는 결과를 제공
휴리스틱 오라클
샘플링을 개선한 오라클 + 나머지 값들은 휴리스틱으로 처리
일관성 검사 오라클
어플 변경이 있을 때 수행 전 후의 결과 값이 동일한지 확인
암기법: 오라클테스트하는 참쌤 휴일~
프로그램 실행 여부에 따라 테스트 종류
정적 테스트
프로그램 실행 없이 소스 코드의 구조를 분석하여 논리적으로 검증하는 테스트
인스펙션, 코드검사, 워크스루 등
동적 테스트
프로그램의 실행을 요구하는 테스트
화이트박스 테스트, 블랙박스 테스트
테스트 기법
화이트박스 테스트
내부 로직을 보면서 테스트를 수행
블랙박스 테스트
외부 사용자 요구사항 명세를 보면서 테스트
테스트에 대한 시각
검증
제품의 생산 과정을 테스트
올바른 제품을 생산하고 있는지 검증
확인
생산된 제품의 결과를 테스트
생산된 제품이 정상적으로 동작하는지 확인
시스템에 고의로 실패를 유도 → 정상적으로 복귀하는지 테스트
회복테스트
불법 소프트웨어가 시스템을 파괴하지 못하도록 소스코드 내 보안적 결함을 미리 점검
안전테스트
시스템 과부하 시에도 시스템이 정상적으로 작동되는지 테스트
강도테스트
시스템 응답시간, 특정 시간내 처리 업무량, 사용자 요구에 시스템 반응 속도 등을 테스트
성능테스트
시스템 내부 논리 경로, 소스코드 복잡도 평가
구조테스트
변경/수정 코드 새로운 결함 발견 여부 평가
회귀테스트
변경된 시스템과 기존 시스템에 동일한 데이터를 입력후 결과 비교
병행테스트
기반에 따른 테스트 종류
명세 기반 테스트
주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지?
구조 기반 테스트
SW 내부 논리 흐틈에 따라 케이스를 작성하고 확인
경험 기반 테스트
(우)기명구경 ㅋ
소프트웨어 각 모듈간 인터페이스 관련 오류&결함을 찾기 위한 테스트 기법
단위 테스트가 끝난 모듈(컴포넌트)이설계와 동일한 구조와 기능으로 구현된 것인지 확인하는 테스트 기법과 분류
통합테스트
점증적인 방법 : 상향식 통합/하향식 통합
비점증적인 방법: 빅뱅 방식 ( 모든 컨포넌트를 통합 → 전체를 한번에 테스트 )
상향식 통합: _____로 결합,
______로 데이터입출력 확인
통합된 ______를 테스트
테스트가 완료되면 각 _____들은 프로그램 위쪽으로 결합
_____는 실제 모듈 또는 컴포넌트로 대체
클러스터 /드라이버/ 클러스터 단위 /클러스트/ 드라이버
-하향식 통합: 깊이-우선 또는 너비-우선 방식으로 통합
메인 제어 모듈은 작성된 프로그램 사용
더미 모듈인 _____을 개발
하위 모델인 _____이 하나씩 실제 모듈로 대체 됨
스텁
통합 테스트가 완료된 후 변경 모듈/컴포넌트가 있으면 의도하지 않은 오류가 생기지 않았음을 보증하기 위해 반복 테스트 하는 것
회귀 테스팅
테스트 도구를 활용하여 반복 테스트 작업을 스크립트 형태로 구현
→ 테스트 시간 단축& 인력 투입 비용 최소화, 쉽고 효율적인 테스트
테스트 자동화
어플을 실행하지 않고 분석하는 방법
정적분석 도구
테스트를 위해 작성된 스크립트 실행
- 데이터 주도 접근 방식
테스트 데이터를 스프레드시트에 젖아하고 이 데이터를 읽고 실행할 수 있도록 한다. - 키워드 주도 접근 방식
이 방식에서는 키워드를 이용하여 테스트 수행 동작을 정의할 수 있다. 테일러링을 수행할 수 있다,
테스트 실행 도구
가상의 사용자를 생성하고 테스트를 수행해서 성능 목표를 달성하였는지 확인하는 도구
성능 테스트 도구
테스트 관리 도구, 형상 관리 도구, 결함 추적/관리 도구 등이 있다. 또한 스프레드시트 등 다른 도구들과 연계하여 사용할 수도 있다.
테스트 통제 도구
어플 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터
테스트 장치
테스트 대상 하위모듈을 호출, 파라미터 전달,
테스트 드라이버
타 모듈의 기능을 단순히 수행하는 도구
테스트 스텁
테이트 케이스의 집합
테스트 슈트
입력값 실행조건 기대결과 등의 집합
테스트케이스
테스트 실행 절차에 대한 명세
테스트 스크립트
사용자 행위를 조건부로 입력해두면 그 상황에 예정된 행위를 수행하는 객체
목 오브젝트
소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생하는 현상
소프트웨어 결함
테스트 결과 분석
사람에 의해 생성된 실수
에러/오류
소프트웨어 제품에 포함되어 있는 결함
결함/결점/버그
실패/문제
모듈 또는 컴포넌트의 특정 속성에 해당하는 결함의 수를 측정
결함 분포
시간의 흐름에 따른 결함의 수를 측정
결함 추세
특정한 결함 상태의 지속 시간을 측정
결함 에이징
-테스트 케이스에 의해 수행되는 sw테스트 범위를 측정하는 테스트 품질 측정 기준의 이름과 분류
테스트 커버리지(기능기반/ 라인/ 코드)
전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정
100%달성을 목표
UI가 많으면 화면 수를 모수로 사용
기능기반 커버리지
전체 소스코드의 라인수를 모수로 테스트하는 ______
수행한 소스 코드의 라인 수를 측정하는 방법
______에서
라인 커버리지, 단위테스트
모든 구문에 대해 한번 이상 수행
구문 커버리지
모든 개별 조건식에 대해
조건커버리지
모든 분기문에 대해
결정 커버리지
조건과 결정을 복합적으로 고려
조건식 결과에 상관없이 독립적으로 전체 조건식결과에 영향을 주는 테스트 커버리지
변형 조건/결정 커버리지
주어진 시간에 처리할 수 있는 트랜잭션의 수
웹 에플리케이션의 경우 시간당 페이지 수
처리량
사용자가 입력이 끝난 후 응답 출력이 개시될 때까지의 시간
응답시간
요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료할 때까지 걸리 는 시간
경과시간
트랜잭션 처리하는 동안 사용하는 CPU 사용량, 메모리사용량, 네트워크 사용량
자원 사용률
기능을 변경하지 않고, 복잡한 소스코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법
리팩토링
대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시
해제까지 대기하거나 타임아웃
데이터베이스 락
-대량의 데이터 요청이 들어올 경우
-결과 세트에서 마지막 위치를 커서를 옮기는 작업이 빈번한 경우
데이터베이스 패치
-JDBC객체를 사용 후 종료하지 않을 경우
연결 누수
자바 및 타 언어 소스코드에 대한 버그, 데드(사용하지않는)코드 분석
-리눅스, 윈도우
pmd
-C/C++코드에 대한 메모리누수(필요하지 않은 메모리를 해제하지 않아
메모리가 점유된 상태)
-오버플로우(저장 공간의 한계를 초과) 등 문제 분석
-윈도우
cppcheck
-소스코드 품질 통합플랫폼
-플러그인 확장기능
SonarQube
자바 코드에 대한 코딩 표준 준수 검사 도구
checkstyle
-다양한 언어의 코드 복잡도 분석 도구
-리눅스, 맥 환경 CLI(명령줄)형태 지원
ccm
Covarage 기반으로 테스트 커버리지를 측정
Cobertura
자동화된 메모리 및 쓰레드 결함 발견 분석 도구
Valgrind
'소프트웨어공학' 카테고리의 다른 글
4.SW 보안 (1) | 2025.02.06 |
---|---|
3.일학습병행 퀴즈3 (1) | 2025.01.28 |
2. 일학습 병행 퀴즈 2 (5) | 2025.01.28 |
일학습병행제 개념 퀴즈 (2) | 2025.01.27 |