>  기사  >  웹 프론트엔드  >  JavaScript 단위 테스트는 무엇에 사용됩니까?

JavaScript 단위 테스트는 무엇에 사용됩니까?

青灯夜游
青灯夜游원래의
2021-06-22 15:44:182221검색

JavaScript에서 단위 테스트는 프로그램 모듈(소프트웨어 설계의 가장 작은 단위)의 정확성 테스트를 위한 테스트입니다. 그 목표는 프로그램 모듈을 분리하고 이러한 개별 모듈이 올바른지 증명하는 것입니다. 단위 테스트를 통해 개발 프로세스 초기에 문제를 발견하고 프로그래머가 코드 조각이 여전히 제대로 작동하는지 쉽게 확인할 수 있습니다.

JavaScript 단위 테스트는 무엇에 사용됩니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

1. 단위 테스트란 무엇입니까? 무슨 소용이 있나요?

컴퓨터 프로그래밍에서 단위 테스트(모듈 테스트라고도 함)는 프로그램 모듈(소프트웨어 설계의 가장 작은 단위)의 정확성 테스트를 위한 테스트입니다. 프로그램 단위는 애플리케이션에서 테스트할 수 있는 가장 작은 구성 요소입니다. 절차적 프로그래밍에서 단위는 단일 프로그램, 함수, 프로세스 등입니다. 객체 지향 프로그래밍의 경우 가장 작은 단위는 기본 클래스(슈퍼클래스), 추상 클래스 또는 파생 클래스(서브클래스)의 메서드를 포함하는 메서드입니다.

각 이상적인 테스트 사례는 다른 사례와 독립적입니다. 테스트 중에 모듈을 격리하기 위해 스텁, 모의 또는 가짜와 같은 테스트 조끼 프로그램이 자주 사용됩니다. 단위 테스트는 일반적으로 소프트웨어 개발자가 작성한 코드가 소프트웨어 요구 사항을 충족하고 개발 목표를 따르는지 확인하기 위해 작성됩니다.

단위 테스트의 목표는 프로그램 모듈을 분리하고 이러한 개별 모듈이 올바른지 증명하는 것입니다. 단위 테스트를 통해 개발 프로세스 초기에 문제가 발견되어 프로그램이 "더 일찍 종료"됩니다. 개발 초기 단계부터 모든 기능과 메서드에 대한 단위 테스트를 작성해야 합니다. 읽기 가능한 단위 테스트를 통해 프로그래머는 코드 조각이 제대로 작동하는지 쉽게 확인할 수 있습니다. 잘 설계된 단위 테스트 케이스는 프로그램 단위 분기 및 루프 조건에 대한 모든 경로를 포괄합니다. 이 상향식 테스트 경로를 사용하면 프로그램 모듈을 먼저 테스트한 다음 모듈 모음을 테스트합니다. 변경으로 인해 오류가 발생하면 단위 테스트를 통해 오류를 신속하게 찾아 복구할 수 있습니다.

2. 자바스크립트 유닛 테스트 현황

유닛 테스트는 JAVA 개발자를 위한 JUnit과 같은 백엔드 개발에서는 매우 대중적이고 유명하지만 프런트엔드 개발에서는 거의 사용되지 않습니다. 주된 이유는 단위 테스트가 논리 코드를 테스트하는 데 더 적합하다는 것입니다. 이는 JAVA와 같은 백엔드 프로그래밍 언어에 매우 편리합니다. 그러나 프런트엔드 개발에서는 UI를 처리해야 하는 경우가 많고 UI 관련 코드는 이를 수 없습니다. 하지만 실제로는 매우 번거롭고 논리 코드보다 훨씬 어렵기 때문에 프런트엔드 개발에서는 단위 테스트가 대중화되지 않았습니다.

그러나 단위 테스트의 인기, 특히 애자일 개발의 장려로 인해 QUnit, Jasmine 등과 같은 우수한 JavaScript 단위 테스트 프레임워크가 많이 등장했습니다. 이러한 모든 프레임워크는 기본적으로 Javascript 코드를 매우 잘 테스트할 수 있습니다. 물론 UI 코드를 테스트하는 것도 더 번거롭지만 테스트 코드를 주의 깊게 구성하면 UI 코드의 일부를 테스트할 수 있습니다. 그러나 각 프레임워크가 전능하지는 않습니다. 각 프레임워크에는 고유한 전문 분야가 있습니다. 몇 가지 대표적인 프레임워크를 선택하여 소개합니다.

3. 단위 테스트에 일반적으로 사용되는 프레임워크

l QUnit 프레임워크

a) 소개

QUnit은 jQuery 팀에서 개발한 JavaScript 단위 테스트 도구입니다. 현재 모든 JQuery 코드는 QUnit을 사용하여 테스트되며 기본 JavaScript도 QUnit을 사용할 수 있습니다.

