Close

지속적 제공의 소프트웨어 테스트

소프트웨어 테스트의 이점과 지속적 제공에서의 역할에 대해 알아보세요.


소프트웨어 테스트는 소프트웨어 개발 부서 내의 조직적인 프로세스로, 비즈니스에 핵심적인 소프트웨어의 정확성, 품질 및 성능을 확인합니다. 소프트웨어 테스트는 예상 비즈니스 시스템과 제품 기능이 예상대로 제대로 동작하는지 확인하는 데 사용됩니다.

소프트웨어 테스트는 수동 또는 자동화된 프로세스일 수 있습니다.

  • 수동 소프트웨어 테스트는 소프트웨어 제품을 수동으로 작동하고 예상대로 동작하는지 확인하는 팀이나 개인이 주도합니다.
  • 자동화된 소프트웨어 테스트는 분리된 코드 정확성 검사부터 완전히 사람이 주도하는 수동 테스트 경험 시뮬레이션까지 다양한 기능을 가진 여러 도구로 구성되어 있습니다.

소프트웨어의 다양한 테스트 유형

단위 테스트, 통합 테스트, 기능 테스트, 수용 테스트 등 여러 유형의 소프트웨어 테스트를 비교해 보세요!

예비 테스트

예비 테스트가 무엇인지 그리고 그 역사에 대해 알아보세요. 예비 테스트의 장단점과 언제 가장 효과적으로 사용할 수 있는지 알아보세요.

코드 커버리지 소개

코드 커버리지를 시작하고 적합한 도구를 찾고 계산하는 방법을 알아보세요.

통합 테스트 자습서

이 자습서에서 Bitbucket Pipelines를 사용하여 통합 테스트를 실행하는 방법을 알아보세요.

소프트웨어 테스트의 이점


소프트웨어 테스트는 소프트웨어 개발 및 유지 관리 비용을 줄여 조직의 시간과 비용을 절약합니다. 소프트웨어 테스트는 새로운 기능 개발에 안정성을 보장합니다. 테스트를 통해 기능이 예상대로 작동하고 사용자에게 버그가 발생하지 않도록 할 수 있습니다.

새 기능이 완전하고 제공 가능한 것으로 간주되기 위해 일치해야 하는 일련의 테스트 케이스를 지정하면 새 기능에 대한 개발 시간이 단축됩니다. 이를 통해 개발자는 타임라인을 더 정확하게 예측하고 새로운 버그 발생을 줄이기 위해 작업할 고정된 목표를 갖게 됩니다. 테스트 케이스가 마련되면 전반적인 유지 관리 비용이 낮아집니다. 이미 제공된 기능에 대해 테스트를 실행하여 기능이 여전히 예상대로 작동하는지 확인할 수 있습니다.

소프트웨어 테스트 수준


소프트웨어 테스트에는 몇 가지 기본적인 수준이 있으며 각 수준은 개발 프로세스 내의 고유한 관점에서 소프트웨어 기능을 확인합니다. 각 테스트 유형을 차례로 살펴보고 실제 사용 방법을 살펴보겠습니다.

단위 테스트

소프트웨어 테스트의 기본 수준은 단위 테스트입니다. 단위 테스트는 개별 코드 단위에 대한 입력과 출력의 정확성 검사를 계측하는 방법입니다. 이 경우 측정 단위는 독립형 코드 함수 또는 메서드입니다.

단위 테스트 중에 프로덕션 코드 함수는 시뮬레이션된 입력이 있는 테스트 환경에서 실행됩니다. 그런 다음 함수의 출력을 해당 입력의 예상 출력과 비교합니다. 출력이 예상과 일치하면 테스트를 통과한 것이며 그렇지 않으면 실패입니다. 단위 테스트는 파생된 데이터 함수를 검증하는 데 좋은 방법입니다.

가상의 단위 테스트 사용자 스토리 예시는 다음과 같습니다. “함수 2VAL, x와 y라는 2개의 값이 주어지면 항상 x+y를 반환함.” 그러면 단위 테스트는 두 개의 값으로 2VAL을 실행하고 출력이 x+y인지 확인합니다. 단위 테스트는 금전적 가치에 대해 작동하는 코드의 정확성을 확인하는 데 유용합니다.

소프트웨어 테스트 수준: 단위 테스트, 통합 테스트, 기능 테스트, 예비 테스트

통합 테스트

소프트웨어 테스트 케이스가 두 개 이상의 단위를 다루는 경우 통합 테스트로 간주됩니다. 소프트웨어 테스트 케이스를 개발할 때 단위 테스트 사이의 경계가 순식간에 통합 테스트로 바뀔 수 있습니다. 타사 코드 종속성에 대해 작동하는 단위 테스트가 개발되는 경우도 종종 있습니다. 종속성 자체는 테스트할 필요가 없으며 종속성에 대한 통합은 모방 또는 위조됩니다.

