qa-testing

품질 보증 엔지니어링(QA Engineering)이란

품질 보증 엔지니어링(QA Engineering)이란


소프트웨어 엔지니어링이란?

QA 엔지니어링 용어를 알기전에 우선 짚고 넘어갈 용어는 바로 소프트웨어 엔지니어링이다. Software Engineering at Google 도서의 내용을 인용하자면, 해당 가장 첫번째 파트에서 다루는 내용이고, 이 단어에서 품질보증 엔지니어링도 시대와 기술의 변화에 맞추어 따라오게 되지 않았나 생각된다.

단순히 프로그래밍이 아닌 엔지니어링 작업(개발/수정/유지보수)관점으로 내용을 다루고 있다. 시간의 흐름에 따라 코드는 유지보수 되어야 하고, 조직이나 코드의 확장성도 염두해 두어야 한다. 또한 트레이드 오프와 비용도 고려해야하는 종합적인 요소를 고려하여 사용자가 필요로 하는 기능을 설계하고 개발해 실제로 동작하는 소프트웨어를 잘 만들 수 있을지 고민한다.


품질 보증 엔지니어링(QA Engineering)의 탄생


언제부터 QA Engineer / QA Engineering 이란 용어가 쓰였는지 모르겠다만 아무래도 테스트 관련된 활동에 자동화 관련 활동이 들어가면서 생기지 않았나 유추해본다. 자동화는 대부분 현업에서는 노코드 툴 보다는 코드 베이스로 구현되었고, 이런 프로그래밍 활동이 기본적으로 수반되다 보니 동일하게 소프트웨어 엔지니어링과 교집합 되는 부분이 있다. 따라서 이부분에 대한 구분을 편리하게 하도록 자동화나 관련된 제반 활동등을 다루다 보니 해당 용어가 탄생했을 것이라 추측한다.


엔지니어링, 공학에 대한 용어

공학이라는 말은 꼭 "공대"에서만 쓰이는 것은 아니다. 공학이라는 말의 뜻을 살펴보면, 공학 = 과학 원리를 기반으로 실용적인 문제를 해결하는 학문 분야 인 것이다.

이를 대입한다면 QA에서의 과학 원리는 컴퓨터 과학 지식, 테스트 이론, 다양한 관련 표준이나 연구 결과(ISO 25010, 29119 TMMI 같은 품질 프레임워크 연구)등이 모두 과학 원리로 볼 수 있다.

엔지니어링 = 공학 지식을 실제로 적용해 제품·시스템을 설계·구축·운영하는 행위/프로세스로 실제 이런 컴퓨터 이론이나 연구 지식을 통해 실제 제품과 시스템에 적용하는 것을 말한다.


품질 엔지니어링 활동

따라서 품질 엔지니어링 활동은 단순하게 자동화에 대한 공학적 지식을 적용하는것 뿐만 아니라, 테스트나 품질 보증에 대한 부분. 코드와 무관한 품질 프로세스, 리스크 예방 등을 모두 광범위하게 적용하는 활동으로 볼 수 있다.

“소프트웨어가 실제로 제대로 동작하는지 검증하고, 출시에 필요한 품질 수준을 확보하는 실천적 활동” 으로 정의하기도 한다.


그런 활동들은 대게 테스트 전략 수립, 테스트 케이스 설계/작성, 기능/비기능 테스트 수행, 자동화 스크립트개발, 성능·부하 테스트, 버그 재현/리포트 및  릴리즈 검증(Release QA), CI/CD 품질 자동화 구축, 관련 테스트 인프라 및 서버 데이터 생성 등 광범위한 부분으로 확대되었다.

또한 이런것들은 이론이나 프로세스 등을 촘촘하게 다루면서 결함 예방 (사전 설계)이 그 목적에 더 가까운 활동이라고 볼 수 있겠다. 엔지니어 관점에서는 그냥 품질을 위한 시스템 자체를 엔지니어링 활동으로 보는 경향도 있다.

크게 생각할 수도 있고, 자동화나 시스템 엔지니어링 관점으로 작게 볼 수도 있는데 무엇이 되었든 품질을 높이고 오류를 예방하는 활동에 기여하는 부분이라는것은 항상 동일하다고 볼 수 있겠다.