상세 컨텐츠

본문 제목

당신의 소프트웨어 테스팅 경력을 보살피고 성장시키기

테스팅 번역 자료들

by techbard 2023. 2. 15. 15:11

본문

반응형

 

당신의 소프트웨어 테스팅 경력을 보살피고 성장시키기


빠르게 진화하는 산업에서 테스터로 번영하기 위한 가이드


1장

소프트웨어 테스터로서의 현실

 

"소프트웨어 테스팅이 무엇인가?" 내가 하는 일을 어떻게 설명할까?

 

당신이 파티에 참석했고 누군가 당신이 하는 일을 물어본다. 당신이 소프트웨어 테스터라고 답한다. "그게 뭔가요?" 그 사람이 다시 질문한다. 그리고 당신은 일반적으로 듣는 사람이 참을 수 있는 것보다 훨씬 긴 답변을 시작한다. 곧바로 그 사람은 말을 끊고 다시 말한다. "이봐요. 목이 마르네요. 뭔가 마시러 가죠!" 결국 당신은 기술 용어를 언급하며 이 상황을 종료했다.

 

우리가 수행하는 작업은 그 작업 대상에 의해 (모듈, 메쏘드, 애플리케이션, 시스템) 복잡해진다. 하지만 소프트웨어가 도처에 깔려 있고 우리 전문성에 대한 우리의 열정을 감안하면 모든 사람이 소프트웨어를 이해하고 있거나 (또는 이해해야 한다고) 결론 내리기 쉽다.

 

그러나 소프트웨어 공학 커뮤니티 용어를 사용해 우리가 하는 일을 설명하면 곧바로 "헤드라이트 앞에 있는 사슴"처럼 보인다.

 

나는 최근에 "코드란 무엇인가?"라는 블룸버그 기사를 보았다. 그것은 코드가 무엇인지 또 어떻게 작동하는지 예제를 사용해 상호작용한 길지만 좋은 내용의 기사였다.

 

그래도 여전히 질문은 남는다. 30초 안에 우리가 하는 일을 간단히 설명할 수 있을까? 내가 대화 상대와 공감하는 것처럼 보이는 한 가지 접근법은 당신의 직업을 설명하려는 사람에게 "오늘 당신이 사용한 컴퓨터는 몇 대나 된다고 생각하시나요?"라고 먼저 질문하는 것이다. 훌륭한 질문은 대답을 끌어내기 마련이다. 이후 나는 그들의 삶 모든 곳곳에 소프트웨어가 있음을 (TV, ATM, 자동차, 엘리베이터, 드라이브스루 창문, 생명을 다루는 의료 장비 그리고 수백 가지 다른 장소를 포함해) 상기시켜 준다. 그리고 질문한다. "당신이 사용한 기술에서 문제를 경험한 적이 있나요?" 예라고 답하는 확률이 매우 높다! 그러면 이제 결론을 짓는다. "나는 개발자를 지원해 더 좋은 소프트웨어를 출시하게 돕습니다." 추가 정보를 원한다면 이어가 보자.

 

당신도 알지만 소프트웨어는 불완전한 번역의 연속이다. 모바일 폰에 달력을 띄우는 등 당신 같은 누군가가 원하는 뭔가로 시작한다. 그리고 그것은 수백 명의 인간 번역과 (대화) 프로그래밍을 (코드 작성 과정) 거치고 이런 기능을 당신에게 전달한다.
당신의 필요는 요구사항이다. 그 요구사항이 디자인으로 변한다. 그리고 그 디자인이 애플리케이션으로 변한다. 애플리케이션이 지닌 기능은 개별 문자 수준으로 내려가며 모듈, 객체, 클래스로 부르는 코드로 표현되고 결국 컴퓨터가 처리하는 비트와 바이트가 된다.
일반적으로 소프트웨어 프로그래머로 부르는 인력은 무언가를 구동하는 코드를 개발한다. 일반적으로 소프트웨어 테스트 엔지니어로 부르는 인력은 무언가를 구동하는 코드를 테스트 한다. 그게 바로 나다.

 

나는 내가 매우 놀라기 전에는 세 번째 답변을 꺼내지 않는다.

 

우리 각각은 소프트웨어 엔지니어 전문가로서 소프트웨어가 무엇인지 그리고 테스팅이 매일의 일상에 얼마나 중요한지에 대해 우리 영향력 범위 내에 있는 모든 사람을 교육할 책임이 있다. 위의 대화에서 당신이 얻은 접근법이 무엇이든 간에 나는 당신이 전도사가 되기를 희망한다. 소프트웨어로 구동되는 세상에서 모든 사람은 최소한 테스터가 무엇을 하는지에 대한 기본적인 이해를 해야 한다.

 

당신의 경력을 소유해라

 

나의 위대한 멘토 중 한 명은 "그냥 소유해라"라고 말하는 것을 좋아했다. 그것은 간단하게는 현재와 미래 모두에 대해 당신의 행동에 책임감을 가진다는 의미이다.

 

나의 경력 여정을 조사해 보면 이 조언을 따랐던 적도 있었지만 그걸 무시하고 안주했던 적이 더 많았다. 특히 내가 몇몇 위대한 회사에서 테스터, 테스팅 관리자 그리고 심지어 품질과 테스트의 부사장으로 근무했던 걸 되돌아보면 이 말은 진실이다. 훌륭한 동료 그룹과 협업하고 높은 수준의 결과물을 고객에게 전달하면서 그 모든 도전과제, 보상 그리고 즐거운 작업을 경험하는 와중에 당신의 다음번 전문성 경로의 계획이 필요하다고 생각한 사람이 있었을까?

 

