스테이징 환경에서 테스트하기

Hardin Park·2023년 10월 22일
0
post-thumbnail

Testing During Staging

  • "스테이징" 단계에서 테스팅 시 환경은 실제 프로덕션 환경과 유사해야 합니다.
  • 안정적인 빌드가 준비되면 기능, 비기능, 성능, 보안 등 다양한 테스트를 수행할 수 있습니다.
  • 기능 테스팅은 시스템 기능에 대한 요구사항의 구현을 테스트하여 시스템이 의도한 대로 작동하는지 확인하는 것입니다.
  • 비기능 테스팅은 시스템의 다른 품질 속성을 검토하여 기능이 어떻게 제공되는지를 결정합니다.

스테이징 환경이란?

  • 스테이징 환경은 소프트웨어를 자유롭게 테스트할 수 있는 라이브 프로덕션 환경에 가장 근접한 복제본입니다.
  • 스테이징과 프로덕션 환경은 매우 유사하지만 완전히 별개입니다.
  • 프로덕션 환경에서 롤아웃 및 롤백은 최종 사용자에게 직접적인 영향을 미칩니다.
  • 그러나 스테이징 환경에서는 모든 시스템 변경이 내부적으로 발생합니다.
  • 이를 통해 소프트웨어 팀은 사용자에게 영향을 주지 않고 더 자유롭게 실험하고 변경할 수 있습니다.
  • 스테이징을 통해 사용자의 성능 및 보안 취약점으로 이어질 수 있는 문제를 발견하고 제거할 수 있습니다.

스테이징 환경은 어떻게 구성하지?

  • 스테이징 환경은 라이브 프로덕션 환경에서 소프트웨어가 어떻게 작동하는지 엿볼 수 있다는 점을 감안할 때
  • 스테이징 환경은 동일한 서버, 데이터베이스 및 구성을 미러링해야 합니다.
  • 스테이징은 테스트를 위한 정적 환경일 수 있습니다.
  • 전용 구성 코드 및 인프라를 사용하여 동적 환경을 프로비저닝할 수도 있습니다.
  • 데이터 스테이징은 데이터 스토리지 및 웨어하우스 위치에 연결되는 임시 스토리지 영역입니다.
  • 장기 데이터 저장을 위한 것이 아닙니다.

스테이징 환경을 바라보는 서로 다른 시선

Functional Testing

  • 기능 테스트는 "Staging" 단계에서 중요한 역할을 하며,
  • 일부 기능 테스트는 이전 테스트에서 이미 수행되었을 수 있습니다.
  • 이 단계에서는 블랙박스 테스트 기법이 적용되어 원하는 범위를 달성하고 구현된 기능이 지정된 요구 사항(예: 스토리의 수용 기준)을 충족시키는지를 보장합니다.

User Acceptance Testing (UAT, 사용자 인수 테스트)

  • 소프트웨어가 실제 기능을 처리하고 사용자 기대치를 충족하는지 확인합니다.
  • Waterfall 소프트웨어 개발 모델은 테스트 단계가 끝날 때 수락 테스트를 수행하는 것이 일반적이지만
  • Agile 방법론에 따르면 UAT 프로세스는 각 스프린트가 끝날 때 또는 주요 스프린트가 끝날 때 발생합니다.
  • 5가지 유형의 UAT
    • 알파 테스트는 개발팀, 즉 QA 전문가가 회사를 떠나지 않고 제품을 검사하는 것입니다.
    • 베타 테스트는 대상 고객의 일부인 사람들에게 제품을 제공하는 것을 의미합니다. 대상 청중은 그것을 테스트하고 보고서를 제공합니다. 이 단계에서 새로운 버그를 식별할 수 있습니다. 아마도 전체 베타 테스트의 75%가 게임 테스트에 해당될 것입니다.
    • 계약 수락 테스트
      • 계약서 상에 사전정의되고 합의된 특정 승인 기준(criteria)과 명세(specifications)를 잣대로 하여 개발된 소프트웨어가 테스트됨
      • 프로젝트 팀이 계약 자체에 동의를 할 때 승인을 위한 관련 기준과 명세도 팀이 정의해야 함
      • 공급업자의 의무(obligations)가 충족되었는지를 보이기 위한 목적을 가진다.
  • 규정 승인 테스트를 통해 제품이 해당 분야의 법률 및 표준을 충족하는지 확인할 수 있습니다. 금융 및 의료 분야에서 가장 많이 사용됩니다.
  • 운영 승인 테스트
    • ‘운영상의 준비 테스팅(Operational Readiness Testing)’ 또는 ‘생산 승인 테스팅(Production Acceptance Testing)’라고도 알려짐
    • 소프트웨어/시스템이 사용되는걸 허용하기 위한 작업 흐름(workflows)이 준비 되어 있음을 보장하는 테스트. 백업 계획, 사용자 훈련, 다양한 유지보수 프로세스, 보안 체크 등을 위한 작업 흐름(프로세스와 절차)이 포함됨

