230928 TIL #202 정처기 실기 #12 애플리케이션 테스트 관리 2

김춘복·2023년 9월 28일
0

TIL : Today I Learned

목록 보기
202/550

Today I Learned

일이 끝나고 추석연휴 첫 날. 쉬고 싶었지만 정보처리기사 시험이 얼마 남지 않아 책을 폈다.


애플리케이션 테스트 관리 2

개발 단계에 따른 애플리케이션 테스트 - A

  • 테스트 레벨 : SW 개발 단계에 따라 단위, 통합, 시스템, 인수 테스트로 분류

  • 소프트웨어 생명 주기의 V-모델 - A

단위 테스트(Unit Test) - A

코딩 직후 SW 설계 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트
인터페이스, 외부 I/O, 자료구조, 오류처리경로, 경계 조건 등을 검사
개별 모듈을 시험하는 것으로 모듈이 정확하게 구현 됐는지 예정한 기능이 제대로 수행되는지를 점검하는 것이 주 목적.

통합 테스트(Integration Test) - A

단위테스트가 완료된 모듈을 결합해 하나의 시스템으로 완성시키는 과정에서의 테스트
모듈 간 또는 통합된 컴포넌트 간의 상호 작용 오류를 검사

시스템 테스트(System Test) - C

개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는 가를 점검

인수 테스트(Acceptance Test) - A

개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트
개발한 소프트웨어를 사용자가 직접 테스트

  • 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 테스트
    통제된 환경에서 오류와 문제점을 사용자와 개발자가 함께 기록함

  • 베타 테스트 : 선정된 최종 사용자가 여러명의 사용자 앞에서 행하는 테스트
    실 업무를 가지고 사용자가 직접 테스트


하향식 통합 테스트 - A

Top Down Integration Test. 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트
주요 제어 모듈은 작성된 프로그램을 사용하고 주요 제어 모듈의 종속모듈은 스텁으로 대체

  • 스텁(Stub) : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구. 일시적으로 필요한 조건만 가지고 있는 시험용 모듈

상향식 통합 테스트 - A

Bottom Up Integration Test. 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
하위 모듈을 클러스터로 결합. 상위 모듈에서 데이터 입출력을 확인하기 위해 더미 모듈인 테스트 드라이버를 작성한다.

  • 테스트 드라이버(Test Driver) : 더미 모듈. 테스트 대상의 하위 모듈을 호출하고 파라미터를 전달하고 모듈 테스트 수행 후의 결과를 도출하는 도구

회귀 테스트(Regression Test) - A

통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트
이미 테스트 된 프로그램의 테스팅을 반복하는 것
수정된 모듈이나 컴포넌트가 다른 부분에 영향을 미치는 지 테스트해 새로운 오류가 발생하지 않음을 보증하기 위해 반복 테스트

테스트 오라클 - B

테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입해 비교하는 기법
결과 판단을 위해 테스트 케이스에 대한 예상 결과를 계산하거나 확인

  • 참(True) 오라클 : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클. 발생된 모든 오류를 검출 가능

  • 샘플링(Sampling) 오라클 - B : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클. 전수 테스트가 불가능 한 경우 경계값 및 구간 별 예상값 결과 작성시 사용

  • 추정(Heuristic) 오라클 : 특정 테스트 케이스의 입력값에 대해 기대하는 결과를 제공하고 나머지 입력값에 대해서는 추정으로 처리하는 오라클

  • 일관성(Consistent) 오라클 : 애플리케이션에 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과값이 동일한지 확인하는 오라클

테스트 자동화 도구

  • 성능 테스트 도구 : 애플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률에 대해 가상의 사용자를 만들어 테스트를 수행함으로써 성능 목표를 달성하였는지 확인하는 도구

  • 그외 정적분석도구, 테스트 실행 도구, 테스트 통제 도구, 테스트 하네스 도구가 있다.

테스트 하네스