기능 테스트 또는 엔드투엔드 테스트

완전한 사용자 수준의 경험을 시뮬레이션하는 테스트 케이스는 기능 테스트 또는 엔드투엔드 테스트라고 합니다. 엔드투엔드 테스트는 실제 사용자 행동을 시뮬레이션하는 도구를 사용합니다. 엔드투엔드 테스트의 일반적인 단계는 다음과 같습니다.

  • 이 버튼 클릭
  • 이 텍스트 읽기
  • 이 양식 제출

전체 경험 실행 컨텍스트 덕분에 엔드투엔드 테스트를 통해 소프트웨어 스택의 모든 계층에서 정확성을 확인합니다.

예비 테스트

예비 테스트는 테스터에게 테스트 대상인 소프트웨어를 사용하여 달성할 느슨하게 정의된 작업을 할당하는 테스트 연습입니다. 즉, 사용자가 실제로 제품을 사용하는 방식에 대해 많은 것을 배울 수 있습니다. 예비 테스트 세션은 가장 많이 발생한 문제, 최고의 결함 또는 제품에서 예상치 못한 동작을 하는 것에 대해 보상을 제공하여 사용자에게 동기를 부여할 수도 있습니다.

예비 소프트웨어 테스트의 이점 중 하나는 자유롭게 제품을 둘러보기만 하면 되기 때문에 누구나 참여하여 테스트를 지원할 수 있다는 것입니다. 예비 테스트는 무작위가 아니지만 수동 테스트처럼 스크립트로 작성되지도 않습니다.

지속적 제공의 소프트웨어 테스트


지속적 제공은 앞서 설명한 모든 테스트 전략을 활용하여 완료된 코드 작업을 자동으로 제공하는 원활한 파이프라인을 만듭니다. 최적의 설정을 통해 개발자는 평가를 위해 최근에 완료된 코드를 지속적 제공 파이프라인에 푸시할 수 있습니다. 그런 다음 파이프라인은 새로 푸시된 코드를 테스트 수준을 통해 실행합니다. 코드가 테스트를 통과하면 자동으로 병합되어 프로덕션에 배포됩니다. 하지만 코드가 테스트에 실패하면 코드가 거부되고 개발자는 자동으로 수정 단계에 대한 알림을 받습니다.

잘 알려진 소프트웨어 언어 개발 에코시스템에는 자체 하위 테스트 에코시스템이 있습니다. 테스트 스위트를 계측하고 개발하는 데 도움이 되는 유틸리티를 제공하는 도구가 많이 있습니다. 이러한 도구는 보통 프로젝트에 사용된 프로그래밍 언어에 맞는 패키지 관리자를 통해 설치됩니다.

테스트 계측 외에도 테스트 실행 및 개발을 위한 도구도 사용할 수 있습니다. 다양한 테스트 러너를 설치하여 테스트 스위트의 출력 데이터를 제공할 수 있습니다. 프로젝트 전체에서 “테스트 커버리지”를 측정하는 것이 일반적인 관행입니다. 코드 커버리지 도구를 사용하여 코드베이스에서 적절하게 충족되는 부분이 얼마나 되는지 확인할 수 있습니다.

테스트 스위트가 개발되고 로컬 프로젝트에서 제대로 작동하면 일반적으로 CD 파이프라인에 통합하는 것이 간단합니다. 호스팅된 대부분의 CD/CI 시스템에는 테스트 스위트를 파이프라인에 통합하는 방법에 대한 가이드가 있습니다.

테스트를 CD 파이프라인의 일부로 만드는 방법


가치 있는 진정한 자동 CD 파이프라인은 강력한 테스트 기반을 기반으로 구축됩니다. 테스트 기반은 수동 테스트 케이스에서 시작하여 자동화된 솔루션으로 발전합니다.

파이프라인의 모든 단계에서 품질을 강조

개발자, 테스터 등 모두가 고객과의 품질 관계를 소유합니다. 각 코드 줄은 고객의 경험을 더 좋게 또는 나쁘게 만듭니다. CD 파이프라인의 테스트 스위트는 고품질의 올바른 코드를 개발하기 위한 다각적인 도구입니다. 제품 설계 단계에서는 기능 개발 방법을 선제적으로 고려하기 위해 테스트 스위트를 염두에 둘 수 있습니다. 테스트 스위트는 주로 개발 프로세스를 간소화하는 데 사용되지만 품질을 보장하기 위해 스테이징 및 프로덕션 환경에서도 실행할 수 있습니다.

개발자가 기능의 품질을 증명할 수 있도록 권한 부여

