테스팅의 독립성(Test independence)

1. 테스팅 독립

1) 테스팅 역할을 테스트 엔지니어에게로 분리 할 때의 장점

- 개발자의 개발활동 집중에 도움이 됨

- 교육받은 전문적인 테스트 엔지니어가 독립적인 시각을 확보하여 객관적인 테스트를 진행할 수 있음


2. 테스팅의 독립성

- 테스트 독립성: 테스팅이 개발로부터 얼마나 독립적인지를 나타냄

- 테스트 수행에 있어 일정 수준의 독립성 확보는 개발에서 찾기 어려운 결함과 장애를 찾아내는데 효율적, 효과적임

(개발 조직의 테스터는 결함을 보고하는데 적극적이지 않을 수 있음, 소프트웨어 개발자가 자신이 작성한 소프트웨어에 대한 편향된 애착을 줄임)


1) 테스팅 독립성 정의 (단계가 올라갈수록 독립성이 높아짐)

- 아웃소스 테스트(Outsourced testing)가 인소스드 테스트(Insourced testing)에 비해 독립성이 더 높음

- 아웃소스드 테스팅은 테스트 독립성은 높으나 개발 관련 정보와 거리가 멀어 개발 정보를 적절하게 제공해야 함

- 제 3자 테스팅 조직의 테스팅이나 아웃소스드 테스팅은 개발 이해관계 조직과 소통을 잘해야 테스팅을 성공적으로 수행할 가능성이 높음

- 아웃소스드 테스팅은 잘 정의한 요구사항의 필요성이 높음

- 개발 조직 테스터나 개발자가 테스팅을 진행하면 포지티브 테스트케이스 개발과 실행에 편중함

- 이해관계자를 대상으로 하는 독립적인 보고는 일반적으로 독립성이 높은 별도의 테스팅 조직, 아웃소싱 조직, 사업조직, 사용자 커뮤니티, 다른 비개발 기술조직이 테스트한 경우에 가능

1단계(독립성 낮음) - 테스트 대상 소프트웨어의 개발자가 설계한 테스트

2단계 - 개발자 내의 다른 인원이 설계한 테스트

3단계 - (프로젝트) 조직내 독립적 테스트팀 또는 그룹이 설계한 테스트

4단계 - 비지니스 조직, 사용자 커뮤니티, IT조직 소속의 독립적 테스터가 설계한 테스트

5단계 - 사용성, 보안성, 인증 테스터처럼 특정 테스트 분야를 전문으로 하는 독립적 테스트 전문가가 설계한 테스트

(인증 테스터는 소프트웨어 제품이 표준과 규정을 준수하는지 입증하는 전문가)

6단계(독립성 높음) - 다른 조직 또는 다른 회사의 인원이 설계한 테스트(외부적인 조직에 의한 인증, 아웃소싱)


테스팅의 심리학

1. 명확한 테스트 목표 수립 필요

- 개발자 및 테스트 엔지니어의 일관성 있는 테스팅의 수행은 효율성과 효과성을 극대화시키는데 필수 요소


2. 테스팅이 제품의 리스크 관리 측면에서 매우 건설적인 활동

- 시스템에서 결함을 찾아내는 능력은 호기심, 전문적인 비평, 비관적인 시선, 세밀한 것에 주목하는 태도, 개발자 또는 개발팀 동료와의 원할한 의사소통, 결함을 유추해내는 결함을 필요로 함


3. 테스터, 검토자와 개발자(분석가, 설계자)간에 발생가능한 감정악화를 피해야 함

오류, 결함, 장애, 리뷰과정이 긍정적인 방법으로 의사소통 되어야 함, 

- 테스터와 개발자(분석가, 설계자)간에 발생할 수 있는 감정 악화를 피해야 함


4. 사실적인 정보를 긍정적인 방법으로 현명하게 전달할 수 있는 좋은 대인 관계 필요

결함이나 테스트 진행 상황, 리스크 요소에 대한 사실적인 정보를 긍정적인 방법으로 현명하게 전달할 수 있어야 함

- 결함 정보는 소프트웨어나 문서의 작성자가 해당 산출물 관련 기술을 개선하는데 도움을 줄 수 있음

- 테스팅 기간 동안 결함을 발견하고 수정하는 것은 이후의 시간과 비용을 절감할 수 있음, 리스크 요소를 줄일 수 있음


5. 테스터는 다른 관련 인원과의 의사소통과 친분을 개선할 수 있도록 최선을 다해야 함

- 검증된 방법

1) 다툼보다는 협력으로 시작한다.

- 더 나은 품질의 시스템을 개발하고자 하는 공통적인 목표를 모든 사람에게 주지시킴

2) 소프트웨어를 개발한 사람에 대한 비평을 배제하고, 중립적이고 사실에 근거한 제품의 결함만을 전달하려고 노력한다.

3) 다른 인원이 어떻게 느끼는지, 왜 그렇게 반응하는지 이해하도록 노력한다.

4) 상호간에 의사소통 했던 것을 상대방이 정확하게 이해했는지 확인한다.