본문 바로가기

1. QA/1.1 Syllabus

5.1 Test Organization (테스트 조직)

Terms

tester, test leader, test manager.

5.1.1 Test Organization and independence 

The effectiveness of finding defects by testing and reviews can be improved by using independent testers. 
Options for independence are:
- No independent testers. Developers test their own code.
- Independent testers within the development terms.
- Independent test team or group within the organization, reporting to project management or executive management.
- Independent testers from the business organization or user community.
- Independent test specialists for specific test targets such as usability testers, security testers or certification testers (who certify a software product against standards and regulations).
- Independent testers outsourced or external to the organization.

For large, complex or safety critical projects, it is usually best to have multiple level of testing, with some or all of the levels done by independent testers. Development staff may participate in testing, especially at the lower levels, but their lack of objectivity often limits their effectiveness. The independent testers may have the authority to require and define test processes and rules, but testers should take on such process-related roles only in the presence of a clear management mandate to do so.

The benefits of independence include:
- Independent testers see other and different defects, and are unbiased.
- An independent tester can verify assumptions people made during specification and implementation of the system.

Drawbacks include:
- Isolation from the development team (if tread as totally independent).
- Independent testers may be the bottleneck as the last checkpoint.
- Developers may lose a sense of responsibility for quality.

Testing tasks may be done by people in a specific testing role, or may be done by someone in another role, such as a project manager, quality manager, developer, business and domain expert, infrastructure or IT operation.


5.1.2 Tasks of the test leader and tester

In this syllabus two test positions are covered, test leader and tester. The activities and tasks performed by people in these two roles depend on the project and product context, the people in the roles, and the organization.

Sometimes the test leader is called a test manager or test coordinator. The role of the test leader may be performed by a project manager, a quality assurance manager or the manger of a test group. In larger projects two positions may exist: test leader and test manger. Typically the test leader plans, monitors and controls the testing activities and tasks as defined in Section 1.4.

Typical test leader tasks may include: 

- Coordinate the test strategy and plan with project managers and others.
- Write or review a test strategy for the project, and test policy for the organization.
- Contribute the testing perspective to other project activities, such as integration planning. 
- Plan the tests - considering the context and understanding the test objectives and risks - 
  including selecting test approaches, estimating the time, effort and cost of testing, acquiring 
  resources, defining test levels, cycles, and planning incident management.
- Initiate the specification, preparation, implementation and execution of tests, monitor the test results and check the exit criteria.
- Adapt planning based on test results and progress (sometimes documented in status reports) and take any action necessary to compensate for problems.
- Set up adequate configuration management of testware for traceability.
- Introduce suitable metrics for measuring test progress and evaluating the quality of the testing and the product.
- Decide what should be automated, to what degree, and how. 
- Select tools to support testing and organize any training in tool use for testers. 
- Decide about the implementation of the test environment.
- Write test summary reports based on the information gathered during testing. 

Typical tester tasks may include: 

- Review and contribute to test plans. 
- Analyze, review and assess user requirements, specifications and models for testability.
- Crate test specifications.
- Set up the test environment (often coordinating with system administration and network management).
- Prepare and acquire test data.
- Implement tests on all test levels, execute and log the tests, evaluate the results and document the deviations from expected results. 
- use test administration or management tools and test monitoring tools as required.
- Automate tests (may be supported by a developer or a test automation expert).
- Measure performance of components and systems (if applicable).
- Review tests developed by others.

People who work on test analysis, test design, specific test types or test automation may be specialists in these roles. Depending on the test level and the risks related to the product and the project, different people may take over the role of tester, keeping some degree of independence. Typically testers at the component and integration level would be developers, testers at the acceptance test level would be business experts and users, and testers for operational acceptance testing would be operators. 






5.1.1 테스트 조직과 독립성

독립적인 테스터를 활용하면 테스팅과 리뷰로 결함을 발견하는 효과성을 높일 수 있다.
독립적 테스터 및 조직 관련하여 고려할 수 있는 옵션  :
- 독립적이지 않은 테스터, 즉 개발자가 자신의 코드를 직접 테스트 함
- 개발 조직 내 독립적 테스터
- 조직 내 독립적 테스트 팀 또는 그룹
- 비지니스 조직, 사용자 커뮤니티, IT 조직으로부터 소싱한 독립적 테스터
- 사용성, 보안성, 인증 테스터처럼 특정 테스트 분야를 전문으로 하는 독립적 테스트 전문가
  (인증 테스터는 소프트웨어 제품이 표준과 규정을 준수하는지 입증하는 전문가)
- 아웃소싱 또는 조직외부의 독립적 테스터

다수의 테스트 레벨(Test Level)에 걸쳐 테스팅 하는 것이 강력한 테스팅을 위해 최선의 방법이 될 수 있다. 특히 거대하고 복잡한 또는 안전 최우선(Safety Critical) 프로젝트를 테스팅할 경우, 일부 또는 모든 테스트 레벨을 독립적인 테스터가 수행하게 된다. 개발 담당자는 테스팅(특히 하위 레벨 테스팅)에 효율적으로 참여할 수 있으나 객관성이 부족하여 효과적인 면에서는 한계점을 갖는다. 독립적 테스터는 테스트 프로세스와 규칙의 필요성을 강권하고 그 일부 또는 전부에 대해 정의하는 권한을 가질 수 있으나, 명확한 관리적 위임 하에서만 프로세스 관련 역할을 수행해야 한다.

