Close

자동화된 테스트가 DevOps를 지원하는 방법

테스트 자동화는 개발 팀이 더 빠르고 안정적으로 구축, 테스트 및 출시하도록 지원합니다.

Krishna Sai 얼굴 사진
Anton Hristov

mabl 제품 관리자


2000년대 초, 회사들은 애자일 방식을 도입하기 시작했고, 잦은 고객 피드백으로 인해 개발 수명 주기가 가속화되었습니다. 이후 빌드, 테스트, 구성 및 배포 프로세스를 자동화하는 지속적 통합지속적 제공을 지원하는 도구를 채택하게 되었습니다.

그러나 개발, 테스트 및 프로덕션 제공과 같은 주요 기능은 자체 사일로 내에서 운영되는 별도의 팀에서 수행했습니다. 이로 인해 비효율성이 발생하고 소프트웨어 개발 수명 주기가 늘어졌습니다. 또한 DevOps, 조직 철학, 사례 및 도구를 통해 제품 업데이트의 지속적 배포 및 품질을 엔드투엔드로 책임지는 소규모 교차 기능 팀('스쿼드'라고도 함)을 지원할 수 있게 되었습니다.

초기 DevOps는 개발 및 IT 운영만을 통합했고 테스팅은 계속하여 대부분 수동 방식으로 별도의 팀이 수행해야 했습니다. DevOps는 클라우드 애플리케이션 제공 및 모니터링의 문제를 해결했고 완전히 자동화된 CI/CD 파이프라인이 만들어졌습니다. 그러나 릴리스 주기의 큰 단축은 없었습니다. 테스팅이 사일로화되고 종종 시간이 많이 소요되는 수동 프로세스였기 때문입니다.

테스트 병목 현상을 해결하기 위해 조직은 이제 중앙 집중식 QA 팀에서 전체 개발 팀에 QA 팀을 포함시키는 방식으로 전환하고 있습니다.

테스트 자동화는 무엇입니까?


테스트 자동화는 웹 애플리케이션과 같은 소프트웨어 제품이 코드 스타일, 기능(비즈니스 논리) 및 사용자 환경에 대한 미리 정의된 품질 표준을 충족하는지 자동으로 검토 및 검증하는 방법입니다.

테스트 관행에는 일반적으로 다음 단계가 포함됩니다.

  • 단위 테스트: 함수와 같은 개별 코드 단위가 예상대로 작동하도록 유효성을 검사
  • 통합 테스트: 의도하지 않은 결과 없이 여러 코드가 함께 작동하도록 보장
  • 엔드투엔드 테스트: 애플리케이션이 사용자의 기대에 부합하는지 검증
  • 예비 테스트: 기능적 또는 시각적 문제를 파악하기 위해 사용자의 관점에서 애플리케이션의 수많은 영역을 검토하는 비구조적 접근 방식을 사용

여러 유형의 테스트를 피라미드로 시각화하는 경우가 많습니다. 피라미드를 올라가면 각 유형의 테스트 수가 줄어들며 테스트를 만들고 실행하는 비용이 증가합니다.

예비 테스트 피라미드

역사적으로 피라미드 내의 모든 테스트는 수동으로 수행했습니다. 자동화된 테스트 도구가 나오기 전까지는 느리고 비용이 많이 들며 오류가 발생하기 쉬운 프로세스였습니다.

오늘날 거의 모든 단위 테스트는 완전히 자동화되어 있으며 단위 테스트 자동화는 모범 사례로 간주됩니다. 통합 테스트도 대부분 자동화되어 있으며, 그렇지 않은 경우 일반적으로 더 많은 수동 엔드투엔드 테스트를 위해 건너뜁니다. 현재 테스트 자동화 노력의 흐름은 주로 테스트 피라미드의 엔드투엔드 계층을 자동화하는 데 중점을 두어 통합 테스트의 필요성을 줄입니다.

자동화 도구는 10년 이상 존재해 왔지만 많은 도구가 코딩 기술을 필요로 하며 문제 해결 및 대규모 유지 관리를 위해 높은 비용을 수반하는 불안정한 테스트를 수행해야 하는 경우가 많습니다. 결국 많은 팀은 자체적인 사용자 지정 자동화 프레임워크를 만들게 되고, 이에 따른 가파른 학습 곡선 때문에 새로운 팀원을 온보딩하는 작업에 많은 시간과 노력이 소모됩니다. 또한 사용자 지정 프레임워크는 변화하는 기술 스택에 발맞추기 위해 자체적인 유지 관리와 개선을 필요로 합니다. 그 결과로 지금까지 대부분의 엔드투엔드 테스트는 수동 프로세스였습니다.