물론 우리는 모두 전문성의 여정에서 훌륭한 적과 그렇지 못한 경험 모두를 가지고 있다. 당신이 축소되었을 때 훌륭하지 못했을 것이다. 나의 경력에서 이런 일을 두 번 겪었는데 나는 항상 이런 변화에 준비되어야 한다는 중요한 속성을 이해하게 되었다. 나는 한 달에 최소 두 번 이렇게 자문하는 습관이 있었다. "지금 내 자리를 떠나라고 요청받거나 오늘 내가 떠나고 싶다면 준비가 되어 있을까?"

 

이것은 오늘날의 동적인 환경에서 매우 중요하다. 회사가 직원을 종신 고용하거나 직원이 그 회사에 영원히 남아 있길 원하는 시대는 지나갔다.

 

오늘날의 소프트웨어 테스팅 산업의 발달 형태에 대한 내 생각은 다음과 같다.

  • 전통적인 방법론에서 애자일 방법론으로 이동하기 때문에 우리의 역할도 변한다. 결과적으로 우리는 추가적인 지식과 기술을 배워야 한다.
  • "사물 인터넷", 웨어러블, 모바일 그리고 임베디드 기술, 클라우드, 빅 데이터, 로보틱스 심지어 홀로그래피 애플리케이션이 활동의 무대다 (그리고 일자리까지도). 이 영역 중 한두 가지의 경험을 쌓아라.
  • 채용 관리자는 기술이나 전문성 인증의 가치에 대한 당신의 관점에 상관 없이 후보자 선정의 시작점으로 이런 인증을 계속 찾을 것이다.
  • 공적이든 사적이든 간에 채용 조직은 신규 채용자가 곧바로 일을 시작하기를 기대한다. 긴 학습 시간을 기다려 주지 않는다.
  • 몇몇 조직에서는 고용주가 직원의 계발에 투자를 적게 한다. 이것은 우리가 필요하다면 스스로 비용을 들이고 시간을 내어 적극적으로 우리의 기술 개발을 정의하고, 실천해야 함을 의미한다.
  • 우리 경력의 여정에서 전문적인 교류 역시 중요한 요소이다. 심지어 당신이 현재 놀라운 일자리를 가지고 있더라도 커뮤니티와의 전문적인 교류와 업계의 공헌이 지속되어야 한다.

 

내가 할 수 있는 최상의 응원은 당신의 현재 조직이나 새로운 조직에서 우리의 전문성이 향하는 곳을 계속 살피고 다음번 역할을 준비할 수 있게 경로를 설정하라는 것이다. 이제 당신의 시간이다. 그것을 소유하라!

 

회사가 직원을 종신 고용하거나 직원이 그 회사에 영원히 남아 있길 원하는 시대는 지나갔다.

 

당신의 경력이 보상 받고 있는가?

 

현재를 이해하고 미래를 생각해 보는 가장 좋은 방법은 과거를 되돌아 보는 것이다. 나는 매년 많은 산업군을 넘나들며 수백 명의 개발자, 테스터와 일할 특권을 얻었다. 내가 항상 흥미있게 생각했던 질문 중 하나는 사람들이 자신의 역할에 만족하는지 여부였다. 만일 그렇다면 왜 그럴까? 만일 아니라면 만족감을 높일 수 있는 아이디어는 무엇일까?

 

직업 타이틀은 책임의 한계를 정의하는 비즈니스 이름표일 뿐이다. 당신의 경력을 실제 무엇으로 채워야 하는지는 단순한 직업 타이틀 보다 훨씬 더 복잡하다. 이것은 다음의 질문으로 이어진다. 당신에게 중요한 인생의 목표는 무엇인가? 우리는 하루 시간의 3분의 1 이상을 일하면서 보내기 때문에 당신의 경력은 삶의 전반적인 충족감을 나타내는 중요한 부분이다.

 

다음은 내 경력을 통해 얻은 최상의 보상 중 일부분이다.

  • 품질 있는 소프트웨어 제품을 전달하기. 그 제품은 당신과 당신의 팀이 버그를 추출하기 위해 열심히 작업했고 출시 이후에 고객이 긍정적인 피드백을 제공한다.
  • 팀을 가르치고, 멘토링 하거나 지도한다. 내가 배운 것을 개인이나 팀에 전수하고 연습이나 예제를 통해 그들이 배우도록 돕는다. 팀이 협력해서 일을 더 잘 할 수 있게 돕고 회의를 통해 그들의 비즈니스 목표를 지원한다.
  • 리더십. "섬김의 리더" 방식. 즉 다른 이들이 스스로 도전과제를 해결하도록 지도하고 장애물을 치우도록 도와주며 뛰어들어 손을 내밀며 혁신적인 아이디어에 협력한다. 또한 이것에는 다른 사람을 높여주고 긍정적인 댓글, 피드백 그리고 보상을 제공하는 것이 포함된다.
  • 변화 추진. 지역적이나 전 세계적인 변화나 그 어떤 것이든. 예를 들어 특정 방법론이나 도구의 계획, 평가 그리고 선정과 구현까지 담당하는 팀의 일원이 되어 본다.
  • 돌파구를 발견한다. 혁신을 가져본다. 다른 사람들과 기업가적인 방식으로 협력하고 브레인스토밍하고 창의적으로 문제를 해결하거나 고객에게 더 많은 가치를 제공하는 새로운 아이디어를 만들 수 있다. 
  • 세계적인 관계를 개발한다. 내 경력 중에 전 세계적으로 품질과 테스팅 그룹을 만드는 권한이 있었고 놀랍도록 전문적인 관계를 통해 보상 받았다.
  • 테스팅 전문성에 기여한다. 강연하기, 협업하기 그리고 아이디어를 우리 직무에 이로운 방향으로 저술하기. 나는 테스팅 경력을 발전시켜 몇 가지 도전과제를 처리하고 그런 전략에 대한 백서를 작성했다.

 

