비기능 테스트란?

완료됨

Azure Pipelines의 실행 기능 테스트에서 파이프라인에 Selenium UI 테스트를 추가했습니다. UI 테스트는 일종의 ‘기능 테스트’입니다. 이 파트에서는 파이프라인에서 실행할 수 있는 ‘비기능’ 테스트의 종류를 살펴봅니다.

팀은 먼저 비기능 테스트를 정의하고 이 테스트의 일부 형식에 관해 설명합니다. 그런 다음 파이프라인에 추가할 비기능 테스트를 결정합니다.

비기능 테스트는 기능 테스트와 어떻게 다른가요?

Azure Pipelines에서 기능 테스트 실행에서 기능 테스트와 비기능 테스트를 정의했습니다.

간단히 말해서, 기능 테스트는 소프트웨어의 각 기능이 해당 기능을 수행하는지 확인합니다. 즉, 기능 테스트는 애플리케이션의 기능을 확인합니다.

비기능 테스트에서는 성능 및 안정성과 같은 애플리케이션의 비기능 요소를 확인합니다. 인프라 구성 요소와 같이 앱이 아닌 시스템에서 비기능 테스트를 실행할 수도 있습니다. 비기능 테스트의 한 가지 예는 느린 응답 시간과 같은 문제를 일으키지 않고 애플리케이션에 동시에 로그인할 수 있는 사용자 수를 결정하는 것입니다.

예를 들어 Space Game 웹 사이트에서 기능 테스트를 통해 순위표가 올바르게 표시되고 사용자가 필터를 선택할 때 올바른 레코드를 표시하는지 확인할 수 있습니다. 비기능 테스트에서는 많은 사용자가 동시에 웹 사이트에 연결하더라도 순위표 필터링이 1초 이내에 완료되는지 확인할 수 있습니다.

비기능 테스트는 항상 측정 가능한 항목을 테스트합니다. 목표는 제품을 개선하는 것입니다. 예를 들어 애플리케이션에서 리소스를 얼마나 효율적으로 사용하는지 개선하거나 많은 고객이 동시에 사용하는 응답 시간을 개선하여 이 작업을 수행할 수 있습니다. 다음은 비기능 테스트에서 답변할 수 있는 몇 가지 질문입니다.

  • 정상 환경에서 애플리케이션이 어떻게 수행되나요?
  • 여러 사용자가 동시에 로그인하면 애플리케이션이 어떻게 수행되나요?
  • 애플리케이션은 얼마나 안전한가요?

어떤 종류의 비기능 테스트를 실행할 수 있나요?

비기능 테스트에는 여러 종류가 있습니다. 대부분은 광범위한 성능 테스트 및 보안 테스트 범주에 해당합니다.

성능 테스트

성능 테스트목표는 애플리케이션의 속도, 확장성 및 안정성을 향상시키는 것입니다. 속도 테스트는 애플리케이션의 응답 속도를 결정합니다. 스케일링 성능 테스트는 애플리케이션에서 처리할 수 있는 최대 사용자 부하를 결정합니다. 안정성 테스트는 애플리케이션이 다양한 부하에서 안정적으로 유지되는지를 판별합니다. 두 가지 일반적인 성능 테스트 형식은 부하 테스트와 스트레스 테스트입니다.

부하 테스트

부하 테스트는 실제 부하에서 애플리케이션의 성능을 결정합니다. 예를 들어 부하 테스트를 통해 애플리케이션이 SLA(서비스 수준 계약)의 상한에서 얼마나 잘 수행되는지 확인할 수 있습니다. 기본적으로 부하 테스트는 여러 사용자가 동시에 필요할 때 애플리케이션의 동작을 결정합니다.

사용자는 사람이 아닐 수 있습니다. 예를 들어 프린터 소프트웨어에 관한 부하 테스트에서 애플리케이션에 많은 양의 데이터를 보낼 수 있습니다. 메일 서버에 대한 부하 테스트에서는 수천 명의 동시 사용자를 시뮬레이션할 수 있습니다.

또한 부하 테스트는 애플리케이션이 최대로 작동할 때만 존재하는 문제를 발견하는 좋은 방법입니다. 즉, 버퍼 오버플로 및 메모리 누수와 같은 문제가 발생할 수 있는 경우입니다.