원래 John Resig는 QUnit을 jQuery의 일부로 설계했습니다. 2008년에 QUnit은 자체 이름, 홈페이지, API 문서를 갖게 되었고 다른 사람들이 이를 단위 테스트에 사용할 수 있도록 허용하기 시작했습니다. 그러나 당시 QUnit은 여전히 ​​jQuery를 기반으로 했습니다. 2009년이 되어서야 QUnit이 완전히 독립적으로 실행될 수 있었습니다.

b) 장점

사용하기 매우 편리하며, 아름다운 외관과 완벽한 테스트 기능(비동기 테스트 포함)을 갖추고 있습니다.

현재 공개 API는 19개뿐입니다. 다른 것에 의존 JS를 실행할 수 있는 한 소프트웨어 패키지 또는 프레임워크를 사용할 수 있습니다. QUnit 자체에는 JS 파일과 CSS 파일이 하나만 있습니다. 물론 필요한 경우 jQuery와 같은 다른 프레임워크와 통합될 수도 있습니다. 브라우저에서의 테스트를 지원할 뿐만 아니라 Rhino 및 Node.js에서의 테스트와 기타 백엔드 테스트도 지원합니다.

c) 단점

Ant, Maven, 자동 빌드 등의 도구와의 통합이 어렵습니다. 주로 브라우저에서 테스트하는 데 사용됩니다.

l Jasmine Framework

a) 소개 Jasmine은 명확하고 이해하기 쉬운 구문을 갖춘 잘 알려진 JavaScript 단위 테스트 프레임워크입니다.

행동 중심 개발(BDD): 개발자, QA, 비기술 인력 또는 소프트웨어 프로젝트의 비즈니스 참여자 간의 협업을 장려하는 민첩한 소프트웨어 개발 기술입니다. BDD는 원래 2003년 Dan North에 의해 명명되었습니다. 여기에는 테스트 중심 개발에 대한 대응으로 수용 및 고객 테스트 드라이브와 같은 극단적인 프로그래밍 방식이 포함되어 있습니다. 지난 몇 년 동안 크게 발전했습니다.

BDD의 초점은 이해관계자와의 논의를 통해 예상되는 소프트웨어 동작을 명확하게 이해하는 것입니다. 프로그래머가 아닌 사람도 읽을 수 있는 자연어로 테스트 사례를 작성하여 테스트 중심 개발 접근 방식을 확장합니다. 행동 중심 개발자는 도메인의 통합 언어와 혼합된 모국어를 사용하여 코드의 목적을 설명합니다. 이를 통해 개발자는 기술적인 세부 사항보다는 코드를 작성하는 방법에 집중할 수 있으며 코드 작성자의 기술 언어를 비즈니스 고객, 사용자, 이해관계자, 프로젝트 관리자 등과 분리할 필요성도 최소화됩니다. 언어 사이에서 앞으로.

BDD 관행에는 다음이 포함됩니다.

l 다양한 이해관계자가 달성하고자 하는 장기 목표 설정

l 기능 주입 방법을 사용하여 이러한 목표 달성에 필요한 기능 매핑

l 외부 내부 소프트웨어 개발 접근 방식을 사용하여, 관련 이해관계자가 구현 프로세스에 통합됩니다.

l 예제를 사용하여 애플리케이션 또는 각 코드 단위의 동작을 설명합니다.

l 이러한 예제를 자동으로 실행하여 빠른 피드백을 제공하고 회귀 테스트를 수행합니다.

l 설명하려면 ""should"를 사용합니다. 코드의 책임을 명확히 하고 소프트웨어의 기능에 대한 질문에 답하는 데 도움이 되는 소프트웨어의 동작

l 코드 자체의 효율성을 보장하기 위해 소프트웨어의 책임을 설명하려면 "ensure"를 사용하세요. 다른 요소 코드에서 가져온 유틸리티입니다.

l 아직 작성되지 않은 관련 코드 모듈의 대체 기능으로 모형을 사용하세요

BDD 기능 주입: 회사는 일반적으로 수익 창출, 비용 절감 또는 비용 보호를 포함하여 비즈니스 이점을 가져올 수 있는 다양한 비전을 가질 수 있습니다. . 개발팀이 비전을 현재 상황에서 가장 좋은 비전으로 결정하면 비전을 성공적으로 실현하기 위해서는 추가적인 도움이 필요합니다.

그런 다음 비전의 주요 이해관계자를 식별하고 다른 이해관계자를 참여시킵니다. 각 이해관계자는 비전 달성을 위해 달성해야 할 사항을 정의합니다. 예를 들어 법무 부서에서 특정 규정을 준수하도록 요구할 수 있습니다. 마케팅 책임자는 소프트웨어를 사용할 사용자 커뮤니티에 참여하기를 원할 수 있습니다. 보안 전문가는 소프트웨어가 SQL 주입 공격에 취약하지 않은지 확인해야 합니다.

