프론트 엔드 테스트 소개

Sep 15, 2025
어떻게

프론트 엔드 코드 테스트는 여전히 많은 개발자에게 혼란 스럽습니다. 그러나 프론트 엔드 개발은 이전에 결코 안정성과 일관성과 같은 안정성과 일관성을 담당하는 개발자들과 더욱 복잡하고 개발자들과 함께 프론트 엔드 테스트는 코드베이스 내의 동등한 시민으로 받아 들여야합니다. 우리는 귀하의 다른 테스트 옵션을 중단하고 가장 잘 사용되는 상황을 설명합니다.

프론트 엔드 테스트는 다양한 자동화 된 테스트 전략을 다루는 담요 용어입니다. 단위 및 통합 테스트와 같은 이들 중 일부는 수년간 백엔드 개발 공동체에서 가장 좋은 모범 사례를 받았습니다. 다른 전략은 새로운 것이며, 지금은 백엔드 및 프론트 엔드 개발의 변화로 인한 것으로 나타납니다.

이 기사가 끝날 무렵 팀과 코드 바베이제와 가장 적합한 테스트 전략을 편안하게 평가할 수 있어야합니다. 다음 코드 예제는 재스민 프레임 워크를 사용하여 작성되지만 규칙 및 프로세스는 대부분의 테스트 프레임 워크에서 유사합니다.

  • 사용자 테스트 소프트웨어의 최고의 조각

01. 단위 테스트

테스트 베테랑 중 하나 인 단위 테스트는 모든 테스트 유형의 가장 낮은 수준입니다. 그 목적은 예상대로 코드 (단위라고 함) 기능의 가장 작은 비트를 독립적으로 보장하는 것입니다.

당신이 집을 위해 레고 세트를 가지고 있다고 상상해보십시오. 빌딩을 시작하기 전에 각 개별 조각을 설명하는지 확인하고 싶습니다 (5 개의 빨간색 사각형, 3 개의 노란색 사각형). 단위 테스트는 입력 유효성 검사 및 계산과 같은 개별 코드 세트가 더 큰 기능을 구축하기 전에 의도 한 것처럼 작동하는지 확인하고 있습니다.

그것은 '한 가지 일을 잘'만트라와 함께 단위 테스트에 대해 생각하는 데 도움이됩니다. 하나의 책임이있는 코드가있는 경우 단위 테스트를 작성하려는 경우가 있습니다.

우리가 간단한 계산기에 대한 단위 테스트를 작성하는 다음 코드 스 니펫을 살펴 보겠습니다.

 기술 ( "계산기 작업", 함수 () {
  그것 ( "두 개의 숫자", 함수 () {
    calculator.init ();
    var 결과 = calculator.addnumbers (7,3);
    기대 (결과). 토브 (10);
  });
}); 

우리의 계산자 신청, 우리는 계산이 항상 우리가 기대하는 방식으로 독립적으로 작동하는지 확인하고 싶습니다. 이 예에서는 항상 두 개의 숫자를 항상 정확하게 추가 할 수 있는지 확인하고자합니다.

우리가하는 첫 번째 일은 재스민의 일련의 테스트를 설명합니다. 설명하다 ...에 이렇게하면 응용 프로그램의 특정 영역과 관련된 테스트 그룹이있는 테스트 스위트가 생성됩니다. 우리의 계산기의 경우 각 계산 테스트를 자체 스위트에서 그룹화합니다.

스위트 룸은 코드 조직뿐만 아니라 자신의 스위트 룸을 실행할 수 있기 때문에 훌륭합니다. 응용 프로그램의 새로운 기능을 사용하는 경우, 활성 개발 중에 모든 테스트를 실행하고 싶지 않으므로 매우 시간이 많이 걸릴 것입니다. 테스트 스위트를 개별적으로 개별적으로 개발할 수 있습니다.

다음으로 우리는 실제 테스트를 작성합니다. 그를 사용하여 그것 기능, 우리는 테스트중인 기능이나 기능을 작성합니다. 이 예에서는 추가 기능을 테스트하므로 올바르게 작동하는지 확인하는 시나리오를 실행합니다.

