좀더 자세히 말하면 UI테스트가 불가능하다기 보단 자동화된 UI테스트가 불가능한것 같다.
사실 테스트만 잘되면 자동화하는 작업은 그렇게 힘들지 않는다고 생각한다.
하지만 UI쪽 테스트 자체가 힘들기 때문에 자동화된 테스트가 안되고 그렇기 때문에 테스트가 잘되고 있는것 같지 않다.
그래서 왜 UI쪽 테스트가 불가능한가 정리를 해볼까 한다.



개인적으로 UI개발의 테스트를 자동화 할수 있다면 정말 혁신적인 일이라 생각하고 아마 수많은 시간과 돈이 save될거다.
(지식이 부족한지 몰라도 내가 알기론 없다. 있다면 제발 누군가 알려줬으면 좋겠다.)
그럼 먼저 UI개발이란 말이 좀 명확하지 않으니  HTML, Javascript, CSS을 가지고 개발하는 것으로 정하자. Flash,Silverlight등은 제외.


첫째, 테스트 할 조건이 너무 많다.

크게 OS는 window, Mac, Linux... 브라우져는 IE, Firefox, Safari, Opera... 어림 잡아 12가지이다. 근데 버전별로 하면.... 생각하기 힘들 정도로 많다. 게다가 프레임워크나 컴퍼넌트 같은 경우는 어떤 상황에서도 정상적으로 작동해야 하는데 DTD로 인해 영향을 미치는 경우가 있다. 그럼 또 경우에 수는 상상하기 싫을 정도로 많아진다.이렇게 많은 종류에 환경을 갖추고 테스트를 하기란 정말 힘들기 때문에 자동화된 테스트를 하기가 힘들다.

이정도 되면 UI개발자 입장에서 정말 세상에 단일OS와 단일 브라우져만 있다면 좋겠다라는 생각을 한다.

이렇게 테스트 할 조건이 많고 만약 테스트가 자동화 되지 않았다면 비용이 너무 많이 들어서 사실상 테스트 하는건 한계가 있다.




둘째, 테스트 자체가 불가능한 경우가 많다.

사실 첫번째 같은 경우 환경을 갖추기는 어렵지만 할수 있는 일이다.
돈과 시간만 있다면 몇대 PC에 버철머신 설치 해가면서 환경을 갖출 순 있다.
(testswarm, selenium grid같은걸로 하면 자동화 하면 되나 일반적으로 힘들다고 말하는것임)

환경을 갖춘다고 해도 테스트를 만드는것 자체가 힘든 경우가 많다.
먼저 자바스크립트 같은 경우는 일반적으로 테스트가 가능하다.
Ajax, Timer등의 테스트들 같은 경우 까다롭긴 하지만 mock을 사용하던지 테스트 가능하게 레이어를 올리던지 가능하다.

하지만 로직상 정상적으로 작동하지만 실제 브라우져에서 정상적으로 작동하지 않는 기능들 같은 경우는 힘들다. 대부분이 이벤트를 가지고 하는 작업들이 그렇다.
네이티브 브라우져 이벤트를 다루면 해결할것 같은데 이건 쉽지 않다. 예전에 selenium-ice라는게 이런 문제를 해결해 줄거라고 생각했는데 프로젝트가 더이상 진행되지 않는것 같아 정말 아쉽다.

디자인이 엮이면 힘들다.
예를 들면 로직상은 정상인데 css랑 엮이면서 디자인 자체가 일그러지는 현상들.
이런 현상들이 생각 보다 굉장히 많다.
그래서 자동화를 하기 위해 selenium에 capture기능을 써서 이미지를 떠서 비교를 하려고 했으나 쉽지 않았고 반자동화로 진행하려고 했으나 역시 쉽진 않았다.

CSS 자체는 테스트를 어떻게 해야 할지 감이 안잡힌다.
CSS가 변경이 되면 영향이 미치는 경우가 많다. 그래서 어디서는 이런 방법으로 테스트를 한다고는 하지만 실제로 보니 크게 도움이 될까?라는 의구심이 든다.
그리고 위에서 말한 capture기능도 생각보다 굉장히 비효율적이라 딱히 방법이 떠오르지 않는다.



정리하면.
  1. 환경이 너무 많다.
  2. 브라우져 자체에서 실행시켜야만 알수 있는 에러는 찾기 힘들다.
  3. 렌더링에 따라 눈으로 발견하는 에러는 찾기 힘들다.
  4. CSS를 어떻게 테스트 해야 할지 모르겠다.
이다.

계속 고민은 하지만 딱히 떠오르는 방법이 없다.-_-;
아무리 찾아봐도 없는걸 보면 아직 해답을 못찾았다고 생각하고 계속 실험하고 탐구해봐야 하는 영역인듯;;

참고로 일부가 불가능하다고 해서 안하는게 낫다라고 말하는게 아니다.
오해하지 마시길.

ps. TEST는 그렇다고 하고 과연 세계적으로 UI개발에 대한 퀄리티를 어떻게 측정하며 하는곳이 얼마나 있을까?

Posted by Mixed
블로그에 거의 포스팅을 안하는데도 불구하고 오늘 보니깐 100여명이나 구독하시고 있으시더군요;
(실제 그런지는 모르지만;;)
그래서 도움될만한 글을 공유하고 싶은데 요즘 게을러서 포스팅을 안하고 있습니다.=_=;