내 경력에서 나로서는 가장 만족스러웠던 것을 정리해 보면 우정으로 진화한 직업적인 관계, 다른 이의 배움과 성장을 지켜보는 일, 우리 팀이 고객에게 긍정적인 영향을 주었다는 걸 알게 된 일, 조직을 내가 들어왔을 때보다 더 나은 곳으로 만들고 떠난 일 그리고 그 과정에서 내가 무언가 새로운 것을 배웠다는 점이다.

 

나는 내 경력을 더 충실하게 만들어 준 사람들 때문에 매일 매일 겸손해진다. 비록 나의 여정에서 확실히 많은 도전 상황이 있었지만 (우리는 그것을 배움의 기회라 부른다) 테스터, 컨설턴트로서 그리고 비즈니스 임원으로서의 나의 경력은 충실하게 보상받았다.

 

2장

애자일 시대의 테스팅

 

전통적인 테스터에서 애자일 테스터로의 전이

 

어떤 조직이든 간에 만날 수 있는 가장 도전적인 변화 중 하나는 전통적인 생애주기 개발 방법에서 애자일 개발 방법으로 전환하는 것이다. 그런 경우 이런 전환을 돕는 수많은 책, 기고문, 블로그 그리고 컨설팅 회사가 있다.

 

내가 받는 질문 중 하나는 "전통적인 생애주기 모델과 애자일 방법론 사이에 테스터의 역할에서 어떤 차이가 있는가?"이다. 답은 간단치 않다. 생각해 봐야 할 요소들이 많다. 그리고 개별 테스터나 테스트 팀의 경험이 조직 환경, 문화 그리고 테스트하는 기술에 따라 달라질 것이다.

 

테스팅 역할이나 사전 책임을 완전히 재정의하는 것에서부터 맥락이나 사후 책임의 사소한 변화까지 다양한 층위가 존재한다. 어떤 개별 테스터나 테스트 팀은 이런 전환이 쉬울 것이다. 왜냐하면 그것이 그들이 이미 수행하는 작업과 아주 비슷하기 때문이다. 반면에 또 다른 개인과 팀은 스스로 재발명해야 할 만큼 훨씬 더 어렵다는 걸 느낄 것이다.

 

과도하게 단순화 할 위험에도 불구하고 애자일 테스터와 전통적인 테스터의 맥락, 책임, 행동 그리고 기대치에 대한 몇 가지 핵심적인 차이를 나열한다.

 

애자일 테스터로서 전통적인 테스터로서
테스팅은 가능한 한 빨리 계속 가장 작은 단위의 기능을 가지고 수행한다. 테스트 주도 개발이 사용된다. 대체로 테스터는 특정 빌드나 릴리즈를 기다리고 대부분의 기능이 구현된 후 테스팅을 시작한다.
테스팅을 스프린트나 릴리즈의 한 부분으로 계획한다. 개발자들은 유닛 테스트를 자동화한다. 기능, 비기능 테스팅은 제품 관리자와 (product owner) 협력해 팀 내부에서 반복적으로 수행한다. 대체로 하나의 테스팅 단계는 다음과 같은 단계를 기반으로 한다. 즉 유닛, 통합, 시스템, 인수가 그것이다.
버그의 인지와 수정은 며칠이나 몇 주가 아닌 몇 시간 이내에 일어난다. 버그의 인지와 수정 사이에 상당한 대기 시간이 있다.
개발자와 테스터가 한 팀으로 운영되며 계속 협력적으로 상호작용한다. 테스팅의 목소리도 동등하게 취급된다. 테스터가 개발팀에 소속되는 경우가 적다. 테스터가 개발자와 상호작용하고 의사소통하는 데 있어 거리가 있고 목소리는 묻힐 수 있다.
테스터와 개발자는 테스트 중인 시스템의 품질 전달에 대한 책임을 갖는 동질 팀의 일원이다. 테스터가 테스팅의 책임이 있다. 개발자들은 개발에 대한 책임이 있다.
테스팅은 지속적이며 모든 품질 단계는 애자일 팀이 주도해 반복적으로 계획하고 실행한다. 목표는 항상 생애주기의 단계마다 품질을 장착하는 것이지만 실제로는 많은 수의 점검이 (품질 단계) 테스팅 주기의 후반부에 나타난다.
자동화는 특히 유닛 테스트에 있어서 필수적이다. 왜냐하면 그것이 지속적인 통합을 지원하기 때문이다. 자동화는 필수적이지 않다. 왜냐하면 신규 개발된 부분의 테스팅이 수동으로 이루어지기 때문이다.

 

당신의 소프트웨어 테스팅 경력을 관리하기 위한 애자일 접근법

 

나는 최근에 STAREAST 2015에서 테스팅 전문성의 미래 그리고 소프트웨어 테스팅 전문가가 그 전문성의 죽음이나 재탄생을 보게 될지에 관해 강연할 기회를 얻었다. 내 발표문의 비디오 링크는 이 책의 5장에 들어 있다.

 

확실하게 말하자면 내가 볼 때는 소프트웨어 테스팅 전문성에 대한 필요성이 그 어느 때보다 중요한 적은 없었다. 하루에 250개의 컴퓨터와 상호작용하는 평균적인 소비자에게 신뢰성 있는 소프트웨어는 비즈니스적인 책임일 뿐만 아니라 사회적인 요구이다.

 

나는 발표 자료를 통해 사람들이 소프트웨어 개발의 책임을 지는 한 능숙한 테스팅 역할에 대한 필요성이 존재할 것이라고 계속 언급했다.

 

당신이 나의 주장에 동의한다면 테스터로서 우리 경력의 여정을 어떻게 평가하고, 계획하고 관리해야 한다고 생각하는가?

 

