구글 소프트웨어 공학
Software Engineering at Google
'참고자료' 카테고리의 다른 글
SWEBOK 번역 자료-일부만 번역됨 (1) | 2024.03.05 |
---|
SWEBOK 번역 자료-일부만 번역됨
'참고자료' 카테고리의 다른 글
구글 소프트웨어 공학 (0) | 2024.03.05 |
---|
소프트웨어 테스트 계획 Software Test Plan
.
소프트웨어 테스트 프로세스 Software Test Process
▶개념
말 그대로 소프트웨어 테스트에 대한 절차를 말한다. 반드시 지켜야 하는 절대적인 소프트웨어 테스트 절차는 없다. 하지만 소프트웨어 개발 절차와 같이 테스트 절차도 일정한 단계와 단계별로 수행하는 업무들이 대략 정해져 있다. 계획>분석>설계>구현>수행>검토>종료, 그리고 전 과정에 걸쳐 모니터링하고 제어하는 일이다. 각 단계의 작업들(activities와 tasks)은 단계별 설명에서 좀 더 자세히 다룬다.
▶그림
▶설명
SI와 같이 대형 프로젝트이거나 여러 조직 또는 관계자들이 참여하여 개발할 경우 프로세스 단계가 명확하고 해야할 일(activities and tasks)과 산출물이 많고 그 정의가 명확한다. 하지만 일반적으로 작은 규모의 개발 작업이나 유지보수 작업에서는 그 절차가 간단하고 작업량도 적다. 대부분 책에서 프로세스를 거창하게 설명하는 것은 대형 프로젝트를 진행할 때 참고하는 가이드라고 할 수 있겠다.
- 계획: 테스트 범위와 목표, 일정, 절차, 조직 등을 정의한다.
- 분석: 무엇을 테스트해야 하는지(What to test) 정의한다. 주어진 환경, 필요한 환경이나 도구, 테스트 대상, 테스트 목표(기능 목록, 성능 목표, 호환 범위 등등) 등을 정의한다.
- 설계: 어떻게 테스트해야지(How to test) 정의한다. 분석 결과로 추출된 테스트 대상이나 목표 환경에 따라 테스트 케이스, 테스트 데이터, 테스트 환경, 테스트 도구, 필요한 하드웨어와 네트워크 등을 설계한다.
- 구현: 설계에 따라 테스트 케이스를 개발하고 테스트 데이터와 환경 도구 등을 설치한다. 즉 동적으로 또는 정적으로 테스트가 가능한 테스트 환경을 구축하는 것이다.
- 수행: 테스트를 설계를 통해 테스트 준비가 갖춰지면 테스트를 수행한다. 테스트 도구나 프로그램을 이용하여 자동을 테스트(자동 테스트)를 수행할 수도 있고, 수동으로 테스트(수동 테스트)를 할 수도 있다. 또한 프로그램을 실행시키면서 진행하는 동적 테스트(Dynamic Test) 또는 소스 코드나 바이너리 코드를 분석하면서 결함을 찾아내는 정적 테스트(Static Test)를 할 수 있다.
- 종료 기준 평가 및 레포팅(Evaluation of Exit Criteria and Reporting): 말이 어렵지만 쉽게 설명하자면, 테스트를 그만할 때가 되었는지 검토하고, 그 결과를 기록하고 보고하는 것을 말한다. 테스트 종류와 범위, 기준 등은 계획 단계에 정해졌을 것이다. 그리고 그 이후에 작업하면서 변경 사항들이 계획에 반영되면서 일부 수정되었을 것이다. 이러한 계획 단계에 정의된 테스트 목표를 만족하는지 평가하고 레포팅한다.
- 종료: 종료하기 위해 정리하고, 다음 테스트를 위해 경험과 지식(Lesson learned)을 축적하는 것을 말한다.
▶활용/효과
테스트 절차를 정의해 놓으면 테스트 작업에 가이드라인을 제공할 수 있다. 테스트 절차는 개발 내용이나 범위, 또는 기술의 난위도와 조직의 크기 등에 따라 달라진다. 어쨓든 정의를 해 놓으면 누가 하더라고 지켜야하는 업무의 절차가 된다.
▶기타
필자의 경우 개발의 크기에 따라 여러가지 형태로 나뉜다. 개발자 한 명이 컴파일 에러를 수정하거나 한 두 줄의 소스코드 수정/추가로 버그를 수정하는 간단한 작업에서 부터 개발본부 대부분이 1~3년에 걸쳐 진행하는 대형 프로젝트까지 다양하다. 간단한 수정은 테스트나 리뷰 절차도 간단하지만, 대형 프로젝트는 엄격한 프로세스와 테스트 결과(기능 커버리지, 성능 목표 등)를 통과해야지만 프로젝트가 종료 된다. 상황에 따라 협의하여 정의한다.
'소프트웨어 테스트 개요' 카테고리의 다른 글
화이트박스 테스트 (0) | 2020.01.05 |
---|---|
블랙박스 테스트 (0) | 2020.01.05 |
화이트박스 테스트
▶개념
화이트박스 테스트는 투명한 상자 안을 들여다 보면서 테스트 한다는 의미를 가지고 있다. 블랙박스 테스트와 반대되는 개념이다. 블랙박스가 기능 명세서에 정의한 입력과 출력 값에 의해 올바르게 작동을 하고 있는지 확인하는 방법이라면, 화이트박스 테스트는 소프트웨어(프로그램/함수)를 구현하고 있는 있는 소스코드의 알고리즘과 처리 절차 등을 고려하여 테스트하는 방법이다.
▶그림
▶설명
예를 들면, 블랙박스 테스트의 경우 6, 8, + 기호가 입력될 경우 그 결과가 14가 나오면 더하기 연산에 대한 기능은 잘 구현되었다고 간주한다. 하지만 화이트박스의 경우
▶효과/효율/효용
블랙박스보다 더 철저하고 면밀한 테스트를 하고자 할 때 수행한다. 하지만 대부분 처리 절차와 알고리즘이 복잡한 경우 수동으로 할 수 있는 한계가 있기 때문에 자동화 도구를 이용한다. 소스코드를 입력 받아 자동으로 해석하고 수행 경로를 추출한 다음 그 경로 대로 수행할 수 있도록 테스트 데이터를 생성하는 경우이다. 최근 화이트박스 테스트 자동화 도구는 소스코드를 실행 가능한 프로그램으로 빌드하는 과정에서 수행 알고리즘과 조건 등을 모든 테스트 가능한 테스트케이스를 자동으로 생성할 뿐 아니라 비정상적인 명령이나 입력의 경우도 테스트할 수 있도록 비정상 테스트케이스도 생성하고, 자동으로 테스트케이스를 실행하기도 한다.
▶기타
'소프트웨어 테스트 개요' 카테고리의 다른 글
소프트웨어 테스트 프로세스 Software Test Process (0) | 2020.01.13 |
---|---|
블랙박스 테스트 (0) | 2020.01.05 |
Practical Software Testing E-book by www.softwaretestinghelp.com
블랙박스 테스트
▶정의
블랙박스 테스트란 테스트를 수행할 때 소프트웨어가 어떻게 작동하는지 세세한 알고리즘이나 처리 과정을 고려하지 않고, 입력과 결과만을 고려하여 테스트하는 방법을 말한다. 예를 들면 계산기 프로그램이 있다고 할 때 계산기가 올바르게 작동하는지 확인하기 위해 입력 값으로는 숫자와 사칙연산 기호를 입력하고, 그에 따른 결과가 올바르게 출력되는지 확인하는 방법이다.
▶설명
간단한 계산기 소프트웨어(프로그램 또는 함수)가 있다고 하자. 그리고 숫자 x와 y 그리고 더하기(+)가 입력되고 그 결과로 z가 나온다. 이 때 z 값이 맞는지 확인하기 위해 더하기 계산 과정은 고려하지 않고, x, y, z 값 만을 보고 판단하는 것이다.
▶그림: 사칙연산 계산기
즉 이러한 과정은 초등학교 과정에서 함수의 개념을 배울 때 사용했던 입구과 출구가 있는 사각형 도형을 생각하면 쉽게 이해할 수 있다. 그리고 그 함수의 내용은 들여다 보지 않고 테스트하기 때문에 블랙박스 테스트(혹은 테스팅)이라 부른다.
▶그림: 블랙박스 테스트 개요
▶효과/효율
블랙박스 테스트는 소프트웨어 특성 상 모든 복잡한 처리 알고리즘과 예외사항들을 고려하여 테스트 할 수 없기 때문에 사용한다. 또한 모든 테스트 엔지니어가 소프트웨어 내부의 처리과정을 모두 이해하고 테스트 하기란 불가능하다. 따라서 개발 현장에서는 대부분의 경우 블랙박스 테스트일 수 밖에 없는 것이 현실이다.
▶기타
'소프트웨어 테스트 개요' 카테고리의 다른 글
소프트웨어 테스트 프로세스 Software Test Process (0) | 2020.01.13 |
---|---|
화이트박스 테스트 (0) | 2020.01.05 |
> Foundation Level Syllabus :
>다운로드 홈페이지
https://www.istqb.org/downloads/category/2-foundation-level-documents.html
Foundation Level - ISTQB® International Software Testing Qualifications Board
www.istqb.org
'테스트 자료' 카테고리의 다른 글
Practical Software Testing E-book by www.softwaretestinghelp.com (0) | 2020.01.05 |
---|