[TEST] What is TEST ?



TEST 종류

E2E TEST (End To End Test)

EndPoint(종단) 간 테스트로 사용자의 입장에서 테스트하는 것

보통 Web, App등에서 GUI를 통해서 시나리오, 기능 테스트 등을 수행한다.

사용자에게 직접 노출되는 부분을 점검.

WEB 테스트 방식

  • Front End

    원하는 Text가 제대로 나오는지, 클릭했을 때 기대하는 동작을 하는지 등을 테스트

  • Back End

    API, Function등에 Mock을 주입하고 기대하는 값을 반환하는지 확인함.

E2E TEST를 해야하는 이유

테스트 코드를 작성하고 높은 CoVERAGE를 유지해도 통합하면 문제가 발생하는 경우가 많다.

반복적인 QA테스트를 진행 해야하는데 현실적인 어려움이 있어, 자동화를 해야함.

E2E TEST Framework

Web 환경에서는 Selenium, Cypress, TestCafe 등이 있다.

Selenium

Cypress

  1. OpenSource Project(MIT License)

  2. Browser Support: Electron, Chrome

  3. Element 접근: Iframe에 Target Web을 올린 뒤 Browser 내부에서 접근함.

  4. Headless Support: 지원

  5. CLI Support: 지원

  6. ScreenShot: 지원

  7. Video Record: Electron만 지원

  8. 심플한 API 제공

  9. Mocha 기반이기 때문에 Nodejs 개발자들에게 익숙합니다.

  10. 내부적으로 queue를 써서 sync인것 처럼 동작합니다.

단점
  1. multi tab: 미지원

  2. popup: 미지원

  3. Cypress 내부 에러 핸들링이 쉽지 않다.

  4. 완성도가 낮다.

TestCafe

  1. OpenSource Project(MIT License)

  2. Browser Support: Chrome, Safari, IE, Edge, FireFox, 기타 Mobile Web 등

  3. Element 접근: Proxy를 통해서 Target Web에 접근함.

  4. Headless Support: 지원

  5. CLI Support: 지원

  6. ScreenShot: 지원

  7. Video Record: 미지원

  8. 유연한 Selector, Action API 제공

  9. 직접 Async / Await을 통한 관리

  10. try catch 구문을 이용한 에러 핸들링 가능

  11. DevExpress에서 TestCafe를 위한 전용 IDE 지원(Preview)

단점
  1. multi tab: 미지원

  2. popup: 미지원복잡한 웹에서는 간단한 구문도 깨지는 경우가 많다.
  3. 완성도가 너무 낮다.

FrameWork 비교

SeleniumCypressTestCafe
   

https://medium.com/hbsmith/selenium%EC%97%90%EC%84%9C-cypress%EB%A1%9C-%EA%B0%88%EC%95%84%ED%83%84-%ED%9B%84%EA%B8%B0-324f224c14db

https://testmanager.tistory.com/105

안정성: 둘 다 잔버그가 있지만 Cypress가 좀 더 안정적이다.

브라우저 지원: TestCafe가 다양한 브라우저 지원

러닝 커브 : Cypress API가 더 단순하다

프로젝트 지속성 : Cypress가 더 활발히 진행중

Cursory TEST

개발자가 테스트 주체가 되어 테스트 케이스 없이 주요한 단위 모듈이나 시스템 모듈을 즉흥적으로 여기저기 테스트 하는 기법.

Sanity TEST

새로운 SW version이 주요 테스팅 업무를 수행하기에 충분히 적합한가를 판단하기 위해 수행하는 테스트

개발팀 혹은 개발자가 테스트 주체가 되어 테스트 케이스 없이 주요한 단위 모듈이나 시스템 모듈을 테스트하는 기법

관점

  • 일부 제한된 기능에 대한 자세한 테스트를 좁고 깊은 접근 방식을 따름
  • 일반적으로 non-scripted 형식임
  • 최종 사용자의 요구사항을 만족 여부를 증명하는데 사용 됨
  • Regression TEST의 하위 집합

** Regression TEST

오류를 제거하거나 수정한 시스템이 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지를 확인하는 시험.

Smoke TEST

  • 개발팀이 제작한 주요 단위 모듈이나 시스템 모듈을 제3자 테스트팀 또는 개발팀 내의 테스트팀이 주체가 되어 테스트 케이스 없이 시행

  • 본격적인 테스트의 수행에 앞서, 시스템, 컴포넌트, 소프트웨어 프로그램 등 테스트 대상이나 제품의 빌드가 구축된 테스트 환경에서 테스트가 가능한지 여부를 판단하기 위해 주요 모듈이나 시스템을 간단하게 테스트 하는 것.

  • 테스트 환경을 처음 구축할 때 끝단(end-to-end)까지 점검하여 테스트 환경 자체에 문제가 없는지 확인한 다음 이상이 없을 때 실시

  • 만일 테스트 대상이나 제품의 빌드가 테스트를 수행하기에 완성도가 낮다면 개발 조직이 제품 완성도를 높이는 작업을 하도록 테스트 분석 정보를 제공