상세 컨텐츠

본문 제목

정보처리기사 필기시험 준비 [17]

정보처리기사/정보처리기사_필기

by JORDON 2023. 2. 12. 22:45

본문

반응형

소프트웨어개발 - 어플리케이션 테스트관리 - 어플리케이션 테스트설계 / 어플리케이션 통합테스트 / 어플리케이션 성능개선

테스트 케이스

  • 특정한 프로그램의 일부분 또는 경로에 따라 수행하거나 특정한 요구사항을 준수하는지 확인하기 위해 설계된 입력 값, 실행조건, 기대결과로 구성된 테스트 항목의 명세서
  • 테스트 케이스 작성절차
    1. 테스트 계획 검토 및 자료확보
    2. 위험평가 및 우선순위 결정
    3. 테스트 요구사항 정의
    4. 테스트 구조설계 및 테스트 방법 결정
    5. 테스트 케이스 정의
    6. 테스트 케이스 타당성 확인 및 유지보수
  • 테스트오라클
    • 테스트의 결과가 참인지 거짓인지 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법 및 활동
    • 테스트오라클 유형
      • 참(True)오라클
        • 모든 입력값에 대해 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
      • 샘플링(Sampling)오라클
        • 특정한 몇개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클
      • 휴리스틱(Huristic)오라클 / 추정오라클
        • 샘플링 오라클을 개선한 오라클로 특정입력값에 대해 올바른 결과를 제공하고 나머지 값에 대해 휴리스틱(추정)으로 처리하는 오라클
      • 일관성검사(Consistent)오라클
        • 어플리케이션 변경이 있을때 수행전과 후의 결과값이 동일한지 확인하는 오라클

 

테스트레벨(단통시인)

  • 테스트레벨의 종류
    • 단위테스트
      • 구현된 모듈의기능 수행여부를 판정
      • 내부에 존재하는 논리적 오류를 검출할 수 있는 방안을 파악
    • 통합테스트
      • 모듈간의 인터페이스 연계를 검증하고 모듈간의 인터페이스 오류를 확인
      • 모듈간의 상호작용 및 연계 동작 여부를 판정하는 방안을 파악
      • 상향식, 하향식 테스트
    • 시스템테스트
      • 단위,통합테스트 이후 전체 시스템이 전체적으로 정상적으로 작동하는지 판정하는 기능 명세를 확인하는 방안을 파악
      • 기능요구사항, 비기능요구사항 테스트
    • 인수테스트
      • 사용자가 요구분석 명세서에 명시된 사항을 모두 충족하는지 판정
      • 시스템이 예상대로 동작하고 있는지 판정하는 방안을 파악
      • 알파테스트, 베타테스트

테스트 시나리오

  • 테스트 수행을 위한 여러테스트 케이스의 집합으로 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서
  • 테스트 수행 절차를 미리 정함으로써 설계단게에서 중요시하는 요구사항이나 대안흐름과 테스트 항목을 빠짐없이 테스트하기 위함
  • 테스트 시나리오 작성시 유의점
    • 테스트시나리오 분리 작성
    • 고객의 요구사항과 설계문서 등을 토대로 테스트 시나리오를 작성
    • 각 테스트 항목은 식별자 번호, 순서 번호, 테스트 데이터, 테스트 케이스, 예상 결과, 확인 등의 항목을 포함하여 작성
  • 소프트웨어 테스트의 원리
    • 테스팅은 결함이 존재함을 밝히는 행동
    • 완벽한 테스팅은 불가능
    • 테스팅은 개발 초기에 시작해야된다.
    • 결합집중(Defect Clustering)
    • 살충제 패러독스(Presticide Paradox)
    • 테스팅은 정황(Context)에 의존한다.
    • 오류-부재의 궤변(Absence of Errors Fallacy)
  • 소프트웨어테스트 7가지 원칙
    • 테스트는 반드시 해당 소프트웨어 개발과 상관없는 자들에 의해서 수행되도록 할 것
    • 가장 능력이 좋은 사람이 테스트 할 것
    • 오류가 발견되지 않을 것이란 가정하에서 테스트 계획을 수립하지 말 것
    • 예상하지 못한 경우들에 대해서도 테스트를 수행할 것
    • 오류가 남아있을 확률은 이미 발견된 오류의 수에 직접적으로 비례한다.
      • 파레토(Pareto)의 법칙
      • 시스템의 20% 모듈이 전 자원의 80%를 소비
      • 시스템의 20% 모듈이 실행시간의 80%를 소비
      • 오류의 20%가 오류 수정비용의 80%를 차지
      • 사용도구의 20% 기능만이 도구 사용의 80%를 차지
    • 테스트케이스를 쳬계적으로 관리할 것
    • 각각의 테스트 결과를 철저하게 점검할 것

