공식 DevOps 인증

DevOps 텍스트 교육

DevOps 조직에 왜 테스트 자동화가 필요한가요?


소프트웨어 제공 부서에 아직 제대로 된 테스트 자동화가 없다면 개발과 테스트 사이에 뚜렷한 단절이 있을 것입니다. 개발자는 이미 다른 일로 바쁠 때 업무 품질에 관한 뒤늦은 피드백을 받습니다. 자신이 작성한 코드나 작성하지 않은 코드와 결함 사이의 인과관계를 놓치기 쉽습니다. 결함을 만들던 당시 상황으로 돌아가려 작업 맥락을 바꾸는 데 드는 노력은 생산성을 떨어뜨립니다. 뒤늦게 피드백이 오면 시스템과 결함의 관계가 복잡하고 모호해져, 임시방편을 쓰지 않는 양질의 수정을 기대하기 어렵습니다.

테스트 자동화가 없으면 DevOps 조직이 양질의 제품과 서비스를 제공하는 데 더 많은 시간과 비용이 듭니다. 사업 분야에 관계없이 21세기의 어떤 기술 조직도 이런 방식으로 사업을 확장할 수 없습니다.

테스트는 자동화할 수 있지만,
품질을 만드는 일은 자동화할 수 없습니다

DevOps 팀은 가능한 한 많은 테스트 케이스를 자동화해야 합니다. 테스트는 자동화할 수 있지만 품질을 만드는 팀의 사고 능력은 자동화할 수 없으므로, 소프트웨어가 할 수 있는 반복 작업에 인력을 낭비해서는 안 됩니다.

좋은 테스트 자동화를 위한 DevOps 원칙

  • 테스트 자동화는 업무 품질에 관해 빠르고 이른 피드백을 제공해야 합니다.
  • 서로 다른 테스트 실행에 동일한 조건이 주어지면 결과는 일관되고 결정적이며 반복 가능해야 합니다.
  • 테스트에서 오탐이 발생해서는 안 됩니다.
  • 적은 수의 신뢰할 수 있는 자동화 테스트 케이스가, 동일한 조건에서 실행해도 결과가 일관되지 않을 수 있는 많은 수의 비자동화 테스트보다 낫습니다.
  • 테스트 자동화는 먼저 시스템이 내부 및 외부 고객에게 제공하는 핵심 기능과 혜택의 검증에 집중해야 합니다. 이 정도의 자동화도 전혀 없는 것보다 훨씬 낫습니다.
  • 이후 DevOps 팀의 인력을 최대한 활용할 수 있도록 가능한 한 많은 테스트 케이스를 자동화하세요.
  • 테스트 자동화에서 느리고 주기적인 피드백은 피해야 합니다. 본인이나 개발자가 트렁크에 코드를 체크인하려고 할 때마다 빠른 피드백이 필요합니다.
  • 자동화된 테스트가 충분히 빠르지 않으면 테스트 및/또는 소프트웨어의 속도를 높일 방법을 찾으세요. 이는 지속적 제공 플랫폼과 배포 파이프라인의 신뢰성을 확보하고 고객에게 좋은 서비스를 제공하는 데도 중요합니다. 더 빠르게 하려면 자동화된 테스트를 병렬로 실행하세요.
  • 테스트 주도 개발을 고려하세요. 먼저 자동화된 테스트를 작성한 다음 소프트웨어를 구축합니다.

테스트 자동화는 지속적 제공과 배포 파이프라인을 가능하게 하는 핵심입니다

앞에서 다뤘듯이 DevOps 방법론에서는 개발자가 자신의 코드를 프로덕션에 배포할 수 있습니다. 하지만 조직의 초기 DevOps 팀을 관찰한 결과, 개발자는 트렁크에 코드를 체크인하고 작업과 티켓을 빨리 닫는 데 익숙하면서도 프로덕션으로 릴리스하는 버튼을 누르기는 꺼리는 것으로 나타났습니다. 프로덕션을 망가뜨리고 비난받을까 두렵기 때문입니다.

DevOps 팀이 테스트 자동화로 광범위하고 신뢰할 수 있는 테스트 범위를 확보한 뒤에야 개발자는 이런 두려움을 극복할 수 있었습니다.

