기능 테스트는 각 애플리케이션 기능이 소프트웨어 요구 사항에 따라 제대로 작동하는지 확인하는 테스트 유형입니다. 각 기능을 해당 요구 사항과 비교하여 출력이 최종 사용자의 기대와 일치하는지 확인합니다. 테스트는 샘플 입력을 제공하고, 결과 출력을 캡처하고, 실제 출력이 예상 출력과 동일한지 확인하는 방식으로 수행됩니다.
다음은 몇 가지 기능 테스트 예시입니다:
비기능 테스트와 달리 기능 테스트는 애플리케이션의 기본 소스 코드의 품질, 보안 또는 성능을 조사하는 것과는 관련이 없습니다. 속도, 확장성 및 안정성을 측정하지 않습니다.
오히려 기능 테스트는 처리의 메커니즘이 아닌 처리 결과에 초점을 맞추고 애플리케이션이 기본적인 최소한의 사용자 기대치를 충족하는지 여부를 결정합니다.
이러한 의미에서 기능 테스트의 정의는 블랙박스 테스트와 거의 동의어에 가깝지만, 반면에 화이트박스 테스트는 비기능 테스트의 특징에 더 가깝습니다.
기능 테스트 계획은 일반적으로 아래 순서를 따릅니다:
테스트 목표 파악
기능 테스트 목표는 프로젝트 요구 사항에 따라 소프트웨어가 갖춰야 할 기능입니다. 테스트 목표에는 애플리케이션이 의도한 대로 작동하는지, 오류 및 예기치 않은 시나리오를 원활하게 처리하는지 검증하는 것이 포함됩니다.
테스트 시나리오 만들기
특정 기능에 대해 가능한 모든(또는 최소한 가장 중요한 모든) 테스트 시나리오 목록을 작성하세요. 테스트 시나리오는 기능이 사용될 다양한 방법을 설명합니다. 예를 들어 결제 모듈의 경우 테스트 시나리오에는 여러 통화, 유효하지 않거나 만료된 카드 번호 처리, 성공적인 거래 완료에 대한 알림 생성 등이 포함될 수 있습니다.
테스트 데이터 생성
식별한 테스트 시나리오에 따라 정상적인 사용 조건을 시뮬레이션하는 테스트 데이터를 생성합니다. 테스트 데이터를 수동으로 입력하거나(예: MS-Excel 스프레드시트 또는 인쇄물에서) 데이터베이스, 플랫 파일, XML 또는 스프레드시트에서 데이터를 읽고 입력하는 스크립트 또는 테스트 도구를 통해 자동으로 입력할 수 있습니다. 각 입력 데이터 세트에는 입력 데이터가 생성할 것으로 예상되는 결과를 설명하는 관련 데이터도 있어야 합니다.
테스트 케이스 설계
테스트 입력에 대해 원하는 다양한 결과를 기반으로 테스트 케이스를 만듭니다. 예를 들어 유효하지 않은 신용카드 번호를 입력하면 애플리케이션에 의미 있는 오류 메시지가 표시되어야 합니다.
테스트 케이스 실행
애플리케이션을 통해 테스트 케이스를 실행하고 실제 결과와 예상 결과를 비교합니다. 실제 결과와 예상 결과가 다르면 해당 기능이 테스트에 실패한 것이며 결함을 기록해야 합니다.
결함 심의, 추적 및 해결
결함이 확인되면 전체 프로젝트 팀이 액세스할 수 있는 공식 추적 시스템에 기록해야 합니다. 결함이 완료된 것으로 표시되기 전에 애플리케이션에 필요한 변경을 수행하고 테스트 케이스를 다시 실행하여 결함 해결을 확인해야 합니다.
기능 테스트 자동화 도구는 테스트 중인 애플리케이션의 사용자 인터페이스와 상호 작용할 수 있습니다. 목록 상자, 텍스트 상자 및 버튼과 같은 화면의 개체를 식별하고, 선택하고, 데이터를 입력하고, 누를 수 있습니다.
많은 기능 테스트 자동화 도구에는 사용자가 애플리케이션 및 화면의 개체와 상호작용하는 모습을 '관찰'하고, 시스템에 입력하는 데이터와 버튼을 누르거나 메뉴를 선택하는 등 사용자가 수행하는 동작을 기록하는 레코더가 포함되어 있습니다. 그런 다음 녹화 중에 캡처된 개체, 데이터 및 동작을 사용하여 이러한 동작을 재생하여 사용자의 활동을 복제할 수 있습니다. 이러한 작업의 결과는 테스트 도구에 기록되고 자동화 엔지니어가 정의한 예상 결과와 비교하여 테스트의 통과 여부를 결정합니다.
기능 테스트 자동화 엔지니어는 도구에서 인식한 개체를 사용하여 테스트를 단계별로 구축하거나, 녹화부터 시작하여 단계를 사용자 지정하고 데이터를 매개변수화하여 일반화하고 다양한 브라우저와 모바일 기기를 포함한 여러 환경에서 테스트를 실행할 수 있습니다.
오늘날의 주요 테스트 자동화 도구에는 머신 러닝, 컴퓨터 비전, 신경망 및 자연어 처리와 같은 고급 기술을 사용하는 인공 지능(Intelligence ) 기능이 캡슐화되어 있습니다. 이를 통해 사람과 같은 방식으로 화면상의 개체를 식별하고, 개체를 자연스럽게 상호 작용 및 조작하며, 일반 영어를 사용하여 테스트를 작성할 수 있습니다.
AI 기반 기능 테스트 자동화는 테스트 생성 시간을 단축하고, 테스트 커버리지를 높이고, 테스트 자산의 복원력을 높이고, 테스트 유지 관리 노력을 줄이는 것으로 나타났습니다.
테스트 케이스 조기 생성
애플리케이션 또는 모듈 코딩이 완료될 때까지 기다렸다가 테스트 케이스 만들기를 시작하지 마세요. 프로젝트의 초기 단계에 사용자 요구 사항이 가장 신선할 것입니다. 나중에 필요에 따라 언제든지 테스트 케이스를 수정할 수 있습니다.
자동화
기능 테스트는 힘들고 반복적이며 시간이 많이 소요되는 프로세스일 수 있습니다. 더 많이 자동화할수록 원하는 기능을 더 빠르게 보장하거나 결함을 식별하고 수정할 수 있으며 앱 배포 프로세스에서 테스트 시간과 비용을 더 많이 절약할 수 있습니다. 모든 테스트 케이스를 자동화하는 것은 불가능하거나 바람직하지 않을 수도 있지만, 가장 중요한 테스트 케이스를 수동으로 처리하는 것만으로도 테스트 ROI를 크게 개선할 수 있습니다.
사용자의 사고 과정 이해
기능 테스터는 최종 사용자의 사고 과정을 깊이 이해해야 합니다. 애플리케이션마다 사용자 유형이 다른 경우가 많습니다(구매자, 판매자, 관리자, 데이터 입력 담당자, 감독자 등). 각 테스트 계획에는 다양한 사용자 유형과 애플리케이션의 일반적인 탐색 방식을 고려해야 합니다.
우선순위 지정
테스터는 시간과 리소스가 한정되어 있습니다. 모든 기능을 테스트할 수 있는 것은 아닙니다. 일부 애플리케이션 기능은 우선순위가 높기 때문에 우선순위가 낮은 기능보다 우선적으로 테스트해야 합니다.
Functional Testing 많은 조직에서 기능 테스트 자동화는 어려운 과제일 수 있지만, 제대로 자동화된 기능 테스트 QA 조직의 이점은 이러한 과제보다 훨씬 크며, 검증된 기능 테스트 도구의 힘을 활용하는 것이 가장 좋은 방법입니다. OpenText™ 기능 테스트 자동화를 통해 기능 테스트에서 최적의 가치를 추출하는 방법을 알아보세요.
AI의 강력한 성능으로 테스트 자동화 가속화
자동화된 통합 교대 근무 테스트 기능으로 개발자의 참여를 유도하세요.
어디서나 애플리케이션을 개발, 디버그, 모니터링 및 최적화하세요.
사실적인 API 및 시뮬레이션으로 소프트웨어 테스트 속도 향상
AI 기반 DevOps 자동화, 테스트 및 품질로 더 나은 소프트웨어를 더 빠르게 출시하세요.