[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
OpenSource Project(MIT License)
Browser Support: Electron, Chrome
Element 접근: Iframe에 Target Web을 올린 뒤 Browser 내부에서 접근함.
Headless Support: 지원
CLI Support: 지원
ScreenShot: 지원
Video Record: Electron만 지원
심플한 API 제공
Mocha 기반이기 때문에 Nodejs 개발자들에게 익숙합니다.
내부적으로 queue를 써서 sync인것 처럼 동작합니다.
단점
multi tab: 미지원
popup: 미지원
Cypress 내부 에러 핸들링이 쉽지 않다.
완성도가 낮다.
TestCafe
OpenSource Project(MIT License)
Browser Support: Chrome, Safari, IE, Edge, FireFox, 기타 Mobile Web 등
Element 접근: Proxy를 통해서 Target Web에 접근함.
Headless Support: 지원
CLI Support: 지원
ScreenShot: 지원
Video Record: 미지원
유연한 Selector, Action API 제공
직접 Async / Await을 통한 관리
try catch 구문을 이용한 에러 핸들링 가능
DevExpress에서 TestCafe를 위한 전용 IDE 지원(Preview)
단점
multi tab: 미지원
- popup: 미지원복잡한 웹에서는 간단한 구문도 깨지는 경우가 많다.
- 완성도가 너무 낮다.
FrameWork 비교
Selenium | Cypress | TestCafe |
---|---|---|
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)까지 점검하여 테스트 환경 자체에 문제가 없는지 확인한 다음 이상이 없을 때 실시
만일 테스트 대상이나 제품의 빌드가 테스트를 수행하기에 완성도가 낮다면 개발 조직이 제품 완성도를 높이는 작업을 하도록 테스트 분석 정보를 제공