본문 바로가기
정처기 실기

정처기 애플리케이션 테스트관리

by 별보는 개발자 2023. 4. 12.

소프트웨어 테스트 개념 : 개발된 응용 소프트웨어나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동

 

소프트웨어 테스트 원리 - 결완초집 살정오

결함존재 증명 : 결함이 존재함을 밝히는 활동, 결함이 없다는 것을 증명할 수는 없음, 결함을 줄이는 활동

완벽 테스팅은 불가능 : 완벽하게 테스팅하려는 시도는 불필요한 시간과 자원낭비

초기 집중 : 초기 테스트 설계시 장점 : 테스팅 결과를 단시간에 알 수 있고, 테스팅 기간 단축, 재작업을 줄여 개발 기간 단축 및 결함예방

결함 집중 : 적은 수의 모듈에서 대다수의 결함이 발견함 파레토 법칙인 80대 20 법칙 적용

살충제 패러독스 : 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함, 다른 시각에서의 접근 필요

정황 의존성 : 소프트웨어 성격에 맞제 테스트 실시

오류-부재의 궤변 : 요구사항을 충족시켜주지 못한다면 결함이 없다고 해도 품질이 높다고 볼 수 없음

 

 

============

 

소프트웨어 테스트 유형

정적 테스트 : 테스트 대상을 실행하지 않고 구조를 분석하여 논리성을 검증하는 테스트 - 리뷰, 정적 분석

동적 테스트 : 소프트웨어를 실행하는 방식으로 테스트를 수행하여 결함을 검출하는 테스트 - 화이트박스 테스트, 블랙박스 테스트, 경함기반 테스트

 

화이트박스 테스트 : 각 응용 프로그램의 내부 구조와 동작을 검사하는 테스트, 문제가 발생할 가능성이 있는 모듈 내부를 테스트, 소스 코드의 모든 문장을 한 번 이상 수행, 동작의 유효성 뿐만 아니라실행되는 과정을 확인가능 - 개발자가

 

구결조 조변다 기제데루

구문 커버리지(문장 커버리지) : 프로그램 내늬 모든 명령문을 적어도 한 번 이상 수행하는 커버리지

 

결정 커버리지(선택 커버리지) : 각 분기의 결정포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행하는 테스트 커버리지

 

조건 커버리지 : 조건 커버리지는 결정 포인트 내의 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 수행되도록 하는 테스트 커버리지

 

조건/결정 커버리지 : 전체 조건식 뿐만 아니라 개별 조건식도 참 한번, 거짓 한번 결과가 되도록 수행하는 테스트 커버리지

 

변경조건/결정 커버리지 :

 

다중 조건 커버리지 : 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장

 

기본 경로 커버리지 : 수행가능한 모든 경로를 테스트 하는 기법

 

제어 흐름 테스트 : 프로그램 제어구조를 그래프 형태로 나타내어 내부 로직을 테스트

 

데이터 흐름 테스트 : 제어 흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트

 

루프 테스트 : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 기법

 

 

 

블랙박스 테스트 : 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트

동경결상 유분페원비오

 

동등분할 테스트(동치분할, 균등 분할) : 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법

 

경곗값 분석 테스트 : 등가 분할 후 경곗값 부분에서 오류발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계

 

결정테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트 하는 기법

 

상태 전이 테스트 : 

 

유스케이스 테스트 : 

 

분류 트리 테스트 : 

 

페어와이즈 테스트 :

 

원인-결과 그래프 테스트 : 

 

비교 테스트 : 

 

오류 추정 테스트 : 

 

============

 

테스트 시각에 따른 분류 : 검증과 확인

검증 : 소프트웨어 개발 과정을 테스트, 올바른 제품을 생상하고 있는지 검증, 이전 단계에서 설정된 개발 규격과 요구를 충족시키는지 판단, 개발자 혹은 시험자의 시각으로 소프트웨어가 명세화된 기능을 올바로 수행하는지 알아보는 과정

 

