swsnu / swppfall2019

31 stars 23 forks source link

[integration test / tip] Interactive integration test automation #210

Open zeroFruit opened 4 years ago

zeroFruit commented 4 years ago

혹시 서비스를 테스트할 때 매번 로그인하고 같은 동작을 하기 귀찮지 않으신가요? 이런 귀찮음을 해결해줄 수 있는 테스팅 툴이 있어서 공유하고자 합니다.

cypress 라는 서비스 입니다. 코드로 유저 인터렉션을 시뮬레이션할 수 있고 그 결과 화면까지 실시간으로 볼 수 있습니다. 좀 더 느낌이 올 수 있도록 테스트 케이스 하나를 가져와보았습니다.

describe('User login successfully', function() {
  it('should visit overview page when email and password is valid', function() {
    cy.visit('/');

    cy.get('input[name="email"]')
      .type('user@gmail.com);
    cy.get('input[name="password"]')
      .type('password');

    cy.contains("Log In")
      .click();

    cy.url().should('include', '/overview');
  })
});

코드로 로그인 폼에 정보를 입력하고 버튼을 누르면 다음화면으로 넘어가는지를 체크하는 테스트 케이스입니다.

이렇게 유저 스토리 별로 테스트 케이스를 짜놓았을 때의 장점은 어떤 코드를 바꿨을 때 다른 페이지들이 깨지지는 않는지, 바꾼 코드의 페이지가 제대로 동작하는지 손수 버튼을 눌러보면서 테스트 하는게 아니라 단순히 테스트 케이스를 돌리면 제대로 동작하는지를 바로 확인할 수 있습니다.