지난번에, CSTS(Certified Software Test Specialist) 시험의 전반적인 내용과, 등급별 차이점, 출제 기준에 대해서 알아보았습니다.
공부를 해보니, IT공부를 해오신 분들이라면 크게 양이 많거나 어려운 내용은 아니라서 1-2주일이면 준비할 수 있을 것 같습니다. (일반등급에 국한해서 말씀드립니다.)
하지만, IT 공부가 조금 낯설거나 초보자들에게는 3-4주정도 시간을 잡고 문제 풀이 위주로 공부하는 것이 좋을 것 같습니다.
실제 강의를 찍어서 올리지는 못하고, 학습한 컨텐츠를 올리므로 아무래도 IT공부를 기존에 하신분들은 이해가 빠르게 되실 것 같은데, 만약 이해가 잘 되지 않는 부분이 있다면 메일 또는 댓글로 저에게 말씀해주세요. :-)
1. 테스트 개요
테스트 개념 및 용어 (7문제)
1. 테스트 개념
(1) 테스트 목적 (1-2문제)
-소프트웨어 테스트는 소프트웨어가 다양한 품질 기준에 맞춰서, 프로그램으로서 잘 실행되고 그 결과가 올바른지 판단하는 과정을 의미합니다.
-소프트웨어의 에러를 발견하고, 그 에러를 개선하면서 소프트웨어의 전체적인 품질을 측정하는 일련의 활동입니다.
(2) 오류, 결함, 장애 (중요) (2-3문제)
오류 (Human Error) |
-사람에 의해 발생되는 실수 Ex) 곱하기를 입력해야 하는데, 더하기를 입력한다. -요구사항을 제대로 파악하지 못한 실수 Ex) 고객이 A를 만들어 달라고 요구했는데, A’를 만들었다. -즉, 요구사항 불이행, 코딩 및 타이핑 실수 |
결함 (Fault, Defect) |
-에러로 발생한 잘못된 로직 Ex) 더하기를 입력하는 바람에, 2와 4를 입력했는데 곱해지지 않는다. |
오작동 (Failure) |
-프로그램 실행결과와 요구사항 기대결과간의 차이 Ex) 요구사항 기대결과(곱하기)는 8이지만, 프로그램 실행결과(더하기)는 6이 나왔다. -오작동은 결함에 의해서 발생하지만, 결함이 있다고 반드시 오작동이 발생하는 것은 아니다. Ex) 만약 2와2을 넣었다면? -> 결함이 있지만 기대 값과 결과 값이 일치한다. |
*오류의 종류
요구사항 오류 |
-사용자의 요구사항을 제대로 정의하지 못함 -사용자와 개발자간의 의사소통 장애 -시간 및 예산 등의 문제로 고의적 요구사항 누락 |
설계 오류 |
-요구사항을 설계 반영 시, 누락 및 반영하지 못함 |
코딩 오류 |
-개발을 잘 못함 -잘못된 요구사항을 개발함 |
기타 오류 |
-기타 표준사항 (SQL, 코딩, 문서 표준등을 준수하지 못함) Ex) 변수명을 정해줬는데, 그대로 하지 않음 -테스트 프로세스가 충분하지 않음 |
(3) 테스트와 품질 (중요)(1-2문제)
-‘좋은’ 소프트웨어라면 기본적으로 충족해야 하는 품질 특징입니다.
-각 특징의 의미를 소프트웨어의 관점에서 파악해야 합니다.
소프트웨어 품질특징 (ISO 9126) |
|
기능성 |
소프트웨어의 목적이 달성했는가? Ex) 로그인, 조회, 주문 등 |
사용성 |
사용하기 편리한가? Ex) UI구성, 반응형 웹, 디스플레이 해상도, 브라우저 호환성 등 |
신뢰성 |
요구되는 서비스가 잘 되는가? Ex) 에러 발생 최소화 |
이식성 |
변화하는 환경에서도 잘 작동 되는가? Ex) 윈도우 버전, 운영체제 별 작동 |
유지보수성 |
유지보수하기에 편리한가? Ex) 표준화 |
효율성 |
시스템적으로 효율적인가? Ex) 빠르긴 빠른데, CPU 80% 다 사용한다 -> No! |
*ISO 9126과(소프트웨어 품질평가 모델) ISO 14598(소프트웨어 평가절차 모델)을 통합한 ISO 25000(국제 표준화 기구(ISO)에서 제정한 S/W 품질평가를 위한 S/W품질평가 통합모델 표준)
테스트 분류(11문제)
(1) 테스트 분류 개요
소프트웨어 테스트는 위 V-model 에 나타난 것 처럼 개발 과정의 각 단계 (요구사항 정의 -> 분석 -> 설계 -> 모듈 개발)에 따라 적합한 테스트 유형이 있습니다.
[각 개발 단계 별 테스트 기법] *중요(2-3문제)
요구사항정의 |
인수테스트 (사용자) |
분석 |
시스템테스트(개발자, 품질관리자, 외부인) |
설계 |
통합테스트(개발자, 품질관리자, 외부인) |
모듈 |
단위테스트(개발자, 품질관리자, 외부인) |
각 테스트 유형을 상세히 살펴 보기 전에, 소프트웨어 테스트에서 중요한 ‘검증(Verification)’, ‘확인(Validation)’에 대한 개념을 짚어보도록 하겠습니다.
*중요(1-2문제)
구분 |
개념 |
검증 (Verification) |
검증은 말 그대로, 기능이 제대로 만들어졌는지 확인하는 일입니다. 프로그램의 정확도, 프로세스 또는 문서들이 요구사항을 제대로 따르는지를 재검토, 조사, 테스트, 감리 등을 하는 행위입니다. 소프트웨어의 ‘Function’에 초점을 맞추는 작업입니다.
|
확인 (Validation) |
확인은 구현이 잘 되어 있는지를 확인하는 일입니다. 즉, 사용자의 만족도, 사용자 사용의 시나리오, 행위에 초점을 맞추고 소프트웨어 개발 프로세스의 끝부분에서 소프트웨어를 평가하는 과정입니다. |
즉, 검증은 기능이 제대로 작동하는지를 검증하는 것이고 확인은 사용자 만족도에 제대로 부합하는지를 확인하는 것입니다.
(2)테스트 레벨(중요)(4-5문제)
V-model에서 확인한 각 개발 단계 별 요구되는 테스트 레벨에 대해 자세하게 알아보도록 하겠습니다.
구분 |
개념 |
단위테스트 (Unit Test) |
개발된 모듈(독립적으로 실행되는 단위)에 대한 테스트입니다. 예를 들어, 로그인 모듈, 로그아웃 모듈, 제품 조회 모듈, 주문 모듈 등 각 기능을 모듈로 구분하여 각 단위가 잘 작동하는지 테스트하는 것입니다.
프로그램을 개발하는 것은 모듈(실제 작동 코드)과 그 모듈을 호출하는 모듈(호출 모듈)이 필요합니다.
(1)만약에 실제 작동 코드(로그인 모듈)을 개발했지만, 이 로그인 모듈을 호출할 모듈이 없는 경우에는 = 테스트 드라이버 (Test driver) 가 필요합니다.
(2)이번엔 반대로, 호출할 모듈을 있지만, 실제 작동 모듈이 없는 경우에는 호출하는 모듈을 테스트하기 위해 = 테스트 스텁 (Test stub)이 필요합니다. 함수와 헤더 등 코드 루틴만 정의하고 내부 코드는 구현되지 않은 경우입니다.
[출처: tino blog] |
통합테스트 (Integration Test) |
모듈을 통합하여, 시나리오별로 연결하고, 모듈 간의 상호작용을 테스트합니다. 주의할 점은, 개별적인 모듈에 대해서 테스트가 불충분하여 오류가 발생할 수 있으며 개별 모듈이 동일한 전역변수를 사용하는 경우 오류가 발생할 수 있다는 점입니다.
|
시스템테스트 (System Test) |
시스템 테스트는 기능적 부분과 비기능적 요소 모두를 포함하여 테스트를 수행합니다. 기능적 부분의 요소는, 사용자의 요구사항이 제대로 반영되었는지의 초점을 맞추는 것이고 비기능적 요구사항은 시스템의 전반적인 성능, 보안성, 신뢰성, 사용성을 포함하는 것입니다. |
인수테스트 (Acceptance Test) |
인수테스트는, 위 세 가지의 테스트와 달리 실제 환경에서 사용자가 직접 테스트를 수행하는 것을 의미합니다. 요구사항을 만족하는지를 검수하고 시스템 테스트에서 사용한 데이터 입력값(테스트케이스)을 사용할 수 있습니다. 인수테스트는 알파 테스트, 베타 테스트로 나뉠 수 있습니다.
(1)알파 테스트: 사용자가 통제된 상황(개발자 환경)에서 직접 테스트를 하는 테스트입니다. (2)베타 테스트: 개발자가 참여하지 않은, 제약 없는 상황에서 일정기간 동안 일정한 수의 사용자가 테스트하는 기법입니다. |
(3) 테스트 유형 (1-2문제)
구분 |
개념 |
기능 적합성 테스트 |
사용자의 요구사항, 즉 기능을 제대로 충족하는지 확인하는 테스트입니다. |
성능 효율성 테스트 |
속도 및 프로그램이 돌아가는 성능에 대한 것을 테스트합니다. |
호환성 테스트 |
브라우저 별, 환경 설정 별 프로그램이 잘 호환되는지 테스트합니다. |
신뢰성 테스트 |
시스템이 어느 기간 동안에 요구되는 서비스를 제공하는 능력을 측정하기 위한 테스트입니다. |
보안성 테스트 |
암호화, 암호화 통신 등 보안성을 확인하는 테스트입니다. |
유지보수성 테스트 |
이미 운영되고 있는 시스템에서 수행되는 것입니다. 소프트웨어나 시스템이 변경, 단종되었거나 마이그레이션 될 때 발생합니다. 변경된 부분에 대한 테스팅 이외에도 변경하지 않은 시스템 요소에 대한 리그레이션 테스팅도 고려해야 합니다. |
이식성 테스트 |
현재 하드웨어 또는 소프트웨어 환경에서 전송할 소프트웨어의 유연성을 테스트합니다. |
사용성 테스트 |
UI (User Interface), 반응형 웹, 디스플레이 해상도 등 사용자의 사용성을 테스트합니다. |
각 단계 별로 지정된 문제수와 핵심 내용에 표시를 해두었습니다. 다음에는 이에 해당하는 실제 기출문제를 함께 풀어보도록 하겠습니다!
모두들 화이팅 :-)
-끝
* 문의사항 있으시면 메일 또는 댓글 주세요
김민지 메일_bigdataleader@naver.com