이 모듈에서는 Apache JMeter를 사용하여 부하 테스트를 수행합니다. 웹 사이트에 동시에 액세스하는 시뮬레이션된 사용자 집합을 사용합니다.

스트레스 테스트

스트레스 테스트는 부하가 많은 애플리케이션의 안정성과 견고성을 결정합니다. 애플리케이션에 지정된 것 이상으로 부하됩니다. 스트레스 테스트에서는 이러한 부하에서 애플리케이션이 작동 중단되는지 확인합니다. 애플리케이션에 장애가 발생하는 경우 스트레스 테스트에서는 정상적으로 실패하는지 확인합니다. 예를 들어 정상 실패에서는 정보를 제공하는 적절한 오류 메시지를 발행할 수 있습니다.

비정상적으로 과도하게 부하된 상태에서 애플리케이션이 작동해야 하는 시나리오는 일반적입니다. 예를 들어 비디오가 널리 퍼질 경우 서버가 추가 부하를 얼마나 잘 처리할 수 있는지 알고 싶을 것입니다. 또 다른 일반적인 시나리오는 휴가철 쇼핑 웹 사이트의 높은 트래픽입니다.

보안 테스트

보안 테스트에서는 애플리케이션에 취약성, 위협 및 위험이 없는지 확인합니다. 철저한 보안 테스트는 정보 침해 또는 수익 손실을 초래할 수 있는 시스템의 가능한 모든 허점과 약점을 찾습니다.

보안 테스트에는 여러 가지 형식이 있습니다. 그중 두 가지는 침투 테스트와 규정 준수 테스트입니다.

침투 테스트

침투 테스트(penetration testing) 또는 침투 테스트(pen testing)는 애플리케이션의 안전하지 않은 영역을 테스트하는 보안 테스트 형식입니다. 특히 공격자가 악용할 수 있는 취약성을 테스트합니다. 권한 부여되고 시뮬레이션된 사이버 공격은 일반적으로 침투 테스트의 일부입니다.

호환성 테스트

규정 준수 테스트 는 애플리케이션이 회사 내부 또는 외부의 일부 요구 사항을 준수하는지를 판별합니다. 예를 들어 의료 기관은 일반적으로 의료 정보 보호를 위한 데이터 개인 정보 보호 및 보안 조항을 제공하는 HIPAA(Health Insurance Portability and Accountability Act of 1996)를 준수해야 합니다.

조직에는 자체 보안 요구 사항이 있을 수도 있습니다. 소프트웨어가 이 요구 사항을 준수하는지 테스트해야 합니다. 예를 들어 Linux 시스템에서 기본 사용자 마스크는 027 이상으로 제한되어야 합니다. 보안 테스트를 통해 이 요구 사항이 충족되었음을 증명해야 합니다.

계획

이 모듈의 나머지 단계에서는 Azure DevOps 환경을 설정하고, Apache JMeter를 사용하여 부하 테스트 계획에 대해 알아보고, Azure Pipelines에서 부하 테스트를 실행합니다.

지식 점검

1.

최근에 웹앱을 데이터베이스에 연결했습니다. 페이지가 로드되면 데이터베이스 레코드가 표시됩니다. 데이터베이스 호출 때문에 페이지가 로드되는 데 1초 이상 걸리지 않는지 확인하려 합니다. 어떤 종류의 비기능 테스트를 사용할 수 있나요?

2.

웹 사이트에서 지역 공연장의 콘서트 티켓을 판매합니다. 이 장소에서는 여러 날에 걸친 행사를 주최하고 있으며, 인기 있는 많은 공연자가 참여하고 있습니다. 이 웹 사이트에서 트래픽 급증을 처리할 수 ​​없을까봐 걱정이 됩니다. 어떤 종류의 테스트를 하면 안심할 수 있을까요?

3.

웹 사이트에서 해커가 중요한 데이터에 액세스할 수 있는 취약성을 노출하는 것으로 의심됩니다. 이 취약성을 검색하기 위해 실행할 수 있는 비기능 테스트의 종류는 무엇인가요?