paint-brush
REST API 자동화 테스트를 위한 극작가 vs Cypress: 누가 선두에 오를까요?~에 의해@bormando
8,617 판독값
8,617 판독값

REST API 자동화 테스트를 위한 극작가 vs Cypress: 누가 선두에 오를까요?

~에 의해 Dmitrii Bormotov3m2023/09/05
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

Cypress는 UI 및 API 테스트 범위라는 두 가지 목적을 갖춘 테스트 자동화 프레임워크입니다. Playwright는 거의 동일한 목적을 가지고 있지만 기본적으로 브라우저가 제공되지 않습니다. 원하는 경우 별도의 명령을 사용하여 설치해야 합니다. 가볍고 빠른 도구의 경우 설치 시간이 덜 걸리고 API 테스트와 관련하여 불필요하므로 브라우저 실행에 추가 리소스를 소비하지 않으므로 확실히 Playwright가 될 것입니다.
featured image - REST API 자동화 테스트를 위한 극작가 vs Cypress: 누가 선두에 오를까요?
Dmitrii Bormotov HackerNoon profile picture

여러분, 안녕하세요!


나는 항상 UI 및 API 테스트 범위라는 두 가지 목적을 가진 테스트 자동화 프레임워크를 회의적으로 보았습니다. 일반적으로 서로 다른 테스트 실행(또는 이벤트 프로젝트)에서 서로 다른 테스트 계층을 실행하게 됩니다. 의존성 , 구성, 그리고 환경 변수 .


최근에 저는 PlaywrightAPI 테스트 측면에서 제공하는 것을 살펴보고 이를 제 Cypress 경험과 비교했습니다. 그래서 여러분과 공유해야 할 내용은 다음과 같습니다.

사이프러스

Cypress는 얼마 전에 API 테스트를 가능하게 만들었습니다. 예제를 포함한 API 테스트 측면에서 이 도구가 얼마나 훌륭한지에 대한 기사를 학습 포털에서 찾을 수 있습니다.

설치실적

테스트를 실행하려면 프로젝트 종속성을 설치해야 합니다. 맞나요? Cypress 에는 전자 브라우저가 함께 제공되며 API 테스트만 독점적으로 실행하려는 경우 설치하는 것이 상당히 중복되고 시간이 많이 걸릴 수 있습니다. 예를 들어 UI 및 API 테스트 실행을 위해 CI에서 별도의 작업이 있다고 가정해 보겠습니다. 일반적으로 그렇습니다).


사이프러스 클린 설치 시간


안 좋아 보이는데요? ☝️


또한 API 테스트를 실행하면 어쨌든 브라우저가 시작됩니다.


Cypress는 API 사양에 따라 브라우저 세션을 실행합니다.


브라우저의 API 테스트 사양 기록

테스트 예

Cypress를 사용한 간단한 API 테스트는 다음과 같습니다.


 it('Sign in with valid credentials', () => { cy.request('POST', '/auth', { login: Cypress.env('username'), password: Cypress.env('password'), }).should(response => { expect(response.body.token).to.be.a('string') expect(response.status).to.eq(200) }) })


정말 간단하고 간단해 보이죠? 여기에서 이것이 일반적인 Cypress 구문 이라고 말하는 것이 중요합니다. 즉, 모든 출력을 변수에 쓰는 대신( 일부 조정으로 가능 하더라도) 체인을 연결하는 것입니다.

극작가

Cypress 와 마찬가지로 Playwright 는 테스트 자동화 프레임워크입니다. 브라우저 자동화 도구만 단독으로 사용하거나 전체 프레임워크 (테스트 실행기, 어설션 라이브러리, 브라우저 자동화 도구, HTTP 클라이언트, 리포터 등)를 사용할 수 있습니다.

설치실적

여기서 차이점은 Playwright 에는 기본적으로 브라우저가 제공되지 않는다는 것입니다. 원하는 경우 별도의 명령을 사용하여 브라우저를 설치해야 합니다.


극작가 클린 설치 시간


API 테스트를 독점적으로 실행한다는 점에서 브라우저나 다른 데스크톱 앱을 실행하지 않고 컴퓨터의 런타임 및 리소스를 일부 절약하므로 여기에서는 큰 차이가 있습니다.

테스트 예

Playwright를 사용한 간단한 API 테스트는 다음과 같습니다.


 import {test, expect} from '@playwright/test' test('Sign in with valid credentials', async ({request}) => { const response = await request.post('/auth', { data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, }) expect(response.status()).toEqual(200) expect(await response.json()).toEqual({ token: expect.any(String), }) })


객체를 주장하는 Jest와 유사한 구문을 강조하고 싶습니다.


 expect(await response.json()).toEqual({ token: expect.any(String), })


이 구문을 사용하면 단 한 번의 expect 호출로 객체의 전체 구조를 확인할 수 있습니다 ☝️

결론

API 테스트는 실행하는 데 너무 많은 것이 필요하지 않기 때문에 작고 가벼워야 합니다.


위의 내용을 요약하자면…

설치실적

극작가는 13배 빠른 설치 속도로 승리를 거두었습니다.


ℹ️ 종속성이 사전 설치된 이미지를 사용 하거나 CI 스토리지 에 캐시하면 CI 에서 Cypress 설치 시간을 줄일 수 있습니다.

실행 성능

Playwright는 API 테스트를 실행하는 데 브라우저가 필요하지 않기 때문에 승리하므로 곧바로 요점을 설명합니다.


ℹ️ API 테스트에서 브라우저를 "실행하지 않을" 방법은 없습니다. 브라우저는 프레임워크 논리의 일부이기 때문입니다.

테스트 구문

CypressPlaywright 모두 객관적인 이점이 없기 때문에 여기서 승자를 선택할 수 없습니다.


둘 다 약간의 차이가 있지만 매우 간단한 구문을 가지고 있습니다. 여기서 마음에 드는 것을 선택하는 것은 테스터의 결정이라고 말하고 싶습니다.

전반적인

API 테스트 자동화에 Playwright를 사용하는 것은 성능상 충분히 안전하다고 확실히 말할 수 있습니다. 이 프레임워크를 사용하여 이미 UI 테스트를 수행했다면 이는 공정한 솔루션이 될 것입니다.


UI 테스트에 Cypress를 사용하고 API 계층을 다루려는 사람들을 위한 조언 - 다른 것을 사용하는 것이 더 좋습니다( Jest + Axios , 거기에서 예제를 볼 수 있습니다).