Search

애플리케이션 테스트 수행

소프트웨어 생명주기 의 V모델에서 좌측은 소프트웨어 아키텍트 우측은 테스트 매니저로 이루어져있음
소프트웨어 아키텍트
요구사항
분석
디자인
구현
테스트 매니저
단위 테스트
통합 테스트
시스템 테스트
인수 테스트
테스트의 접근 방법
단위 테스트 (모듈, 함수 단위)
테스트 가능한 단위로 작게 분리된 소프트웨어 내에서 결함을 찾고 기능을 검증하는 테스트 활동
통합 테스트
컴포넌트 간 인터페이스 테스트를 하고 운영체제, 파일시스템, 하드웨어 또는 시스템 간 인터페이스와 같은 각각
다른 부분과 상호 연동이 정상적으로 작동하는지 여부 테스트
️ 종류 : 빅뱅, 상향, 하향, 샌드위치, Central, Collaboration, 레이어 통합
시스템 테스트
컴퓨터 시스템을 완벽하게 검사하기 위한 목적 또는 성능 목표를 가지고 테스트
인수 테스트
시스템의 일부 또는 특정한 비기능적인 특성에 대해 인수테스트를 통해 확인
️ 인수 테스트 종류와 내용
테스트 종류
테스트 내용
사용자 인수 테스트
비즈니스 사용자가 시스템 사용의 적절성 여부 확인
운영상의 인수 태스트
시스템 관리자가 시스템 인수시 수행하는 테스트 활동으로 백업/복원 시스템, 재난 복구, 사용자 관리, 정기 점검 확인
계약 인수 테스트
계약상의 인수/검수 조건을 준수하는지 여부를 확인
규정 인수 테스트
정부 지침, 법규, 규정 등 규정에 맞게 개발하였는지 확인
알파 테스트
개발하는 조직 내 잠재 고객에 의해 테스트
베타 테스트
실제 환경에서 고객에 의해 테스트
테스트 자동화 도구
테스트 자동화란 사람이 하던 반복적 테스트 절차를 자동화 도구를 활용하여 준비, 구현, 수행 분석 등을 스크립트
형태로 구현함으로써, 시간과 인력 투입의 부담을 최소화하면서 운영 중인 시스템의 모니터링 또는 UI가 없는
서비스의 경우에도 정밀한 테스트가 가능하도록 하는 것
장점
테스트 인력과 시간을 최소화
향상된 요구사항 정의, 성능 및 스트레스 테스트 , 품질 측정 최적화
향상된 품질 보장
단점
도입 후 테스트 도구 전문가를 양성 또는 고용 필요 초기에 적용에 필요한 시간 등 추가투자 필요
비공개 상용 소프트웨어인 경우 고가이며, 인력과 교육에 대한 유지관리 비용이 높음
고려사항
재사용 및 측정이 불가능한 프로그램 제외
스크립트 재사용성이 가능해야함
용도에 맞는 적절한 도구 사용 필요
프로젝트 지연 방지
적절한 투입시기와 계획은 프로젝트 초기에 수립
테스트 목적
업무흐름 별 경로의 적절성 및 업무 처리 여부 확인
각 어플리케이션 간 연계 및 연동 확인
기능과 비기능의 적합성 및 사용 편의성 확인
비정상적인 결과 발생 부분의 확인 및 해결
업무간 시스템 연동으로 상호작용의 지원과 기능 실행 여부 확인
결함
결함은 프로그램과 명세서 간의 차이, 업무 내용 불일치이다.
결함은 기대결과와 실제 관찰 결과 간의 차이이다.
시스템이 사용자가 기대하는 타당한 기대치를 만족시키지 못할 때 변경이 필요한 모든 것은 결함이다.
결함관리 프로세스
결함 관리 계획 → 결함 기록 → 결함 검토 → 결함 수정 → 결함 재확인 → 최종 결함 분석 및 보고서 작성
결함 관리 계획
전체 프로세스에서 결함관리에 대한 일정, 인력, 업무 프로세스를 확보하여 계획을 수립하는 것
결함 기록
테스터는 발견된 결함에 대한 정보를 결함 관리 DB에 기록한다.
결함 검토
등록된 결함에 있어서 주요내용을 검토하고, 결함을 수정할 개발자에게 전달한다.
결함 수정
개발자는 할당된 결함의 프로그램을 수정한다.
결함 재확인
테스터는 개발자가 수정한 내용을 확인하고 다시 테스트를 수행한다.
결함 상태 추적 및 모니터링 활동
결함관리 팀장은 결함 관리 DB를 이용하여 대시보드 등을 제공한다.
최종 결함 분석 및 보고서 작성
발견된 결함에 대한 내용과 이해관계자들의 의견이 반영된 보고서를 작성하고 결함관리를 종료한다.
결함의 상태
결함 등록 (Open)
테스터와 품질관리 담당자에 의해 결함이 처음 발견되어 등록되었지만 아직 분석이 되지 않은 상태
결함 검토 (Reviewed)
등록된 결함을 담당 모듈 개발자, 테스터, 프로그램 리더, 품질관리 담당자와 검토하는 상태
결함 할당 (Assigned)
결함 수정 (Resolved)
결함 조치 보류 (Deferred)
결함 종료 (Closed)
결함 해제 (Clarified)
결함 분류
시스템 결함
비정상적인 종료/중단, 응답시간 지연, 데이터베이스 에러 등 주로 애플리케이션 환경과 데이터베이스
처리에서 발생하는 결함
기능 결함
사용자의 요구사항 미반영/불일치, 부정확한 비즈니스 프로세스, 스크립트 에러, 타 시스템 연동 시 오류 등
기획, 설계, 업무 시나리오 단계에서 발생된 결함
GUI 결함
응용프로그램의 UI 비일관성, 부정확한 커서/메시지, 데이터 타입의 표시 오류 등으로 사용자 화면 설계에서
발생된 결함
문서 결함
기획자, 사용자, 개발자 간의 의사소통과 기록이 원활하지 않은 경우 발생하는 결함으로 온라인/오프라인 매뉴얼의 불일치, 요구사항 분석서와 기능 요구사항의 불일치로 인한 불완전한 상태의 문서의 경우를 말함
결함 심각도
High
시스템이 중단되어 더 이상 프로세스를 진행할 수 없게 만드는 결함으로 시스템의 핵심 요구사항 미구현,
시스템 다운, 장시간 시스템 응답 지연, 시스템 복구 후 데이터 왜곡 등의 경우를 말함
Medium
시스템의 흐름에 영향을 미치는 결함으로 부정확한 기능, 부정확한 프로세스, 데이터 필드 형식 오류, 데이터 베이스 에러, 보안 관련 오류 등의 경우를 말함
Low
시스템 흐름에는 영향을 미치지 않는 결함이나 상황에 맞지 않는 용도와 화면 구성 결함으로, 부정확한 GUI 및 메시지, 에러 시 메시지 미출력, 화면 상의 문법철자 오류 등을 말함
Mock 테스트
단위 테스트 시 Mock 객체를 사용하여 테스트하는 기법으로 특정 기능 또는 모듈에 대한 응답 결과를 미리 정의해 놓고 테스트 한다. 이는 특정 모듈이나 기능이 완벽히 개발 완료되지 않은 상태에서도 진행 할 수 있다.
테스트 전용객체를 테스트 더블이라 부른다.
통합 테스트
Dummy
객체에 전달에만 사용되고 실제로는 사용하지 않는 것이다. 주로 매개변수 목록을 채우는데 쓰인다.
Fake
실제로 동작하도록 구현되지만, 보통 빠른 구현을 위해 실제 환경과는 다르게 구현할 수 있다.
Stubs
테스트를 위해 미리 준비한 응답만을 제공하며
Mocks
스펙을 통해 정의된 응답을 받고 다른 응답을 받을 경우 예외를 발생하도록 구현되어 있으며, 응답에 대한 확인을
수행하는 역할을 한다.
장애 복구 테스트
테스트 유형
측정 결과 기준
웹 서버 장애
서비스 지속적 유지
웹 애플리케이션 장애
자동 세션 및 서비스 유지
데이터베이스 장애
10초내 서비스 복구
결함 관련 용어
에러
소프트웨어 개발 또는 유지 보수 수행 중에 발생한 부정확한 결과로, 개발자의 실수로 발생한 오타, 개발 명세서의
잘못된 이해, 서브루틴의 기능 오해 등이 있다.
오류
프로그램 코드 상의 존재하는 하는 것으로 비정상적인 프로그램과 정상적인 프로그램 버전 간의 차이로 인하여 발생되며, 잘못된 연산자가 사용된 경우에 프로그램이 서브루틴의 기능 오해이다.
실패
정상적인 프로그램과 비정상적인 프로그램의 실행 결과 차이를 의미
결함
버그, 에러, 오류, 실패, 프로그램 실행에 대한 문제점, 프로그램 개선사항 등의 전체를 포괄하는 용어
결함의 판단 기준
1.
기능 명세서에 가능하다고 명시된 동작을 수행하지 않는 경우
2.
기능 명세서에 불가능하다고 명시된 동작을 수행한 경우
3.
기능명세서에 명시되어 있지 않은 동작을 수행한 경우
4.
기능명세서에 명시되어 있지 않지만 수행해야 할 동작을 수행하지 않는 경우
5.
테스터의 시각에서 볼때 문제가 있다고 판단되는 경우
소프트웨어 테스터의 역할과 능력
역할
결함을 발견하기
결함을 가능한 빨리 발견하기
가능한 한 빨리 발견하여 결함이 수정 보완되었는지 확인
능력
탐구심과 문제해결력
완벽함을 추구하지만, 가능한 한도 내에서 적당한 수준 완벽성을 추구
재치와 능숙함, 설득력이 필요
코드인스펙션
체크리스트를 기반으로 검토하며 발견된 모든 결함을 제거해야 한다
단계별 형상 관리 기능
단계
설명
형상 식별
버전 관리
변경 통제
형상 감사
상태 보고
형상 식별
식별자 항목
내용
이름
객체 명
서술
SCI 타입, 프로젝트 식별자, 버전 정보
자원
제공/처리/참조/요구되는 객체
실현
기본 객체인 경우 : 단위 텍스트에 대한 대한 포인터 실현