티스토리 뷰

리그레션 테스팅에 대한 Iain McCowatt 의 글을 번역하던 중, 그가 참여하고 있는 소프트웨어 테스팅
팀 블로그인 Maverick Tester 에 올라온 "Recession Testing is the new Regression Testing"이라는
글을 소개하고 있어 따로 번역해서 올립니다.

이 포스트의 저자인 Anne-Marie Charrett 는 이 글에서 리그레션의 비효율성을 지적하고, 좀 더 효율적인 리세션 테스팅(Recession Testing)이라는 개념을 제시하고 있습니다.

기존 소프트웨어 테스트 라이프 사이클 중에서도 가장 많은 업무량이 필요하고, 또 그로 인해 자동화의
필요성이 가장 많이 제기되어 왔던 리그레션 테스팅에 대해 리스크 기반 테스팅의 개념을 대입해
색다른 시각을 제시하고 있습니다.

 

번역 및 포스팅에 대해서는 원 저자의 승인을 받았습니다.


새로운 리그레션, 리세션 테스팅

 

                                                         Posted by Anne-Marie Charrett on October 4, 2011

 

이제 리그레션 테스팅이란 개념은 사라져야 하는 시점이다. 최소한 오늘날 수행되고 있는 리그레션 테스팅 방식 그대로라면 더 이상 아무 가치도 없는 소비적인 행위에 지나지 않으며, 리그레션 테스팅은 좋지 않은 테스팅(bad testing)”으로 분류될 수 밖에 없다.

 

리그레션 테스팅은 수정된 프로그램을 부분적으로 리테스트 함으로써, 발견되지 않은 소프트웨어 결함을 찾으려고 하는 모든 종류의 소프트웨어 테스팅을 의미한다

 

, 그럼 리그레션 테스팅에 대해 솔직하게 한 번 말해보자. 내가 리그레션이라는 개념 자체를 부정하는 것은 절대 아니다(부분적으로 리테스팅을 수행한다는 것은 정말 어리석은 일이므로 이는 제외로 하자). 나는 분명히 리그레션만이 가지고 있는 장점이 있다고 생각한다. 코드 수정을 통해 리스크가 추가되며, 이러한 리스크는 테스트를 통해 관리될 수 있다는 개념은 확실히 괜찮은 아이디어이다. 이런 관점에서라면 테스팅을 수행할 만한 가치가 있다고 생각한다.

 

하지만 우리 테스터들이 잘 알고 있듯이, 이러한 의도는 또 다른 위험을 낳기 마련이다.

 

수많은 회사에서 리그레션 테스팅이라고 부르는 것들이, 나의 관점에서 본다면 아주 가치가 없고 원래와는 다른 의도로 수행되고 있다. 리그레션 테스팅은 결국 일련의 패키지화된 테스트(사실 패키지라고 부르기엔 조금 애매한 면이 있는데, 동일한 테스트 아이디어가 계속 수도 없이 반복되기 때문이다)로 정의되며, 아무것도 파괴되지 않았다는 것을 증명하기 위해 테스팅의 마지막 부분에 반복해서 수행된다.   

 

이러한 점이 그 어떤 깊이 있는 테스트보다 리그레션 테스팅을 현상 유지에만 급급해 보이도록 만들었다. 내가 보기엔 아주 낭비적이다.

 

우리는 현실에서 각각의 테스트가 절대 동일할 수 없다는 것을 잘 알고 있다. 또한 모든 테스트에서 동일한 결과를 얻는다고 해도 그 자체가 테스트가 패스되었다는 것을 의미하지 않는다는 것도 잘 알고 있다. 그러면서도 동일한 결과가 반복될수록 안정적이라는 환상을 심어주기 위해, 동일한 테스트를 반복하는 것은 낭비에 지나지 않는다.

 

이전과는 다른 테스트 아이디어가 시스템에 대한 새로운 정보를 전달해 줄 수 있음에도 불구하고 동일한 테스팅 아이디어를 반복해서 동일한 기능에 수행하는 것은 낭비적인 행위라고 밖에 할 수 없다.

 