우리는 우리가 기대하는 것처럼 코드 기능을 테스트하는 테스트 어설 션을 작성합니다. 우리는 우리의 계산기를 초기화하고 우리를 실행합니다 addnumbers. 추가하려는 두 개의 숫자가있는 기능. 우리는 숫자를 결과로 저장 한 다음 이것이 우리가 기대할 수있는 숫자와 동일하다고 주장합니다 (우리의 경우, 10).

만약 addnumbers. 올바른 수치를 반환하지 못하면 테스트가 실패합니다. 우리는 우리의 다른 계산 - 빼기, 곱셈 등에 대해 유사한 테스트를 작성합니다.

02. 수락 테스트

단위 테스트가 각 LEGO 조각을 확인하는 것과 같으면 수용 테스트는 각 단계의 건물 단계를 완료 할 수 있는지 확인하고 있습니다. 모든 조각이 설명되기 때문에 지침이 제대로 실행 가능하고 최종 모델을 만들 수 있음을 의미하지는 않습니다.

수락 테스트 실행중인 응용 프로그램을 통과하고 지정된 작업, 사용자 입력 및 사용자 플로우가 완료되고 작동합니다.

우리의 응용 프로그램이기 때문에 addnumbers. 함수는 올바른 번호를 반환하고, 계산기 인터페이스가 올바른 결과를 제공 할 것으로 예상되는대로 작동하는 것을 의미하지는 않습니다. 버튼이 비활성화되거나 계산 결과가 표시되지 않으면 어떻게됩니까? 수락 테스트는 이러한 질문에 답변하는 데 도움이됩니다.

, "가입 실패 상태", 함수 () {
  그것 ( "유효하지 않은 정보 가입을 허용해서는 안된다", 함수 () {
    var 페이지 = 방문 ( "/ home");
    page.fill_in ( "입력 [이름 = '이메일']", "이메일이 아님");
    PAGE.CLICK ( "버튼 [유형 = 제출]");
    PAGE.CLICK ( "버튼 [유형 = 제출]");
    (page.find ( "# signuperror") hasclass ( "숨김")). tobefalsy ();
  });
}); 

구조는 우리의 단위 테스트와 매우 유사합니다. 우리는 스위트 룸을 정의합니다. 설명하다 , 그런 다음 테스트를 작성하십시오 그것 함수, 일부 코드를 실행하고 결과를 확인하십시오.

그러나 특정 함수와 값을 테스트하는 대신 여기에서는 일부 나쁜 정보를 채울 때 특정 워크 플로우 (가입 흐름)가 예상대로 작동하는지 확인합니다. 테스트 한 단위가 될 수있는 양식 유효성 검사뿐만 아니라 ID가있는 요소가 보여주는 오류 상태를 보여주는 것에 대한 취급과 같이 여기에서 일어나는 일이 더 많이 있습니다. SignuPerror. ...에

수락 테스트는 주요 경험 흐름이 항상 올바르게 작동하는지 확인하는 좋은 방법입니다. 가장자리 케이스 주변의 테스트를 추가하고 QA 팀이 응용 프로그램에서 찾을 수 있도록 쉽게 사용할 수 있습니다.

허용 테스트를 작성 해야하는 것을 고려할 때 사용자의 이야기는 시작할 수있는 훌륭한 장소입니다. 사용자가 귀하의 웹 사이트와 어떻게 상호 작용하는지, 그 상호 작용의 예상 결과는 무엇입니까? 유닛 테스트와 다른 기능 요구 사항과 같은 기능 요구 사항과 같은 기능과 같이 유닛 테스트와 다릅니다.

03. 시각 회귀 테스트

소개에서 언급했듯이 일부 유형의 테스트는 Frontend 세계에 고유합니다. 이들 중 첫 번째는 시각 회귀 테스트입니다. 이것은 코드를 테스트하지는 않지만 프로덕션, 스테이징 또는 미리 변경된 로컬 환경에서 렌더링 된 응용 프로그램의 렌더링 버전과 함께 코드의 렌더링 된 결과를 비교합니다.

