‘아이폰의 터치스크린 정확도’

최근 재밌게 읽은 Nick Arnott의 ‘아이폰의 터치스크린 정확도’를 번역한 것이다.

효과적인 문제 해결을 위해서는 다루려는 문제에 대한 깊은 이해가 필수적이다. 이 사실은 실제 생활이든 프로그래밍의 영역이든 변함이 없다. 효과적인 테스팅을 위해서는 테스팅하는 것이 무엇인지, 왜 테스팅하는지에 대한 이해가 필요하다. 이러한 확고한 기반이 없을 경우 혼란을 야기하거나, 본질적이지 않은 문제에 시간과 에너지를 낭비하게 되고 말 것이다. 이번 주,OptoFidelity라는 회사는 이러한 종류의 문제를 이야기해 볼 기회를 제공했다.

OptoFidelity는 자동화된 테스트 솔루션을 제공하는 테크놀로지 회사다. 이 회사는 최근 iPhone 5c, iPhone 5s, 그리고 Samsung Galaxy S3를 대상으로 몇 가지 자동화 테스트를 진행하였다.그중 하나는 각 기기의 터치 패널의 정확도를 측정하기 위한 것이었다. 이 테스트는 인공의 손가락을 가진 로봇에 의해 수백 번에 걸쳐 디스플레이 패널의 모든 부분을 정확하게 눌러보고(tap), 누른 위치에 따라 해당 기기가 올바르게 인식하는지를 점검하는 테스트였다. 디스플레이를 누른 지점과 반응하는 지점이 1mm 오차 이내일 경우 초록색 점으로 합격 처리, 1mm를 초과할 경우엔 붉은색 점으로 불합격 처리된다.

img1.png

위의 이미지는 OptoFidelity가 제공한 테스트 결과다. Galaxy S3는 디스플레이의 가장자리를 제외한 모든 부분에서 높은 정확도를 보여준다. 반면 iPhone은 75%에 가까운 영역이 불합격 판정을 받았다. 이 테스트 결과는 iPhone 5c와 iPhone 5s의 터치스크린 정확도가 수준 이하이며, Galaxy S3보다 낮다는 명백한 결론을 도출할 수 있을 것이다.

iPhone 테스트 결과의 초록색 영역, 즉 실제 누른 지점과 반응한 지점의 오차가 1mm 이내로 판정된 영역은 사람이 오른손으로 기기를 들었을 때 엄지손가락이 쉽게 누를 수 있는 영역과 일치한다. 오른손으로 폰을 꺼내 들고 엄지손가락으로 화면을 누르려고 시도해봐라. 비교적 높은 정확도로 누를 수 있는 영역이 바로 저 영역이라는 것을 쉽게 알 수 있을 것이다. 저 영역은 당신이 화면의 최상단으로 이동하기 위해 엄지손가락을 길게 뻗거나, Close 버튼을 누르기 위해 우상단으로 엄지손가락을 틀어 뻗을 때 누르는 곳이 아니다. 또한, 저 영역 내의 지점을 터치할 때에는 엄지손가락의 같은 부분을 사용한다. 간결하게 말해서, 사람이 화면의 어떤 영역을 누르고자 할 때 가장 높은 정확도로 터치할 수 있는 영역이 저 초록색 영역이라는 것이다. 그렇다면 빨간색으로 불합격 판정이 난 부분은 무엇일까? 거기서는 무슨 일이 일어나는 것일까?

OptoFidelity가 제공한 자료에서 특정 부분을 확대한 이미지를 보자. QWERTY 알파벳 배열에서 알 수 있듯이, 이 영역은 키보드가 위치한 곳이다.

img2.png

