게시 : 2011 년 6 월 2, 2023
소프트웨어 개발이 더 많이 변경될수록 테스트 과제는 동일하게 유지됩니다.
Jonny Steiner, 제품 마케팅 관리자
2008년 리메이크된 "지구 최후의 날"에서 반하르트 교수와 클라투가 논의했듯이, 클라투는 "대안이 있을 겁니다. 우리 문제를 해결할 수 있는 기술이 있어야 합니다."라고 묻습니다. 클라투는 태연하게 대답합니다. "당신의 문제는 기술이 아닙니다. 문제는 바로 당신입니다. 당신은 변화하려는 의지가 부족합니다."
마치 시나리오 작가 데이비드 스카르파와 에드먼드 H. 노스가 최근 제 고객 미팅에 참석한 것 같았습니다. 기업들이 급속한 디지털 전환을 겪고 있는 이 시대에, 기술로 문제를 해결하고자 하는 개발 및 테스트 전문가들이 저에게 여러 번 연락을 해왔습니다. 그들은 저에게 무슨 일을 하는지 묻고, 저는 어쩔 수 없이 테스트 프로세스의 성숙도에 대해 질문합니다. "고객님의 상황에 맞춰 대응해 드리겠습니다."라고 저는 자신 있게 설명합니다.
간단한 선택처럼 보입니다. 도구를 구입하고 디지털 혁신을 이루는 것이죠. 하지만 실제로 경험해 보면, 비즈니스 혁신을 이루려면 단순히 새 도구를 구매하는 것 이상의 노력이 필요합니다.
시대에 따라 진화하다
1980년대 개인용 컴퓨팅의 등장은 개인의 생산성과 연결성을 향상시켰습니다. 90년대 인터넷 혁명은 전 세계 사람들과 기업을 더욱 연결했습니다. 2000년대가 시작되면서 전자상거래가 급증하고 모바일 기기가 등장하기 시작했습니다. 오늘날 데이터와 클라우드 컴퓨팅의 힘을 활용하면서 디지털 변혁은 조직 발전의 필수적인 요소가 되었습니다. 기업은 시대에 적응하고 디지털 기술을 활용하여 혁신하고, 효율성을 높이고, 혁신을 주도하고, 고객 경험을 향상시켜야 합니다.
소프트웨어 개발 테스트 및 제공은 그 기간 동안 더욱 역동적으로 발전했으며 매년 점진적으로 발전해 왔습니다. 소프트웨어 개발 방법론 개발을 주도하는 것은 고객 만족도 향상을 목표로 시장 출시 기간 단축의 필요성입니다. 애자일(Agile)과 DevOps 이러한 방식은 지속적인 배포, 빈번한 피드백, 개발, 테스트, 운영 팀 간의 긴밀한 협업을 강조하기 때문에 폭포수와 같은 기존 방법론을 대체하고 있습니다.
마찬가지로 디지털 혁신은 조직의 핵심 초점이 되었으며, 그 결과 애자일 계획부터 배포까지 비즈니스의 모든 영역에 기술이 통합되었습니다. 그러나 소프트웨어 개발 테스트 및 제공 방식이 발전함에 따라, 기술 발전과 방법론의 변화 속에서도 근본적인 과제는 여전히 변함이 없다는 점을 인식하는 것이 중요합니다. 이러한 지속적인 과제는 전 세계 기업에 매일 영향을 미치고 있으며, 새로운 것은 아닐지라도 이를 완화하는 데 사용되는 방법은 마치 공상과학 소설처럼 보일 정도로 독특한 기술을 접목할 수 있습니다.
테스트 과제는 여전히 동일합니다
상반되는 것처럼 들리지만, 사실입니다. 전 세계 테스트 조직들이 겪는 많은 어려움은 8년에서 10년 전과 같습니다. 최신 소프트웨어 시스템은 복잡하지만 개발 및 테스트 주기는 점점 짧아지고 있습니다. 조직 간 사일로는 이해관계자, 개발자, 테스터 간의 소통과 협업을 저해할 수 있으며, 이러한 팀들은 막대한 양의 데이터를 계속해서 생성합니다. 이러한 데이터와 테스트 환경을 관리하는 것은 중요한 문제이며, 진정한 요구 사항을 충족할 만큼 충분한 테스트 커버리지와 확장성을 확보하는 것만큼이나 중요합니다. 따라서 시대에 적응하는 것이 필수적입니다. 하지만 앞으로 살펴보겠지만, 시대는 생각보다 크게 변하지 않았습니다.
테스트 과제
테스트 자동화
여기서 과제는 지속적인 테스트 환경을 자동화하려면 자동화 프레임워크를 개발하고 유지 관리할 숙련된 인력이 필요하다는 것입니다. 안타깝게도 전 세계적으로 숙련된 QA 및 테스트 전문가 부족으로 인해 이 과제는 여전히 최우선 과제로 남아 있습니다. 테스트 자동화 과제에 내재된 다른 세부 사항은 다음과 같습니다.
- 기술 – 테스트 자동화를 위해서는 프로그래밍, 스크립팅 언어, 그리고 테스트 자동화 프레임워크에 대한 숙련된 실무자가 필요합니다. 이러한 기술은 조직의 요구에 맞춰 프레임워크를 설계, 개발 및 유지 관리하는 데 활용됩니다.
- 러닝 – 팀의 역량도 중요하지만, 그 역량을 최신 기술, 도구, 그리고 모범 사례로 끌어올리는 것 또한 마찬가지로 중요합니다. 팀이 자동화 테스트의 모든 기능을 활용하려면 지속적인 학습이 필수적입니다.
- 확장성 – 소프트웨어가 발전함에 따라 테스트도 발전해야 합니다. 업데이트된 자동화 스크립트는 모든 웹 또는 모바일 애플리케이션 변경 사항을 지원해야 합니다.
프레임워크 자체도 애플리케이션의 복잡성이 커짐에 따라 확장되어야 합니다.
환경 관리
여기서 어려운 점은 개발자와 테스터가 다양한 시나리오에서 코드가 제대로 작동하는지 확인하기 위해 여러 환경에 접근해야 한다는 것입니다. 웹 및 모바일 앱의 복잡성이 증가함에 따라 이러한 환경 관리의 어려움이 더욱 커지고 있다는 점이 문제를 더욱 악화시킵니다. 이러한 어려움을 자세히 살펴보면, 팀들이 다음과 같은 어려움을 겪고 있음을 알 수 있습니다.
- Access – 개발자와 테스터는 코드 검증을 위해 개발, 스테이징 및 프로덕션 환경에 액세스해야 합니다. 이러한 각 환경은 고유한 구성, 데이터베이스 및 타사 통합을 가질 가능성이 높습니다.
- 복잡성 – 웹 및 모바일 앱은 자체 종속성과 구성을 가진 여러 구성 요소와 서비스를 포함하는 경우가 많습니다. 모든 구성 요소를 각 환경에 맞게 연결, 사용 가능, 구성하는 것이 그 어느 때보다 중요합니다.
- Data – 테스트에서 생성된 데이터를 관리하는 것은 엄청난 작업입니다. 데이터는 보호되어야 하며, 조직 전체에서 동기화되어야 합니다. 여러 환경 간의 데이터 마이그레이션을 처리하면서 데이터 종속성과 일관성을 관리하는 데는 신중함과 노력이 필요합니다.
테스트 데이터
여기서의 과제는 간단합니다. 테스트를 통해 데이터가 생성됩니다. 엄청난 양의 데이터가 생성되는 것이죠. 생성된 데이터는 활용 가능한 데이터로 만들기 위해 관리 및 분석되어야 합니다. 이에 대한 자세한 내용은 다음과 같습니다.
- 실재론 – 정확성을 보장하기 위해 테스트 데이터는 실제 상황을 반영해야 합니다. 다양한 데이터 세트를 확보하는 것은 중요하지만, 복잡하고 시간이 많이 소요되는 작업이기도 합니다. 결함을 효과적으로 발견하기 위해서는 테스트 데이터가 운영 환경을 최대한 정확하게 반영해야 합니다.
- 보안 – 민감한 정보는 종종 테스트 데이터에 포함됩니다. 여기에는 개인 식별 정보나 독점적인 비즈니스 데이터가 포함됩니다. 개인정보 보호는 매우 중요하며, 글로벌 규정을 준수하는 것도 중요합니다.
- 실행 가능성 – 지속적인 자동화 테스트를 통해 생성된 데이터는 문제 식별 및 결과 추적에 도움이 되는 방식으로 제공되어야 합니다. 데이터를 체계적으로 구성하고 구조화하여 결과를 최대한 효과적으로 분석할 수 있도록 해야 합니다.
빠른 피드백
모든 조직에 필요한 기능이지만, 여전히 간과되고 있습니다. 중요한 것은 개발자가 결함을 신속하게 식별하고 해결하며 개발 및 테스트 프로세스가 중단되지 않도록 보호하는 것입니다. 이 과제와 가장 관련 있는 것은 다음과 같습니다.
- 식별 – 결함은 개발 및 테스트 과정의 가능한 한 초기에 발견되어야 합니다. 결함을 완화하는 데 시간이 오래 걸릴수록, 결함을 수정하는 데 필요한 비용과 시간 측면에서 완화가 더 어려워집니다.
- 분해능 – 결함이 발견되면 즉시 완화해야 합니다. 이를 해결하지 않고 방치하면 병목 현상이 발생하고 프로세스에 악영향을 미칩니다. 개발자와 테스터가 결함을 효율적으로 조사하고 수정하는 데 필요한 도구, 리소스, 그리고 전문 지식은 이러한 과제를 더욱 어렵게 만듭니다.
- 통계 보고서 – 결국 의사소통이 중요합니다. 테스터는 결함을 보고하고 개발자에게 최대한 많은 정보를 제공해야 합니다. 테스터는 테스터의 발견 사항을 이해하고 우선순위를 정하여 결함을 신속하게 완화할 수 있어야 합니다.
문화적 변화
이전 과제들이 수년간 본질적으로 변하지 않았다면, 이 과제는 최근에 추가된 가장 새로운 과제일 수 있습니다. 문화를 바꾸려면 사일로를 허물고, 협업을 개선하고, 개발 방식을 더욱 반복적인 방식으로 바꿔야 합니다. 이 과제와 가장 관련 있는 것은 다음과 같습니다.
- 사일로 – 지속적인 테스트 관행이 확립된 조직에서도 팀은 여전히 고립되어 있습니다. 개발자, 테스터, QA는 모두 고립된 채 업무를 진행하는 반면, 공유하는 프로세스는 제대로 작동하지 않습니다. 이러한 고립을 해소하려면 책임을 공유하고 소통을 개선하기 위한 노력이 필요합니다.
- 의사 소통 – 그런데, 요구사항을 정의하고, 품질 목표를 설정하고, 노력을 더욱 효과적으로 조율하기 위해서는 더 나은 협업과 소통이 필수적입니다. 피드백과 지식을 공유하는 것 또한 마찬가지로 중요합니다.
- 고객 지원 – 이는 경영진의 강력한 지원과 리더십에서 비롯되어야 합니다. 팀 리더는 지속적인 테스트 도입을 장려하는 동시에 팀에 필요한 리소스, 도구, 그리고 노하우를 제공해야 합니다.
도전 극복
테스트 자동화의 과제는 자동화 리소스 교육 및 개선에 대한 조직적 투자를 통해 해결됩니다. 하지만 사용 편의성, 유지 관리 용이성, 확장성을 높이는 데 도움이 되는 자동화 도구와 기술을 활용하는 것이 좋은 시작입니다.
테스트 환경 관리를 살펴볼 때, 효과적인 환경 관리 관행이 필요합니다. 더 나은 버전 관리 및 변경 관리 관행을 통해 모든 환경에서 일관성을 유지할 수 있습니다. 커뮤니케이션에 대해서는 더 자세히 살펴보겠지만, 개발, 테스트 및 운영 팀의 프로세스 간소화에 도움이 될 수 있다는 점에서 환경 관리의 맥락에서 중요한 의미를 갖습니다.
이러한 프로세스와 환경은 막대한 양의 데이터를 생성한다는 점에서 테스트 데이터라는 과제로 직결됩니다. 데이터 관리 도구는 데이터 생성, 데이터 버전 관리, 데이터 동기화와 같은 기능을 제공하여 이러한 과제를 해결하는 데 도움이 됩니다. 하지만 테스트 데이터 관리 지침은 명확해야 하며, 프로세스도 명확하게 정의되어야 합니다.
이러한 데이터는 빠른 피드백 형태로 제공되며, 협업과 피드백을 장려하는 애자일 환경에서 작업할 때 더 쉽게 이해할 수 있습니다. 결함 발견 및 해결을 위한 적절한 도구를 활용하면 피드백 루프의 속도를 향상시킬 수 있습니다.
정기적인 회의와 워크숍을 통해 협업을 장려하고 지식 공유 및 학습 이니셔티브를 장려하는 교차 기능 팀을 구축함으로써 조직 전체의 문화적 변화가 이루어집니다. 물론 경영진이 솔선수범해야 하지만, 비즈니스 사용자에게 테스트 자동화 기능을 제공할 수 있는 도구를 갖춘다면 이는 그 방향으로 나아가는 엄청난 발전입니다. 회사 문화를 바꾸는 데는 시간, 끈기, 그리고 명확한 소통이 필요하지만, 여러 면에서 성과를 거두는 과정입니다.
결과
전 세계적으로 테스트 프로세스가 얼마나 미숙한지 깨닫는 것은 충격적인 경험이었습니다. 많은 대기업들이 여전히 지속적인 테스트를 구현해야 하지만, 레거시 프로세스와 수작업에 발목이 잡혀 있습니다. 더욱 놀라운 것은 자동화된 테스트 관행과 프로세스를 갖춘 성숙한 조직 내에서도 테스트 도구가 얼마나 단편화되어 있는지입니다. 이는 업계의 빠른 변화 속도와, 도구와 프로세스를 통합하고, 사일로를 허물고, 이해관계자, 개발자, 테스트 팀 간의 소통을 증진하는 문화 변화를 구현하지 못하는 일부 리더들의 고집을 보여주는 증거입니다.
비즈니스 리더는 개발 및 테스트 프로세스에 더 큰 비중을 두어야 합니다. 책임이나 전반적인 권한 측면에서가 아니라, 오히려 현장에 파고들어 팀의 관점을 얻을 수 있는 능력이 필요합니다. 이 블로그 게시물에서 툴링에 대해 논의했는데, 이것이 핵심일 수 있습니다. 먼저, 분석 도구 조직 구성원 모두가 개발 및 테스트 실행에 대한 전체적인 뷰를 확보할 수 있도록 지원하여 모든 팀이 서로의 업무를 이해하는 데 도움이 될 것입니다. 이와 대조적으로, 수백 개의 AI 기반 인사이트와 분석은 더욱 현명한 의사 결정을 내리는 데 도움이 될 것입니다. 마지막으로, 로우코드 도구 비즈니스 사용자가 자동화된 테스트를 생성할 수 있게 해주는 기능은 사일로를 허물고, 의사소통을 장려하고, 지속적이고 긍정적인 조직적 변화를 창출하는 데 도움이 됩니다.