소프트웨어 테스팅 전문성에 대한 필요성이 그 어느 때보다 중요했던 적은 없었다.

 

첫 단계는 당신의 전문성을 성장시키려는 의지를 가지는 것이다. 나는 이미 당신이 경력을 소유하는 것에 대해 언급했다. 따라서 나는 그 내용을 다시 반복하지 않겠다. 오히려 당신의 진로를 결정하는 애자일 접근법, 대안 평가 그리고 하나의 계획을 발전시키는 것에 집중해 보자.

 

당신의 경력을 계획하고 평가할 때 고려할 최소 4가지의 측면이 있다.

  • 산업적인 열정: 여기서의 선택은 여러 가지다. 회계, 보험, 은행, 우주항공, 헬스케어, 제조업, 병원업, 교육계, 운송 업계, 소매 판매... 당신은 어느 산업에 흥미가 있는가?
  • 기술적인 열정: 다양한 산업 연구를 통해 빅 데이터, 클라우드, 모바일, 임베디드 기술, 웨어러블, 보안, 통계 분석, 사물 인터넷, 서비스 가상화 그리고 3D 프린팅이 다음 10년 동안 인기 있는 기술임이 드러났다.
  • 역할에 대한 열정: 조직이 애자일을 받아들이면 소프트웨어 테스팅 전문성이 확장될 수 있는 다음과 같은 역할이 있다고 생각한다. 테스팅 아키텍트 (선임 컨설턴트 또는 조언자 역할), 테스팅 조정자 (지원자 또는 프로젝트 관리자 역할), 테스트 자동화 전문가 (기술적인 테스팅 전문가) 그리고 테스트 디자이너 (비즈니스 테스팅 전문가).
  • 방법론에 대한 열정: 당신은 좀 더 구조적이거나 훈련된 접근법을 선호하는가? 또는 보다 유연하고 애자일한 개발 환경을 선호하는가? 당신은 높은 리스크의 제품 또는 낮은 리스크의 제품 중 어느 것에 흥미가 있나? 당신은 독립적인 QA 또는 테스팅 팀을 더 편안하게 생각하는가? 아니면 복합 기능 팀과 긴밀하게 협업할 때 실력이 발휘되는가?

 

당신이 이러한 4가지 측면을 이용해 당신의 경력을 계획하고 평가할 때 애자일 접근법을 사용할 수 있다.

 

당신의 첫 번째 스프린트에서 (예를 들면 10일 동안 하루에 30분씩 달력에 표시) 산업군을 선택하고 그 산업에 속한 회사, 기술, 역할 그리고 더 배우기를 원하는 방법론을 선택한다. 예를 들어 엄격한 규정이 있는 환경을 가진 데이터 보안에 집중한 헬스케어 서비스의 테스트 아키텍트 또는 애자일한 환경을 가진 모바일에 집중한 회계 서비스의 테스트 자동화 전문가 등이 있다. 각각의 경력 스프린트의 후반부에 최소 기능 제품을 ( Minimum Viable Product, MVP) 이용하면 대안 경력을 제거해 주는 정보를 얻고 또 다른 경력을 선택하거나 원하는 경력에 더 깊이 들어가 볼 수 있는 다음번 스프린트로 갈 수 있다.

 

어떤 경력 계획 수립 접근법을 사용하든지 간에 가장 중요한 단계는 그냥 실행해 보는 것이다. 당신의 경력 여정을 달려 나가는데 행운을 빈다!

 

애자일의 세계에서 테스터 독립성 유지하기

 

애자일 방법론을 적용한 조직에서 나의 핵심적인 도전과제 중 하나는 프로젝트 관리자, 기능 관리자, 비즈니스 분석가, 개발자 그리고 테스터 같은 전통적인 역할을 재발명하는 일이었다. 이런 역할의 많은 과제와 책임이 여전히 실행되어야 했지만, 그들은 아주 다른 맥락에 고정되어 있었다. 즉 균질한 애자일 제품 팀 중 하나였다.

 

이상적으로는 이러한 책임이 애자일 제품 팀의 누군가에 의해 실행될 수도 있다. 하지만 실제에서는 각각의 팀원이 자신만의 개인적인 기술, 경험 그리고 강점을 지니고 있을 것이다. 큰 변화 중 하나는 전체 애자일 팀이 품질에 대해 책임진다는 점으로 이것은 품질 깃발을 옮기는 일이 더는 테스터만의 책임이 아님을 의미한다.

 

테스팅의 중요한 원리는 객관적인 목소리를 유지하는 것이다. 즉 에드워드 데밍이 우리에게 알려준 계획-실행-확인-조치 중에서 "확인" 단계에 해당한다. 목적은 생애주기의 모든 단계나 모든 역할마다 테스팅 활동을 끼워 넣는 것이다. 원안자의 작업물을 살펴봐 주는 또 다른 눈이 있는 것은 가치가 있다. 그러나 우리는 높은 협업, 반응성 그리고 유연한 팀 환경을 해치지 않으면서 테스터의 역할 독립을 유지하는 것 또한 원한다.

 

큰 변화 중 하나는 전체 애자일 팀이 품질에 대해 책임진다는 점으로 이것은 품질 깃발을 옮기는 일이 더는 테스터만의 책임이 아님을 의미한다.

 

조직은 이런 상황을 여러 가지 방법으로 처리한다. 여기에 단 한가지 처방전은 없다. 일부는 독립적인 테스팅 팀을 유지하고 각각의 애자일 제품 팀에 테스터를 할당한다. 그리고 또 다른 경우는 자신들의 기능 테스팅 부서를 포기하고 애자일 팀에 테스팅을 넣는다. 여전히 나머지 다수는 이 두 가지를 약간 혼용한다. 즉 테스팅 역할을 포함한 애자일 제품 팀을 만들고 다시 독립 테스팅 팀을 유지한다. 그리고 여전히 또 다른 일부는 다양한 방식으로 보고 체계를 변경한다.

 