예를 들어 Google에서 개발자가 트렁크에 코드를 체크인하면 정적 코드 분석, 중복 분석, 테스트 커버리지 분석 등 초기 검사를 하고, 약 100만 개의 자동화된 테스트 케이스로 코드를 검증합니다. 모든 검사와 테스트에 통과하면 트렁크에서 빌드를 생성하고 프로덕션에 배포해 나머지 프로덕션 서버에 복제합니다. Google의 독립적인 소규모 팀 5,000개가 생산성을 유지하고 매일 수만 건의 프로덕션 배포를 수행하는 방식입니다. 테스트 자동화 없이는 불가능합니다.

빠르고 안정적인 피드백이 안전한 배포 파이프라인과 무결성을 확보할 유일한 방법입니다. 자동화된 테스트 케이스 실패로 파이프라인이 중단되면, 다른 작업을 트렁크에 체크인하기 전에 잘못된 코드와 구성을 수정합니다. 또한 자동화된 테스트 케이스로 미리 찾아내 예방할 수 있었던 파이프라인 오류를 발견할 때마다 해당 테스트 케이스를 만들어 테스트 자동화 저장소에 추가합니다.

자동화할 수 있는 테스트 유형

  • 단위 테스트: 애플리케이션의 개별 함수, 클래스 또는 모듈을 검증합니다.
  • 인수 테스트: 애플리케이션이 고객에게 제공하는 기능과 혜택을 검증합니다.
  • 통합(서비스) 테스트: 애플리케이션 간 상호작용과 엔드투엔드 서비스 흐름을 검증합니다.
  • 성능 및 스트레스 테스트: 예상하거나 예상치 못한 고객 부하에서 서비스가 확장되는지, 또는 확장되지 않는지 검증합니다. 가장 자주 사용하는 서비스에서 특히 중요합니다.
  • 비기능 테스트: 보안, 가용성, 용량, 확장성을 검증합니다.

단위 테스트와 인수 테스트는 자동화하기 어렵고 통합(서비스) 테스트 자동화에 크게 의존한다면 아키텍처가 강하게 결합되어 있을 수 있습니다. 아키텍처 요소를 분리할 방법을 찾으세요.

결론

이 장에서는 DevOps에서 테스트 자동화가 중요한 이유를 살펴봤습니다. 테스트 자동화는 빠르고 안전한 제공에 핵심입니다.

조직의 DevOps 도입 여부와 관계없이, 테스트 자동화 없이는 내부 및 외부 고객을 잘 지원하면서 세계적 수준의 성공, 생산성, 수익성을 갖춘 IT 조직을 만들 수 없습니다.



무료 온라인 교육으로 DevOps 인증 시험에 합격하실 수 있도록 보장합니다!

  1. 01

    온라인 신청하기

    Accredited 인증을 선택하고 신청을 완료하세요.

  2. 02

    접속 코드 받기

    개인 시험 접속 코드가 이메일로 즉시 발송됩니다.

  3. 03

    준비하고 시험에 응시하기

    무료 교육으로 공부한 뒤 온라인으로 객관식 문제 50개에 답하세요.

  4. 04

    평생 유효한 자격 취득하기

    전 세계에서 유효한 인증서와 검증 가능한 디지털 배지를 받으세요.

Certified DevOps Generalist™ 견본
인증 신청하기

무료 프리미엄 온라인 교육

DevOps Revealed, Third Edition 받기

모든 주요 업계의 저명한 사업 및 조직 리더, DevOps 코치, 멘토, 전문가, 권위자로 구성된 협의체와 함께 교육을 만들었습니다. International DevOps Certification Academy™를 방문하는 누구나 이용할 수 있습니다. 다음을 통해 자료를 찾아보세요. 무료 DevOps 도서 및 무료 프리미엄 DevOps 교육 두 항목 모두 상단 메뉴에 있습니다.

이 자료는 International DevOps Certification Academy™의 저작권으로 보호되는 지식재산입니다. 전문 지식을 공유하면 DevOps 전문가를 돕고 분야의 발전에 기여할 수 있으므로 누구에게나 무료로 제공합니다.

인증 시험은 객관식입니다. 온라인 교육을 읽고 시험에 합격해 DevOps 인증을 취득하는 데 필요한 지식을 쌓으세요.

무료 프리미엄 온라인 교육으로 DevOps 인증 시험에 합격하실 수 있도록 보장합니다!