하지만 거의 매일 rss feed는 보고 있는데 좋은 글들을 많이 봅니다.
그래서 블로그에서 정리하면 좋을것 같은데 이놈의 블로그을 포스팅하는게 좀 힘드네용.

보통은 me2day에다 링크를 걸고 북마크하곤 했는데 관리도 좀 안되서 이젠 오픈캐스트를 만들어서 발행하려고 합니다.
거의 1주일에 2~3번 제가 feed받는 rss중 좋았던 글들로 구성하려고 합니다.

가끔은 특정주제로도 발행하려고 합니다.

물론 거의 UI개발 관련된 글이겠지만 그냥 프로그래밍 관련 내용도 발행합니다.ㅎㅎ;

많은 도움이 될지 모르지만 시간이 없어 rss을 구독을 안하시는 분께 액기스만 뽑아서 UI개발 관련 정보들을 모으도록 해보겠습니다.

설명이 너무 길었지만.

한줄요약하면. 오픈캐스트 구독해주세용.

수고.
Posted by Mixed
요즘 생각하는 디자인이라는 재미있는책을 읽는도중 하노이탑퍼즐을 변형하여 디자인기법을 설명하고 있는 재미있는 부분을 소개할까한다.(UI개발의 중요성을 다시한번 생각하게 하는부분.)
한번 아래 두문제를 풀어 보기 바란다.

첫번째 문제는 c를 d처럼 만드는 문제이다.
사용자 삽입 이미지

크게 둥그런건 쟁반이고 안에 까만것들은 오렌지다.
c에서 d로 만드는데는 규칙이 있다.
1.한번에 하나의 오랜지만을 옮길수 있다.
2.쟁반에 옮겼을 때 옮긴 오랜지가 가장 큰것이어야한다.
3.각 쟁반에서 가장 큰 오렌지만 다른 쟁반으로 옮길수있다.

두번째 문제는 e를 f처럼 만드는것이다.
사용자 삽입 이미지

e에서 f로 만드는데도 첫번째 문제와 동일한 규칙을 가지고 있다.

근데 과연 두가지문제가 동일한 난이도의 문제일까?
난이도는 첫번째 문제가 두배이상 높다.(책에 근거함.)
이유는 무엇일까?
실질적으로 두번째 문제에서는 3가지 규칙중 첫번째 규칙만 있으면된다.

두번째 문제에선 잔안에 커피가 있기때문에 큰잔에 작은잔을 넣을경우 잔에 커피가 넘쳐
커피잔을 포갤때 반드시 작은잔이 아래로 간다.그리고 쟁반에는 하나이상의 커피잔을 놓을경우
포갤수 밖에 없기 때문에 2번과 3번의 제약은 물리적으로 제약 하고 사람또한 경험으로 알고 있다.
이렇기 때문에 두번째 문제는 1번의 제약만으로 똑같은 문제를 낼수있고 난이도 또한 낮아지는것이다.

위와같은 경우와 유사한 UI개발이 어떤것이 있을까?
찾아보면 상당히 많을것이다. 지금 바로 생각한 것은 전송버튼이다.

많은 사용자들은 전송버튼을 누른후 전송이 느리면 여러번 전송버튼을 누를때가 많다.
이러한 경우 처리을 잘못하면 구매페이지일때 여러개의 원치않은 물건들이 목록에 올려놓을수 있다.
이럴때 처리방법이 많겠지만 내가 경험한바로는 대부분은 UI쪽에서는 아무런 대책이 없고
서버측에서 해결하는것으로 알고 있다.그 이외로 alter창을 띄우는경우도 있다.(물론 잘된곳도 많다.)
서버측에서 해결하는방법이나  alter창을 띄우는 방법말고 간단하게 전송버튼을 disabled 하면
아마 사용자는 당연히 전송하고 있는중인것으로 알고 누를지도 못할뿐더라 생각조차 안할것이다.


이렇게 UI개발시 사용자의 고민을 최대한 덜어주는것이 중요한것 같다.
UI개발을 할때 무심코 경고메세지나 도움말을 추가하기 보다는 UI개발이 잘되었는지 다시 한번 생각해봐야겠다.

이미지 출처:Graspable User Interfaces(이곳에서도 같은얘기를 하는것 같다.;;)
Posted by Mixed
TAG UI개발
얼마 전에 블로고스피어을 떠들석하게 했던 google gear~
Choosing an Offline Application Architecture에  흥미로운 것들이 있다.
어떻게 오프라인 어플리케이션을 구축할것인가?

UI개발자로서 너무나 흥미로운글. 전에 고민했던 내용들이 있다.
오프라인과 온라인 어플이 같아야할까? 싱크를 어떤식으로 맞추는것이 좋은 방법인가? 등등..
언제나 트레이드오프는 존재한다. 어떻게 효율적으로 오프라인을 구성해야하는가?

ps.음..UI개발은 아무리 생각해봐도 재미있는것 같다.
왜 UI개발을 천대받는지 모르지만 정말 재밌는 직군이다~
개발도 할줄 알아야하지, 디자인 감각도 있어야하지, 심리학,사회학 등등 할줄 알아야하는 만능 엔터테이너~
빨리 빨리 공부하자!!!!!
Posted by Mixed
TAG gear, UI개발,