그럼에도 불구하고 애자일 제품 팀 안에 있는 테스팅 역할을 맡은 사람은 테스트 중인 시스템에 대해 독립적인 평가를 할 수 있어야 하며 이 역할을 맡은 팀원은 테스팅의 기예와 과학의 사고 체계, 기술 체계를 가져야 한다.

 

나는 앞에서 언급한 테스터 역할의 독립성을 유지하는 최고의 방법을 믿지 않는다. 오히려 각각의 팀과 조직은 필요에 따라 자신들의 전략을 다듬어야 한다.

 

애자일 선언문의 정신에 따라 애자일 제품 팀의 상황에서 테스터의 독립성을 유지하는데 고려할 내가 "작업 중인" 가치들을 공유한다.

 

우리는 다음의 가치를 추구한다.

  • 제품팀은 올바른 시점에 적절한 품질 수준을 전달할 책임을 진다.
  • 제품팀은 각 기여자가 가진 최고의 기량을 드러내며 협력한다.
  • 각 스프린트 안에서 릴리즈 하는 모든 단계에서 품질과 테스팅을 계획한다.
  • 최초 원안자와 복수의 독립적인 점검자가 매 단계를 확인한다.

 

각각의 팀과 조직은 필요에 따라 자신들의 전략을 다듬어야 한다.

 

3장

도구와 기술

 

제발 여유 시간을 가져라!

 

나는 일을 끝내는 것에 매진한다. 이것은 이메일에 답장하고, 채팅 쓰레드를 이어가며, 전화를 받고, 보이스 메일을 확인하면서도 매일 매일, 심지어 시간 단위로 모든 것을 할 일 목록에 넣고 그것들을 체크해 나가고 미루고, 다시 미룬 것을 이어 진행하고, 프로젝트를 진행하고, 신규 프로젝트를 시작하고, 기존 프로젝트를 유지보수하고, 회의에 참석하고, 그 회의에서 나온 새로운 활동을 접수하고, 스프린트를 계획하고, 스탠드업 회의에 참석하고, 스토리 테스팅을 완료하는 것을 의미한다. 대다수 사람처럼 나의 하루와 주간 일정은 쉽고 빠르게 과제들로 채워진다.

 

결과를 기대하지만 (그리고 우리가 돈을 받는 이유다) 이런 빠른 전환과 결과에만 집중하는 대가도 있다. 간단히 말해 이런 상황은 우리가 생각하는 능력, 성장하는 능력 그리고 변화하는 능력을 심각하게 제한한다. 톰 디마르코의 책 슬랙이 (부제_변화와 재창조를 이끄는 힘) 이러한 행동을 잘 표현했다.

 

우리는 가속의 시대에 살고 있다. 비즈니스 성공을 위한 과거 수년 전의 공식이 뭐였던 간에, 오늘날에는 통하지 않는다. 오늘날에는 더 적은 시간에 더 많은 일을 처리해야 한다. 더 적은 지원과 더 적은 공간 그리고 엄격한 허용오차와 이전에 보지 못한 높은 품질 요구사항으로 더 많은 일을 더 빠르게 해내는 사람은 거의 없다. 분석, 발명, 훈련, 전략적 사고, 사색 또는 점심 식사를 위한 시간도 없다.

 

우리는 효율성을 추구하고 달성할 때 "여유 시간"을 제거한다. 결국 여유란 낭비다. 그렇지 않나? 만일 우리가 구체적인 결과물을 만들지 못한다면 나는 가치 없는 "공회전" 상태에 있음이 틀림없다.

 

하지만 결단코 아니다! "슬랙"은 개인적으로는 우리의 뇌 그리고 집합적으로는 조직이 창조하고, 사고하고, 반추하고, 분석하고, 고민하고, 계획하고, 배우고, 성장하고, 변화하는 의미 있는 시간이다. 그 시간은 당신과 당신 조직이 숨을 쉬는 데 필요한 가동 중단 시간이다.

 

슬랙은 우리가 혁신하고, 진화하고 우리 자신과 고객의 이익을 위해 변화하는 능력을 가동하는 연료이다.

 

다음은 더 많은 여유 시간을 당신 자신에게 또는 당신의 회사의 루틴에 확보하는데 필요한 아이디어이다.

  • 스프린트를 살펴본다. 팀 배움 또는 프로세스 또는 기술 개선을 위한 사이 사이의 여유 없이 계속 진행되나?
  • 조사, 독서 그리고 강좌, 콘퍼런스 또는 웹 세미나 같은 배움 이벤트를 위한 일정을 넣어 의도적으로 시간을 낸다.
  • 당신이 언제 그리고 어떻게 하면 최고로 창의적이 되는지 생각해 본다. 어떤 환경인가? 하루 중 언제가? 그런 이상적인 조건에서 약간의 고요한 시간을 의도적으로 만든다.
  • 조직 내의 사람들에게 한 주간 몇 번이나 과제가 연달아 발생하는지 물어본다. 회의를 합치거나 없앨 수 있는지 모여서 브레인스토밍해본다. 그리고 회사가 전체적으로 여유 시간을 가지도록 고려해 본다.
  • 당신의 팀이 결과를 만들어 내는 시간 대비 다음 번 혁신을 고민하는 시간을 비교한다. 창의성을 위한 시간을 배분해 개선을 장려한다.

 

위의 제안들은 명확하다. 따라서 남은 도전 과제는 행동할 수 있는 훈련과 의도적으로 여유를 만드는 용기를 가지는 것이다.

 

