기본 콘텐츠로 건너뛰기

사용성 테스팅 - TDD(Testability Driven Design)

사용성 테스팅 만큼 쉬우면서도 어려운 것이 있을까?

사용성 테스팅에서 가장 어려운 것은 역시 테스트 오라클이 명확하지 않다는 것이다.

그리고 테스트 오라클을 협의하고 정하는 것 자체도 쉽지 않다.

더 큰 문제는 협의하고 정한 테스트 오라클이라 할지라도 고객이 그것에 동의할 것인지, 테스트 오라클이 제대로 정해졌는지에 대해 확신할 만한 근거가 부족하다는 것이다.

아래 글은 이러한 사용성 테스팅에 대한 테스트 오라클을 정하는 데에 있어 그 기준으로 생각할 만한 것에 대한 나의 의견이다.

자 한가지 예를 통해서 설명해 보도록 하겠다.

우리가 윈도우를 사용하면서 어떤 이유로든 더 이상 필요없는 파일은 깔끔하게 삭제해 버림으로써 하드 디스크의 용량을 늘리고 있다. 아 .. 머 요즘은 하드 디스크 용량이 좀 널널하게 남아돌기도 하지만서도..

어쨌든..

여기서 중요한 것은 파일 삭제이다.

그럼 첫번째.. 파일 삭제에 있어서 고객에게 가장 큰 가치는 무엇일까?

사람마다 모두 다른 답이 나오겠지만 적어도 나에게는 삭제하면 제깍 삭제되고 혹시라도 잘못 삭제했다면 제깍 복구할 수 있어야 한다라고 답하고 싶다..

그러면 윈도우의 파일 삭제 과정을 한번 낱낱이 생각해 보자.


첫눈에 딱 봐도 복잡하지 않는가?

일반적으로 우리는 가장 오른쪽의 경우만을 알고 있다. 그리고 왜 문제인지 잘 알지 못한다.

가장 오른쪽의 경우 첫번째 문제점은 파일 삭제 여부를 묻는 확인창이다.

많은 사람들은 그것이 왜 문제인가? 라고 물을 것이다.

내가 처음에 파일 삭제의 가치에 대해 말을 할 때 전제조건은 제깍이었다. 이것은 즉시 삭제되기를 원한다는 것이었다.

실제 생활에서 만약 당신이 화장실에서 편안함 속에 화장지를 휴지통에 버리려는 순간 이 휴지통이 건방지게 당신이 휴지를 버리겠다는 확고한 확신을 보여야만 휴지를 버릴 수 있습니다라는 메시지와 함께 지문 인식을 원한다면 어떤 느낌이 들 거라고 생각하는가?

동일한 경우지만 이것을 받아들이는 느낌은 사뭇 다르다. 이것이 학습의 결과이다.

많은 사람들은 대부분 파일 삭제를 할 때 경고창의 메시지는 확인하지 않는다. 그냥 예스를 누를 뿐이다. 왜냐하면 예스를 누른다고 하더라도 휴지통에서 파일을 복원할 수 있다는 것을 알고 있고 그것이 신뢰할 수 있다는 것을 학습을 통해 이미 알고 있기 때문이다.

하지만 이러한 흐름은 고객의 가치를 해치게 된다. 우선은 확인창이 떠야 하고 확인 버튼을 누르는데 아주 작지만 약간의 시간이 필요하다. 그 짧은 시간이 무슨 의미가 있느냐고 하겠지만 티끌 모아 태산인 것이다.

이러다 보니 이제 윈도우 좀 안다는 파워 유저들은 이 확인창이 무척이나 신경이 쓰이고 귀찮아졌다. 그리하여 나온 편법이 Shift+Del이었다.

하지만 이 역시 키를 조합하여 눌러야 하기 때문에 무척이나 귀찮은 일이 되어버렸다.

그리하여 마침내 휴지통의 속성창을 열어서 설정을 아예 바꿔버리게 되었다.

파일 하나를 지우기 위해 우리는 이렇게 많은 경우의 수를 생각하고 투자를 하게 되었다. 그렇게 함으로써 어찌 되었든 파일을 바로 즉시 즉시 지울 수 있게 되었다.

하지만 우리는 그렇게 함으로써 파일을 복원할 수 있는 가치를 영구히 훼손해 버렸다.

빠르게 지우기 위해서 우리는 단축키나 설정을 바꾸기 위해 투자를 하였다. 하지만 그 투자는 파일 복원이라는 가치를 영원히 훼손시켜 버렸다.

만약 우리가 파일 복원이라는 가치를 지키기 위해서는 파일을 삭제하기 위한 투자를 늘려야 한다.