이것은 일반적으로 헤드리스 브라우저 (서버에서 실행되는 브라우저) 내에서 찍은 스크린 샷을 비교하여 수행됩니다. 이미지 비교 도구는 두 샷 간의 차이를 감지합니다.

Phantomcss와 같은 도구를 사용하여 테스트를 사용하여 테스트 러너가 탐색 해야하는 위치를 지정하고 스크린 샷을 찍어야하며 프레임 워크는 해당 뷰에서 발생한 차이점을 보여줍니다.

 casper.start ( "/ home"). 그런 다음 (함수 () {

  // 초기 양식의 상태
  phantomcss.screenshot ( "# signupform", "가입 양식");

  // 가입 버튼을 누르십시오 (트리거 오류가 발생해야합니다).
  casper.click ( "버튼 # 가입");

  // UI 구성 요소의 스크린 샷을 찍습니다
  phantomcss.screenshot ( "# signupform", "폼 오류 가입");

  // name 속성별로 양식을 채우십시오. & amp; 제출
  casper.fill ( "# signupform", {
    이름 : "Alicia sedlock",
    이메일 : "[email protected]"
  }, 진실);

  // 성공 상태의 두 번째 스크린 샷을 찍습니다
 phantomcss.screenshot ( "# 가입 폼", "폼 성공 가입");
}); 

This visual regression framework illustrates decision trees in your application, exposing complexity to those outside of development

이 시각적 회귀 프레임 워크는 귀하의 신청서의 결정 나무를 보여 주며 개발 외부의 사람들에게 복잡성을 노출시킵니다.

수락 및 단위 테스트와는 달리 시각 회귀 테스트는 새로운 것을 구축하는 경우 혜택을줍니다. UI가 활성 개발 과정에서 빠르고 급격한 변화를 볼 수 있으므로 인터페이스 조각이 시각적으로 완료되면 이러한 테스트를 저장할 수 있습니다. 따라서 시각 회귀 테스트는 쓰는 마지막 테스트입니다.

현재 많은 시각적 회귀 도구가 약간의 수작업을 필요로합니다. 지점에서 개발을 시작하기 전에 스크린 샷 캡처를 실행하거나 인터페이스를 변경하면서 기준 스크린 샷을 수동으로 업데이트해야 할 수 있습니다.

이것은 단순히 개발의 본질 때문에 - ui. 의도적 일 수 있지만 테스트는 '예,이게 동일하지만'아니오, 이것은 다릅니다 '. 그러나 시각적 회귀가 신청서 내에서 통증 인 경우이 접근법은 끊임없이 고정 된 회귀와 비교하여 팀 시간과 노력을 충족시킬 수 있습니다.

04. 접근성 및 성능 테스트

프론트 엔드 테스트를 중심으로 문화와 인식이 커지면서 생태계의 다양한 측면을 테스트 할 수있는 능력이 있습니다. 향상된 초점을 감안할 때 접근성 우리의 기술 문화의 성과를 통해이 제품을 테스트 제품군에 통합하면 이러한 개념이 우선 순위가 남아 있습니다.

성능 예산이나 접근성 표준을 시행하는 문제가있는 경우 사람들의 마음의 최전선에도 이러한 요구 사항을 유지하는 방법입니다.

이러한 수표는 모두 워크 플로우와 Gulp와 같은 빌드 도구로 워크 플로우에 통합 될 수 있습니다. 성능 예산의 경우 Grunt-Perfbudget과 같은 도구를 사용하면 지정된 작업 내에서 WebPagetest를 통해 사이트를 자동으로 실행할 수 있습니다.

그러나 작업 러너를 사용하지 않는 경우 PerfBudGet을 독립 실행 형 NPM 모듈로 잡고 수동으로 테스트를 실행할 수도 있습니다.