테스트를 지원하기 위해 생성된 코드와 데이터

  • 테스트 드라이버(Test Driver) : 테스트 대상의 하위 모듈을 호출하고 파라미터를 전달하는 가상의 모듈.
    상향식 테스트에 사용된다.
  • 테스트 스텁(Test Stub) : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구. 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈. 하향식테스트에 사용.
  • 테스트 슈트(Test Suite) : 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합
  • 테스트 케이스(Test Case) : 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 입력값, 실행조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서
  • 테스트 스크립트 : 자동화된 테스트 실행 절차에대한 명세서
  • 목 오브젝트 : 사전에 사용자의 행위를 조건부로 입력해 두면 그 상황에 맞는 예정된 행위를 수행하는 객체

결함(Fault)

소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것
오류발생, 작동 실패 뿐만 아니라 예상과 실제의 차이, 업무내용과의 불일치 등으로 인해 변경이 필요한 부분도 모두 결함에 해당한다.


애플리케이션 성능 측정 지표 - A

  • 처리량(Throughput) : 일정 시간 내에 애플리케이션이 처리하는 일의 양
  • 응답 시간(Response Time) : 애플리케이션에 요청을 전달한 시간~응답이 도착할때까지 걸린 시간
  • 경과 시간(Turn Around Time) : 애플리케이션에 작업을 의뢰한 시간~처리가 완료될 때 까지 걸린 시간
  • 자원 사용률 or 자원 활용률(Resource Usage) : 애플리케이션이 의뢰한 작업을 처리하는 동안의 CPU사용량, 메모리 사용량, 네트워크 사용량 등

빅오 표기법으로 표현한 최악의 시간 복잡도 - B

  • O(1) : 수행시간이 입력 데이터 수와 관계 없이 일정. ex) 스택의 삽입, 삭제
  • O(log n) : 입력 데이터 수 n의 증가량 보다 작음. ex) 이진트리
  • O(n) : 문제 해결에 필요한 단계가 입력값 n과 1대 1이 관계. ex) for문
  • O(n log n) : 성능 좋은 정렬들이 여기 속함. ex) 힙정렬, 합병정렬
  • O(n^2) : 단계가 n의 제곱만큼 수행됨. ex) 삽입, 선택, 버블정렬
  • O(2^n) : 피보나치 수열

순환 복잡도 - B

한 프로그램의 논리적인 복잡도를 측정하기 위한 척도. 맥케이브 순환도라고도 한다.
순환 복잡도 V(G) = 화살표 수 - 노드 수 + 2

소스 코드 최적화 - B

나쁜코드를 배제하고 클린코드로 작성하는 것

  • 클린코드 : 누구나 쉽게 이해하고 수정할 수 있는 단순 명료한 코드

  • 나쁜코드(Bad Code) : 로직이 복잡하고 이해하기 어려운 코드
    ex) 스파게티코드(로직이 복잡하게 얽힘), 에일리언 코드(Alien Code, 오래되거나 참고문서 혹은 작성한 개발자가 없어 유지보수가 어려운 코드)

클린 코드 작성 원칙 - B

  • 가독성 : 누구나 코드를 읽기 쉽게 작성한다.
  • 단순성 : 코드를 간단하게 작성한다. 클래스/메소드/함수 등을 최소단위로 분리해 한번에 한가지만 처리하도록 한다.
  • 의존성 배제 : 코드가 다른 모듈에 미치는 영향을 최소화 한다.
  • 중복성 최소화 : 코드의 중복을 최소화 한다. 공통 코드를 사용한다.
  • 추상화 : 상위 클래스/메소드/함수에서는 간단하게 애플리케이션의 특성을 나타내고 상세한 내용은 하위 클래스/메소드/함수에서 구현한다.

소스코드 품질 분석 도구 - A

  • 정적 분석(Static Analysis) 도구
    작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 도구

  • 동적 분석(Dynamic Analysis) 도구
    작성한 소스 코드를 실행해 프로그램의 동작이나 반응을 추적하고 보고하는 도구. 모니터링 기능이나 스냅샷 생성 기능들을 포함하고 있다. 메모리 누수 스레드 결함 등을 분석한다.

profile
Backend Dev / Data Engineer

0개의 댓글