왜 이런 일이 벌어진 것일까? 왜냐하면 인간은 게으르기 때문이다. 인간은 특정한 가치를 동일하게 얻을 수 있다면 더 적은 노력과 유지비용만을 지불하기를 원하기 때문이다.

다만 이 경우는 더 적은 노력과 유지 비용을 지불하기 위한 노력이 결국은 쓰루풋을 훼손시켜 버린 것이다.

TOC적인 관점에서 본다면 이 두가지 모두 좋지 않은 것이 된다.

첫번째는 투자를 늘렸지만 쓰루풋은 훼손되어 버렸다.

두번째는 투자를 늘렸지만 쓰루풋은 늘어나지 않았다.

이러한 이유로 윈도우의 파일 삭제는 고객에게 아무런 가치를 줄 수 없는 사용성이 낮은 경우가 된 것이다.

기능상으로는 아무런 문제도 없다. 그리고 많은 경우 이것이 왜 사용성이 낮은 것인지에 대한 아무런 반감이 없다. 그 이유는 우리가 학습이 되어버렸기 때문이다.

아래는 우분투의 파일 삭제 과정이다.
이 얼마나 아름다운가?

내가 처음 우분투에서 파일을 삭제했을 때 난 커다란 혼란과 두려움에 사로잡혔다.

왜냐하면 윈도우에서 언제나 보던 확인창이 뜨지 않았던 것이다. 이것은 내가 학습해 놓은 상황에 완전히 대치되는 상황이었다.

하지만 내가 삭제한 파일은 안전하게 휴지통에 들어가 있었고 난 이로써 새로운 학습에 성공하고 새로운 신뢰를 쌓았다.

우분투의 경우는 쓰루풋을 훼손하지 않으면서 내가 투자해야할 대상은 획기적으로 줄였다.

난 단축키를 사용하지 않아도 되고, 난 설정을 바꿀 필요도 없었다.

그저 지우면 휴지통으로 파일이 이동되었고 원하면 복원하면 되었다.

사용성을 평가하기 위한 과정을 간단히 정리하면 아래와 같이 생각해 볼 수 있다.

먼저
  1. 테스트하고자 하는 대상 또는 기능에 대한 핵심적인 가치를 정의한다.
  2. 가치에 도달하기 위한 가장 적은 투자와 유지비용이 들어가는 경로를 산출한다.
즉, 고객의 가치를 도달하기 위한 가장 적은 투자와 유지비용이 들어가는 경로가 바로 테스트 오라클이 되는 것이다.

다른 말로 하면 사용성이 높은 제품은 고객이 적은 투자와 유지 비용만을 사용한 상태에서 최상의 가치를 얻을 수 있는 제품이다.

우리는 의외로 주변에서 그런 제품을 쉽게 찾아볼 수 있다.

대표적인 것이 삼성과 애플의 MP3만 봐도 알 수 있다.

그런데 이 내용을 잘 살펴보면 이것은 테스팅 보다는 설계에 관한 내용에 더욱 가깝다.

난 이것을 TDD(Testability Driven Design)이라고 부른다.

내가 만들어낸 말이지만 실제로 나와 유사한 생각을 하는 사람들이 있는 것으로 안다.

요지는 설계를 할 때 테스트 가능성, 용이성을 고려하여 설계해야한다는 것이다.

윈도우의 경우가 테스트 용이성을 고려하지 않고 설계한 것이라고 가정한다면 윈도우의 경우는 많은 경우의 수를 테스트 해야한다.

확실히 우분투보다는 테스트를 수행하기 위한 리소스가 더 많이 필요하다는 것을 알 수 있다.

처음부터 고객에게 전달해야하는 핵심 가치와 그 가치에 도달하는 최단 과정을 고려하고 그러한 과정이 테스트를 수행함에 있어 얼마나 용이한지 고려하여 설계한다면 분명 테스트에 들어가는 리소스를 획기적으로 줄일 수 있다고 생각한다.

많은 경우 테스팅이 전체 개발 과정에서 가장 많은 비용과 일정이 들어가는 병목이 된다. 이것을 기획 단계 즉 설계 부터 고려한다면 분명 획기적인 개선이 있을 것이다.

이것이 TOC에서의 DBR의 핵심과 일맥상통한다고 생각한다.

위의 경우에서 생각해 보더라도 윈도우의 경우에 싸이클로메틱 복잡도(cyclomatic complexity)로 계산해본다면 3의 복잡도를 가진다. 하지만 우분투는 0이다.

Cyclomatic Complexity = 분기노드 개수 + 1로 계산할 수 있다.