이러한 목표를 통해 이러한 목표를 달성하는 데 필요한 대략적인 주제 또는 기능 집합이 정의됩니다. 예를 들어 "사용자가 기여도 값을 정렬하도록 허용" 또는 "거래 감사"입니다. 이러한 테마를 통해 사용자 기능과 사용자 인터페이스의 첫 번째 세부 정보를 결정할 수 있습니다.

b) 장점

행동 중심 개발을 기반으로 한 테스트 프레임워크이며 구문이 자연어에 매우 가깝고 간단하고 명확하며 이해하기 쉽습니다.

Ant, Maven 등과 쉽게 통합하여 자동화된 테스트를 수행할 수 있으며 Jenkins와 같은 지속적인 통합 도구와도 쉽게 통합할 수 있으며 테스트 결과에 대한 XML 문서를 생성할 수도 있습니다.

풍부한 API를 갖추고 있으며, 다른 프레임워크에서는 거의 수행할 수 없는 API 확장을 사용자가 지원합니다.

사용하기 쉽고 간단하며 js 파일 두 개만 가져오기만 하면 됩니다.

브라우저에서 테스트를 지원할 뿐만 아니라 Rhino 및 node.js와 같은 백엔드 테스트도 지원합니다.

Ruby 언어에 대한 특별한 지원이 있으며 Ruby 프로젝트에 쉽게 통합될 수 있습니다.

c) 단점

브라우저의 테스트 인터페이스가 QUnit만큼 아름답고 상세하지 않습니다.

l JsTestDriver

a) 소개

JsTestDriver는 연속 빌드 시스템과 쉽게 통합할 수 있고 여러 브라우저에서 테스트를 실행하여 TDD 스타일 개발을 쉽게 달성할 수 있는 JavaScript 단위 테스트 도구입니다. 프로젝트에서 JsTestDriver를 구성한 후 java 파일을 junit 테스트하는 것처럼 JsTestDriver는 js 파일을 직접 실행하여 단위 테스트를 수행할 수 있습니다. JsTestDriver 프레임워크 자체는 로컬로 실행되고 포트를 수신해야 하는 JAVA jar 패키지입니다.

b) 장점

여러 브라우저를 동시에 테스트할 수 있는 방법은 서비스 시작 시 여러 브라우저의 경로를 매개변수로 전달하는 것입니다. 모바일 장치를 포함하여 여러 컴퓨터의 브라우저에서 실행할 수 있습니다.

테스트를 렌더링하기 위해 결과를 DOM에 추가할 필요가 없고 동시에 많은 브라우저에서 실행될 수 있으며 수정되지 않은 파일이 브라우저에 의해 캐시에서 가져오기 때문에 테스트가 빠르게 실행됩니다.

HTML 첨부 파일은 필요하지 않습니다. 하나 이상의 스크립트와 테스트 스크립트를 제공하기만 하면 테스트 실행기가 실행될 때 빈 파일을 생성합니다.

Ant, Maven 등과 쉽게 통합하여 자동화된 테스트를 수행할 수 있으며 Jenkins와 같은 지속적인 통합 도구와도 쉽게 통합할 수 있으며 테스트 결과에 대한 XML 문서를 생성할 수도 있습니다.

JUnit과 마찬가지로 이 두 IDE에서 쉽게 테스트할 수 있는 Eclipse 및 IntelliJ 플러그인이 있습니다.

다른 테스트 프레임워크를 지원하고 다른 테스트 프레임워크에서 작성된 테스트 코드를 테스트할 수 있습니다. 예를 들어 QUnit 및 Jasmine 테스트 코드를 JsTestDriver 테스트 코드로 변환할 수 있는 해당 플러그인이 있습니다.

c) 단점

브라우저에서는 테스트할 수 없으며 자동화된 도구나 콘솔을 통해서만 실행할 수 있습니다. 생성된 결과는 충분히 직관적이지 않습니다.

설치와 사용이 조금 번거롭고 JAVA 환경에 따라 다릅니다.

l FireUnit

a) 소개

FireUnit은 Firebug의 Javascript를 기반으로 한 유닛 테스트 프레임워크입니다. 간단히 말해서 FireUnit은 Firebug에 탭 패널을 추가하고 테스트를 기록하고 볼 수 있는 몇 가지 간단한 JavaScript API를 제공합니다.

b) 장점

간단하고 사용하기 쉽다

c) 단점

테스트 코드가 소스 코드에 작성되는 경우가 많지만 효과는 실시간으로 볼 수 있습니다.

Firefox Next에서만 실행됩니다

[관련 권장 사항: javascript 학습 튜토리얼]

위 내용은 JavaScript 단위 테스트는 무엇에 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.