Performance Testing

  • 성능 테스트는 "Staging" 단계에서 병목 현상과 성능 문제를 식별하기 위해 수행됩니다.
  • 실제 사용자 동작을 모방하는 스크립트를 정상 및 최대 부하 상태에서 실행하여 응답 시간, 처리량, 리소스 활용 등의 속성을 측정합니다.
  • 정확한 성능 테스트 결과를 얻으려면 스테이징 환경이 프로덕션 환경과 유사하게 구성되어야 하며, 데이터베이스 크기와 시스템 설정을 포함해야 합니다.

Think Time

  • 사용자가 다음 Request 를 보내기 전까지 활동하는 시간을 말한다.
  • 실제 별도의 서버 요청을 하지않고 웹문서를 보거나 컨텐츠를 즐기는 시간을 Think time 으로 분류한다.
  • 첫번째 요청에서 다음 요청을 보낼때까지의 시간이므로 Request Interval 로 부르기도 한다.

Security Testing

  • 보안 테스팅은 DevOps 파이프라인에서 DevSecOps라는 형태로 통합되며,
  • 보안 전문가들과의 협업을 통해 특수한 테스팅을 수행합니다.
  • 보안 툴은 DevOps 도구 체인에 통합되어 팀 전체에 결과를 공개합니다.
  • 이러한 테스팅은 보안 문제를 초기에 식별하는 데 도움이 됩니다.

DevSecOps란 무엇인가요?

  • DevSecOps는 소프트웨어 개발 프로세스의 모든 단계에서 보안 테스트를 통합하는 관행입니다.
  • 여기에는 개발자, 보안 전문가 및 운영 팀 간의 협업을 장려하여
  • 효율적이고 안전한 소프트웨어를 구축할 수 있는 도구와 프로세스가 포함됩니다.
  • DevSecOps는 보안을 소프트웨어를 구축하는 모든 사람의 공동 책임으로 만드는 문화적 변화를 가져옵니다.
  • 개발

    • 개발은 응용 프로그램을 계획, 코딩, 빌드 및 테스트하는 프로세스입니다.
  • 보안

    • 보안이란 소프트웨어 개발 주기 초기에 보안을 도입하는 것을 의미합니다. 예를 들어 프로그래머는 코드에 보안 취약점이 없는지 확인하고 보안 실무자는 회사가 소프트웨어를 출시하기 전에 소프트웨어를 추가로 테스트합니다.
  • 운영

    • 운영 팀은 소프트웨어에서 발생하는 모든 문제를 릴리스, 모니터링 및 수정합니다.

DevSecOps의 모범 사례는 무엇인가요?

  • 기업은 DevSecOps로 디지털 트랜스포메이션을 지원하기 위해 다음과 같은 접근 방식을 사용합니다.
  • 시프트 레프트(Shift left)
    • 시프트 레프트는 소프트웨어 개발의 초기 단계에서 취약성을 확인하는 프로세스입니다.
    • 이 프로세스를 따르면 소프트웨어 팀에서 애플리케이션을 구축할 때 감지되지 않은 보안 문제를 방지할 수 있습니다. 예를 들어 개발자는 DevSecOps 프로세스에서 보안 코드를 생성할 수 있습니다.
  • 시프트 라이트(Shift right)
    • 시프트 라이트는 애플리케이션이 배포된 후 보안에 중점을 두는 것의 중요성을 나타냅니다.
    • 일부 취약성은 고객이 소프트웨어를 사용할 때가 되어서야 분명해질 수 있습니다.
  • 자동화된 보안 도구 사용
    • DevSecOps 팀은 하루에 여러 번 수정해야 할 수도 있습니다.
    • 이를 위해서는 보안 스캔 도구를 CI/CD 프로세스에 통합해야 합니다.
    • 그러면 보안 평가로 인해 개발 속도가 느려지는 것을 방지할 수 있습니다.
  • 보안 인식 촉진
    • 기업은 소프트웨어를 구축할 때 보안 인식을 핵심 가치의 일부로 삼습니다.
    • 애플리케이션 개발 역할을 수행하는 모든 팀원은 보안 위협으로부터 소프트웨어 사용자를 보호해야 할 책임을 공유해야 합니다.

참고 URL

profile
안녕하세요, QA 엔지니어 Hardin 입니다.

0개의 댓글