테스트의 정의와 목적 

정의 

프로그램의 버그를 찾아내는 것 

목적 

요구 사항의 만족도 및 예상 결과와 설계 결과와의 차이점을 테스트하기 위해 시스템을 실행 평가하는 일 1 

소프트웨어의 품질을 측정하는 일  2 

오류를 발견하기 위해 프로그램이나 시스템을 수행하는 일  3 


테스트의 종류 

기본 단위 테스팅(Unit Testing) 

독립적인 환경에서 하나의 모듈만을 테스트하는 것 

 화이트 박스 테스트(White Box Test) 

 블랙 박스 테스트(Black Box Test) 


통합 테스팅(Integration Testing) 

시스템 모듈 간의 상호 인터페이스에 대한 테스트 

 하향식 테스트(Top-down Test) 

 상향식 테스트(Bottom-up Test) 

 샌드위치 테스트(Sandwich Test) 

 빅뱅 테스트(Big Bang Test) 


시스템 테스팅(System Testing) 

초기의 목적에 시스템이 부합하는지에 대한 테스팅 

모의 환경 또는 실제 환경에서 행해질 수 있음 



테스팅 검토(Testing Overview) 

프로그램이 실제로 구현할 수 있는 완전한 준비가 되었는가를 결정하는 것 


통합 테스트(Integration Testing) 

개념 

인터페이스와 관련된 오류를 발견해내는 테스트를 수행하는 것과 동시에 프로그램 구조를 구현하는 체계적인 기법 

종류 

시스템을 구성하는 여러 모듈을 어떤 순서로 결합하여 테스트할 것이냐에 따라 구분  


빅뱅 통합 

개요 

 각 모듈을 개별적으로 단위 테스트 

 상호 간의 인터페이스에 대하여는 고려하지 않음 

 모든 모듈의 단위 테스트가 끝난 시점에서 한꺼번에 결합 

 대규모 시스템에서는 비효율적 

– 한꺼번에 결합하여 프로그램을 테스트하여 이상한 결과가 생기는 경우 어느 모듈이 원인인가를 파악하기 어려움 

→ 모든 모듈 조사 필수 

 소규모적인 프로그램에서 모듈 구조가 잘 설계되어 인터페이스가 번잡하지 않을 경우 사용 


하향식 통합 

개요 

 상위 모듈로부터 하위 모듈을 향하여 수행하는 테스트 

 시스템을 구성하는 모듈의 실현 순서에 대하여 충분하게 들여다 볼 수 있음 

 유사한 시스템 개발의 경험이 있는 개발팀에서 많이 실시하는 전략 

 기능 모듈이 구조화되고, 계층 순으로 개발하는 프로세스가 잘 관리된 시스템 개발에서 많이 채용 

 하위 모듈을 호출하는 상위 모듈이 먼저 테스트되므로 별도의 테스트 드라이버 프로그램 작성 불필요 


스텁(Stub) 

 상위 모듈의 테스트 단계에서는 하위 모듈이 개발 중이던가 또는 테스트에 미착수의 상태에 있기 때문에 상위 모듈에 대하여 데이터와 제어를 주고 받는 가짜 하위 모듈 

 테스트 중의 상위 모듈로부터 데이터를 받아서 체크하기도 하고, 상위 모듈과의 인터페이스가 매칭되면 실행 방법은 관계 없음 


장단점 

장점 

 구조화된 모듈의 구축 순서에 따라서 테스트가 실시 

 개발의 조기 단계에서부터 테스트 이루어짐 

 시스템에 커다란 영향을 주는 상위 모듈 사이의 테스트가 먼저 이루어져서 테스트 범위가 단계적으로 내려가므로 테스트 확인하기 쉬움 

 드라이버와 비교해서 스텁 쪽이 작성하기 쉬움 

단점 

 시스템 전체의 성능이나 기능의 실현성에서 중심이 되는 모듈이 하위에 존재하는 경우에는 그 단계까지 테스트가 진행되지 않으면 확인 불가 

 충분히 테스트된 모듈을 부품으로서 사용하는 경우에 상위 모듈과 부품과의 사이에 인터페이스가 준비되지 않을 경우는 새로운 부품을 개발해야 되는지의 판단이 지연 


상향식 통합 

개요 

 계층화된 모듈 구조의 하위 모듈로부터 상위 모듈을 향하여 테스트를 실시하는 방법 

 개발하는 시스템 가운데 실제로 실현 가능한지 여부를 확인하는 일이 곤란한 불확실한 요소를 포함하는 경우에 자주 취하는 전략 


테스트 드라이버 

가짜 상위 모듈 

 테스트를 실시하는 데에는 테스트가 끝난 하위 모듈을 호출하는 상위 모듈을 준비할 필요 

 상위 모듈은 개발 중이던가 테스트가 착수되지 않았기 때문에 사용할 수 없음 

 상위 모듈 대신 하위 모듈을 호출하여 아규먼트를 끄집어 내는 가짜의 상위 모듈을 테스트용으로 작성 

역할

– 하위 모듈의 호출 환경의 설정 

– 하위 모듈의 호출 제어 

