//구글콘솔 광고 추가가

1, 소프트웨어 테스팅의 기초
용어: 커버리지, 디버깅, 결함, 오류, 장애, 밸리데이션, 베리피케이션
 
※ 학습목표
1.1. 테스팅이란 무엇인가?
1.2. 테스팅이 왜 필요한가?
1.3. 테스팅의 7가지 원리.
1.4. 테스트 프로세스(의 과정)
1.5. 테스팅의 심리학(어떤 마음으로 테스팅을 하는지)
 

1.1.1 SW 시스템 관점에서 테스팅의 필요성

▶ SW관점에서 테스팅
- 비즈니스 어플리케이션에서 소비자 제품에 이르기까지 폭넓게 생활의 많은 부분에 사용 > 비중은 계속 증가.
- 금전적인 손실, 시간 낭비, 비즈니스의 이미지 손상, 그리고 부상이나 사망(ex>에스컬레이터)에 이르기까지 다양하고 심각.
- 테스팅은 소프트웨어 시스템의 문제를 최소화하기 위해 필요.
 

1.1.2 소프트웨어 결함의 원인

▶ 소프트웨어 결함

오류(error)결함(defect)장애(failure)
인간의 행위, 실수
>> 코드 작성, 소프트웨어나 시스템 또는 문서 작성 시 결함을 만드는 오류
요구된 기능의 부정확한 처리를 말하며 이것으로 인해 고장 또는 장애를 발생시키는 원인이 됨.
<결함의 원인>
>>시간적인 압박, 복잡한 코드, 기반환경의 복잡성, 기술이나 시스템의 변경, 수많은 시스템 상호간의 연동.
>> 결함은 장애의 원인
BUT, 모든 결함이 장애를 발생시키는 것은 아님(결함이 있는 코드라도 실행되지 않으면 장애로 넘어가지 않음.)
코드에 존재하는 결함의 실행 또는 환경적 조건에 의해 부정확하게 처리되는 것을 의미함.
>> 결함 + 환경적인 조건(방사, 전자기장, 물리적 오염 등)

장애는 실제로 벌어져야 장애로 이어지고, 리스크가 큰애 부터 장애를 해결. 리스크가 없으면 나중에 수정.  
리스크 분석을 통해 어떤 것 부터 수정해야 하는지 판단, 우선순위로 해결 가능.
 

1.1.3 SW 개발, 유지보수, 운영 시 테스팅의 역할

▶ 테스팅
- 개발 초기요구사항 분석 단계부터 리뷰정적 분석을 통해 정적으로 시작 -- > 각각의 개발 단계에 대응하는 테스트 레벨별.
- 컴포넌트, 통합 테스팅은 개발 조직(개발자들) 중심으로 수행.
- 시스템이 갖춰진 이후의 테스팅은 독립적인 테스트 조직(전문 테스터들) 중심
- 테스트 레벨에 따른 테스트 
>> 소프트웨어 품질을 높이고, 결함 발생 가능성을 최소화.
- 유지보수 활동으로 변경 및 단종되거나 환경이 변경
>> 변경된 환경에 대해 운영 테스팅(리그레션 테스팅 -반복 테스팅).
>> 변경으로 인한 결함과 장애를 예방.
- 계약상 요구 조건 및 산업에 특화된 표준 만족
 

1.1.4 테스팅과 품질

품질 특성 및 향상
- ISO / IEC 9126 소프트웨어 제품 품질(기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성)
- 품질 향상 > 테스팅이 결함을 찾아내고, 발견된 결함 수정
- 품질 보증(Quality Assurance)
>> 이전 프로젝트를 통해 많은 테스트 경험과 정보 확보.
>> 발견된 결함의 근본 원인 이해를 통해 프로세스 개선.
>> 결함의 재발 방지 (품질보증(QA)을 통해 하고 싶은 것)
- 개발 표준이나 교육 훈련 그리고 결함 분석. 
 

1.1.5 테스팅, 얼마나 해야 충분한가?

적절한 테스팅 정도
- 리스크 수준을 고려
- 프로젝트 제약 사항(기술적인 내용, 비즈니스, 제품, 프로젝트 리스크, 시간(얼마나 시간이 있는가), 비용(테스트를 위해 쓸 수 있는 돈))
- 테스팅은 테스트된 SW나 시스템을 다음 단계로 전달하는 데 있어 프로젝트 이해관계자들이 릴리즈 결정을 내릴수 있도록 충분한 정보 제공.
 

1.2 테스팅이란 무엇인가?

테스팅 (테스팅의 목적 - 결함 발견 후 해결)
- 응용 프로그램 또는 시스템의 동작과 성능, 안정성이 사용자가 요구하는 수준을 만족하는지 확인하기 위해 결함을 발견 하는 메커니즘
> 정상 동작 여부 확인, 사용자의 기대 수준과 요구사항에 맞게 구현되고 동작하는지 확인, 개발 프로젝트의 리스크 정보를 정량적 수치(숫자로)로 의사결정권자에게 전달.
- 초기 개발 산출물 > 리뷰
- 테스트 케이스 작성 과정(결함 예방 활동)
- 다양한 테스팅 활동
- 테스팅의 일반적인 목적
>> 남아있는 결함 발견, 명세 충족 확인, 사용자 및 비즈니스의 요구 충족, 결함 예방, 품질 수준에 대한 자신감 획득과 정보 제공, 비즈니스 리스크를 감소 시키는 정보에 근간한 조언 제공, 개발 프로세스 점검, 이슈 제기, 논리적 설계의 구현 검증, 시스템과 소프트웨어가 적절히 동작함을 확인. 
- 관점에 따른 테스팅의 목적
>> 개발 과정 - 결함을 찾고 수정하기 위해 가능한 많은 장애 상황 재연
>> 인수 테스팅 - 예상대로 시스템이 동작하는지 확인, 요구사항 확인
>> 소프트웨어 품질 - 출시하는 것의 리스크를 관련자에게 전달
>> 유지보수 테스팅 - 변경에 대해 새로운 결함의 유입을 확인 (반복 테스트)
>> 운영 테스팅 - 신뢰성 또는 가용성 같은 시스템 특성을 평가
>> 테스팅은 문서의 리뷰와 함께 정적 분석에 의한 테스트 포함.

테스팅디버깅
- 장애를 통해 결함을 발견하는 것(동적 테스팅)
- 테스터가 수행
- 장애(결함)의 원인을 찾고, 분석하여 제거하는 개발 활동.
- 개발자가 수행

테스트 베이시스 - 요구사항 명세서(요구사항 분석) >> 가장 기초적인 문서 

728x90

+ Recent posts