소프트웨어 테스트의 유형

  • 프로그램 실행여부
    • 정적테스트
      • 프로그램 실행없이 소스 코드의 구조를 분석하여 논리적으로 검증하는 테스트
      • 인스팩션, 코드검사, 워크스루
    • 동적테스트
      • 프로그램의 실행을 요구하는 테스트
      • 화이트박스테스트
        • 프로그램 내부로직을 보면서 테스트를 수행
        • 제어구조검사(조건검사, 루프검사, 데이터흐름 검사)
      • 블랙박스테스트
        • 프로그램의 외부 사용자 요구사항 명세를 보면서 테스트하며 주로 구현된 기능을 테스트
        • 동치분할검사 : 타당한 입력자료와 타당하지 않은 입력자료의 개수를 같게 테스트케이스 작성
        • 경계값 분석 : 입력조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용
        • 원인-효과 그래프 검사
        • 오류예측 검사
        • 비교 검사

  • 테스트에 대한 시각
    • 검증(Verification)
      • 제품의 생산과정을 테스트한다.
      • 올바르게 제품을 생산하고 있는지 검증하는 것을 의미
      • Are we building the product right?
    • 확인(Validation)
      • 생산된 제품의 결과를 테스트 한다.
      • 생산된 제품이 정상적으로동작하는지 확인하는 것을 의미
      • Are we building the right product?

  • 테스트 종류
    • 형상검사
      • 구성요소, 목록, 유지보수를 위한 모든 사항이 표현되었는지 검사
    • 알파검사
      • 개발자의장소에서 사용자가 개발자 앞에서 행하는 검사기법
      • 통제된 환경에서 오류, 문제점등을 사용자와 개발자가 함께 확인
    • 베타검사
      • 선정된 최종 사용자가 여러명의 사용자 앞에서 행하는 검사 기법
      • 실제업무를 가지고 사용자가 직접 테스트하며 제어되지 않은 상태에서 검사함

코드 최적화

  • 읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것으로 소스코드 품질을 위해 기본적으로 지킬 원칙과 기준을 정의

클린코드(Clean Code)

  • 잘 작성되어 가독성이 높고 단순하며 의존성을 줄이고 중복을 최소화하여 깔끔하게 정리된 코드
  • 중복코드 제거로 어플리케이션 설계가 개선
  • 가독성이 높음으로 어플리케이션 기능에 대해 쉽게 이해가능
  • 버그를 찾기 쉬워지며 프로그래밍 속도가 빨라진다.
  • 클린코드 작성 원칙
    • 가독성 - 이해하기 쉬운 용어를 사용하고 코드작성시 들여쓰기 기능을 사용
    • 단순성 - 한번에 한가지 처리만 수행하고 클래스/메소드/함수를 최소단위로 분리한다.
    • 의존성 - 영향도를 최소화하고 코드의 변경이 다른부분에 영햐잉 없도록 한다.
    • 중복성 - 종복된 코드를 제거하고 공통된 코드를 사용한다.
    • 추상화 - 클래스/메소드/함수에 대해 동일한 수준의 추상화를 한다.

소스 코드 최적화 기법 유형

  • 클래스 분할 배치 기법을 파악
  • 느슨한 결합 기법을 파악
  • 코딩의 형식 기법을 파악
  • 좋은 이름 사용방법을 파악
  • 적절한 수석문 사용 방법을 파악

외계인코드(Alien Code)

  • 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램을 의미

나쁜코드(Bad Code)

  • 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
  • 처리로직의 제어가 정제되지 않고 서로 얽혀 있는 스파게티코드
  • 변수나 메소드에 대한 이름 정의를 알 수 없는 코드
  • 동일한 처리로직이 중복되게 작성된 코드
  • 스파게티 코드의 경우 잦은 오류가 발생할 확률이 있다.
  • 소스 코드 이해가 안되어 계속 덧붙이기할 경우 코드의 복잡도가 증가한다.

알고리즘 기법

  • 분할정복 - 주어진 문제의 입력을 분할하여 해결하는 방식
  • 그리디 - 가능한 해들 중에서 가장 좋은 해를 찾는 방식
  • 동적계획 - 작은부분을 먼저 해결하고 그 해들을 이용하여 보다 큰부분을 해결하고 최종적으로 주어진 문제를 해결
  • 백트래킹 - 해를 찾는 도중 해가 나올 가망이 없으면 되돌아가 다시 해를 찾아가는 기법
반응형

관련글 더보기

댓글 영역