독립성(테스팅 조직을 독립적으로 운영하는 것)의 장점 : 
- 독립적 테스터는 개발자와 다른 시각에서 다른 종류의 결함을 보는 것은 물룐 편향적이지 않다.
- 독립적 테스터는 시스템의 명세와 구현 단계에서 개발 관련자가 만든 가정을 입증할 수 있다.

독립성의 단점 : 
- 철저한 독립체로 간주된다면 개발팀과 개발 및 제품관련 정보로 부터 고립된다.
- 독립적 테스터는 마지막 체크 포인트로서의 역활을 수행하면서 병목으로 작용할 수 있다.
- 개발자가 품질에 대한 책임감을 잃을 수 있다.


테스팅 작업은 특정 테스팅 역할을 부여받은 인력 뿐만 아니라 프로젝트 관리자, 품질 관리자, 비지니스와 해당 분야 전문가, 인프라 또는 IT 운영자 등 다른 역할을 가진 인력에 의해서도 수행될 수 있다.


5.1.2 테스트 리더와 테스터의 업무

여기서는 테스트 리더와 테스터에 대해서만 살펴보도록 한다. 해당 인력이 수행하는 활동과 임무는 프로젝트, 제품 정황(Context), 역할을 수행하는 인력, 해당 조직에 따라 달라질 수 있다. 

테스트 리더는 테스팅 활동과 업무를 계획하고 모니터링하고 제어하는 역할을 수행하며, 테스트 관리자 또는 테스트 조정(Coordinator)라고도 한다. 프로젝트 관리자, 개발 관리자, 품질보증 관리자 또는 테스트 그룹 관리자가 테스트 리더의 역할을 수행한다. 대규모의 프로젝트에서는 두 직업이 별도로 존재할 수 있다. 테스트 리더와 테스트 관리자, 전형적으로 테스트 리더는 테스트 활동을 계획, 모니터와 제어하고 1.4 절에서 명시한 업무를 수행한다.

전형적인 테스트 리더의 역할과 임무 : 

- 테스트 전략과 계획을 프로젝트 관리자 및 다른 관련자와 조정한다.
- 프로젝트 테스트 전략과조직의 테스트 정책을 작성하고 검토한다.
- 테스팅 측면에서 통합 계획 활동 등 다른 프로젝트 활동에 기여한다.
- 정황을 감안하고 테스트 목적과 리스크를 이해하면서 테스트 계획을 수립한다. 테스트 계획은 테스트 접근법을 선택하고, 테스팅 시간 및 노력과 비용을 추정하고, 자원을 획득하고 테스트 레벨 및 테스트 사이클과 목표를 정의하고, 인시던트 관리를 계획하는 활동을 포함한다.
- 테스트 명세(설계), 준비, 구현과 실행, 테스트 결과 모니터링 및 완료조건 점검의 시작을 주도한다.
- 테스트 결과와 진척(때때로 상태 리포트로 문서화되어 있음)을 감안하여 계획 활동을 조정하고 문제점을 보완하기 위해 필요한 액션을 취한다.
- 추적성 확보를 위해 적절한 테스트웨어 형상 관리를 구성한다.
- 테스트 진척을 측정하는 메트릭은 물론, 테스팅 자체의 품질과 대상 제품의 품질을 평가하는 적절한 메트릭을 도입한다.
- 자동화되어야 할 대상, 범위, 방법을 결정한다.
- 테스팅을 지원할 툴은 선택하고 관련된 교육 훈련을 계획한다.
- 테스트 환경 구축과 관련된 사항을 결정한다.
- 테스팅하는 동안 수집한 정보를 근거로 테스트 요약 보고서를 작성한다.


전형적인 테스터의 역할과 임무 : 
- 테스트 계획을 검토하고 테스트 계획에 기여한다.
- 테스트 용이성 (Testablity) 확인을 위해 사용자 요구사항, 명세, 모델을 분석하고 검토하고 평가한다.
- 테스트 명세를 작성한다.
- 테스트 환경을 구축한다.
- 테스트 데이터를 준비하고 획득한다.
- 모든 테스트 레벨에서 테스트를 구현하고, 실제 테스트를 실행하고 기록하며, 실행 결과를 평가하고, 기대 결과와의 차이를 문서화한다.
- 필요 시 테스트 운영 및 관리 도구, 테스트 모니터링 도구를 사용한다.
- 테스트를 자동화 한다. (개발자나 테스트 자동화 전문가로부터 지원을 받을 수 있다.)
- 컴포넌트나 시스템의 성능을 측정한다. (프로젝트가 성능 측정 결과를 필요로 할 경우)
- 타인이 작성한 테스트를 검토한다.

테스트 분석, 테스트 설계, 특정 테스트 타입 또는 테스트 자동화 업무를 수행하는 담당자는 이러한 역할을 전담하는 전문가 일 수 있다. 테스트 레벨에 따라, 그리고 개발 대상 제품 및 프로젝트와 관련된 리스크에 따라 다양한 분야의 담당자가 일정한 수준의 독립성을 유지하면서 테스터의 역할을 담당할 수 있다. 전형적으로 컴포넌트 테스트와 통합 테스트 레벨에서의 테스터는 개발자이고, 인수 테스트 레벨에서의 테스터는 비지니스 전문가 또는 사용자일 것이다. 그리고 운영상의 인수 테스팅을 위한 테스터는 운영자일 것이다.