조직의 DevOps 관행이 성숙해지면 수명 주기 전반에 걸쳐 DevOps 주요 이점, 즉 더 빠르고 안정적으로 구축, 테스트 및 출시하고, 인시던트 대응을 간소화하며, 팀 전반에서 협업 및 커뮤니케이션을 활용하기 위해 테스트 자동화의 필요성이 중요하게 됩니다. QA 팀에서 릴리스 빌드를 며칠 간 테스트 하는 동안 개발자가 피드백을 받아서 식별된 문제를 수정하기 할 수 없다는 것은 더 이상 바람직한 상황이 아닙니다. QA 팀은 테스트 케이스를 자동화하고 거의 100%에 가까운 코드 커버리지를 달성하여 DevOps 주기에서 자신들의 노력을 정렬해야 합니다. 환경은 표준화되어야 하며 QA 박스에서의 배포는 자동화되어야 합니다. 사전 테스트 작업, 정리, 사후 테스트 작업 등을 자동화하고 지속적 통합 주기에 맞게 정렬해야 합니다.

이제 적은 양의 코딩만 필요한 mabl과 같은 도구가 있어서 CI/CD 파이프라인의 모든 단계에서 안정적이고 자동화된 엔드투엔드 테스트를 통합할 수 있으며 개발 라이프사이클 초기에 문제를 포착하는 데 도움이 됩니다. 릴리스에서 문제를 조기에 발견할수록 문제를 해결하는 것이 더 빠르고 저렴하다는 것은 잘 알려져 있습니다.

DevOps의 자동화된 테스트


실제로 이것은 개발자가 코드가 예상대로 작동하는지 검증하기 위해 단위 테스트를 작성하는 데 몰두하는 중에, 품질 실무자와 제품 소유자는 엔드투엔드 사용자 경험을 검증하는 자동화된 UI 테스트를 만든다는 것을 의미합니다. 또한 품질 전문가는 팀이 다양한 애플리케이션 분야에서 이슈를 수동으로 검사하는 예비 테스트 세션을 체계화합니다.

DevOps 모범 사례는 CI/CD 파이프라인 내에서 가능한 한 조기에 및 자주 자동화된 테스트를 실행하는 것입니다. 여기에는 프로덕션에서 자동화된 UI 테스트를 실행하여 사용자 경험 문제를 사전에 모니터링하는 것이 포함됩니다. 오늘날의 애플리케이션은 여러 개의 구성 요소가 있는 수많은 서비스에 의존하기 때문에, 프로덕션 환경에서 테스트를 실행하여 가상 트랜잭션 모니터링을 수행하면 타사 서비스와의 문제를 사용자보다 먼저 감지할 수 있습니다.

연결된 링 아이콘
관련 자료

무료로 사용해보기

도구 아이콘
관련 자료

테스트를 통해 DevOps 관행 개선

자동화된 테스트 시작하기


모든 상황에 맞는 단일 솔루션은 없지만 팀을 위한 테스트 자동화 전략을 정의할 때 고려해야 할 몇 가지 중요한 사항은 다음과 같습니다.

릴리스 빈도

릴리스 빈도가 높을수록 테스트 자동화, 특히 모든 배포에서 실행해야 하는 엔드투엔드 테스트에 더 많은 투자를 해야 합니다. 릴리스 주기가 빈번하지 않으며 주기를 가속화하려는 경우, 단위 테스트 범위를 더 추가하고 자동화된 간단한 UI 스모크 테스트를 만들어 모든 빌드에서 빠른 상태 검사를 할 수 있습니다. 그런 다음 릴리스에서 회귀를 확인하는 데 걸리는 시간을 줄이는 데 도움이 되는 더 자동화된 엔드투엔드 간 테스트를 만드는 데 점진적으로 투자할 수 있습니다.

도구 가용성

최신 테스트 자동화 도구를 사용하면 높은 품질의 소프트웨어를 지속적으로 제공하는 팀의 역량이 크게 향상됩니다. 테스트 도구를 평가할 때는 간편한 테스트 만들기, 안정성, 유지 관리 필요성 및 CI/CD 스택과의 통합을 고려하세요.

주어진 도구에 필요한 학습 곡선과 필요한 기술을 이해하는 것도 마찬가지로 중요합니다. 솔루션이 사용하기 쉬울수록 팀이 속도를 더 높일 수 있습니다. 또한 팀의 더 많은 사람들이 쉽게 이용할 수 있으므로 테스트 커버리지가 늘어나고 품질에 집중하는 문화를 조성하는 데 도움이 될 수 있습니다. 테스트 솔루션을 평가하는 효과적인 방법 중 하나는 전체 팀이 주요 경쟁자와 함께 몇 가지 테스트 사례 시나리오를 자동화하는 데 시간을 들이는 것입니다.

제품 성숙도

팀이 수많은 기존 고객과 성숙한 코드베이스가 있는 제품에서 작업하는 경우 이미 릴리스 흐름과 테스트 관행을 확립하고 있을 가능성이 높습니다. 팀이 지속적 통합 또는 전체 CI/CD로 이동함에 따라 테스트 자동화를 파이프라인 자동화의 핵심적인 부분으로 포함시키는 것이 중요합니다. 빠른 제공과 빠른 피드백은 개발 단계에서 테스트를 자동화하지 않으면 지속 가능하지 않습니다.

