웹 어플리케이션을 위한 성능 테스트 가이드 - patterns and practices
서문
- Identify the Test Environment
- Identify Performance Acceptance Criteria
- Plan and Design Tests
- Configure the Test Environment
- Implement the Test Design
- Execute the Test
- Analyze Results, Report, and Retest
Part 1: Introduction to Performance Testing
Chapter 1 - Fundamentals of Web Application Performance Testing
Learn what performance testing is.
성능 테스팅은 일반적으로 시스템에서 병목을 찾거나, 미래의 테스팅 계획을 수립하거나, 성능 튜닝 노력을 지원하거나, 성능의 목표와 필요를 준수하거나, 이해당사자들이 의사결정하는데 도움을 얻기 위해 이루어집니다.
Learn the core activities of performance testing.
성능 테스팅의 핵심 활동은 7가지로 이루어집니다.
- Identify Test Environment
테스트 환경을 확인합니다. 테스트 환경은 물리적인 테스트 환경 뿐만 아니라 테스트 팀이 사용가능한 자원이나 도구를 포함합니다. 물리적인 테스트 환경은 하드웨어, 소프트웨어, 네트워크 환경 설정 등을 포함합니다. 테스트의 전체 환경에 대해서 전반적으로 잘 이해한다면, 더 효과적으로 테스트 계획을 수립하고, 테스트를 설계할 수 있습니다. 또한 더 일찍 테스트 과제를 확인하는 데 도움이 됩니다. 프로젝트의 생애주기동안, 이 과정은 반드시 주기적으로 반복되어야 합니다. - Identify Performance Acceptance Criteria
성능 수락 기준을 확인합니다. 응답 시간, 처리량, 자원 활용 목표와 제약사항 등을 확인합니다. 일반적으로 유저는 응답 시간에 대해, 비즈니스는 처리량에 대해, 시스템은 자원 활용에 대해서 관심을 가집니다. 프로젝트의 성공을 확인하는 것은 이런 목표와 제약사항에만 머무르지 않습니다. 예를 들면, 여러 환경 설정의 조합에 대해서 성능 테스트를 평가하는 것은 가장 가치있는 성능 특징을 이끌어낼 수 있습니다. - Plan and Design Tests
테스트를 설계하고 계획합니다. 핵심 시나리오를 확인하고, 다양한 유저들의 가변성을 결정합니다. 또한 그 가변성을 묘사하는 방법, 테스트 자료를 정의하는 방법, 정보를 수집할 방법을 결정합니다. - 테스트 환경을 설정합니다.
테스트 환경, 도구와 각 전략을 실행하는데 필요한 자원을 준비합니다. 테스트 환경과 자원에 대한 모니터링이 꼭 필요합니다. - 테스트 디자인을 구현합니다.
테스트 설계를 기반으로 성능 테스트를 개발합니다. - 테스트를 실행합니다.
테스트를 실행하고, 모니터링합니다. 테스트, 테스트 데이터, 모아진 결과를 검증합니다. - 분석하고, 발표하고, 테스트를 반복합니다.
테스트 결과를 강화시키고, 공유합니다. 개인적으로, 또한 교차가능팀으로서 데이터를 분석합니다. 남아있는 테스트를 중요도에 따라서 재배열하고, 필요한 것은 재실행합니다.
Learn why performance testing matters.
상위 레벨에서, 성능 테스트는 비용, 기회비용, 지속성 등과 관련된 방향을 정하는 데 사용됩니다. 성능 테스트를 수행하는 더 구체적인 이유는 다음과 같습니다.
Learn about the relevance of project context to performance testing.
성능 테스트 프로젝트가 성공적이기 위해서는, 성능 테스트와 테스트 그 자체에 대한 두 가지 접근이 프로젝트의 여건에 비추어 볼 때 반드시 둘 다 타당해야 합니다. 프로젝트의 문맥에 대한 이해가 부족하다면, 성능 테스트는 테스터의 성능이나 테스트팀이 중요하다고 생각하는 것에만 집중하게 될 것입니다. 또한 진실로 중요한 것들과는 반대로, 흔히 시간을 낭비하고, 불만과 갈등을 겪게 될 것입니다.
프로젝트의 환경에는 다음과 같은 것들이 포함됩니다.
- 프로젝트의 비전
- 성능 테스트의 목표
- 성능 성공 기준
- 개발 생애 주기
- 프로젝트 스케줄
- 프로젝트의 비용
- 사용가능한 툴과 환경
- 테스터와 팀의 스킬셋
- 성능 관심의 우선순위
- 성능이 나쁜 어플리케이션이 비즈니스에 미치는 영향
Learn how tuning fits into the performance testing cycle.
Summary
성능 테스팅은 시스템의 병목을 찾는것, 미래의 테스팅을 위한 베이스라인을 설정하는 것, 성능 튜닝 노력을 도와주는 것, 성능 목표와 요구 기준을 결정하는 것을 도와줍니다. 성능 테스트를 일찍 도입하는 것은 중요한 가치를 프로젝트에 제공할 것입니다.
성능 테스트가 성공적이기 위해서는, 테스팅은 반드시 프로젝트의 환경에 적절해야합니다.
성능 분석을 받아들일 수 없다면, 어플리케이션의 성능 수준을 위해서 통상적으로 성능 테스트에서 성능 튜닝으로 관심을 옮기길 원할 것입니다. 또한 미래의 시스템의 성능을 향상시키기위해 투입되는 리소스를 줄이기 위해서도 튜닝에 신경써야 합니다.
성능 테스트, 로드 테스트, 부하 테스트는 각각 다른 목적을 가진 성능 테스팅의 하위 카테고리입니다.
기준선을 만드는 것은 일반적으로 프로젝트의 효율을 증가시킬 것입니다.
Chapter 2 - Types of Performance Testing
- Learn about various types of performance tests.
- Understand the values and benefits associated with each type of performance testing.
- Understand the potential disadvantages of each type of performance testing.
Summary
성능 테스팅은 넓고 복잡한 활동입니다. 성능 테스팅은 많은 form을 가질 수 있고, 많은 리스크를 질 수 있으며, 조직에 넓은 관점의 가치를 가져다 줄 수 있습니다.
리스크를 줄이거나, 비용을 줄이거나, 주어진 프로젝트의 성능을 테스트하면서 적절한 테스트 과정을 적용하기 위해서 다른 성능 테스트의 종류를 이해하는 것은 중요합니다.
여러 종류의 성능 테스트 코스를 적용하기 위해서, 다음의 키 포인트를 평가해야합니다. - 성능 테스트의 목적
- 성능 테스트의 환경. 예를 들면, 관여되는 자원, 비용, 성능테스트로 인해 잠재적으로 돌아오는 것.
Chapter 3 - Risks Addressed Through Performance Testing
- Understand how speed, scalability, and stability are viewed from a performance-testing perspective.
- Learn how performance testing can be used to mitigate risks related to speed, scalability, and stability.
- Learn about the aspects of these risks that performance testing does not adequately address.
Summary
거의 모든 어플리케이션과 비즈니스에 관련된 리스크는 성능 테스팅을 통해서 정리된다고 할 수 있다. 리스크는 사용자의 만족과 비즈니스 목표를 만족할 수 있는 어플리케이션의 능력을 포함한다.
일반적으로, 성능 테스팅의 리스크는 속도, 확장성, 안정성의 종류를 포함한다. 속도는 보통 end-user의 관심이고, 확장성은 비즈니스의 관심이며, 안정성은 기술적인 유지보수의 관심이다.
프로젝트에 연관된 리스크와 성능 테스팅이 사용되는 곳의 연관된 완화 전략을 확인하는 것은 거의 모든 곳에서 가치있고, 시간을 절약하는 방법으로 관찰된다.
Part 2: Exemplar Performance Testing Approaches
Chapter 4 - Web Application Performance Testing Core Activities
- Learn the seven core activities that are integral to the majority of performance-testing projects.
- Understand the seven core activities in sufficient detail to identify how your tasks and processes map to these activities.
- Understand various performance-testing approaches that can be built around the core activities.
Summary
성능 테스팅은 프로젝트의 각각 다른 단계에서 일어나는 일반적인 핵심 활동의 모음을 포함한다. 각 확동은 특별한 성격과 해결되어야할 과제를 가진다. 그 활동은 저자와 리뷰어가 경험한 고의적이고 성공적인 성능 테스트 프로젝트에서 적어도 활동 중 하나를 생략하는 적극적인 위험 기반 결정의 일부분이었던 것으로 밝혀졌습니다. 각 활동을 자세히 이해하고 나서 프로젝트의 환경에 가장 잘 맞는 방법으로 그 성능 테스팅을 적용하는 것이 중요합니다.
Chapter 5 - Coordinating Performance Testing with an Iteration-Based Process
- Learn an approach to coordinating performance testing within an iteration-based process.
- Learn how to detect and solve major issues early in the project.
- Learn how to maximize flexibility without sacrificing control.
- Learn how to provide managers and stakeholders with progress and value indicators.
- Learn how to provide a structure for capturing information that will not noticeably impact the release schedule.
- Learn how to apply an approach that is designed to embrace change, not simply to tolerate it.
Summary
반복 기반 절차 성능 테스팅은 애자일, XP, RUP와 같은 개발 주기에서 일반적인 방법입니다.
효과적이기 위해서, 성능 테스팅은 반복 계획과 절차의 환경에서 정확히 관리되어야 합니다.
Chapter 6 - Managing an Agile Performance Test Cycle
- Learn an approach to agile performance test management.
- Learn how to maximize flexibility without sacrificing control.
- Learn how to provide managers and stakeholders with progress and value indicators.
- Learn how to provide a structure for capturing information that will not noticeably impact the release schedule.
- Learn how to apply an approach designed to embrace change, not simply tolerate it.
Summary
애자일 프로젝트 환경에서의 성능 테스팅은 매우 유연한 방법으로 테스팅을 관리할 수 있게 해줍니다. 특히 이 접근법은 사업 비전을 재검토 하거나 그 시점에 성능 테스트를 추가하는 값에 기반한 과제 순위 재정렬을 할 수 있게 해줍니다.
Chapter 7 - Managing the Performance Test Cycle in a Regulated(CMMI) Environment
- Become familiar with a performance test management approach appropriate for CMMI, auditable, and highly regulated projects.
- Learn how to maximize effectiveness without sacrificing control or compliance.
- Learn how to provide managers and stakeholders with progress and value indicators.
- Learn how to provide a structure for capturing information within the schedule, not in addition to it.
- Learn how to apply an approach designed to adapt to change without generating excessive rework, management, or audit concerns.
Summary
CMMI에서, 회계 감사할 수 있는, 잘 규제된 성능 테스트는 잘 계획되고, 감시되는 환경을 수반합니다. 이 종류의 성능 테스트는 지난 활동 동안 발견된 어떤 결함을 해결하기 전까지 다음 활동을 결정하지 못하는 경우가 빈번하기 때문에 특히 도전적입니다. 이런 환경에서 성능 테스트를 잘 관리하는 핵심은 업무 항목을 프로젝트 계획과 연결하고, 세부사항을 계획에 추가하는 것입니다.
Part 3: Ientify the Test Environment
Chapter 8 - Evaluating Systems to Increase Performance-Testing Effectiveness
- Learn techniques to effectively and efficiently capture the system’s functions.
- Learn techniques to effectively and efficiently capture expected user activities.
- Learn techniques to effectively and efficiently capture the system’s logical and physical architecture.
Summary
시스템 평가는 성능 테스트 노력 전반에 걸쳐 진행중인 프로세스이지만 성능 테스트 프로젝트 초기에 수행 될 때 가장 많은 가치를 제공합니다.
시스템 평가 프로세스 중에 프로젝트 전체, 시스템 및 비즈니스 프로세스의 기능, 예상되는 사용자 활동, 시스템 아키텍처 및 성능 테스트를 수행하는 데 도움이되는 기타 세부 사항에 대한 정보를 수집합니다. 프로젝트의 특정 요구를 달성하십시오.
이 정보는 성능 목표 및 요구 사항 정의, 작업 부하 특성화, 성능 테스트 전략 및 계획 작성, 프로젝트 및 시스템 위험 평가에 도움이됩니다.
Part 4: Identify Performance Acceptance Criteria
Chapter 9 - Determining Performance Testing Objectives
- Learn how to identify and capture performance-testing objectives.
- Learn how to capture or estimate resource usage targets and thresholds.
- Learn how to capture or estimate resource budgets or allocations.
- Learn how to review and update various types of performance-testing objectives and communicate the updates to the team throughout the project as more information becomes available.
Summary
성능 테스트 목표를 결정하고 기록하는 것은 프로젝트가 이정표를 진행함에 따라 팀과 의사 소통하여 이러한 목표를 수립하고 업데이트하는 것입니다.
각 팀원들이 시간을 지키는 것이 항상 쉽지는 않더라도, 그들은 중요한 성능테스트 목표를 수립하는데 도움을 주는 정보를 공유하는데 수용적입니다.
이러한 목표에는 비즈니스 관련 메트릭 제공,로드시 자원 활용 데이터 확보, 응용 프로그램 서버 조정에 도움이되는 특정로드 생성 또는 각 웹 페이지에서 요청한 오브젝트 수 보고서 제공이 포함될 수 있습니다.
프로젝트 수명주기 초기에 성능 테스트 목표를 수집하는 것이 가장 중요하지만, 정기적으로 이러한 목표를 다시 검토하고 팀 구성원에게 새로운 목표를 추가하고 싶은지 물어 보는 것도 중요합니다.
Chapter 10 - Quantifying End-User Response Time Goals
- Learn how to identify the difference between performance requirements and performance goals.
- Learn how to apply several methods for capturing subjective performance requirements and goals.
Summary
응답 시간 목표를 정량화하는 것은 사용자의 응용 프로그램 성능에 대한 인식을 표현하는 것과 밀접하게 관련됩니다.
대부분의 경우 응용 프로그램 사용자는 화면에 데이터를 표시하는 데 걸리는 시간, 응용 프로그램 처리량, 데이터베이스에서 지원해야하는 초당 트랜잭션 수를 명확하게 나타낼 수 없습니다.
그러나 사용자는 이전 경험, 작업의 중요성 및 기대치 설정 방법과 같은 여러 요소의 결과 인 노출 수를 기준으로 응용 프로그램의 성능 동작을 확인합니다.
Chapter 11 - Consolidating Various Types of Performance Acceptance Criteria
- Learn how to identify and capture performance requirements and testing objectives based on the perspectives of system users, business owners of the system, and the project team, in addition to compliance expectations and technological considerations.
- Learn how to consolidate this information into a single set of verifiable, complementary performance acceptance criteria.
- Learn how to review and update the performance acceptance criteria throughout the project as more information becomes available.
Summary
성능 요구 사항 및 테스트 목적은 일반적으로 시스템 사용자, 비즈니스 소유자 및 프로젝트 팀의 관점뿐 아니라 준수 기대 및 기술적 고려 사항에서 도출됩니다.
시스템 수용 기준의 완성도에 대한 확신을 갖기 위해서는 이러한 모든 다른 관점에서 수집 된 정보를 기반으로해야하며, 이는 검증 가능한 보완 성능 요구 사항 및 테스트 목표의 단일 세트가 되어야합니다.
가장 중요한 성능 특성은 응용 프로그램 사용자가 성능 저하로 좌절하지 않아야한다는 것입니다.
Part 5: Plan and Design Tests
Chapter 12 - Modeling Application Usage
- Learn the difference between concurrent users and user sessions and why this is important when defining input for Web load tests.
- Learn how to identify individual usage scenarios.
- Learn about the metrics that will help in developing realistic workload characterizations.
- Learn how to incorporate individual usage scenarios and their variances into user groups.
- Learn how to identify and model special considerations when blending groups of users into single models.
- Learn how to construct realistic workload models for Web applications based on expectations, documentation, observation, log files, and other data available prior to the release of the application to production.
Summary
생산 성과를 이해, 예측 또는 조정하려는 목적으로 성능 테스트를 수행 할 때 테스트 조건은 생산 사용 또는 예상되는 미래 비즈니스 양과 비슷하거나 유사해야합니다.
정확하고 예측 가능한 테스트 결과를 얻으려면 사용자 흐름은 페이지 흐름, 방문 빈도, 사용자가 페이지 사이에서 멈추는 기간 및 사용자가 웹 사이트와 상호 작용하는 방법과 관련된 다른 요소를 기반으로 고객 세션을 모델링해야합니다.
Chapter 13 - Determining Individual User Data and Variances
- Learn how to determine realistic durations and distribution patters for user delay times.
- Learn how to incorporate realistic user delays into test designs and test scripts.
- Learn about key variables to consider when defining workload characterization.
- Learn about the elements of user behavior that will aid with modeling the user experience when creating load tests.
Summary
작업량 특성화가 정확한 결과를 생성하려면 테스트 및 테스트 스크립트에 대한 실제 사용자 지연을 설계하는 프로세스가 중요합니다.
프로덕션 환경에서 응용 프로그램의 성능 특성 또는 향후 예상되는 비즈니스 볼륨을 이해하는 데 직접 적용 할 수있는 성능 테스트를 위해 테스트 된 작업 부하는 사용자 지연 패턴을 복제하여 현실을 나타낼 수 있어야합니다.
현실을 합리적으로 정확하게 표현하려면 대표적인 사용자 교차 섹션과 마찬가지로 개별 사용자 데이터 및 사용자 포기를 고려하여 가변성 및 임의성을 가진 사용자 지연을 모델링해야합니다.
Part 6: Execute Tests
Chapter 14 - Test Execution
- Understand common principles and considerations of performance test execution.
- Understand the common activities of performance test execution.
Summary
성능 테스트 실행에는 테스트 환경, 스크립트의 유효성 검사, 테스트 실행 및 테스트 결과 생성과 같은 활동이 포함됩니다. 또한 성능 특성의 기준선 및 벤치 마크를 생성하는 것도 포함 할 수 있습니다.
환경이 실제로 프로덕션 환경을 나타내도록 테스트 환경의 유효성을 확인하는 것이 중요합니다.
올바른 메트릭이 수집되고 있는지, 그리고 테스트 스크립트 디자인이 작업 부하 특성을 정확하게 시뮬레이션하고 있는지 확인하기 위해 테스트 스크립트의 유효성을 검사합니다.
Part 7: Analyze Results and Report
Chapter 15 - Key Mathematic Principles for Performance Testers
- Learn the uses, meanings of, and concepts underlying common mathematical and statistical principles as they apply to performance test analysis and reporting.
Summary
소프트웨어 개발 팀, 개발자, 테스터, 관리자 및 관리자 모두가 수학을 적용하고 통계 데이터를 해석하여 업무를 효율적으로 수행하는 방법을 알아야합니다. 성과 분석 및보고는 특히 수학 집중적입니다. 성능 테스트의 수학적 및 통계적 개념을 이해하여 올바른 성능 테스트 분석 및 보고를 수행 할 수 있습니다.
Chapter 16 - Performance Test Reporting Fundamentals
- Learn how to apply principles of effective reporting to performance test data.
- Learn when to share technical results versus produce stakeholder reports.
- Learn what questions various team members expect performance reports to answer.
Summary
성능 테스트 보고는 핵심 기술 및 비즈니스 결정을 지원하는 결과 데이터를 표시하는 프로세스입니다.
효과적인 보고서를 작성하려면 데이터를 가장 잘 표현하는 방법을 결정하기 전에 데이터의 대상을 고려해야합니다.
가장 효과적인 성능 테스트 결과는 결과를 얻은 방법에 대한 분석, 비교 및 세부 정보를 제시하며 중요한 비즈니스 의사 결정에 영향을 미칩니다.
Part 8: Performance-Testing Techniques
Chapter 17 - Load-Testing Web Applications
- Understand the key concepts of load testing.
- Learn how to load-test a Web application.
Summary
부하 테스트는 응용 프로그램의 최대 작동 용량과 성능을 저하시킬 수있는 병목 현상을 식별하는 데 도움이됩니다.
웹 응용 프로그램에서 부하 테스트를 수행하는 기본 방법은 성능에 중요한 핵심 시나리오를 식별하는 것입니다.
핵심 시나리오들 사이에서 모든 로드를 분배하기 위한 작업량 프로파일을 식별합니다.
실적 목표에 맞는지 확인하기 위해 수집하려는 측정 항목을 식별하십시오.
로드 테스트를 시뮬 레이팅하는 데 사용될 테스트 케이스를 작성하십시오.
도구를 사용하여 테스트 사례에 따라 로드를 시뮬레이트하고 메트릭을 캡처합니다.
마지막으로 테스트 중에 수집된 메트릭 데이터를 분석합니다.
Chapter 18 - Stress-Testing Web Applications
- Understand the key concepts of stress testing.
- Learn how to stress-test a Web application.
Summary
스트레스 테스트를 통해 극한 상황에서만 발생할 수있는 잠재적 인 애플리케이션 문제를 식별 할 수 있습니다. 이러한 조건은 메모리, 프로세서 사이클, 네트워크 대역폭 및 디스크 용량과 같은 시스템 리소스가 고갈 된 후부터 예측할 수없는 사용 패턴으로 인해 과도한 로드에 이르기까지 다양합니다.
스트레스 테스트는 응용 프로그램의 견고성, 안정성 및 안정성에 중점을 둔 목표 및 핵심 사용자 시나리오를 중심으로합니다. 스트레스 테스트의 효과는 정확한 방법론을 적용하고 테스트 결과를 효과적으로 분석 할 수 있는지에 달려 있습니다. 올바른 방법론을 적용하는 것은 사용자 부하 및 데이터 양 모두에 대한 작업량 조건을 재현하고 주요 시나리오를 재현하며 핵심 성과 지표를 해석하는 역량에 따라 다릅니다.
과제
- 성능 테스트의 정의 (1 page, chapter 1)
- 성능 테스트의 종류, 해당 테스트가 어떤 상황에서 필요한지 직접 생각하여 정리 (2 pages , chapter 2)
- 성능테스트시에 어떤 위험사항이 있는지 (1 page, chapter 3)
- 성능테스트시 어떤 작업들이 필요한지 (2 pages, part 2 (chapter 4,5,6,7))
- 테스트 환경 (1 page, part 3 (chapter 8))
- 성능테스트의 목적 (2 pages, part 4 (chapter 9,10,11))
- 테스트의 계획과 디자인 (2 pages, part 5 (chapter 12,13))
- 테스트 실행 (2 pages, part 6 (chapter 14))
- 테스트 결과 분석 (2 pages, part 7 (chapter 15,16))
- Load 테스트와 Stress 테스트의 차이 (1 pages, part 8 (chapter 17,18))
