테스트 자동화라는 단어가 최근에 많이 사용되고 있다. 이런 현상은 TDD(Test Driven Development)의 중요도가 높아지면서 개발 성숙도가 높아졌기 때문이라고 생각합니다.
테스트 자동화는 일반적으로 UI, Service(API), Unit 3가지 Layer 로 구분을 한다. 아래의 그림을 잘 보면 Unit → UI 로 올라갈 수록 비용과 시간이 많이 걸리게 됩니다. 그 이유는 무엇일까요?
[참고: https://martinfowler.com/bliki/TestPyramid.html
첫 번째 이유는 개발 코드의 추적성때문입니다. Unit 코드는 개발 코드 수정시 해당하는 Unit 테스트 코드를 실행하고 수정을 할 수 있습니다. 하지만, Servie(API), UI Layer 에서는 개발 코드가 변경된 부분을 추적하여 그에 해당하는 테스크 코드를 실행해야 합니다.
두 번째 이유는 사용되는 기술의 다양성 떄문입니다. Unit → UI 로 올라 갈수록 고려해야 할 기술들이 다양해지기 때문입니다. Unit 테스트 코드는 개발된 코드와 거의 동일한 언어와 프레임워크를 사용하므로 Unit 테스트 코드 작성시 고민할 것은 거의 동일합니다. 더 고민해야 할 것은 Unit 테스트 코드를 작성하기 위한 테스트 프레임워크 정도입니다. 하지만, Service(API) Layer 가 되면 Mocking, Stubing, Rest 에 대한 테스트 방법 등을 더 고려 해야합니다. 그리고, UI Layer 가 되면 Selenium, Robot Framework, CodedUI, Sikuli, UFT 등의 다양한 UI 테스트 자동화 도구/프레임 워크에 대한 고려 사항이 추가되면서 UI 를 꾸미기 위해 개발에서 사용한 FrontEnd 프레임워크에 대한 고려 사항도 추가가 됩니다.
테스트 자동화(Unit, Servie[API]. UI)는 대부분 테스트 자동화 담당자가 수행하게 됩니다. 이런 이유로 테스트 자동화를 한다고 하면 Unit → UI 까지 모두 할 수 있는 인력이 필요하게 됩니다.
하지만, 이렇게 모든 Layer 에 대한 테스트 자동화를 리딩하고 수행할 수 있는 인력이라면 개발자라고 할 수 있지 않을까요? 이 질문에 대해서 대부분은 맞다고 생각 하실 겁니다. 이렇게 개발자로써 충분한 역활을 수행할 수 있는 인력이 테스트 자동화를 수행하는 것이 가능할까요? 대부분 불가능합니다. 그 이유는 두가지로 나누어집니다.
- 개발 역량을 가진 인력은 테스트 자동화 업무를 하고 싶어하지 않습니다. 슬프게도 말이죠, 아직 한국에서는 테스트 자동화/테스트는 개발을 잘 못하는 사람이 하는 업무, 테스트 자동화는 소모적이고 의미 없는 업무, 자기가 성장하기 어려운 업무라는 인식이 강하기 때문입니다.
- 개발 역량을 가진 인력들은 테스트보단 개발 프로덕트가 중요하다고 생각하는 PM/관리자로 인해 프로덕트의 개발 업무를 수행하게 됩니다.
이런 이유로 인해서 한국에서는 테스트/테스트 자동화와 같은 업무는 단순 노다가라고 생각하고 중요도가 낮은 업무로 취급하고 있는게 사실입니다.
하지만, 외국의 경우는 개발을 잘하고 충분한 역량을 가진 개발자들이 테스트 자동화를 수행하고난 테스트 전문가로 활동 하고 있습니다. 점점 테스트 자동화 코드를 개발자가 작성하는 것처럼 개발 성숙도가 높아진다면 테스트/테스트 자동화에 대한 선입견은 점점 사라질 것이라고 기대를 하고 있습니다.
테스트 자동화/테스트는 DevOpts 가 중요해지면서 점점 더 중요해지고 강조 될 것입니다. 프로덕트만큼이나 품질도 중요해질 것이고, 그만큼 테스트/테스트 자동화도 중요하니까요.
'개발' 카테고리의 다른 글
VirtualBox 에 OSX 설치 방법 (0) | 2020.05.25 |
---|---|
Gitlab 설정 변경 (2) | 2020.05.25 |
autoenv + conda 를 이용한 파이썬 가상 환경 자동 구성(로딩?) (0) | 2020.05.25 |
XPS15 For Ubuntu (0) | 2020.05.25 |
환영합니다! (0) | 2020.05.25 |