Cyclomatic Complexity는 쉽게 말해서 테스트해봐야 하는 경로의 개수라고 할 수 있다. 이것이 높다는 것은 필요한 테스트케이스가 그만큼 많으므로 오류를 모두 확인하지 못할 확률이 더 높다는 것이다. 보통 3~7 사이의 값을 권장하며, 10 이상은 지양하는 것을 권장한다.


처음 설계에 있어서 테스트 용이성을 고려하여 설계함으로써 코딩과 테스트 모두에 들어가는 리소스를 절약하고 고객에게 전달해야 하는 가치를 지킬 수 있다는 것이 나의 생각이다.

이에 관련해서 의견 있으신 분은 트랙백이나 댓글로 의견을 좀 더 나누었으면 한다.

댓글

  1. trackback from: 좋은 디자인이란?
    요즘 팀에서 '설계'에 대한 교육과정을 만들고 있습니다. TDD 메일링 리스트를 읽던 중 좋은 디자인 good design 이란 단어가 눈에 띄어 옮겨봤습니다. 밥 아저씨가 한 말입니다. One reasonable definition of good design is testability. It is hard to imagine a software system that is both testable and poorly designed. It is al..

    답글삭제
  2. 김주봉5/7/10 12:06

    좋은 글 감사합니다~

    답글삭제

댓글 쓰기

이 블로그의 인기 게시물

프로젝트의 3요소 - Project Management

프로젝트는 예산, 일정, 품질 3가지 요소로 이루어진다고 볼 수 있다. 물론 위 3가지 요소 외에도 개발 범위, 팀워크, 자원 조달 등 여러가지 요소들도 고려해 볼 수 있지만, 가장 중요한 요소를 꼽는다면 예산, 일정, 품질일 것이다. 위에서 말한 여러가지 요소들은 프로젝트를 계획하여 완료하는 순간까지 복합적으로 작용해서 프로젝트의 성과를 제한하게 된다. 위의 요소들을 잘 통제한다면 성공적인 프로젝트가 되는 것이고 그렇지 못한다면 실패하거나 사라지게 될 것이다. 프로젝트 관리란 그런 면에서 제한된 자원을 가지고 목적한 바를 제한된 기간내에 최소의 비용으로 완수할 수 있도록 하는 것으로 정의할 수 있을 것이다. 이것을 도식화 한다면 아래와 같은 그림으로 표현할 수 있을 것이다. 위의 그림에 보는 것처럼 일정과 품질, 예산은 우리의 프로젝트가 목적하는 바를 달성하도록 하기 위해 상호 연관되어 작용하게 된다. 우리가 접하게 되는 많은 방법론들의 가정에는 위의 요소들을 어떻게 관리할 것인가에 대한 기본적인 가정들이 설정되어 있다. 조직에서 어떤 특정한 방법론을 도입한다는 것은 그런 가정에 동의하는 것이고 그러한 철학을 받아들인다는 것이기 때문에, 방법론을 채택하기 전에 조직의 근본 문제와 문화에 대해 점검해 볼 필요가 있다. 그리고 위의 요소들 외에 고려해 볼 사항은 위의 요소들은 변동성과 불확실성을 내포하고 있다는 것이다. 특히 비용과 예산, 목적은 프로젝트를 진행하면서 가변할 가능성이 매우 큰 요소들이다. 대부분의 방법론은 이러한 변동성에 대한 안전장치들을 가정해서 세워져 있다. 변동성의 측면에서 위의 요소들을 다시 살펴본다면 아래와 같이 가정할 수 있다. 위의 그림을 일부 해석해 본다면 일정이 늘어난다면 비용은 늘어나게 된다. 범위가 변경되어도 비용은 늘어나게 된다. 범위와 일정은 상호 의존적이 된다. 만약 위 3가지 요소의 변동성을 통제하지 못하게 된다면 프로젝트는...

일본 출장 갔다 온 후기

