Quality Assurance
의 약자로 품질 보증을 말한다
제품 출시 이전에 각종 테스트(Test)및 검수 작업을 하는 업무
일정 수준의 품질(Quality)을 가질 수 있도록 제품 출시 이전에 각종 테스트(Test) 및 검수 작업을 하는 업무
비슷한 용어로 ‘QC’가 있으며 ‘Quality Control’의 약자로 품질 관리를 의미
QA(Quality Assurance) : 제품개발단계 품질보증 활동(고품질 제품 확보가 주요 목적)
QC(Quality Control) : 제품양산단계 품질관리 (불량품 제거가 주요 목적)
소프트웨어 품질(‘제품품질’ + ‘프로세스 품질’)로 결과가 산출
제품 품질이란 사용자가 소프트웨어 제품을 사용하는데 있어 직접적인 영향을 미치는, 즉. 소프트웨어 제품 자체가 가지고 있는 품질을 말한다.
프로세스 품질이란 소프트웨어 제품의 최종 품질에 영향을 줄 수 있는 소프트웨어 개발 과정에서 수행되는 작업(프로세스)품질을 말한다.
프로세스 품질 향상을 위한 심화 활동으로 CMMI,SPICE 등을 통해 확인
SPICE [Software Process Improvement and Capability dEtermination]
SW 프로세스 개선 평가에 관한 국제표준인 SPICE(ISO/IEC15504)
CMMI [Capability Maturity Model Integration]
미 카네기멜론대학 소프트웨어 공학연구소(SEI)와 산업계가 공동으로 개발, 보급하고 있는 소프트웨어 및 시스템 품질관리 인증으로, 정보시스템을 구축하는 기업의 능력 수준을 나타내는 기준
실제 실행하는 하나하나의 실체
QA업무에서는 대부분의 경우 테스트케이스(TestCase)를 의미
테스트케이스에서 중요한 부분은 예상된 결과나 산출물을 정의
테스트는 프로그램을 개발한 개발자보다 다른 개발자나 테스트 전문가가 하는것이 더 효과적
프로그램 개발 조직 부서는 자신의 프로그램을 테스트 하지않아야 함
각 테스트의 결과들을 철저하게 검사
테스트케이스는 예상되고 알맞은 값뿐만 아니라 예상하지 못하고 틀린 값도 있어야함
수행되어야 할 기능만 검사하는 것은 테스트의 절반만 수행한 것임
한번 쓰고 버릴 프로그램이 아니라면 테스트케이스의 재사용 고려
오류가 발견되지 않을 거란 기대를 하지 않음
프로그램 섹션에서 더 많은 오류 존재의 개연성은 섹션에서 이미 찾은 많은 오류와 비례
테스트는 대단히 창조적이고 지적인 작업활동임
모든 테스트는 고객 요구사항 찾아낼 수 있어야 함
Pareto 원리는 소프트웨어 테스트에 적합적
테스트는 작은 부분에서 시작하고, 큰 부분으로 옮겨 가야함
Test를 실행하기 위해 요구되는 전체적인 활동을 Testing이라고 한다.
테스팅의 목적
잔존 결함 발견
개발 시스템 & 소프트웨어 대한 자신감부여
결함을 미연에발견
명세 충족 확인
사용자 및 비즈니스의 요구 충족 확인
개발 프로세스 점검, 이슈 제거
논리적 설계의 구현 검증
시스템 & 소프트웨어가 적절히 동작을 확인
소프트웨어의 결함을 찾아내고 수정하기 위해서 가능한 많은 장애의 원인을 발생시키는 목적
예상된 대로 시스템이 동작하는지 확인하고, 요구사항에 맞는지 확신을 얻는 목적
특정 시간 또는 정해진 시간에 시스템 & 소프트웨어를 출시하는 것에 대한 리스크를 개발 프로젝트 관련자에게 전달하는 목적
변경사항을 추가적으로 개발하는 중에 새로운 결함이 유입되었는지 확인하는 테스팅(Regression Testing) 목적
신뢰성 또는 가용성과 같은 시스템의 특성을 평가하기 위한 목적