터미널을 통해이 작업을 실행하는 것과 같습니다.

 Perfbudget --url http://www.aliciation.com - 키 [WebPagetest API 키] --speedindex 2000 - 렌더 400

그리고 마찬가지로, 그만큼 설정 :

perfbudget : {
  기본: {
    옵션 : {
      URL : 'http://aliciability.com',
      키 : 'WebPagetest API 키',
      예산 : {
        SpeedIndex : '2000',
        렌더링 : '400'
      }
    }
  }
}

[...]

grunt.registertask ( 'default', [ 'jshint', 'perfbudget']); 

액세스 가능성 테스트에서도 동일한 옵션을 사용할 수 있습니다. 그래서 PA11의 경우, 당신은 그것을 실행할 수 있습니다 PA11Y. 이 단계를 자동화하기 위해 브라우저에서 브라우저의 명령을 설정하거나 작업을 설정하십시오. 터미널에서 :

 PA11Y ALICIFIALITYCOM.

// npm 설치 후 JavaScript 명령으로

var pa11y = 요구 ( 'pa11y'); // PA11Y가 필요합니다
var test = pa11y (); // pa11y를 준비 할 준비를하십시오

test.run ( 'aliciibility.com', 함수 (오류, 결과) {
  // 우리의 결과 구문을 기록하십시오
}); 

이러한 범주의 대부분의 도구는 꽤 플러그 앤 플레이이지만 테스트가 실행되는 방법을 사용자 정의하는 옵션을 제공합니다. 예를 들어 특정 WCAG 표준을 무시하도록 설정할 수 있습니다.

Resemble.js is a popular image comparison library, and gives you a lot of control over what triggers a visual differentiation

resemble.js는 인기있는 이미지 비교 라이브러리이며 시각적 차별화를 트리거하는 것을 많이 제공합니다.

다음 페이지 : 워크 플로에 테스트를 도입하는 방법

  • 1
  • 2.

현재 페이지: 다른 유형의 프론트 엔드 테스트 (및 사용시를 사용할 때)


어떻게 - 가장 인기있는 기사

Illustrator에서 자신의 붓글씨 브러시를 만듭니다

어떻게 Sep 15, 2025

Illustrator에 대한 최선의 사항 중 하나는 자신의 브러시를 만들 수있는 능력입니다. 온라인으로 놀..


4 가지 필수 이미지 최적화 팁

어떻게 Sep 15, 2025

몇 가지 행운의 개발자 와이 저자는 Tech Edit Osmani의 새로운 이미지 최적화 전자 책을 편집 할 수있..


컴포지션에서 동적 이동을 생성

어떻게 Sep 15, 2025

그림을 시작하기 전에 캡처하고자하는 어떤 유형의 움직임 유형을 결정하는 것이 중요합니다. 눈..


Houdini에서 놀라운 풍경을 만듭니다

어떻게 Sep 15, 2025

노드 기반의 절차 접근 방식을 사용하여 SideFX의 3D 소프트웨어 Houdini는 현저한 수준의 전력, 유연�..


이야기를 전하는 다채로운 세계를 만드는 방법

어떻게 Sep 15, 2025

당신이 더 많은 것을 알고 싶어하고 모퉁이를 돌리고있는 것을 볼 수있는 궁금한 일을하는 상상�..


수채화 물질의 마스터 네거티브 페인팅

어떻게 Sep 15, 2025

부정적인 그림은 그 그림을 그리는 것을 말합니다 [삼] 부정적인 공간 긍정적 인 모양을 정의합니다. 이것은 특히 전통적인 수채화 물�..


오래된 마스터처럼 초상화를 칠하십시오

어떻게 Sep 15, 2025

이 자습서에서는 오래된 마스터 그림을 복사하는 이점을 심층적으로 살펴 보겠습니다. 나는 그 �..


사실적인 하늘을 렌더링하는 방법

어떻게 Sep 15, 2025

이 자습서에서는 사용할 것입니다 vue xstream 구름으로 가득 찬 하늘을 만드는 것. FumeFX ..


카테고리