기존의 테스트 방법론에 따르면 테스트는 개발자와는 다른 별도의 프로세스입니다. 개발자가 품질 보증에 참여하지 않으면 개발 팀은 고객을 공감할 수 있는 능력이 부족해집니다. 또한 품질에 대해 개발자의 참여가 부족하면 코드베이스에서 문제가 더 오래 지속되어 문제를 해결하는 데 더 많은 비용이 듭니다. 이 방법론은 책임을 맡을 별도의 QA 팀을 고용하도록 장려하기 때문에 조직 인건비도 많이 듭니다.

지속적 제공은 최종 사용자 경험에 대한 개발자의 인식과 공감을 촉진합니다. 개발자는 자신이 개발하는 기능에 대한 테스트 커버리지를 제공하고 개발부터 프로덕션 환경까지 기능을 감독해야 합니다. 이를 통해 개발자는 기능을 소유하고 품질을 증명할 기회를 얻게 됩니다.

고객의 피드백을 포함

지속적 제공은 소프트웨어 프로젝트를 신속하게 배포하고 업데이트하도록 지원합니다. 이렇게 하면 고객 피드백을 다음 릴리스에 즉시 통합할 수 있습니다. 사용자가 문제를 보고한 경우 CD 파이프라인 테스트 스위트를 참조하여 잠재적인 문제 벡터의 범위를 좁힐 수 있습니다. 고객 피드백에 신속하게 대응하는 개발 및 테스트 팀이 더 성공적입니다.

자체적인 지속적 제공 환경을 만들고 싶으십니까? 시작하는 데 도와드리겠습니다.

탄탄한 소프트웨어 테스트 전략을 구축


소프트웨어 테스트 전략을 세울 때는 전체 제품, 사용자, 비즈니스 전략을 염두에 두는 것이 가장 좋습니다. 가장 가치가 높은 테스트 커버리지 대상이 무엇인지에 대해 고려해야 합니다.

이상적인 환경이라면 소프트웨어 프로젝트는 코드에 버그가 없고 예상대로 작동하도록 보장하는 100% 테스트 커버리지를 위해 노력할 것입니다. 안타깝게도 타임라인과 예산 제약이 있는 실제 비즈니스 환경에서는 현실적으로 불가능한 일입니다.

제공 가능한 소프트웨어 유형에 따라 다른 테스트 전략도 고려해야 합니다. 소프트웨어가 GUI 기반 애플리케이션인 경우 높은 수준의 엔드투엔드 테스트가 아주 유용할 것입니다. 헤드리스 UI 무료 소프트웨어 프로젝트는 엔드투엔드 테스트를 생략하고 단위 테스트를 통해 높은 가치를 얻을 것입니다.

GUI 기반 사용자 애플리케이션에 대한 일반적인 전체 전략은 다음과 같습니다.

  1. 모든 핵심 사용자 흐름, 로그인, 가입, 결제 등에 대한 엔드투엔드 테스트를 실행
  2. 금융 거래 도구와 같은 데이터에 민감한 모든 코드 함수에서 단위 테스트를 실행
  3. 데이터가 타사에 전달되고 오류가 올바르게 전파되고 있는지 확인하기 위해 타사 통합의 모든 지점에서 통합 테스트 실행

지속적 제공으로 소프트웨어 테스트를 개선


지속적 제공 워크플로를 위해 노력하면 여러 비즈니스 이점을 얻을 수 있습니다. 품질 보증, 릴리스 관리, 테스트 엔지니어 역할을 위해 별도의 팀을 고용하고 관리하는 데 드는 조직 차원의 비용은 CD 워크플로를 사용하여 대폭 절감할 수 있습니다.

지속적 제공은 기존의 QA 테스트 워크플로보다 전반적으로 더 높은 수준의 제품 품질을 촉진합니다. CD 테스트는 개발자가 최종 사용자 경험과 이들이 만드는 기능의 품질에 대한 소유권과 지분을 갖도록 합니다. CD는 회사 전체가 릴리스 품질에 중점을 두고 논의하기 쉽게 만드는 프레임워크를 마련합니다.

강력한 소프트웨어 테스트 전략을 구현하는 것은 지속적 제공의 기반이며 자동화는 성공적인 지속적 제공 파이프라인의 핵심입니다.

소프트웨어 테스트를 강화할 준비가 되셨습니까? CD 환경에서의 테스트에 대해 자세히 알아보세요. 또한 DevOps 테스트 자습서를 통해 Atlassian 도구 및 타사 도구가 워크플로에 테스트를 통합하는 방법을 알아볼 수 있습니다.

Claire Maynard
Claire Maynard

Claire is an Atlassian marketing veteran who’s worked across growth, performance, and product marketing throughout her tenure. Currently she drives brand, content, and go-to-marketing strategy for Confluence Cloud. Outside work, you can find Claire surfing, running, or trying out new restaurants in San Francisco or new cities across the globe.


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

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

DevOps 일러스트레이션

DevOps 커뮤니티

DevOps 일러스트레이션

블로그 읽기

맵 일러스트레이션

무료로 사용해보기

DevOps 뉴스레터 신청

Thank you for signing up