– 하위 모듈에의 데이터 전달 

– 하위 모듈로부터 데이터 수취 


장단점 

장점 

 하위 모듈의 개발을 테스트까지 독립적이며 또한 병행하여 실시 

 충분히 테스트된 부품으로써 모듈을 많이 사용하는 경우에는 부품의 조합 방법을 확인하고 나서 테스트 실시 


단점 

 테스트를 개시할 때까지 하위 모듈 사이의 인터페이스가 확인되지 않음 

– 시스템을 구성하는 상위 모듈 사이의 인터페이스 조정은 테스트 맨 끝에 수행 

– 상위 모듈의 테스트 단계에서 인터페이스 사이에 결함이 발견되면 그 영향은 하위 모듈 전체로 파급 

 테스트 드라이버의 작성에 추가로 노력과 비용 필요 



시스템 테스팅(System Testing) 

정의 

기능, 성능, 스트레스, 보안, 용량, 사용용이성, 복구, 신뢰성, 호환성 등등 여러 유형 시험들의 집합 


외부 기능 테스트(Function Test) 

정의 

소프트웨어에 대한 외부로부터의 시각에서 요구분석 단계에서 정의된 외부명세(External Specification)의 충족성을 테스트 

내부 기능 테스트(Facility Test) 

정의 

사용자의 상세 기능 요구를 요구명세서의 문장 한 줄 한 줄 하나를 짚어가며 테스트 

부피 테스트(Volume Test) 

정의 

소프트웨어로 하여금 상당량의 데이터를 처리해 보도록 여건을 조성하는 것 

스트레스 테스트(Stress Test) 

정의 

 소프트웨어에게 다양한 스트레스를 가해 보는 것 

 민감성 테스트(Sensitivity Test)라고 불리기도 함 


성능 테스트(Performance Test)  

정의 

소프트웨어의 효율성을 진단하는 것 

– 응답속도(Response Time) 

– 처리량(Throughput) 

– 처리속도(Traffic) 등 


보안 테스트(Security Test) 

정의 

 불법적인 소프트웨어 사용을 방지하는 테스트 

 자체의 보안체계(security mechanism)가 완벽한가 살피는 것 


사용용이성 테스트(Usability Test) 

정의 

인간공학적(Human Factors)인 시각에서 테스트해 보는 것 

사용성 테스트의 질문 예 

 사용자 인터페이스가 사용자들의 지적 수준, 교육, 환경과 적절한가? 

 소프트웨어의 출력이 의미 있고, 용어의 남용이 없고 횡설수설하지 않도록 꾸며졌나? 

 에러 메시지가 간단명료하며 이해하기 쉬운가? 

 문법, 형식, 스타일, 약어 사용 등에 일관성과 통일성을 갖추었나? 

 온라인 은행시스템처럼 정확성이 매우 중요할 때 구좌번호와 고객성명을 동시에 출력시키는 등 충분한 중복성이 제공되고 있는가? 

 필요 이상의 선택을 부여하여 사용상 혼란을 초래하지는 않는가? 

 입력을 받아들이는 순간 그 사실을 인정하는 증거를 출력하는가? 

 사용이 쉬운가? 예를 들어, 필요 이상의 마우스클릭이나 키보드의 시프트 키를 눌러야 하지는 않는가? 


기억장치 테스트(Storage Test) 

정의 

소프트웨어가 요구하는 주기억장치와 보조기억장치의 일정요량의 활용도를 테스트 


호환성 테스트(Compatibility Test) 

정의 

 많은 소프트웨어들은 철저하게 새롭기보다는 이미 사용 중인 소프트웨어의 대체용일 가능성이 높음  

 기존 소프트웨어와 호환성을 따져보는 것 


설치용이성 테스트(Installability Test) 

정의 

소프트웨어의 설치 절차는 예상외로 복잡할 수 있으므로 설치절차를 따라가며 그 타당성 및 용이성을 평가 

신뢰성 테스트(Reliability Test) 

정의 

소프트웨어가 오류를 발생시키고 고장(Failure)을 내는 정도를 테스트 


복구 테스트(Recovery Test) 

정의 

소프트웨어가 자체결함이나 하드웨어 고장 또는 데이터의 오류로부터 어떻게 회복하느냐를 평가하는 것 

구성 테스트(Configuration Test)  

정의 

시스템 테스트의 모든 가능한 구성에 대비하는 것은 현실적으로 어렵겠으나, 가능한 한 다양한 기종이나 구성 하에서 테스트해보는 것 

보수용이성 테스트(Serviceability Test) 

정의 

고장진단, 보수절차 및 문서 유지 보수 단계에서의 작용을 얼마나 용이하도록 하고 있는가를 테스트 








'소프트웨어공학 > 수업' 카테고리의 다른 글

22. 테스팅(11-2)  (0) 2017.07.04
20. 개발과 코딩(10-2)  (0) 2017.06.27
19. 개발과 코딩(10-1)  (0) 2017.06.27
18. UI 설계(9-2)  (3) 2017.06.15
17. UI 설계(9-1)  (0) 2017.06.15
Posted by 멜데스