이 이미지는 iOS 키보드 인터페이스 위에 터치스크린 정확도 테스트 결과를 겹쳐 놓은 것이다. 알파벳 T와 Y가 위치한 중앙 부근을 봐라. 초록색 점(기기가 반응한 지점)은 검정색 원(로봇이 누른 영역)의 거의 중앙에 위치해 있다. 즉, iPhone이 실제로 눌린 지점의 중앙과 아주 유사한 위치에서 반응한다는 것이다. 반면, 중앙에서 좌우로 멀어질수록 점들 역시 각자의 원에서 좌우로 멀어진다. E나 W가 위치한 곳의 점들은 원의 중앙에서 왼쪽에 치우친 지점에 나타난다. Q가 위치한 곳에 다다르면 이제 iPhone은 1mm 오차를 벗어나는 곳에서 반응한다. 이 테스트를 통해 iPhone은 스크린의 일부 영역에서 터치 정확도를 구현하는 데 실패했다고 결론을 내릴 수 있다. 하지만 이것이 진짜 실패일까? 아니면 기능일까?

초록색 영역에서 멀어짐에 따라 변하는 반응 지점의 위치 변화는 명백한 패턴을 갖고 있다. 쉽게 누를 수 있는 영역에서 멀어질수록 “부정확성”이 증가한다. 스크린의 하단을 터치하려고 할 때와 같이 엄지손가락을 손으로부터 더 멀리 뻗을 때 실제 스크린과 맞닿는 엄지의 영역은 변한다. 스크린보다 높은 고도에서 사람이 (혹은 사람의 머리, 즉 눈이) 움직이기 때문에, 그에 따라 스크린을 보는 각도가 정확한 90도일 경우는 거의 없다. OptoFidelity에서 시행한 자동화 테스트는 이러한 요소들이 고려되지 않았다. 로봇은 스크린을 수직으로 바라보며, 수직으로 눌러 테스트를 진행한다. 일반적으로 사람들은 이러한 방식으로 기기와 상호작용하지 않는다.

이러한 부분에 대한 공식적인 설명이 담긴 자료를 찾을 수 없었지만, 이러한 현상은 Apple이 의도적으로 구현한 조작이라고 생각한다. iPad나 iPhone가 위아래로 뒤집힌 상태에서 무언가를 눌러보려고 한 적이 있는가? 친구와 마주 보는 상태에서 iPad의 무언가를 보여주기 위해 친구에게 그 기기를 쥐여주고, 당신에게는 스크린이 뒤집힌 관점에서 버튼을 누르려고 해 본 적이 있는가? 누르는 것이 거의 불가능하다. 기기는 당신의 터치에 부응하지 않는다. 위에서 이야기한 의도적 조작이 어떻게 사람이 iPhone을 잡고 상호작용하는지에 대한 추측을 기반으로 구현된 것이라면 모든 것이 이치에 맞는다. 만일 기기를 거꾸로 집어든 상태에서 누르려고 한다면, 이러한 의도적 조작의 이득을 보지 못할 뿐만 아니라, 기기는 당신의 의도에 반하여 작동할 것이다. 당신이 무언가를 누르려고 할 때 iPhone은 당신이 실제로 누른 지점보다 높은 곳을 누르려고 한다고 짐작한다. 그런데 만일 기기가 뒤집혀 있을 경우, 당신은 이미 당신이 원하는 곳보다 높은 지점1을 누르게 되고, 결국 원래 누르려는 지점을 놓치게 된다.

