Cypress 도입 경위와 예
아젠다
1. 엔드 투 엔드 (E2E) 테스트 비교
2.Cypress 중요한 관념
3.Cucumber 소개
4. 결론과 장점
엔드 투 엔드 (E2E) 테스트 비교
비교하는 방법
첫 번째 포인트 : 얼마나 많은 사람들이 사용하고 있습니다.
npm이나 github인지 확인
하나 도구를 도입할 때 얼마나 엔지니어를 사용하는 것도 중요합니다.
왜 그렇게 말하면, 즉, 만약, 문제가 있을 때 인터넷에서 해결 방법이 있을 가능성이 높습니다.
예를 들면, npm의 상황에 보면, Cypress, Selenium, Puppeteer가 인기군요.
그리고, 만약 툴은 오픈 소스라면, Github의 상황도 확인하는 것이 좋다고 생각합니다.
사이프레스 스타는 25.2K, TestCafe 스타는 8.6K
Cypress open issue는 1363 open, 5463 closed
TestCafe의 open issue는 494 open, 2790 closed
즉, Cypress는 더 인기가 있지만 TestCafe는 더 문제를 해결합니다.
두 번째 포인트: 전문 회사 분석
ThoughtWorks라는 회사는 정기적으로 기술 보고서 "Technology Radar"를 발표합니다.
사이프레스는 두 번 들어갔다. TestCafe는 한 번 밖에 없다.
세 번째 포인트 : 기능 비교
품목
Cypress
TestCafe
셀레늄
환경 구축
쉬운
쉬운
어려운
브라우저
다양
다양
다양
역사
2015
2015
2004
원리
async
async
block wait
Cypress 중요한 관념
옛날 Selenium을 사용했을 때에 엘리먼트를 로딩하기 위해서, 자주 wait(초수)를 사용했다. 하지만 실패하면 retry하지 않았다.
Cypress에서는 4초 이내에 retry하고 있습니다. 그래서 특별한 wait(초수)는 필요 없게 되었다.
그리고 초수를 늘리는 것도 가능합니다.
cy.get('#email', {timeout: 15000})
Cucumber 도입
Cucumber를 도입하면 테스트 케이스를 더 쉽게 이해할 수 있습니다.
디렉토리 구축
Cypress 디렉토리
비교하는 방법
첫 번째 포인트 : 얼마나 많은 사람들이 사용하고 있습니다.
npm이나 github인지 확인
하나 도구를 도입할 때 얼마나 엔지니어를 사용하는 것도 중요합니다.
왜 그렇게 말하면, 즉, 만약, 문제가 있을 때 인터넷에서 해결 방법이 있을 가능성이 높습니다.
예를 들면, npm의 상황에 보면, Cypress, Selenium, Puppeteer가 인기군요.
그리고, 만약 툴은 오픈 소스라면, Github의 상황도 확인하는 것이 좋다고 생각합니다.
사이프레스 스타는 25.2K, TestCafe 스타는 8.6K
Cypress open issue는 1363 open, 5463 closed
TestCafe의 open issue는 494 open, 2790 closed
즉, Cypress는 더 인기가 있지만 TestCafe는 더 문제를 해결합니다.
두 번째 포인트: 전문 회사 분석
ThoughtWorks라는 회사는 정기적으로 기술 보고서 "Technology Radar"를 발표합니다.
사이프레스는 두 번 들어갔다. TestCafe는 한 번 밖에 없다.
세 번째 포인트 : 기능 비교
품목
Cypress
TestCafe
셀레늄
환경 구축
쉬운
쉬운
어려운
브라우저
다양
다양
다양
역사
2015
2015
2004
원리
async
async
block wait
Cypress 중요한 관념
옛날 Selenium을 사용했을 때에 엘리먼트를 로딩하기 위해서, 자주 wait(초수)를 사용했다. 하지만 실패하면 retry하지 않았다.
Cypress에서는 4초 이내에 retry하고 있습니다. 그래서 특별한 wait(초수)는 필요 없게 되었다.
그리고 초수를 늘리는 것도 가능합니다.
cy.get('#email', {timeout: 15000})
Cucumber 도입
Cucumber를 도입하면 테스트 케이스를 더 쉽게 이해할 수 있습니다.
디렉토리 구축
Cypress 디렉토리
cy.get('#email', {timeout: 15000})
Cucumber를 도입하면 테스트 케이스를 더 쉽게 이해할 수 있습니다.
디렉토리 구축
Cypress 디렉토리
Cucumber 디렉토리
코드 예제
Cypress 예제
login.spec.js
context('ログイン画面', () => {
beforeEach(() => {
cy.visit(Cypress.env('sensyn_host') + 'login#/')
cy.fixture('user.json').as('usersData')
})
it('登録していないアカウントでログイン', () => {
cy.get('@usersData').then(user => {
cy.get('#email')
.type(user.wrong_email).should('have.value', user.wrong_email)
cy.get('#password')
.type(user.wrong_password)
})
cy.get('.btn-default').click()
cy.get('.alert-danger').should('contain', 'ログインに失敗しました。');
})
})
Cucumber 예제
login.feature
Feature: アカウント
Description: ログイン、ログアウト機能
Background: ログイン画面に移行
Given ログイン画面に移行
Then ログイン画面になる
/* Case 1 */
Scenario: 登録していないアカウントでログイン
Given 登録していないアカウントを入力
When ログインボタンをクリック
Then ログインエラーが表示される
login.js
import { Given, When, And, Then } from "cypress-cucumber-preprocessor/steps";
Given('ログイン画面に移行', () => {
cy.visit(Cypress.env('sensyn_host') + 'login/')
})
Then(`ログイン画面になる`, () => {
cy.url().should('eq', Cypress.env('sensyn_host') + 'login/')
})
Given(`登録していないアカウントを入力`, () => {
cy.fixture('user.json').as('usersData')
cy.get('@usersData').then(user => {
cy.get('#email')
.type(user.wrong_email).should('have.value', user.wrong_email)
cy.get('#password')
.type(user.wrong_password)
})
})
When(`ログインボタンをクリック`, () => {
cy.get('.btn-default').click()
})
Then(`ログインエラーが表示される`, () => {
cy.get('.alert-danger').should('contain', 'ログインに失敗しました。');
})
결론과 장점
Cypress의 도입은 매우 편리합니다. 기본 기능의 품질이 높아집니다. 레코딩의 플러그인도 있으므로, 개발시에 사용해 빨라진다고 생각합니다.
TestCafe에는 개발 IDE(유료)가 있어, 레코딩 기능도 사용할 수 있으므로, 개발은 빨라질 것 같을지도 모른다.
결론적으로, 둘 다 릴리스의 품질이 높아진다고 생각합니다.
Ref
Reference
이 문제에 관하여(Cypress 도입 경위와 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/T-M-H/items/42518e6d956cfa401c8a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)