슬랙은 우리가 혁신하고, 진화하고 우리 자신과 고객의 이익을 위해 변화하는 능력을 가동하는 연료이다. 오늘 바로 슬랙을 시작하라!

 

우리의 소프트웨어 테스팅 작업에서 체크리스트의 가치

 

당신은 바쁜 업무와 개인적인 일상의 모든 상세를 어떻게 추적하는가? 당신은 할 일 목록을 가지고 있거나, 손바닥이나 냅킨에 무언가를 적거나 항목을 당신의 놀라운 기억력에 가지런히 유지하는가? 나는 항상 할 일 목록의 추종자였다. 그래서 종이 목록을 적거나 최근에는 전자 목록을 사용한다.

 

우리 대부분이 (나를 포함해) 생각보다 빠르게 무시하는 또 다른 목록이 있다. 바로 체크리스트이다. 내가 생각하는 체크리스트는 중요한 일련의 단계 중 어느 하나라도 빠뜨리지 않도록 체계적인 순서를 가진 특정 항목을 자세히 설명하는 목록이다.

 

누군가는 체크리스트가 불필요하다고 볼 수도 있다. 하지만 우리의 많은 소프트웨어 개발과 테스팅 작업의 복잡도 증가를 생각해 보라. 어떤 경우에는 테스팅 작업이 우주로 로켓을 쏘아 올리고 비행기를 띄우거나 뇌 수술을 집도하는 것보다 덜 위험하지만, 생명을 다루거나 미션 크리티컬 소프트웨어의 경우에는 체크리스트가 필수적이다.

 

종합적인 체크리스트 없이 SpaceX가 다음번 로켓을 들어 올리거나 당신의 뇌수술을 진행한다고 상상해 보라. 다시 원 주제로 되돌아오면, 당신의 복잡한 소프트웨어 테스팅 작업에서 한 단계를 빠뜨렸을 경우를 생각해 보라. 최소한 재작업이 필요하거나 심한 경우 당신의 고객에게 영향을 줄 심각한 버그가 나타날 수 있다. 테스팅 전문가로서 우리가 가진 책임감의 복잡도는 우리 시스템에 통합되는 여러 신기술을 통해 기하급수적으로 증가하기 시작한다.

 

다음은 체크리스트의 예이다.

  • 테스트 디자인 체크리스트: 종합적인 테스트 디자인을 수행하는 모든 단계가 실행되었나?
  • 테스트 계획 체크리스트: 각각의 테스트 계획 절에서 기대하는 내용이 목록화, 언급된 상세 테스트 계획 템플릿
  • 테스트 케이스 체크리스트: 테스트 케이스의 모든 측면이 작성되었나? 즉 사전 조건, 입력, 기대 결과, 사후 조건 등등.
  • 비기능성 체크리스트: 성능 테스트 체크리스트. 부하와 스트레스 테스팅을 위해 실행하는 (그리고 어떤 순서로) 상세 아이템이나 단계는 무엇인가?
  • 애자일 스프린트 테스팅 체크리스트: 각 스프린트에 맞게 완료돼야 하는 테스팅 과업은 무엇인가? (기능성, 비 기능성 그리고 탐색적)

 

아툴 가완디는 그의 책 "체크! 체크리스트 완벽한 사람은 마지막 2분이 다르다"에서 무지에서 오는 오류와 (우리가 충분히 알지 못해서 발생하는 실수) 무능을 (우리가 아는 것을 올바로 사용하지 않아서 생기는 실수) 구분한다. 그의 책에서 그는 오늘날에 발생하는 실패는 실제로는 이런 오류의 두 번째에 대한 것이라 적고 있다.

 

생명을 다루거나 미션 크리티컬 소프트웨어의 경우에는 체크리스트가 필수적이다.

 

우리가 알고 있는 것을 올바르게 쓰지 못해 실수를 저지르는 일은 그냥 나쁜 직업적 관행이다. 올바르게 사용하면 가치를 더할 수 있는 체크리스트 같은 것을 쓰지 않는다면 이미 리스크가 큰 소프트웨어 테스팅의 세상에 리스크를 더하는 것이다.

 

4장

리더십과 사회적 책임

 

크고, 담대하고, 용감하게 테스팅에 임해라

 

나는 몇몇 훌륭한 멘토와 일했었고 내 경력 전반을 통해 코칭을 받았다. 그중 한 명은 선도적인 금융 기관에서 함께 일했던 사업부 대표였다. 그녀는 놀라운 리더였고 정해진 비즈니스 목표를 달성하기 위해 팀을 고양하는 것에 대해 아주 열정적이었다. 그녀는 여러 가지 신념을 가지고 있었는데 그중 하나가 "크고 담대하고 용감하게"라는 것이다. 즉 만족하지 말고 합리적인 리스크를 떠안고 무언가 혁신적인 일을 시도하는 데 주저하지 말라는 의미이다.

 

우리 조직, 경영진, 팀 그리고 고객은 한 단계 올라가거나 주도권을 잡기 위해 우리 모두를 필사적으로 필요로 한다. 당신이 리더로서 공식 직함이 있거나 개인적인 기여자이거나 간에 당신은 현재 당신의 역할에서 리더십을 발휘해야 한다.

 

나는 내 경력의 초반부에 직함을 가지면 내가 조직 내의 사람들에게 영향을 끼칠 수 있을 것으로 생각했다. 회사가 나를 관리자로 임명한 경우에만 사람들이 내 말을 들을 것이다. 결국 나는 "기사 작위를 받고" 리더가 될 것이다.

 

나는 직함이 우리가 인지하는 방식에 약간의 차이를 만든다는 걸 빨리 배웠다. 중요한 것은 결과를 만들어 내면서 조직에 기여하고, 창의력과 혁신을 이용해 어려운 도전과제를 해결하고, 매일 매일 실천하는 핵심 가치를 가지며, 전문적인 통찰과 새로운 아이디어를 제공하고 토의하는 주제에 관한 비전을 의사소통하는 능력이다.

 