반면, 팀에서 새로 제품을 만드는 경우 처음부터 자동화된 테스트를 계측할 수 있는 이상적인 기회입니다. 처음부터 바로 유닛 테스트 커버리지에 대한 목표를 설정하고 각 기능에 대한 엔드투엔드 테스트 관행을 정의하는 데 중점을 두세요. UI 변경으로 인한 테스트 실패를 방지하도록, 기능이 릴리스에 가까워질 때까지 기다렸다가 자동화된 종단 간 테스트를 추가하는 것이 좋습니다.

CI/CD 환경 및 테스트 데이터

자동화된 테스트를 만드는 것은 그 자체로도 어려운 일이지만, 팀이 CI/CD 파이프라인 초기에 테스트 자동화를 채택하지 못하도록 하는 이유는 테스트 데이터가 있는 초기 환경이 부족한 것인 경우가 많습니다. 따라서 테스트 전략에 대해 팀에서 조기에 토론하고 필요한 테스트 인프라를 만드는 데 전념하는 것이 중요합니다. 예를 들어, 개발자는 테스트 사용자 계정에 대한 지원을 구현하고 API를 통해 테스트 데이터가 포함된 환경을 로드할 수 있어야 합니다. 임시 테스트 환경을 조기에 프로비저닝하기 위한 인프라를 구축하면 릴리스 검토 및 피드백 주기가 상당히 빨라집니다.

QA 테스트 다이어그램

자동화된 테스트가 QA 역할을 어떻게 변화시킵니까?


자동화된 테스트가 DevOps를 지원하는 방법


자동화된 테스트는 이제 DevOps 모범 사례로 간주됩니다. 개발 파이프라인의 큰 부분에 자동화된 테스트를 구현하기란 처음에는 두려울 수 있지만, 단일 엔드투엔드 시나리오를 자동화하고 일정에 따라 테스트를 실행하는 것부터 시작할 수 있습니다. 또한 새로운 도구를 통해 그 어느 때보다 자동화된 테스트가 쉬워졌으며 그 결과는 가치가 아주 높습니다. 결국 모두가 사용자가 만족하기를 원하고 있는 것입니다.

자동화된 테스트를 받아들이면 다음과 같은 DevOps 이점을 활용할 수 있습니다.

  • 품질 저하 없이 속도 향상: 개발자의 만족도를 높이고 사용자에게 더 많은 가치를 더 빠르게 제공할 수 있는 높은 제품 속도 확보
  • 팀 협업 개선: 품질에 대한 책임 공유를 통해 팀원 간의 협업 향상
  • 신뢰성: 테스트 자동화의 범위를 늘려 릴리스의 신뢰성을 향상합니다. 프로덕션에서의 이슈는 일반적인 것이 아니라 드물어야 합니다.
  • 규모: 독립적 방식으로 운영되는 여러 소규모 팀에 개발을 배포하여 위험을 줄이면서 일관적인 품질 결과를 만듦
  • 보안: 자동화된 규정 준수 정책, 세분화된 제어 및 구성 관리 기술을 활용하여 보안 및 규정 준수를 저해하지 않고 빠르게 이동
  • 고객 만족도 향상: 신뢰성이 향상되고 사용자 피드백에 대한 빠른 응답이 사용자 만족도를 높이고 더 많은 제품 추천으로 이어짐

결론...


DevOps의 잠재력을 최대한 활용하기 위해 테스트 자동화를 도입하면 궁극적으로 병목 현상을 줄이고 효율성을 높일 수 있습니다. 이 두 가지 모두 직원 및 고객의 만족도와 궁극적으로 수익에 직접적인 영향을 미칩니다.

Bitbucket Pipelines 또는 Atlassian Marketplace에서 사용할 수 있는 다양한 테스트 자동화 도구 및 리소스 중 하나를 사용하여 테스트 자동화를 시작하세요.

Anton Hristov
Anton Hristov

Anton Hristov는 mabl의 제품 관리자이며 소프트웨어 개발, 테스트 및 제공 분야에서 10년 이상의 경력을 보유하고 있습니다. 그는 사용자, 기술 및 디자인이 연결된 분야에서 일하는 것을 즐깁니다. Anton은 특히 데이터에서 인사이트를 도출하고 잠재력을 최대한 실현하도록 돕기 좋아하며, 이런 점은 그가 제작을 지원하는 제품에 반영됩니다.


이 기사 공유
다음 주제

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

DevOps 일러스트레이션

DevOps 커뮤니티

DevOps 일러스트레이션

DevOps 학습 경로

맵 일러스트레이션

무료로 사용해보기

DevOps 뉴스레터 신청

Thank you for signing up