어쩌다 보니.. 우연치 않게.. 일본으로 2박 3일 짧은 출장을 다녀왔습니다. 태어나 처음으로 일본을 가보게 되었고.. 한 6년만에 나가본 외국이라서.. 난리도 아니었습니다. 출장 일정을 착각해서 1박 2일로 잡았던 항공편 일정 변경하고 숙박업소 찾느라.. 에휴.. 어쨌든 오랜만에 나가본 외국이고 처음 가본 일본이라 다녀오고 알게 된 몇가지 사실은 이미 인터넷을 찾아보면 쉽게 찾을 수 있지만 그래도 기록으로 남겨보고자 합니다. 1. 여행용 멀티 어뎁터를 더 이상 공항 로밍 센터(김포 공항 기준)에서 무료로 대여를 안해주더라구요. 로밍 요금을 가입해야 빌려준다는데.. 쩝.... 가장 가까운 다이소도 롯데몰까지 걸어가기에는 멀고.. 공항 편의점에서 파는데 정말 더럽게 비싸더라구요. 그러니 미리미리 다이소에서 구매하시거나 인터넷에서 싼걸로 장만하시는게 좋습니다. 일본에서도 편의점이나 100엔샵 뒤져보았지만 안팔더라구요. 돈키호테에서는 판다고 하는데.. 거기까지 가기에는 출장 일정 상 이동하기 쉽지 않아서.. 정말 무겁게 노트북 들고가서 켜보지도 못했습니다. 물론 웬만한 모텔급 이상 숙박업소에서는 프론트에 얘기하면 무료로 빌려주기는 하는데.. 낮에는 플러그가 없으니 충전이.. ㅠㅠ 그래서 만약에 한국에서 준비를 못해간걸 일본에서 깨달았다면.. 어떻게 하느냐... 이미 공항을 떠나셨다면 주변에서 BIC 이라는 전자 제품 파는 곳에서 구매하시면 되고..  하네다 공항 3번 터미널 출국장 위쪽 4F에 가시면 BIC 가게가 있고 거기서 구매하실 수 있습니다. 한 300엔 했던 걸로 기억합니다.  2. 애플 페이로 교통카드를 하시려면 현재로는 현대카드 마스터 카드가 있어야 합니다. 비자 카드로 충전이 안되어서 애플 페이로 교통카드를 만들 수 없습니다. 일본에서 지하철을 애플 페이로 타보고자 했던 저의 꿈은 파사삭... 스이카 앱으로는 비자 카드로 충전이 된다고 하는데.. 귀찮습니다. ㅠㅠ 한국에서 스이카 웰컴 카드를 구매해 가시는 것도 방법인데.. 이 카드는 ...

테슬라 구매 과정 후기

올해 제 인생 최대 지름이 될.. 테슬라 구매를 했습니다. 스파크만 13년을 몰았는데... 내자분이 애들도 컸고.. 이젠 스파크가 좁고 덥고 힘들다면서... 4월 6일 하남 테슬라 전시장에서 새로 나온 업그레이드 된 모델 3를 보고 4월 7일 덜컥 계약을 해버리게 되었습니다. 이후에 4월 11일에 보조금 설문 조사 문자를 받았습니다. 그리고 다시 기다림의 시간이.. 사실, 처음에 하얀색을 계약을 했다가 하얀색은 관리하기가 너무 힘들거 같아 4월 20일에 블루로 변경을 했었는데.. 다른 사람들은 하나 둘 차량을 인도 받는데.. 아무리 기다려도 인도 일정이 배정이 되지 않아서... 혹시나 하고 4월 25일 하얀색으로 변경하자마자 VIN이 배정되고 4월 29일 인도 일정 셀프 예약 문자가 왔습니다. 파란색이 정말 인기가 없었나 봅니다. (그런데, 소문에 듣자하니.. 파란색은 5월 첫주부터 인도 일정 셀프 예약 문자가 왔었다고 합니다.. 크흑.. ㅠㅠ) 덕분에 기다리고 기다리긴 했지만 아무 준비도 없던 와중에 이제부터 정말 실제 차량을 인도받기 위한 질주가 시작되었습니다. 4월 30일 셀프 인도 예약 완료 문자가 왔고 5월 2일 오전 10시 5분에 전기자동차 구매지원 자격 부여 문자가 오고 오후 3시 5분에 전기차 보조금 지원 대상자 확정 문자를 받았습니다. 사실 기다림의 시간이 제일 힘든건.. 보조금을 못받으면 어떻게 하지?라는 초조함이었습니다. 얼마 안되는 보조금이라고 하더라도 한푼이 아쉬운 입장에서는 정말 필요한 돈이었는데.. 다행히 큰 문제 없이 지원 대상자가 될 수 있었습니다. 그리고 5월 2일 오후 4시 12분에 차량 대금을 후다닥 결제를 진행했습니다. 유투브와 네이버 카페 등을 열심히 읽어두었지만 막상 진행해보니 다른 설명과는 좀 다르게 진행되어서 불안했었는데.. 큰 문제 없이 결제가 완려되었습니다. 이미 차량 인도는 5월 14일로 결정되었기 때문에 이제는 차량 등록에 대한 기다림이 시작되었습니다. 드디어 5월 8일 오후 2시 23분에 등록 대행 비용 및...