나는 최근에 사소한 무릎 수술을 받았다. 의사, 간호사 그리고 또 다른 직원과 수술을 진행하는 동안 3가지 기술 이슈가 떠 올랐다. 의사에게 초진을 갔을 때 그의 사무실은 진료를 보는데 완전히 디지털로 전환된 상태였는데 모든 진료 기록은 병실 사이를 굴러다니는 무선 랩톱을 사용해 최신으로 유지되고 있었다. 하지만 내가 방문한 그날 그 기술은 작동하지 않았고 아무런 기록에 접근도 되지 않았다.

 

그로부터 몇 주 뒤 나는 다시 그 병원에 갔다. 간호사 중 누구도 자신의 이동식 데스크톱 계정에 로그인할 수 없었다. 그 시스템에 이미 로그인되어 있다고 나오는 것이었다. 세 번째 이슈는 이미 보험에서 커버하기로 한 MRI 비용에 대한 청구서를 받았을 때 발생했다. 어떻게 이런 일이 벌어지는지에 대한 질의에 요금 계산 소프트웨어 에러가 지목되었다.

 

이 이슈들 어느 것도 내 수술에 직접 영향을 주지는 않았다. 하지만 나는 사용자들이 무척이나 당황한 것을 목격했고 이런 "귀찮은 요인"이 기술적인 장애를 겪으며 시간 낭비하는 것보다 환자들을 돌보는 사람의 태도에 어떤 영향을 주는지 궁금했다. 심각한 것은 아무도 문제의 해결을 주도하거나 책임감 있는 태도를 보이지 않은 것이다.

 

이런 상황은 나에게 테스터로서 우리 역할의 중요한 속성과 우리가 모두 크고, 담대하고 용감해야 할 필요성을 떠 올리게 했다. 당신은 내가 목격한 것과 유사한 이슈를 피할 수 있게 당신의 테스팅 프로젝트에서 주도권을 가지고 있는가?

 

소프트웨어 테스팅: 사회적 책임

 

나는 90년대에 더 좋은 개발 언어, 도구 그리고 재사용 코드를 이용해 소프트웨어 개발을 가속화하고 우리가 테스트할 수 있는 것보다 더 많은 소프트웨어를 생산한다는 사실에 대한 기고를 작성했다. 10년 전이나 지금이나 마찬가지지만 소프트웨어 리스크 공식에 기여하는 또 다른 중요한 측면이 존재한다. 즉 도처에 소프트웨어가 널려 있는 것이다.

 

깨어 있는 동안에는 거의 올바르고 신뢰성 있게 작동하는 기술에 크게 의존한다.

 

생각해 보자. 얼마나 많은 컴퓨터가 하나 또는 다수의 소프트웨어 프로그램을 돌리며 당신과 하루 동안 상호작용할까? 깨어 있는 동안에는 거의 올바르고 신뢰성 있게 작동하는 기술에 크게 의존한다. 2011년 마크 안드레센은 월스트리트 저널에 다음과 같은 유명한 기고를 작성했다. "점점 더 많은 주요 비즈니스와 산업이 소프트웨어로 운용되며 영화에서 농업 그리고 국토방위에 이르기까지 온라인 서비스로 제공된다."

 

이런 경향은 우리가 더 많은 클라우드 역량을 포용하고 사물 인터넷으로 이동하며 정보와 소프트웨어의 능력을 "불러오기" (우리는 그런 동작을 하도록 앱을 실행한다) 보다는 "주어지는" (정보가 자동으로 나타나고 과업이 자동으로 완료되는) 방향으로 가속화될 것이다.

 

비즈니스와 고객이 빅 데이터, 통계 분석, 모바일, 클라우드, 사물 인터넷, 소셜 미디어 그리고 그 밖의 매우 빠르게 출현하는 기술을 포용하면서 "그냥 작동한다"라는 기대가 기하급수적으로 늘고 있다. 기존 기술 인력이 소프트웨어를 생산하고 평가하는 능력을 갖추는 것은 소프트웨어가 주도하는 세계 경제를 지켜내는 데 필수적이다.

 

결과적으로 소프트웨어의 명세화, 개발, 테스트 그리고 출시를 담당하는 사람은 극도의 책임감을 느낀다. 그리고 그들은 최고의 교육과 훈련, 도구 그리고 방법론을 습득하고 지원받아야 한다. 더 나아가 개발자와 테스터 역할을 고려하는 사람에게는 소프트웨어의 지속적인 건강성에 기여하고 그런 기술을 획득할 커다란 기회가 존재한다. 소프트웨어에 내재한 리스크를 낮출 전문가가 더 많이 필요하다. 그리고 그런 기회는 차고 넘친다.

 

2015년의 검색 엔진 결과를 보면 소프트웨어 품질 보증과 테스터가 상위 10개의 수요 직군 중 하나로 나타난다. 흥미롭게도 자격을 갖춘 사람은 그런 전문성이 있어야 하는 회사에 입사하고 전문 소프트웨어 서비스 회사에 합류하며 프리랜서로서 크라우드 소싱 대열에 뛰어들어 소프트웨어 도구나 방법론 공급자 또는 그 밖의 다른 가능성을 가지고 일하고 있다.

 

소프트웨어에 내재한 리스크를 낮출 전문가가 더 많이 필요하다. 그리고 그런 기회는 차고 넘친다.

 

만일 당신이 이미 우리의 중요한 소프트웨어 경제의 일원이라면 계속 공부하라. 그리고 당신이 소프트웨어 경력을 고려한다면 지금이 바로 그때다.

 