확인 : 소프트웨어 결과를 테스트, 만들어진 제품이 제대로 동작하는지 확인, 최종 사용자 요구 또는 소프트웨어 요구에 적합한지 판단

 

===============

 

테스트 목적에 따른 분류

회안성 구회병

 

회복테스트 : 시스템에 고의로 실패를 유도하고 시스템의 정상적 복귀 여부를 테스트하는 기법

안전 테스트

성능 테스트

구조 테스트

회귀 테스트

병행 테스트

 

================

 

동료검토 : 2~3명이 진행하는 리뷰의 형태, 요구사항 명세서 작성자가 요구 사항 명세서를 설명

인스펙션 : 소프트웨어 요구 설계 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 문제를 식별하고 문제에 대한 올바른 해결을 찾아내는 형식적인 검토 기법

워크 스루 : 검토 자료를 회의전에 배포해서 사전 검토한후 짧은 시간동안 회의를 진행하는 형태, 비형식적인 검토 기법

 

=================

 

테스트 오라클 종류

참샘휴일

 

참 오라클 : 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클

샘플링 오라클 : 특정한 몇개의 입려값에 대해서만 기대하는 결과를 제공해주는 오라클

휴리스틱 오라클 : 샘플링 오라클 개선, 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱으로 처리하는 오라클

일관성 검사 : 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지 확인하는 오라클

 

 

==============

 

테스트 레벨 종류

단통시인

 

단위 테스트 : 

통합테스트 : 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계

시스템 테스트 : 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계

인수 테스트 : 계약 상의 요구사항이 만족되었는지 확인하기 위한 테스트

 알파테스트 : 선택된 사용자가 개발자 환경에서 통제된 상태로 개발자와 함꼐 수행하는 인수테스트

 베타테스트 : 실제 환경에서 일정 수의 사용자에게 대상 소프트웨어를 사용하게 하고 피드백을 받는 테스트

 

=================

 

하스상드

하향식 통합 - 테스트 스텁

상향식 통합 - 테스트 드라이버

 

하향식 통합 - 깊이우선, 너비우선

 

샌드위치 통합 : 상향식 통합 테스트와 하향식 통합 테스트 방식 결합

 

정적 분석 도구 : 만들어진 애플리케이션을 실행하지 않고 분석하는 도구, 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함 발견하기 위해 사용

========================

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

처응경자

 

처리량 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랙잭션의 수

응답시간 : 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 게시될때까지의 시간

경과시간 : 애플리케이션에 사용자가 요구를 입력한 시점부터 트랙잭션을 처리 후 그 결과의 출력이 완료될때까지 걸리는 시간

자원 사용률 : 애플리케이션이 트랙잭션을 처리하는 동안 사용하는 CPU사용량, 메모리 사용량, 네트워크 사용량

 

배드 코드 : 다른 개발자가 로직을 이해하기 어렵게 작성된 코드

 - 외계인 코드 : 아주 오래 되거나 참고 문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 코드

 - 스파게티 코드 : 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스타게티의 면발에 비유한 표현

 - 알 수 없는 변수명 : 변수나 메서드에 대한 이름 정의를 알 수 없는 코드

 - 동일한 처리 로직이 중복되게 작성된 코드

 

클린코드 : 잘 작성되어 가독성이 높고, 단순하며 의존성을 줄이고 중복을 최소화하여 깔끔하게 정리된 코드

작성원칙 : 가단의중추

가독성 : 이해하기 쉬운 용어를 사용, 코드 작성시 들여쓰기 기능을 사용

단순성 : 한 번에 한 가지 처리만 수행, 클래스 메서드 함수를 최소단위로 분리

의존성 최소 : 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게 작성

중복성 제거 : 중복된 코드를 제거, 공통된 코드를 사용

추상화 : 클래스 메서드 함수에 대해 동일한 수준의 추상화 구현