0. 개요
최근 취업 특강과, 채용 공고를 보다보니 shift-left testing이라는 말을 듣게 되었다.
보아하니 전략의 일종인 것 같은데, 무슨 전략일 지 찾아보았다.
1. shift left 정의
Shift left 전략은, 말 그대로 "왼쪽으로 이동"하는 것이다.
소프트웨어를 개발할 때, 책을 읽듯이 왼쪽에서 오른쪽으로 흘러간다고 가정해보면, 아래와 같은 순서로 개발된다.
전통적으로, QA라 하면은 테스트 단계에서 "기획자와 개발자가 다 만든 소프트웨어" 를 보고 테스트하는 것을 의미했었다.
여기서 Shift left testing 전략이라 하면, 기획, 개발 단계에서도 좋은 품질을 만들기 위한 전략이라고 볼 수 있다.
2. shift left testing 왜 함?
어차피 테스트 단계에서 테스트 할텐데, 왜 굳이 기획 단계와 개발 단계에서 테스트를 해야 할까?
그 이유는, "비용"과 밀접해 있다.
집을 짓는걸 예를 들자면,
1. "집을 설계대로 정확히 지었는데, 나중에 다 짓고 보니깐 설계도에 입구가 없네..?" (기획 오류)
2. "제대로 된 설계도를 가지고 지었는데, 다 짓고 보니깐 집이 살짝 휘었네..?" (개발 오류)
와 같은 예시를 들 수 있다.
다 짓고 나서 "이 설계도에는 입구가 없는데요?" 라고 하거나, "이렇게 지으면 집이 휘어요.." 라고 해봤자, 이미 비용은 비용대로 나간 후일 뿐이다.
소프트웨어도, 인력, 시간 등의 비용이 기획과 개발 단계에서 지출되는 만큼 이러한 비용을 낮추기 위해 shift left testing 전략을 한다고 볼 수 있다.
3. 개발 단계에서의 shift left testing
개발 단계에서 품질을 높이는 방법은 뭐가 있을까?
단순히 생각하면, QA가 화이트박스 테스트를 해야하는거라고도 생각할 수도 있다.
하지만, 그보다는 "개발 중간중간에 품질 검토를 끼워넣는 방식"이라고 할 수 있다.
개발자 입장에서는, 유닛 테스트, 코드 리뷰, TDD와 같은 방법으로 품질을 높일 수 있을 것이고,
QA의 입장에서는 기능이 추가되었을 때 테스트를 함으로써 신속한 피드백을 제시할 수 있을 것이다.
코드의 깊이를 알고있는 QA라면, 유닛 테스트, 코드 리뷰 등의 방법 또한 참여할 수 있을 것 같다!
이 부분에서, CI (Continuous Intergration) 자동화가 되어있는 회사라면
빌드 이후 테스트 단계를 자동화하는 방법으로 코드 추가에 대한 민첩한 대응을 하여 개발을 지원하는 방법이 있다.
개발자의 입장에서, 기능 하나를 올리는 순간 자동으로 테스트가 되고 기능에 대한 테스트 결과를 알려준다면 정말 땡큐일듯!
물론, 자동화가 무조건 정답은 아니다. 품질을 높이기 위한 효율적인 방법으로 "자동화"를 쓰는것이라는 것을 명심해야 한다!
4. 기획 단계에서의 shift left testing
개발 단계에서 품질을 높이는 방법에 대해 충분히 고민해 봤다면,
기획 단계에서 품질을 높이는 방법은 뭐가 있을까?
이전 경험을 기억하자면, 기획된 기능이 구현이 된 후 기획자와 미팅을 가지고, 기획자가 기능에 대한 설명을 하는 시간을 가졌다.
즉, "기획 + 개발"이 완료된 기능에 대해 테스트할 때 참고하라고 기능에 대한 설명을 하는 것이었다.
기획서로 기능이 구현되기 전에는, 기획서를 볼 기회가 없었다. (물론 짬이 낮아서 일수도..?)
여기서 shift left를 도입한다면, 기획서가 만들어지고 개발단계에 들어서기 전에, 초기 단계 기획부터 QA를 포함해 검토를 하는 문화를 가져야 할 듯 하다.
물론 기획자들이 바보도 아니고 꼼꼼히 기획을 해서 기획서를 만들터이니, 딱 봤을 때 문제가 쉽게 나오진 않을 것이다.
하지만 밥값을 하려면! 꼼꼼히 만들어진 기획서 내 논리적 허점을 찾아내는 탐정이 되어야 한다!
5. shift left testing 의 장점
1. 비용 절감
2번문항에서 나왔듯, 다 지은 집을 허물고 짓는것보다 처음부터 잘 설계하면 비용을 아낄 수 있다.
2. 품질 향상
가끔은, 적당히 잘못된 기획안 / 개발 산출물에 대해서는 "그냥 안고 가자"는 식으로 퉁치곤 한다..!
출시가 임박했다든지, 다 뜯어 고치는 비용이 너무 크다든지의 이유로 문제가 있는 상태에서 배포하고, 이후 수정을 하곤 한다.
하지만, shift left를 한다면, 위와 같은 상황을 최대한 예방할 수 있다.
6. shift left testing 은 문화다.
나는, shift-left testing이라고 하길래, testing=QA, 즉 QA가 알아둬야할 내용인가 했다.
하지만, 이는 팀 전체에 갖춰야 할 문화에 가깝다고 생각한다.
물론, 품질을 담당하는 사람이기 때문에, 이러한 문화를 정착시키기 위해 노력을 하는 사람이 QA라고 생각한다.
출처 :
Line
https://engineering.linecorp.com/ko/blog/quality-advocator-shift-left-shift-right
QA가 Shift-left와 Shift-right 접근 방법을 통해 더 나은 품질을 확보하는 방법
안녕하세요. LINE에서 다양한 서비스의 QA 역할을 수행하고 있는 채수광입니다. LINE뿐 아니라 LINE 외부의 다른 QA 분들과도 소통을 넓히기 위해 다양한 채널로 찾아뵙고 있으며, 앞으로 LINE Engineerin
engineering.linecorp.com
IBM
https://www.ibm.com/think/topics/shift-left-testing
What is Shift-left Testing? | IBM
Shift-left testing is an approach in software development that emphasizes moving testing activities earlier in the development process.
www.ibm.com