소프트웨어는 이제 하나의 사회적 책임이다. 요구는 어느 때보다 높고 기회가 이만큼 많았던 적은 없다. 또한 행동해야 할 이유가 어느 때보다 매력적이다.

 

5장

테스팅 전문성의 미래

 

5가지 예측: 테스트 전문성이 가진 미래

 

누구도 수정 구슬을 가지고 있지 않다. 하지만 테스트 전문가들이 자기 경력을 계획함에 있어 미래가 어떻게 될지 고민하는 것은 중요하다. 기술이 어느 방향으로 가고 있을까? 어떤 소프트웨어 개발 방법론이 대세가 될까? 어떤 도구가 주류가 될까? 어떤 테스팅 역할의 요구가 많을까? 가장 가치가 있는 것은? 어떤 테스터 역할이 보상이 높을까? 테스터가 가장 많은 시간을 보내는 곳은? 테스터가 필요로 하는 기술, 자격, 인증은 무엇일까? 아래는 그런 질문을 바탕으로 한 몇 가지 예측이다.

 

1. 기술: 클라우드, 모바일, 임베디드 소프트웨어 그리고 웨어러블은 현재 모든 업계 기사에서 언급된다. 테스터는 이런 기술에 대해 가능한 많이 흡수해야 한다.

 

2. 방법론: 워터폴 개발 방법론에 대한 자리는 항상 있을 것이다. 하지만 이제는 애자일이 표준이다. 도전과제는 애자일 방법론이 공식적으로 정의된 것에서부터 자생적으로 만들어진 것까지 여러 형태가 존재한다는 점이다.

 

3. 도구: 모든 상황이 하나 또는 그 이상의 프로그래밍 도구에서 기술을 익히고 경쟁력을 가져야 한다고 말하고 있다. 물론 그렇다고 비즈니스 전문가인 테스터의 필요성이 없는 건 아니다.

 

4. 테스팅 역할: 3가지 "A"를 기억한다. 아키텍트, 애널리스트 그리고 오토메이터. 더 많은 조직에서 테스트 아키텍트의 필요성과 가치에 대해 인식하기 때문에 이 역할은 제품 디자인과 품질에 (결함 예방) 좋은 영향을 줄 기회가 있을 것이다. 테스트 분석가는 효과적이고 효율적인 테스트를 (결함 격리) 고안하는 데 점점 중요한 역할을 할 것이다. 그리고 종합적인 테스트 스위트를 빠르게 실행할 필요가 있는 상황에서 테스트 자동화 전문가의 수요가 있을 것이다.

 

5. 기술과 자격: "테스트 제너럴리스트" 보다 특정 기술, 도메인, 산업군 맥락에서 전문성과 역할이 점점 더 중요해진다. 

 

미래를 예측하는 최고의 방법은 미래를 발명하는 것이라는 이야기가 있다. 테스트 전문가는 자기 일과 전문성을 개선함과 동시에 자기 일을 효과적으로, 효율적으로 수행해야 하는 도전과제에 직면해 있다. 그렇게 하면서 산업에 대한 예측에 기반해 잘 정의된 경력으로 자신의 미래에 투자해야 한다.

 

비디오: 소프트웨어 테스팅 전문성의 미래

 

테스터와 테스트 관리자의 세상은 다른 대부분의 전문직처럼 진화하기 시작한다. 누군가는 많은 것이 변할수록 많은 것이 그대로 유지될 거라 말한다. 반면에 또 다른 사람들은 전문성으로서의 테스팅은 죽었다고 말한다. 이런 상반된 관점은 다음과 같은 흥미로운 질문을 제기한다. 우리가 테스팅이 줄어드는 최소 결함의 시대로 진입하고 있나? 또는 실패 리스크가 기하급수적으로 증가하면서 테스팅이 소프트웨어 개발의 가장 중요한 측면이 되는가? 개발팀에서 테스터의 역할은 무엇인가? 미래에는 테스터에게 어떤 기술이 필요할까?

 

마이크 소어스는 STAREAST 2015 콘퍼런스 비디오에서 소프트웨어 테스터와 테스트 리더 역할의 미래를 형성하는 주요 동인에 관한 자신과 다른 이의 견해를 보여주었다. 마이크는 테스팅이 기술 (클라우드, 모바일, 웨어러블), 프로세스 (개발 방법론, 테스팅 방법론) 그리고 혁신에 어떻게 영향받는지 탐구했다. 이후 그는 당신 조직 내의 결과 지향의 개발/테스트 팀원으로서 유능함, 경쟁력 그리고 적합성을 유지하기 위한 관찰과 제언을 공유한다.

 

저자에 관하여

 

마이클 소어스는 다수의 산업에서 전 세계적인 품질과 테스트 리더로 25년 이상의 실무 경험을 가지고 있다. 그는 국제적으로 분산된 품질 테스트 팀을 이끌었고 형상 관리와 엔지니어링 기능 출시의 책임을 맡아 왔다. 마이클은 소프트웨어 개발, 테스팅 그리고 출시 방법론을 개선하기 위해 조직 규모를 가리지 않고 협업하는 능숙한 수석 컨설턴트이다. 그는 소프트웨어 품질을 개선하고 출시 시점을 당기며 비용을 낮추기 위해 피델리티 투자사, CA, 펩시코, 페덱스, 사우스웨스트 항공, 웰스 파고, ADP, 록히드, 웰포인트 헬스 네트워크 등의 회사와 협업했다. 마이클은 수석 소프트웨어 리더, 작은 팀 그리고 전 세계에 있는 코드 기여자들을 멘토링하고 코칭했었고 소프트웨어를 "더 빠르고, 더 훌륭하고, 더 값싸게" 출시하는 팀을 돕는 데 최선을 다한다.

 

EOD.

 

반응형

관련글 더보기

댓글 영역