인터넷에서는 이미 많은 사람들이 “나도 겪었어! 맨날 잘못된 버튼을 누르게 돼!”라며 이야기한다. 하지만 개인이 터치스크린을 잘못 누를 가능성은 언제든지 있다. 만일 OptoFidelity의 테스트 결과가 정반대로 Galaxy S3가 부정확하다고 나왔다면, 그 결과를 지지하며 때때로 버튼이 잘못 눌린다고 토로하는 S3 사용자들을 발견할 수 있었을 것이다. 결과적으로 이야기하고 싶은 것은, OptoFidelity가 진행한 테스트는 실제 사람이 사용하는 행태와 전혀 닮은 점이 없다는 점이다. OptoFidelity는 각각의 기기가 실제로 누른 위치에 얼마나 정확하게 반응하는지 그림을 그려내어 테스트했다. 만약 당신이 로봇 손가락을 갖고 있고, 서로 가깝게 위치한 아주 작은 타겟들을 90도로 내리꽂으며 누르는 경우라면 이러한 정확도가 아주 중요할 것이다. 이러한 방식으로 사용할 폰을 찾는다면 아이폰은 후보에서 진작에 제외시켜라. OptoFidelity의 테스트에서 보여주지 못한 것은 사용자가 의도하는 터치에 반응하는 정확성이다. Apple이 터치 정확도를 빗겨가게 하려고 결정했을 때 시행한 테스트가 이러한, 사용자가 의도하는 터치에 반응하는 정확성을 측정하기 위한 테스트를 했다고 해도 놀라지 않을 것이다.

이 같은 경우는 테스트를 진행할 때 언제든지 발생한다. 어떠한 것을 적절하게 테스트하기 위해서는 당신이 테스트하고 있는 것이 무엇인지 이해해야 한다. 당신이 테스트하고 있는 것에 대한 이해가 부족할 경우 테스트 결과를 오역하기 쉽다. 수많은 테스터들이 버그를 보고했지만, 그 현상이 왜 해당 앱에서 기대되는 반응인지 설명을 듣는 결과만 가져왔을 뿐이다. (농담이 아니다. “그건 버그가 아닙니다. 기능입니다.”라는 방식의 접근이다.) 테스터로서 핵심적 역할은 어떠한 것이 무엇을 한다는 것에 대한 단순한 보고가 아닌, 왜 그렇게 작동하는지 묻는 행위다. 실생활의 예를 들어보자. 버튼이 내려가면(down) 불이 켜지고(on), 올라가면(up) 불이 꺼지는(off) 전등 스위치가 있다. 아마 스위치가 뒤집혀 설치되었을 수도 있다. 또는, 사실 스위치가 삼로 스위치2라서, 어딘가에 같은 전등을 제어하는 다른 스위치가 있을 수도 있다. 후자의 경우, 스위치의 작동 행태는 버그라고 간주할 수 없다. 이러한 결론에 도달하기 위해서는 기대하는 결과가 무엇인지 알아내기 위해 시행하는 테스트에 대한 이해가 필요하다.3

iPhone의 정확도에 관해서 내가 완벽하게 틀렸을지도 모른다. 나는 터치스크린 전문가가 아니며 제시할 증거도 없다. iPhone의 터치스크린 정확도에 대해 OptoFidelity보다 공신력을 가진 것도 아니다. 내 요점은 OptoFidelity는 질문을 던져야 한다는 것이다. 테스터는 언제나 질문을 던져야 한다. 테스터와 엔지니어는 언제나 질문을 던져야 한다. 질문을 던지고 수면 아래의 본질을 보려는 시도는 해결하려는 문제와 답하려는 질문에 대한 깊은 이해를 제공한다. 질문을 던지는 것은 개발자이자 테스터로서 더 나은 제품을 만들고 최고의 결과를 낳는 방법이다.


  1. 원문에서는 부가적인 설명이 없지만 혼동하기 쉬우므로 내가 이해한 내용을 각주에 추가한다.
    여기서 말하는 ’원하는 곳보다 높은 지점’은 뒤집힌 기기를 바라보는 사용자의 시각에서의 높은 지점이 아닌, 기기가 올바르게 위치했을 때 높은 지점이다.  ↩
  2. Three-way Switch  ↩
  3. 원문: “Arriving at that conclusion requires an understanding of what you’re testing in order to know the expected result.”
    대충 맥락은 이해가 가는데 정확히 해석하기가 어렵다. 혹시 더 훌륭한 해석이 있으면 추천 바란다.  ↩