[정처기-왕두목쌤] 통합 테스트

이기적 영진닷컴
21 팔로워
14 비디오 조회수·2023. 12. 30.
이 동영상은 [이기적 정보처리기사 필기 기본서] 도서 내용을 바탕으로 제작되었습니다.
🔹 도서 자세히 보기 : https://www.yes24.com/Product/Goods/123749951
🔹 이 동영상이 포함된 재생목록 : https://www.youtube.com/playlist?list=PL6i7rGeEmTvpH4LPx_9O1Q88tDtAdbOko
🔹 모르는 문제? [이기적 스터디 카페] 질문하기 : https://cafe.naver.com/yjbooks
🔹 이기적 홈페이지 : https://license.youngjin.com
🔹 인스타그램 : https://www.instagram.com/license.youngjin_official/
마지막 섹션이 통합 테스트가 됩니다
통합 테스트는 뭘까요음 단위 테스트는
앞에서 본 적 있죠 그래서 하나의
모듈를 기준으로 독립적으로 진행되는
가장 작은 단위의 테스트가 되는 거고
어플리케이션을 구성하는 하나의 기능이
올바르게 동작하는지 독립적으로
테스트하는 걸
의미하죠 구연 단계에서 각 모듈에
개발 완료된 다음에 개발자가 명세
대로 정확히 구현되는지 테스트를 하고
모듈 내부의 구조를 구체적으로 볼 수
있는 조 조적 테스트를 주로 실행을
해요 소프트웨어를 최소 기능 단위
모듈 컴퍼넌트를 테스트하는 것으로서
사용자 요구 사항을 기반으로 한
테스트를 제일 먼저 수행한다
인터페이스 자료 구조 독립적 기초
경동 오류 처리 경동 결제 조건 등을
테스트 하고요 이렇게 단위 테스트를
지원하는 도구들이 있었죠 그래서
앞에서 한번 본 적 있는데 다시 한번
보는 겁니다 유닛 유닛 J 모킷 엠마
PHP 유닛 http 유닛 DB 유닛
cpp 유닛 이런 것들이 있다 지원
도구 종류 정도만 여러분들 기억하고
계시면
되겠고요이 부분은 앞에 통합 구에서도
한번 본 적 있으니까 다시 한번
정리해 주시면 될 것
같습니다 쭉 봐
주시고요 자 통합 테스트라고 하는
거는 단위
테스트를 끝낸 다음에 얘네 모듈들을
연합하는 그런 형태가 되겠죠 자 통합
테스트는 모듈을 결합해서 시스템을
완성하는 과정에서 듈 간의 인터페이스
또는 통합된 컴퍼넌트 간의 상호 작용
오류 및 결함을 찾아내기 위한 테스트
기법이다 개별적으로 테스트한 모듈을
통합해서 시스템 전체에 동작이 제대로
이루어지는지를 확인하는 부분이다
개발된 모든 모듈이 통합되고 사고
작용하는 방식이 검증되는 단계로서
시스템이 완성도와 품질을 평가하는데
중요한 역할을 한다 통합 테스트
방법에는 크게 두 가지가 있어요의
점진적 통합 방식과 통합 방식이
있는데 점진적 통합 방식은 모든
모두를 결합해서 한 번에 테스트하는
것을 뭐라고 한다 빅뱅 통합이라고
이야기하고 점진적 통합이라고 하는
거는 단계적으로 통합을 해요 그래서
상향식이든 하향식이 그래서이 그림을
기억하시면
되겠습니다 상향식 같은 경우는 어떻게
되는 거야 하위 모듈부터 상위 모듈로
통합해 나가는 방식이고요 식은
상위 모듈부터 하이 모듈로 통합해
나가는 과정이에요
만약에 이걸 통합해 가는 과정 중에
테스트 하네라고 하는 것들이 필요하게
되는데 그때 사용되는 테스트
드라이버나 테스트 스톱이 시험 문제
많이 출제가 된다 요걸 분하는 문제가
필기고시 다 출제가 된다 이렇게
보시면
되겠습니다 자 그래서 통합테스트
방식에서 첫 번째 하향식 통합
테스트에요 식은 상식 식에서 상위
제어 모듈에서 하위의 개별 모듈로
통합해 나가는 과정을 의미한다고
그랬죠 상위 컴퍼넌트를 먼저
테스트하고 점증적으로 하위 컴퍼넌트를
검색한다 주요 제어 모듈을 기준으로
아래로 통합해 가면서 진행을 하고요
하위 컴퍼넌트 개발이 완료되지 않았을
경우에는 스톱을 이용한다 그랬어요
이거를 우리가 일반적으로 다른 말로
뭐라고 하냐면 더미 모듈이라고
이야기를 해요 범미
모듈 아무 기능도 하지 않는 즉이
모듈을 테스트하기 위해서는 어떻게
해야 될까요 얘가 상위자아 하위에
하나밖에 완성이 안 된 거야 그래서
스이고 하는 가짜 즉 스이고 하는
가짜 모듈을 하나 갖다 꼬집어 넣고
얘를 테스트하는 것을 의미합니다 됐죠
우선 통합법 깊이 우선 통합법 너비
우선 통합법 등이 있다 하위 레벨
모듈들은 특정한 소프트웨어 부가
기능을 수행하는 클러스터의
결합이다 결국은 합쳐
나가는데 만약에 하위 모듈이 존재하지
않을 경우에는 뭘 쓴다 스톱을 쓴다
요것만 기억하시면
됩니다 그러면 하양식 테스트의
특징에는 시스템 테스트가
가능해지고 모든 하위 모듈이 완성된
후에 테스트를 진행하기 때문에 시스템
전체를 테스트할 수가 있어서 시스템이
기대한 대로 동작하는지 확인할 수가
있어요 개발 일정을 예측할 수가
있어요 하이 모듈들이 모듈들이 모두
완성된 뒤에 테스트를 진행하니까 개발
일정 예측하기가 쉬워지고 통합 오류를
찾기 어려울 수가 있어요 이건 단점이
되겠죠 하위 모듈에 문제가 발생하지
않더라도 상위 모듈에서 오류가 발생할
수 있는데이 상황에서는 각 하위
모듈에 개별적으로 테스트를 수행해
줘야 된다 테스트 스톱을 사용할 수가
있어요 하위 모듈이 아직 개발되지
않은 경우 테스트 스톱을 이용을 해서
상위 모듈을 테스트할 수 있다 문제
발견이 늦어질 수가 있어요 하위
모듈이 모두 완성된 에 테스트를
진행하니까 문제가 발생할 경우에 그
문제를 해결해 기가 더 어려워진다
개발자와 테스트 관에 협력이 필요하다
이번에는 상식입니다 거꾸로 하위에
있는 아이들을 먼저 만들고요 상위로
통합해 나가는 이러한 형태가 되는
거죠 최하위 레벨에서 모듈을 구성하고
상위 모듈을 통합해 나가는 방식을
의미에요 자 여기서 사용되는 아이는
드라이버입니다
드라이버 상통 테스트의 특징에는 하위
모듈에서 상위 모듈로 점진적으로
통합되기 때문에 하위 모듈들이 결함이
상위 모듈로 전파되는 것을 방지할 수
있어요 상위 모듈이 아직 개발이 안
된 경우에는 더미 모듈인 테스트
드라이버를 이용할 수 있다 합이
모듈이 모두 개발 완료된 후에 상위
모듈을 통합하는 하향식 통합 테스트에
비해서 개발 속도가 빨라진다 합의
모듈이 개발 중일 때 테스트 수행하기
때문에 결함을 조게 발견할 수 있다
상향식 통합 테스트 사용 용
대상으로는 하위 모듈 개발이 상위
모듈 개발보다 먼저 완료된 경우에
하위 모듈의 결함이 상위 모듈로
전파되는 것을 방제할 때 개발 속도를
빠르게 하고 싶을 때 모듈의 개발을
순차적으로 진행하고 싶을 때 상위
모듈의 개발이 하이 모듈 개발보다 더
오래 걸릴 때 상위 모듈의 테스트가
쉽고 빠를 때 대신에 이제 유의할
것들이 몇 가지가 있는데 하위 모듈은
독립적으로 테스트할 수 있어
각각 단위 모듈들이 테스트가 가능해야
된다 테스트 드라이버는 하위 모듈의
인터페이스를 정확하게 구현해야 돼요
테스트 드라이버를 사용할 경우에 두
개가 서로 인터페이스가 가능해 된다는
얘기죠 테스트 케이스는 하이 모듈의
모든 기능을 테스트할 수 있도록
설계해야 되고 하이 모듈의 테스트가
완료된 뒤에 상위 모듈로 통합할 때는
모듈의 의존성이 높아질 수 있으니까
테스트 케이스를
신중하게 설계해야
된다 절차를 보면 하위 모듈을
클러스터로 묶어요 상위 모듈에서
데이터 입출력을 확인하기 위해서 더위
모듈인 드라이버를 작성하고 통합된
클러스터 단위로 테스트를 수행하고
테스트가 완료되면 클러스터는 프로그램
구조의 사위로 이동해서 결합하고
드라이버는 실제 모듈로 대체를
한다 자 빅뱅 테스트 같은 경우는
시스템을 구성하는 모듈을 각각 따로
구현하고 전체 시스템을 한 번에
테스트하는 것을 빅뱅 테스트라고 해요
이때는 테스트 드라이버나 스톱이
없어도 돼요 그지 그리고 다 구현이
된 다음에 하는 거니까 당연히 사용이
안 되겠죠 단시간에 테스트를 수행하나
결함인 격리가 어려운 방식이다
그러니까 단시간에 한 번에 빡 할
수는 있는데 결함을 찾기가 좀 어려운
단위 어떤 그런 단점이
있다 샌드위치 통합 방식 같은 경우는
상향식 하향식의 장점을 이용하는
방식이고 하위 프로젝트가 있는 대규모
프로젝트에 이용하는 방식이다 병렬
테스트가 가능하고 시간 절약이
가능하다 스톡과 드라이버 필요성이
매우 높은 방식이고 비용이 많이
들어간다 자 그러면 요거 기억하고
계셔야 되겠죠 통합 테스트 수행 방법
비교 우선 하양식 같은 경우에는 뭘
쓴다 스톱을 쓴다 상향식 드라이버
쓴다 얘네는 실제 모듈로 테스트에요
수행은 얘는 상위에서 하위로 얘는
하위에서 상위로 얘는 동시요 장점으로
보면 장애 위치 확인이 쉬워요 초기
프로토타입이 가능해요 상 같은
경우에는 모든 모듈이 개발이 준비되어
있지 않아도 되는 런 상황이고 빅뱅은
이제 소규모 시스템에서 단기간 우리가
사용할 수 있다 화양식 같은 경우는
많은 스톱이 필요해질 수가 있고 낮은
수준 모듈은 부적절한 테스트가
가능성이 있고 얘는 초기 프로토타입에
불가능하고 중요한 모듈들이 마지막에
테스트될 가능성이 있어요 장애 위치
확인이 어렵고요 모든 모듈이 개발
준비되어야 실행할 수 있다라는들이
있겠죠 자 그럼 이런 테스트를
자동화할 수 있으면 얼마나 좋을까요
그래서 요거 것을 우리가 테스트
자동화 도구를 이용을 해서 작업을 할
수가 있겠고 어플리케이션 개발 중
반복되는 다양한 테스트 과정을
하드웨어 소프트웨어적으로 자동화
도구를 이용해서 일관성 및 생산성을
향상시킬 수 있는 거죠 어 예전에는
별도로 테스터하고 하는 직종이
있었어요 그 소프트웨어 테스트 하는
예를 들면은 공장에서 QC 하는 분들
요러한 역할을 하는 사람들이 있었다
테스트 관리 소스코드 관리 리뷰 및
인스펙션 테스트 설계 및 개발 테스트
수행 등의 테스트에 포함된 다양한
작업들을 자동화를 지원해 주는
도구다 테스트 자동화 수행시 고려할
사항으로는 모든 과정이 아닌 그때그때
맞는 적절한 도구를 선택하고요 자동화
도구를 고려해서 프로젝트 일정을
계획하고 프로젝트 초기에 테스트
엔지니어 투입 시기를 계획해야
된다 그러면 테스트 수행 단계별로
테스트 자동화 도구는 어떻게 되느냐
계획 단계에서는 요구 사항 관리도
분석 및 설계 단계에서는 테스트
케이스 생성도구 수행 단계에서는
테스트 자동화 정적 동적 분석 성능
테스트 모니터링 도구가 필요하고요
관리 단계에서는 커버리지 분석 형상
관리 결함 추적 관리 도구들이
필요하다 자 그러면 테스트 자동화
도구에는 또 정적 분석 도구와 또
실행 도구가 있어요 정적 분석 도구
또는 뭐가 되는 거야네 동적 분석
도구가 되겠죠 정적 분석 도구는
실행하지 않고 소스코드 분석을 통해서
결함을 찾는 거고요 그래서 코딩
표준이나 코딩 스타일 코딩 복잡도
낮은 결함 등을 발견하기 위해서
사용하고요 얘는 스크립트 언어를
이용해서 실제 테스트를 실행하는
방법으로 하는
거예요 테스트 데이터와 수행
데이터간에 포함된 스크립트를 작성한
뒤에 작성한다 종류에는 데이터 주도
접근 방식과 키워드 주도 접근 방식이
있다 데이터 주도 접근 방식에는
테스트 데이터를 스프레시트 문서에
저장하고 실행하는 방식으로 데이터를
가지고 하는 거겠죠 다양한 테스트
데이터를 동일한 테스트 케이스로
반복해서 실행하는 방식이다 새로운
데이터의 경우 미리 작성된 스크립트를
데이터를 추가해서 테스트를 진행할 수
있다 키워드 관련된 경우에는 키워드와
테스트 데이터를 스프레시트 문서에
저장해서 실행하고 키워드를 이용을
해서 테스트한다 여기에서는 뭘 가지고
한다 데이터를 가지고 한다 어디 있어
데이터 여기 있네요 여기에서는
키워드를 가지고
이용한다 자 성능 테스트 도구는
어플리케이션의 처리량 응답 시간 경과
시간 자원 사용률 런 것들 우리가
확인할 수 있는 그런 도구이다 이렇게
보시면 되겠고 테스트 통제 도구
테스트 하네스 도구가 있는데 요러한
아이들이 나오게 되겠고 테스트 하네스
도구에는 어떤 것이 있느냐 바로
테스트 드라이버와 테스트 스톱이 있다
얘네가 아주 많이 출제가
된다 테스트 드라이버 드라이버는
어때요 제어한다고 하는 개념이
들어가겠죠 운전수는 제어하자 아
자동차를 그지 스톱은 토막이 그뭐
연필 몽당 연필 할 때 이제 스톱이
아고 이야기를 해요 그래서 얘는 그냥
뭐 그냥 간단한 그 개념이 보시면
되겠죠 그래서 드라이버 상위에 있는
거고요 스톱 이니까 하위에 있는거다
이렇게 생각하시면 쉽게 정리가 되실
거예요 그래서 하위에서 상위 모듈로
통합하는 상향식 테스트에서 상위 제어
모듈이 없을 경우에 우리가 사용하고요
스 같은 경우는 상위에서 하위 모듈로
갈 때 하위 모듈의 부제일 경우에
그때 우리가 얘를
쓴다 그래서 테스트 대상을 제어하고
동작시키는데 사용되는 도구를
의미하고요 시스템및 를 실험하는 환경
부분으로 시험을 지원하는 목적 하에서
생성된 코드와 데이터이다 모듈의
API 호출해서 모듈의 동작을
시뮬레이션하고 테스트 케이스에서
정의된 데이터 입력을
제공한다 스터 같은 경우는 상위
모듈에서 하위 모듈로 테스트를 진행해
가는 과정 중에 하위 시스템
컴퍼넌트의 개발이 완료되지 않은
상황에서 시스템 테스트를 진행하기
위해서 임시로 생성된 가상의 더미
컴포넌트다이어그램 면 테스트
드라이버는 하위 모듈를 구하고요 얘는
하위 모듈를
대체해요 됐죠 얘는 제하니 하위
모듈를 구동할 수 있는 거고 얘는
대체하는 거죠 얘는 구현이 비교적
어렵겠죠 얘는 상향식 얘는 하향식
하위 모듈 중요 중요도가 높을 때
얘는 상위 모듈의 중요도가 높을 때
우리가 사용한다 초기에 구조 파하기
어려운 단점이 있고 테스트 스톱 같은
경우는 입출력이 대부분 하위에
위치해서 테스트가 어려울 수 있다
이러한 문제가 발생할 수 있다라는 거
정리해 두고 계시면 되겠죠 뭐 차이를
본다면 이미 존재하는 하이 모델과
존재하지 않는 상위 모듈의 인터페이스
역할을 수행하고 개발 완료 시에 본래
모듈로 대체를 하고 반대로 스터 같은
경우는 하이 모듈의 상위 모듈을
호출할 때 완벽한 기능을 임시로
수행하는 더이 모듈이고 깊이 우선
스톱과 너비 우선 스톱 있다 또 예를
들자면 드라이버는 클라이언트 구축시
서버가 아직 준비되어 있지 않을 경우
반대로 서버는 준비되 있지만
클라이언트가 구축이 안 돼 있을 경우
이때 우리가
사용한다 자 테스트 슈트라고 하는
거는 일정한 순서에 의해서 수행될
개별 테스트의 집합 또는 패키지를
의미한다 테스트 케이스는 앞에서 말
말씀드렸고 테스트 스크립트는 이러한
테스트 케이스 테스트 케이스를 실제
실행할 수 있도록 하는 그러한
순서대로
작성된 명령어들의 집합이다 목
오브젝트는 테스트를 위해 사용자
행위를 조건부로 입력해 두고 그
상황에 맞는 행위를 수행하는 객체를
의미한다 여기까지 해가지고 리
어플리케이션 테스트 마무리가 됐고요
챕터 4가이 과목에서 가장 출제
빈도가 높아요 그러니까 여러분들
정확하게 좀 정리를 해 주시고 문제와
함께 꼭 정리를 해 주시기 바랍니다
본문만 봐서는 아무 답이 안 나와요
문제를 같이 보셔야 매칭이 됩니다
고생하셨습니다
