현재의 tester, qa engineer, set, 품질에 대한 생각들(작성중..)

chacha·2022년 2월 12일
2

오늘날의 테스트에 대해서 이야기 해보고 싶다.

먼저 테스트가 뭔지부터 이야기 해보자

만들어진 제품(기능, api, function 등등)이 정상동작하는지 확인하는과정이다.

정상동작의 의미는 여러가지가 있다.
기능적, 신뢰성, 사용성 등등..

이런 기준에 맞는 제품인지 잘 동작하는지 확인하는 과정이라고 할 수 있다.

과거의 소프트웨어 개발방법인 waterfall에서는 이런 과정을 단계적으로 수행했다.

전형적인 v모델에서는 unit test 부터 acceptance test까지의 과정으로 개발을 했다. 각 단계별로 검증을 해야하니 이에 대한 많은 부분을 manual tester가 수행했다.

이때 각단계에서 해야하는 역활은 명확했으며, 이제까지 우리나라의 많은 manual tester의 밥줄에는 문제가 없어 보였다.

하지만, waterfall은 많은 문제를 일으켰다. 긴 설계 이후에 결국 개발을 진행하면서 설계를 변경하거나, 개발의 진행 후 통합과정에서 발생하는 많은 오류, 그로 인해 계속된 프로젝트 지연등등 이 때문에 많은 엔지니어는 Agile을 외쳤고, 확실히 정해진 형태는 업지만 좀더 적은 life cycle로 개발을 진행하는 agile틱한 형태로 개발을 진행하게 되었다.

이 와중에 docker의 탄생 및 microservice, cloud로 기술이 전환되면서 개발 생태계는 많이 변해버렸다.

또한 다양한 급변하는 IT생태계에서 빠르게 변화하는 고객의 Needs에 맞게 기능을 업데이트 하고 릴리즈하는 형태로 비즈니스도 변하게 되었다.

이 때문에 더이상 과거처럼 V모델 하에 Turn key로 개발/테스트를 할 수 없게 되었고,

CI/CD의 빠른 Life cycle로 시장에 대응하는것이 기업에게 요구되 었다.

이런 현상은 기존의 개발에 속해있던 개발자와 테스터 모두에게 영향을 끼치게 된다.

개발자가 기능을 추가/수정 한다고 하면, 당연하게 테스트 코드 또한 추가/수정을 해야하고, 이 또한 Code Review툴을 통해서 Review받게 되었다.
이 때문에 기존에 깜깜이로 개발되던 코드의 품질에 대한 요구는 증가하게 된다.

이렇게 추가된 Test Code는 빠르게 수행되어야 하고, CI단계에서 코드가 병합될 때마다 현재의 코드가 안정적인지 점검받게 된다.
개발자는 더이상 아무 생각없이 개발만 할 수 없게 되었다.

테스터는 이런 환경에 밥줄에 문제가 생기게 된다.(특히 메뉴얼 테스터), 테스터는 기존의 CI단계에 관여하기 어렵다. CI단계에 관여 한다면 개발자가 작성한 코드와 테스트 코드의 품질을 측정할 수 있는 개발 지식을 가지고 있어야 하는데, 이는 쉽지 않다.(그걸 알면 나도 개발하지! 라고 생각 할 수도 있다.)

그럼 테스터는 더이상 필요가 없는 것일까? 아니다 CD단계가 남앗다.(CD가 Continuous Deliver일때 이야기다, Continuous Development에서는 메뉴얼 테스터는 밥줄을 잃을 것 같다.)
CI단계를 통과했다고 이 제품을 100%믿을 수 있을까?

나는 개발자의 테스트를 완전히 신뢰하지 않는다. 설계/개발하는 과정에서 쓰게되는 뇌용량은 더이상 깊은 수준의 점검까지 허용되지 않을 것 같다.
(물론 슈퍼 개발자는 예외다. 대부분의 개발자를 말하는 것이다.)
그 때문에 CI단계 이후 CI단계에서 다른 시각을 가진 역할자가 요구된다고 생각한다.
(기업입장에서는 잘못된 결함으로 인한 손실보다는 비용을 쓸 것 같다.)

그래서 테스터는 CD단계에 검증계에 올라온 서비스를 대상으로 빠르게(CI/CD의 속도가 느리지 않게) 테스트를 해야하는 요구에 놓이게 된다.
버전이 올라갈때마다 기존의 모든기능과 새로운 기능을 같이 점검해야되는 상황에 놓이게 된다.
이렇게 보면 테스터가 할일이 더 많이 졌을 거라고 생각하지만, 다양한 테스트 도구들의 개발로 많은 부분이 자동화 테스트로 대체되고 있다.

이 때문에 많은 기업에서는 기존의 테스터에게는 강제적으로 자동화 테스트의 역량을 요구하고 있다.
대부분의 반복적인 점검은 자동화 테스트로 수행하고, 테스터는 신기능이나 신기능에 따른 side effect을 좀더 점검하는 형태로 수행되는 것 같다.

또한 Microservice형태에서 아주 많고 많은 프로젝트의 많고 많은 자동화 테스트의 수행이 정상적으로 동작되는지를 관리하는 역할자 또한 요구되고 있다.

현재까지의 내용을 정리하면 다음과 같은 그림이 될것 같다.

(추가 예정 : CI/CD에서 요구되는 품질적인 요구사항들을 표현)

현재 CI/CD환경에서는 품질과 관련해서 다음과 같은 역할이 요구되는것 같다.

만약 일반적인 메뉴얼 테스터는 이런 환경에서 점점 본인의 역할이 줄어 들것이고, 이런 환경에서 요구하는 그림과 같은 요구 사항을 가진 역할자를 프로젝트에서는 필요로하지 않을까?

최근 IT시장이 핫해지고 엔지니어 몸값이 천정부지로 올라가고 있는데 이런 시장에서 본인의 몸값을 올리려면 현재의 트랜드를 잘 읽고 필요한 기술을 빠르게 익혀야 되지 않을까 생각한다.

profile
안녕하세요~ :)

0개의 댓글