테스터들이 지루해서 결국은 업무에 집중할 수 없도록 만드는 행위를 하라고 요구하는 것 역시 낭비적이다.

 

새로운 기능들이 오래된 기능들에 비해 어떻게든 다른 방법으로 테스트되어야 한다고 주장하는 것도 낭비적이다. ? 버그는 오래된 것과 새것을 가리지 않고 발생하기 때문이다.

 

리그레션 테스팅을 수행할 때는 더 깊이 생각할 필요도 없고 특이한 현상에 의구심을 가질 필요도 없다고 생각하는 것도 낭비적이다.

 

내 생각에 우리는 이 문제를 잘못된 시각으로 바라보고 있는 것 같다. 나는 여기서 다른 패러다임을 제시하고 싶다.

리세션 테스팅(Recession testing)이라는 개념을 제시하고 싶다. 가급적 최소한의 리그레션 테스팅이 수행되어야 하는 상황에서, 리세션 테스팅은 불경기에 경쟁력을 갖추기 위해 하는 것과 마찬가지로[1], 더욱 가치가 높은 것에 초점을 맞추고 쓸데없는 낭비를 줄일 것을 요구한다.

 

이는 곧 제품을 새로운 기능과 기존에 존재하던 기능으로 분류하는 것이 아니라, 제품의 모든 부분에 대해 똑같은 의구심을 가지고, 버그를 찾아내는 노력 역시 같은 수준으로 기울여야 한다는 것을 의미한다. 리그레션을 수행할지, 혹은 새로운 기능의 버그를 찾아야 할지 대립하는 상황이라면, 모든 버그를 동등하게 처리해야 하는 것이다.[2]  

 

만약 우리의 업무에 우선순위를 정해야 한다면, 리스크에 기반해서 이를 정하게 될 것이다. , 기능 변경으로 인한 임팩트는 무엇이며, 얼마나 중요한 기능들이 테스트되어야 하는 지 등이 고려되어야 하는 것이다. 

 

만약 당신이 어떤 기능을 테스트해야 한다면, 이 모든 것들을 고려하고 진심 어린 마음으로 테스트를 수행해야 한다! 어설프게 기능을 테스트하거나, 아무런 생각 없이 테스트를 수행해서 단순히 기능이 구현되었는지 여부를 살피고 이로 인해 당신이 이를 적절하게 테스트했다고 잘못 가정하는 일이 없도록 해야 한다. 기능 자체가 정상적으로 동작하는지 살펴보아야 하는 것이다. 기능 자체를 충분히 고려해야 하며, 항상 의식적으로 새로운 방식을 고안하고 이를 테스트에 반영하려는 것이 중요하다.

 

당신 역시 충분히 내 의견에 공감하리라 믿는다.

 

나는 이 포스트를 리그레션 테스팅에 대해 더 많은 것을 알고자 하는 훌륭한 테스터인 킴(Kim)을 위해 작성했다.

 

또한 나는 이 주제에 대해 많은 포스트들이 작성되리라 믿어 의심치 않는다(만약 당신이 이 주제에 관한 좋은 글을 알고 있다면, 코멘트를 통해 알려주기 바란다).

 



[1] “In the recession”이라는 표현은 불황에, 불경기에라고 해석된다. 즉 리세션 테스팅이라는 명칭이 불경기에 가치에 더욱 초점을 맞추고 불필요한 낭비 행위를 줄이는 것에 초점을 맞추는 것에서 유래했다는 것을 말해주고 있다.

[2] 원문은 “When it comes to regression vs. new feature bugs, let’s make all bugs equal, not some more equal than others!”라고 되어 있다. 직역하자면, “~ 모든 버그를 동등하게 다루되, 다른 것들 것 비해 더 동등하게 다루지 마라!”라는 의미이다. 즉 모든 버그를 동일한 수준으로 다루되 어떤 버그를 더 특별하게 취급하지 말라는 것이다. 조지 오웰의 동물농장나오는 "all animals are equal but some animals are more equal than others" 참조.